/* TravelOS v2 design layer: tokens, dark mode, new components */
:root{--brand:#0c2e4a;--brand2:#1765a3;--accent:#0fa38f;--bg:#f2f4f7;--card:#fff;--soft:#eef2f6;--text:#101c27;--muted:#5d6977;--line:#e2e7ed;--input:#fff;--inputb:#cfd7e0;--chipbg:#eef1f5;--chipfg:#44505c;--navbg:rgba(255,255,255,.94);--radius:16px;--shadow:0 1px 2px rgba(16,30,45,.05),0 4px 14px rgba(16,30,45,.05)}
html[data-theme=dark]{color-scheme:dark;--brand:#0a1a2a;--brand2:#4ea3e6;--accent:#22c3a9;--bg:#0b131b;--card:#131e29;--soft:#1a2733;--text:#e6edf3;--muted:#93a1af;--line:#233241;--input:#0f1922;--inputb:#2c3d4d;--chipbg:#1e2c39;--chipfg:#b9c6d2;--navbg:rgba(16,25,34,.95);--danger:#ff6b5e;--warn:#f0b44c;--ok:#3ccf8a;--info:#6fb0ff;--shadow:0 1px 2px rgba(0,0,0,.4)}
@media (prefers-color-scheme:dark){html[data-theme=auto]{color-scheme:dark;--brand:#0a1a2a;--brand2:#4ea3e6;--accent:#22c3a9;--bg:#0b131b;--card:#131e29;--soft:#1a2733;--text:#e6edf3;--muted:#93a1af;--line:#233241;--input:#0f1922;--inputb:#2c3d4d;--chipbg:#1e2c39;--chipfg:#b9c6d2;--navbg:rgba(16,25,34,.95);--danger:#ff6b5e;--warn:#f0b44c;--ok:#3ccf8a;--info:#6fb0ff;--shadow:0 1px 2px rgba(0,0,0,.4)}}
body{font-feature-settings:"tnum" 1,"cv11" 1;letter-spacing:-.003em}
.topbar{background:linear-gradient(180deg,var(--brand),var(--brand));box-shadow:0 1px 0 rgba(255,255,255,.06)}
.nav{background:var(--navbg);-webkit-backdrop-filter:saturate(1.6) blur(14px);backdrop-filter:saturate(1.6) blur(14px)}
.nav a.on{color:var(--brand2)}
.card,.list,.kpi{border:1px solid var(--line);box-shadow:var(--shadow)}
.kpi.hl{border-color:transparent;background:linear-gradient(135deg,#0c2e4a,#1765a3)}
html[data-theme=dark] .kpi.hl{background:linear-gradient(135deg,#123552,#1d5f94)}
input,select,textarea{background:var(--input);border-color:var(--inputb);color:var(--text)}
.chip{background:var(--chipbg);color:var(--chipfg)}
.chips button{background:var(--card);color:var(--chipfg);border-color:var(--line)}
.chips button.on{background:var(--brand2);border-color:var(--brand2);color:#fff}
.btn.sec{background:var(--soft);color:var(--brand2)}
.tabs{background:var(--soft);overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
.tabs button{color:var(--muted);white-space:nowrap}
.tabs button.on{background:var(--card);color:var(--text)}
.sheet,.sheet-h,.sheet-f{background:var(--card)!important}
.login .box{background:var(--card)}
.datebox{background:var(--soft);color:var(--brand2)}
html[data-theme=dark] .warnbox.error{background:#3a1c1a;color:#ffb3aa}html[data-theme=dark] .warnbox.warn{background:#3a2c12;color:#f6cf86}html[data-theme=dark] .warnbox.info{background:#14283f;color:#a9cdf5}
html[data-theme=dark] .chip.ok{background:#173526}html[data-theme=dark] .chip.warn{background:#3a2c12;color:#f6cf86}html[data-theme=dark] .chip.bad{background:#3a1c1a}html[data-theme=dark] .chip.info{background:#14283f}
html[data-theme=dark] .btn.danger{background:#3a1c1a}
.warnbox.ok{background:#e3f4ea;color:#155c3b;display:flex;gap:8px;padding:10px 12px;border-radius:12px;margin:8px 0;font-size:14px}
html[data-theme=dark] .warnbox.ok{background:#173526;color:#9fe3bf}
.mini{font-size:12.5px;color:var(--muted)}
.note{font-size:12.5px;color:var(--muted);line-height:1.5;margin:14px 4px}
.lbl{margin:12px 0 6px;font-weight:600}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
details>summary{cursor:pointer;list-style:none}details>summary::-webkit-details-marker{display:none}
details.card>summary{padding:2px 0}
/* FAB */
body.has-fab main{padding-bottom:calc(150px + var(--safe-b))}
.fab{transition:transform .22s ease,opacity .22s ease}
.fab.away{transform:translateY(120px);opacity:0;pointer-events:none}
/* combo (+ Add new) */
.combo{display:block;position:relative}
.combo input{margin-top:6px}
.combo-back{position:absolute;right:6px;top:6px;border:0;background:var(--soft);border-radius:8px;padding:6px 9px;font-size:12px;cursor:pointer;color:var(--brand2)}
/* chips, flags */
.chips{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.chips::-webkit-scrollbar{display:none}
.chips.tap{flex-wrap:wrap;overflow:visible}.chips.tap button{padding:9px 14px;font-size:14.5px}
.chips-row{display:flex;flex-wrap:wrap;gap:6px}
.chip.src{background:#e6f5f2;color:#0c7a6a;margin-left:4px}html[data-theme=dark] .chip.src{background:#12302b;color:#6fe0cb}
.flag{display:inline-block;font-size:12px;font-weight:600;padding:3px 8px;border-radius:8px;margin:4px 4px 0 0;background:var(--chipbg);color:var(--chipfg)}
.flag.bad{background:#fbe5e2;color:var(--danger)}.flag.warn{background:#fdf1dc;color:#93600a}.flag.ok{background:#e3f4ea;color:var(--ok)}.flag.info{background:#e4eefb;color:var(--info)}
html[data-theme=dark] .flag.bad{background:#3a1c1a}html[data-theme=dark] .flag.warn{background:#3a2c12;color:#f6cf86}html[data-theme=dark] .flag.ok{background:#173526}html[data-theme=dark] .flag.info{background:#14283f}
.risk{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle}
.risk.green{background:var(--ok)}.risk.yellow{background:#e0a21a}.risk.red{background:var(--danger)}
.t .risk{width:auto;height:auto;border-radius:999px;font-size:11px;padding:2px 7px;color:#fff;margin-left:4px}
/* loading */
.loading{display:flex;align-items:center;gap:12px;color:var(--muted)}
.spin{width:22px;height:22px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--brand2);animation:spin .8s linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}
/* flight results */
.filters{margin:4px 0 12px;display:flex;flex-direction:column;gap:8px}
.frs{display:flex;flex-direction:column;gap:10px}
.fr{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 13px}
.fr-top{display:flex;align-items:center;gap:10px}
.fr-logo{width:36px;height:36px;border-radius:10px;background:var(--soft);color:var(--brand2);font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.fr-air{flex:1;min-width:0;display:flex;flex-direction:column}.fr-air b{font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fr-air span{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fr-price{text-align:right;font-weight:800;font-size:18px;white-space:nowrap}.fr-price span{display:block;font-size:11px;font-weight:500;color:var(--muted)}
.fr-times{margin-top:8px;font-size:16px}.fr-times .arrow{color:var(--muted);margin:0 4px}
.fr-sub{font-size:12.5px;color:var(--muted);margin-top:2px}
.fr-det{margin-top:8px;font-size:12.5px;border-top:1px dashed var(--line);padding-top:8px}
.fr-act{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.cmp{margin-top:10px}.cmp a{display:inline-block;margin:4px 8px 0 0;font-size:13px}
/* hotel results */
.hrs{display:flex;flex-direction:column;gap:10px}
.hr{display:flex;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.hr img,.hr .noimg{width:104px;min-height:104px;object-fit:cover;flex-shrink:0;background:var(--soft);display:flex;align-items:center;justify-content:center;font-size:30px}
.hr-b{flex:1;min-width:0;padding:10px 10px 10px 0}.hr-n{font-weight:700;font-size:14.5px;line-height:1.25}
.hr-p{font-weight:800;font-size:16px;margin-top:4px}
/* global search + today */
.gsearch{position:relative;margin-bottom:12px}
.gsearch input{border-radius:14px;padding-left:38px;background:var(--card) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%238a96a3' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") 12px center no-repeat}
.gs-res{margin-top:6px}
.today{border-left:4px solid var(--accent)}
.today .row{padding:8px 0}
/* reminders */
.tick{width:26px;height:26px;border-radius:50%;border:2px solid var(--inputb);background:var(--card);flex-shrink:0;cursor:pointer;color:var(--ok);font-size:14px;align-self:center;margin-left:12px}
.as-btn{background:none;border:0;text-align:left;padding:0;cursor:pointer;flex:1;min-width:0}
.row.done .t{text-decoration:line-through;color:var(--muted)}
/* flight check */
.fl-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.fl-links a{font-size:12.5px;padding:5px 9px;border-radius:8px;background:var(--soft);text-decoration:none;color:var(--brand2)}
.adj-btns{display:flex;flex-wrap:wrap;gap:8px}
.seg2{border-left:3px solid var(--brand2);padding-left:10px;margin:8px 0}
/* tables */
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
.tbl th{text-align:left;font-size:11.5px;color:var(--muted);font-weight:600;padding:6px 4px;border-bottom:1px solid var(--line)}
.tbl td{padding:7px 4px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl .n{text-align:right;white-space:nowrap}
.tbl tfoot td{font-weight:700;border-bottom:0}
.tbl.pl .sh td{font-weight:700;padding-top:14px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.tbl.pl .st td{font-weight:600}.tbl.pl .gt td{font-weight:800;border-top:2px solid var(--text)}
.card{overflow-x:auto}
.jr .jl{display:grid;grid-template-columns:1fr 80px 80px;font-size:12px;color:var(--muted);gap:6px}.jr .jl span:nth-child(n+2){text-align:right}
/* cards manager */
.bar{height:8px;background:var(--soft);border-radius:99px;overflow:hidden;margin:10px 0 4px}.bar i{display:block;height:100%;background:var(--accent);border-radius:99px}
.cfchart{width:100%;height:auto;margin-top:10px;background:var(--soft);border-radius:10px}
.bars-l{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:4px}
.steps{padding-left:20px;margin:6px 0}.steps li{margin:5px 0}
.chk{display:flex;gap:8px;align-items:center;font-size:14px;margin:8px 0}.chk input{width:auto;min-height:0}
.kv{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px}.kv span{color:var(--muted)}
.row-d>summary.row{border-bottom:1px solid var(--line)}
.row-d[open]>summary{background:var(--soft)}
.prog .dot.mi{background:var(--soft);color:var(--brand2)}.prog .dot.mi svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.hero-p{background:linear-gradient(135deg,var(--card),var(--soft))}
.src-card h2{margin-bottom:4px}
.theme-sw{display:flex;gap:6px}
@media (min-width:900px){main{max-width:1040px;padding-left:24px;padding-right:24px}.kpis{grid-template-columns:repeat(4,1fr)}.frs,.hrs{display:grid;grid-template-columns:1fr 1fr}}

.ask-f{display:flex;gap:8px}.ask-f input{flex:1;border-radius:14px}.ask-f .btn{flex-shrink:0}
.ask-a{border-left:4px solid var(--brand2)}.ask-n{font-size:32px;font-weight:800;letter-spacing:-.02em;margin:4px 0 2px}
.act{padding:9px 0;border-bottom:1px solid var(--line)}.act:last-child{border-bottom:0}.act .diff{padding-left:10px;word-break:break-word}
.review-c{border:2px solid var(--info)}
.lnk{padding:6px 0!important}
a.warnbox{display:flex;gap:8px;padding:10px 12px;border-radius:12px;margin:0 0 10px;font-size:14px}

@media (prefers-color-scheme:dark){html[data-theme=auto] .kpi.hl{background:linear-gradient(135deg,#123552,#1d5f94)}html[data-theme=auto] .warnbox.error{background:#3a1c1a;color:#ffb3aa}html[data-theme=auto] .warnbox.warn{background:#3a2c12;color:#f6cf86}html[data-theme=auto] .warnbox.info{background:#14283f;color:#a9cdf5}html[data-theme=auto] .chip.ok{background:#173526}html[data-theme=auto] .chip.warn{background:#3a2c12;color:#f6cf86}html[data-theme=auto] .chip.bad{background:#3a1c1a}html[data-theme=auto] .chip.info{background:#14283f}html[data-theme=auto] .btn.danger{background:#3a1c1a}html[data-theme=auto] .warnbox.ok{background:#173526;color:#9fe3bf}html[data-theme=auto] .chip.src{background:#12302b;color:#6fe0cb}html[data-theme=auto] .flag.bad{background:#3a1c1a}html[data-theme=auto] .flag.warn{background:#3a2c12;color:#f6cf86}html[data-theme=auto] .flag.ok{background:#173526}html[data-theme=auto] .flag.info{background:#14283f}}
html[data-theme=dark] .kpi.hl .l,html[data-theme=dark] .kpi.hl .s{color:rgba(255,255,255,.8)}
html[data-theme=dark] input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.8)}
@media (prefers-color-scheme:dark){html[data-theme=auto] input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.8)}}
