/* ═══════════════════════════════════════════════════ Courses Page ═══════════════════════════════════════════════════ */ /* ── Action Card (tabs + inputs) ─────────────────── */ .action-card { background: var(--paper); border: 1px solid var(--line-2); border-radius: var(--radius); box-shadow: var(--shadow-card); margin-bottom: 16px; } .action-card-tabs { display: flex; border-bottom: 1px solid var(--line-2); } .action-tab { padding: 12px 18px; background: transparent; border: 0; color: var(--ink-2); font: 600 14px/1.2 var(--font-sans); cursor: pointer; transition: color 120ms; } .action-tab:hover { color: var(--ink); } .action-tab.is-active { color: var(--ink); box-shadow: inset 0 -2px 0 var(--accent); } .action-card-body { padding: 16px 20px; } .action-pane[hidden] { display: none; } .action-card-body input[type=text] { width: 100%; height: 40px; padding: 0 14px; border: 1px solid var(--line-2); border-radius: var(--radius-sm); background: var(--paper-2); font: 14px/1.2 var(--font-sans); } .action-card-body input[type=text]:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 4px color-mix(in oklch, var(--accent) 14%, transparent); } .action-hint { margin: 8px 0 0; font-size: 11.5px; color: var(--ink-3); } .tjing-search-row { display: flex; gap: 10px; align-items: center; } .tjing-search-row input[type=text] { flex: 1; } /* ── Buttons ──────────────────────────────────────── */ .btn-primary { background: var(--accent); color: #fff; border: 0; height: 40px; padding: 0 16px; border-radius: var(--radius-sm); font: 600 14px/1 var(--font-sans); cursor: pointer; white-space: nowrap; } .btn-primary:hover { filter: brightness(1.05); } .btn-primary:disabled { opacity: .6; cursor: not-allowed; } .btn-pill { padding: 6px 12px; background: var(--accent); color: #fff; border: 0; border-radius: 999px; font: 600 12.5px/1 var(--font-sans); cursor: pointer; height: 28px; white-space: nowrap; } .btn-pill:disabled { opacity: .6; cursor: default; } /* ── Results bar ─────────────────────────────────── */ .results-bar { display: flex; justify-content: space-between; align-items: center; padding: 12px 4px; font-variant-numeric: tabular-nums; } .results-count { color: var(--ink-2); font-size: 13px; } .results-count strong { color: var(--ink); font-weight: 600; } .results-link { color: var(--accent); text-decoration: none; font: 500 13.5px/1.2 var(--font-sans); } /* ── Course grid ─────────────────────────────────── */ .course-grid { background: var(--paper); border: 1px solid var(--line-2); border-radius: var(--radius); box-shadow: var(--shadow-card); overflow: hidden; } .course-row { display: grid; grid-template-columns: minmax(280px, 2fr) minmax(140px, 1fr) minmax(140px, 0.9fr) 72px; align-items: center; gap: 14px; padding: 14px 20px; border-bottom: 1px solid var(--line-2); cursor: pointer; transition: background 120ms; } .course-row:hover { background: var(--paper-2); } .course-row.row-open { background: var(--paper-2); box-shadow: inset 3px 0 0 var(--accent); } .course-row[hidden], .expanded-content[hidden] { display: none; } .course-row.row-open .icon-chev i { transform: rotate(180deg); } .course-cell { display: flex; flex-direction: column; gap: 2px; } .course-name { color: var(--accent); font: 600 14px/1.3 var(--font-sans); } .course-meta { color: var(--ink-3); font-size: 12.5px; } .course-city { color: var(--ink); font-size: 14px; } .course-updated { color: var(--ink-3); font-family: var(--font-mono); font-size: 12.5px; } .course-actions { display: flex; gap: 4px; justify-content: flex-end; } /* ── Expanded layout panel ───────────────────────── */ .expanded-content { display: none; } .expanded-content.is-open { display: block; animation: expandIn .2s ease; } .expanded-cell { padding: 22px 28px 28px; background: color-mix(in oklch, var(--accent) 4%, var(--paper-2)); border-bottom: 1px solid var(--line-2); } /* ── Layout list ─────────────────────────────────── */ .layouts-header { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 12px; } .layouts-kicker { font: 600 11px/1 var(--font-sans); letter-spacing: 0.08em; text-transform: uppercase; color: var(--ink-3); } .layouts-count { font-size: 12.5px; color: var(--ink-3); } .layout-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; } .layout-card { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; padding: 12px 18px; background: var(--paper); border: 1px solid var(--line-2); border-radius: var(--radius-sm); transition: border-color 120ms, box-shadow 120ms; } .layout-card:hover { border-color: var(--line); box-shadow: var(--shadow-card); } .layout-card--inactive { background: transparent; border-style: dashed; opacity: 0.65; } .layout-card--inactive .layout-name { color: var(--ink-2); font-weight: 500; } .layout-info { display: flex; align-items: baseline; gap: 14px; min-width: 0; } .layout-name { font: 600 13.5px/1.2 var(--font-sans); color: var(--ink); } .layout-last-played { font: 12.5px/1 var(--font-mono); color: var(--ink-3); } .layout-never-played { font-size: 12.5px; color: var(--down); } .layout-chips { display: flex; gap: 14px; align-items: center; } .chip { display: inline-flex; align-items: center; padding: 4px 10px; border-radius: 8px; font: 600 12.5px/1 var(--font-mono); font-variant-numeric: tabular-nums; } .chip-par { color: var(--accent); background: color-mix(in oklch, var(--accent) 8%, transparent); } .chip-rating--green { color: oklch(0.55 0.15 150); background: color-mix(in oklch, oklch(0.55 0.15 150) 10%, transparent); } .chip-rating--amber { color: oklch(0.55 0.12 100); background: color-mix(in oklch, oklch(0.55 0.12 100) 10%, transparent); } .chip-rating--orange { color: oklch(0.55 0.10 50); background: color-mix(in oklch, oklch(0.55 0.10 50) 10%, transparent); } /* ── Inactive layouts collapsible ────────────────── */ .inactive-layouts { margin-top: 14px; background: var(--paper-2); border: 1px solid var(--line-2); border-radius: var(--radius-sm); overflow: hidden; } .inactive-toggle { display: flex; justify-content: space-between; align-items: center; width: 100%; padding: 12px 16px; background: transparent; border: 0; font: 500 13.5px/1.2 var(--font-sans); color: var(--ink-2); cursor: pointer; } .inactive-toggle .icon-chev { transition: transform 180ms; display: inline-block; } .inactive-toggle.is-open .icon-chev { transform: rotate(180deg); } .inactive-layouts-body { padding: 0 12px 12px; } .inactive-layouts-body[hidden] { display: none; } /* ── Tjing results ───────────────────────────────── */ #tjing-results { margin-top: 12px; } .tjing-result { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 14px; border-bottom: 1px solid var(--line-2); } .tjing-result:last-child { border-bottom: 0; } .tjing-result-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; } .tjing-result-name { font: 600 14px/1.3 var(--font-sans); color: var(--ink); } .tjing-result-address { font-size: 12.5px; color: var(--ink-3); } .tjing-error { color: var(--down); font-size: 13px; padding: 12px 0; } /* ── No-layouts message ──────────────────────────── */ .no-layouts { text-align: center; color: var(--ink-3); font-style: italic; padding: 24px; font-size: 13px; } /* ── Loading placeholder ─────────────────────────── */ .loading { text-align: center; color: var(--ink-3); font-size: 13px; padding: 24px; }