:root[data-theme=light]{--bg: #fafaf7;--bg-raised: #ffffff;--bg-hover: #f3f2ee;--border: #e1dfd8;--border-strong: #c3c0b5;--text: #1a1a17;--text-dim: #5a5a54;--text-muted: #8a8a80;--accent: #2c5f4e;--accent-hover: #224c3e;--accent-text: #ffffff;--frontier: #c69b3a;--warning: #b05e1a;--danger: #8a2e2e;--shadow: 0 1px 3px rgba(0, 0, 0, .06), 0 1px 2px rgba(0, 0, 0, .04)}:root[data-theme=dark]{--bg: #14140f;--bg-raised: #1e1e18;--bg-hover: #282822;--border: #2e2e25;--border-strong: #45453a;--text: #e8e6df;--text-dim: #a8a69c;--text-muted: #75736a;--accent: #6fb39a;--accent-hover: #85c3ab;--accent-text: #0f1413;--frontier: #e2b860;--warning: #d68a4a;--danger: #d46b6b;--shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 1px 2px rgba(0, 0, 0, .25)}*{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100vh}body{background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer}.app-shell{max-width:1100px;margin:0 auto;padding:1.5rem 1.25rem 4rem}.app-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-bottom:1rem;margin-bottom:2rem;border-bottom:1px solid var(--border)}.app-header__brand{font-size:1.1rem;font-weight:600;letter-spacing:-.01em;color:var(--text)}.app-header__brand:hover{text-decoration:none}.app-header__nav{display:flex;gap:1.5rem;align-items:center}.app-header__nav a{color:var(--text-dim);font-weight:500}.app-header__nav a.active{color:var(--text)}.theme-toggle{background:transparent;border:1px solid var(--border);color:var(--text-dim);padding:.3rem .6rem;border-radius:6px;font-size:.85rem}.theme-toggle:hover{background:var(--bg-hover);color:var(--text)}.card{background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem;box-shadow:var(--shadow)}.card+.card{margin-top:.75rem}.card__title{margin:0 0 .25rem;font-size:1rem;font-weight:600}.card__meta{color:var(--text-muted);font-size:.85rem}.btn{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .85rem;border-radius:6px;font-size:.9rem;font-weight:500;border:1px solid transparent;background:transparent;color:var(--text)}.btn:hover{background:var(--bg-hover)}.btn--primary{background:var(--accent);color:var(--accent-text)}.btn--primary:hover{background:var(--accent-hover)}.btn--ghost{border-color:var(--border);color:var(--text-dim)}.btn--ghost:hover{color:var(--text);background:var(--bg-hover)}.form-row{display:grid;grid-template-columns:160px 1fr;gap:.5rem 1rem;align-items:baseline;margin-bottom:.75rem}.form-row label{color:var(--text-dim);font-size:.9rem}.input,.select{width:100%;padding:.45rem .6rem;border:1px solid var(--border-strong);border-radius:6px;background:var(--bg-raised);color:var(--text);font:inherit}.input:focus,.select:focus{outline:2px solid var(--accent);outline-offset:-1px}.dashboard-empty{text-align:center;padding:3rem 1rem;color:var(--text-dim);border:1px dashed var(--border-strong);border-radius:12px}.watch-summary{display:grid;grid-template-columns:1fr auto;gap:.5rem 1.5rem;align-items:center}.watch-summary__route{font-size:.88rem;color:var(--text-dim);margin-top:.15rem}.watch-summary__best{text-align:right;font-size:.85rem;color:var(--text-dim)}.watch-summary__best strong{display:block;font-size:1rem;color:var(--text);font-weight:600}.status-pill{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;margin-left:.5rem;vertical-align:1px}.status-pill--active{background:color-mix(in oklab,var(--accent) 18%,transparent);color:var(--accent)}.status-pill--paused{background:color-mix(in oklab,var(--warning) 18%,transparent);color:var(--warning)}.status-pill--expired{background:color-mix(in oklab,var(--text-muted) 22%,transparent);color:var(--text-muted)}.watch-detail__header{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:1rem;margin-bottom:1rem}.cabin-picker{display:inline-flex;border:1px solid var(--border-strong);border-radius:8px;overflow:hidden}.cabin-picker button{padding:.35rem .85rem;background:transparent;border:none;color:var(--text-dim);font-size:.88rem;border-right:1px solid var(--border)}.cabin-picker button:last-child{border-right:none}.cabin-picker button[aria-pressed=true]{background:var(--accent);color:var(--accent-text);font-weight:600}.frontier-wrap{background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;padding:1rem;margin-bottom:1.25rem}.results-table{width:100%;border-collapse:collapse;font-size:.9rem;background:var(--bg-raised);border:1px solid var(--border);border-radius:10px;overflow:hidden}.results-table thead th{text-align:left;padding:.6rem .85rem;border-bottom:1px solid var(--border);color:var(--text-dim);font-weight:600;font-size:.8rem;letter-spacing:.03em;text-transform:uppercase;background:var(--bg-hover);cursor:pointer;-webkit-user-select:none;user-select:none}.results-table thead th[aria-sort]{position:relative}.results-table thead th:after{content:"";display:inline-block;width:.5em}.results-table thead th[aria-sort=ascending]:after{content:" ↑";color:var(--accent)}.results-table thead th[aria-sort=descending]:after{content:" ↓";color:var(--accent)}.results-table tbody td{padding:.55rem .85rem;border-bottom:1px solid var(--border)}.results-table tbody tr{transition:background-color .1s ease}.results-table tbody tr:hover{background:var(--bg-hover)}.results-table tbody tr[data-highlighted=true]{background:color-mix(in oklab,var(--accent) 15%,transparent);box-shadow:inset 3px 0 0 var(--accent)}.frontier-star{color:var(--frontier);font-size:1.05em;margin-right:.3rem}.afford-pill{display:inline-block;min-width:1.3em;padding:0 .35em;border-radius:4px;font-weight:600;font-size:.95em;text-align:center}.afford-pill--direct{color:var(--accent);background:color-mix(in oklab,var(--accent) 15%,transparent)}.afford-pill--transfer{color:var(--frontier);background:color-mix(in oklab,var(--frontier) 18%,transparent)}.afford-pill--no{color:var(--danger);background:color-mix(in oklab,var(--danger) 12%,transparent)}.afford-pill--unknown{color:var(--text-muted);background:color-mix(in oklab,var(--text-muted) 15%,transparent)}.afford-legend{display:flex;flex-wrap:wrap;gap:.75rem;font-size:.78rem;color:var(--text-dim);margin-top:.5rem;padding:.4rem .75rem;background:var(--bg-hover);border-radius:6px}.afford-legend__item{display:inline-flex;align-items:center;gap:.3rem}.fare-badge{font-size:.72rem;text-transform:uppercase;font-weight:600;letter-spacing:.04em;padding:.05rem .4rem;border-radius:4px;background:var(--bg-hover);color:var(--text-dim)}.provider-warning{background:color-mix(in oklab,var(--warning) 12%,transparent);border:1px solid color-mix(in oklab,var(--warning) 40%,transparent);color:var(--warning);padding:.5rem .85rem;border-radius:8px;margin-bottom:.75rem;font-size:.88rem}.loading{color:var(--text-muted);padding:2rem 0;text-align:center}.error-banner{background:color-mix(in oklab,var(--danger) 12%,transparent);color:var(--danger);border:1px solid color-mix(in oklab,var(--danger) 40%,transparent);padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem}
