:root{--ground:#f5f6f9;--surface:#fff;--surface-2:#eef1f5;--line:#dde3eb;--ink:#141a22;--muted:#5c6a7a;--faint:#8e9bab;--accent:#0e86a8;--accent-soft:#e2f1f6;--ok:#1f9d6b;--warn:#b9791b;--crit:#c6483d;--ok-bg:#e5f4ec;--warn-bg:#f8eeda;--crit-bg:#f8e6e3;--shadow:0 1px 2px #141a220a, 0 6px 24px #141a220f;--mono:"SF Mono", "JetBrains Mono", ui-monospace, "Cascadia Code", Consolas, monospace;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--radius:14px;--bg:var(--ground);--text:var(--ink);--text-muted:var(--muted);--border:var(--line);--danger:var(--crit);--success:var(--ok)}@media (prefers-color-scheme:dark){:root{--ground:#0e141e;--surface:#18212e;--surface-2:#131b26;--line:#27303f;--ink:#eaeef4;--muted:#93a0b1;--faint:#68768a;--accent:#40b7d8;--accent-soft:#12313c;--ok:#43c08a;--warn:#e9a63e;--crit:#e75d51;--ok-bg:#123027;--warn-bg:#33280f;--crit-bg:#341c1a;--shadow:0 1px 2px #0000004d, 0 10px 30px #00000059}}:root[data-theme=light]{--ground:#f5f6f9;--surface:#fff;--surface-2:#eef1f5;--line:#dde3eb;--ink:#141a22;--muted:#5c6a7a;--faint:#8e9bab;--accent:#0e86a8;--accent-soft:#e2f1f6;--ok:#1f9d6b;--warn:#b9791b;--crit:#c6483d;--ok-bg:#e5f4ec;--warn-bg:#f8eeda;--crit-bg:#f8e6e3;--shadow:0 1px 2px #141a220a, 0 6px 24px #141a220f}:root[data-theme=dark]{--ground:#0e141e;--surface:#18212e;--surface-2:#131b26;--line:#27303f;--ink:#eaeef4;--muted:#93a0b1;--faint:#68768a;--accent:#40b7d8;--accent-soft:#12313c;--ok:#43c08a;--warn:#e9a63e;--crit:#e75d51;--ok-bg:#123027;--warn-bg:#33280f;--crit-bg:#341c1a;--shadow:0 1px 2px #0000004d, 0 10px 30px #00000059}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--ground);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5}.tnum{font-variant-numeric:tabular-nums}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.eyebrow{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--faint);font-size:11px}h1,h2,h3{letter-spacing:-.02em;text-wrap:balance;margin:0;font-weight:720}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.app{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.rail{border-right:1px solid var(--line);background:var(--surface-2);flex-direction:column;gap:26px;height:100vh;padding:22px 16px;display:flex;position:sticky;top:0}.brand{letter-spacing:-.02em;align-items:center;gap:10px;font-size:17px;font-weight:760;display:flex}.brand .mark{background:var(--accent);color:#fff;border-radius:9px;place-items:center;width:30px;height:30px;font-size:16px;display:grid}.nav{flex-direction:column;gap:2px;display:flex}.nav a{color:var(--muted);border-radius:10px;align-items:center;gap:11px;padding:9px 11px;font-size:14px;font-weight:560;display:flex}.nav a .i{text-align:center;opacity:.85;width:18px}.nav a.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.nav a:hover:not(.on){color:var(--ink);background:var(--surface)}.rail .foot{color:var(--faint);margin-top:auto;font-size:12px;line-height:1.6}.rail .who{color:var(--muted);align-items:center;gap:9px;font-size:13px;display:flex}.rail .who .av{background:var(--accent-soft);width:26px;height:26px;color:var(--accent);border-radius:50%;place-items:center;font-size:12px;font-weight:700;display:grid}.main{max-width:1080px;padding:26px 34px 60px}.topbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;display:flex}.topbar .lede .eyebrow{margin-bottom:4px}.topbar h1{font-size:24px}.tools{align-items:center;gap:8px;display:flex}.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;font-size:13px;font-weight:600;font-family:var(--sans);border-radius:10px;align-items:center;gap:7px;padding:8px 13px;display:inline-flex}.btn:hover{border-color:var(--accent)}.btn.solid{background:var(--accent);border-color:var(--accent);color:#fff}.pill{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-size:11px;font-weight:600;display:inline-flex}.pill .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.pill.ok{color:var(--ok);background:var(--ok-bg)}.pill.warn{color:var(--warn);background:var(--warn-bg)}.pill.crit{color:var(--crit);background:var(--crit-bg)}.pill.neutral{color:var(--muted);background:var(--surface-2)}.hero{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px;margin-bottom:24px;overflow:hidden}.hero .band{background:linear-gradient(90deg, var(--accent-soft), transparent);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:11px 20px;display:flex}.hero .band .live{font-family:var(--mono);color:var(--muted);align-items:center;gap:9px;font-size:12px;display:flex}.hero .band .live .beacon{background:var(--ok);width:8px;height:8px;box-shadow:0 0 0 0 var(--ok);border-radius:50%;animation:2.4s infinite pulse}@keyframes pulse{0%{box-shadow:0 0 #43c08a80}70%{box-shadow:0 0 0 7px #43c08a00}to{box-shadow:0 0 #43c08a00}}@media (prefers-reduced-motion:reduce){.hero .band .live .beacon{animation:none}}.hero .body{grid-template-columns:1.3fr 1fr;gap:26px;padding:22px 20px 20px;display:grid}.route{align-items:flex-end;gap:16px;display:flex}.route .port{flex-direction:column;gap:2px;display:flex}.route .port .code{font-family:var(--mono);letter-spacing:.02em;font-size:34px;font-weight:700;line-height:1}.route .port .city{color:var(--muted);font-size:13px}.route .arc{flex-direction:column;flex:1;align-items:center;gap:5px;padding-bottom:6px;display:flex}.route .arc .plane{color:var(--accent)}.route .arc .len{background:repeating-linear-gradient(90deg, var(--line) 0 6px, transparent 6px 11px);width:100%;height:1px}.route .arc .dur{font-family:var(--mono);color:var(--faint);font-size:11px}.whenrow{flex-wrap:wrap;gap:26px;margin-top:18px;display:flex}.whenrow .b .eyebrow{margin-bottom:3px}.whenrow .b .v{font-family:var(--mono);font-size:15px;font-weight:600}.count{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;flex-direction:column;justify-content:center;gap:10px;padding:16px 18px;display:flex}.count .big{font-family:var(--mono);letter-spacing:-.01em;font-size:30px;font-weight:700}.count .big span{color:var(--accent)}.count .sub{color:var(--muted);font-size:13px}.count .prog{background:var(--line);border-radius:6px;height:6px;overflow:hidden}.count .prog i{background:var(--accent);height:100%;display:block}.sec{justify-content:space-between;align-items:center;gap:12px;margin:30px 0 14px;display:flex}.sec h2{letter-spacing:.02em;font-size:15px}.sec .eyebrow{align-self:center;margin-left:12px;margin-right:auto}.tabs{background:var(--surface-2);border:1px solid var(--line);border-radius:11px;gap:4px;padding:3px;display:flex}.tabs button{color:var(--muted);cursor:pointer;font-size:13px;font-weight:600;font-family:var(--sans);background:0 0;border:0;border-radius:8px;padding:6px 12px}.tabs button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.timeline{flex-direction:column;gap:0;margin-left:6px;display:flex;position:relative}.leg{grid-template-columns:26px 1fr;gap:14px;padding-bottom:16px;display:grid;position:relative}.leg .spine{flex-direction:column;align-items:center;display:flex}.leg .spine .node{border:2px solid var(--accent);background:var(--surface);border-radius:50%;width:12px;height:12px;margin-top:20px}.leg .spine .node.hotel{border-color:var(--muted)}.leg .spine .line{background:var(--line);flex:1;width:2px;margin-top:4px}.leg:last-child .spine .line{display:none}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:15px 17px}.card .head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.card .head .who{align-items:center;gap:10px;min-width:0;display:flex}.card .head .logo{background:var(--surface-2);border:1px solid var(--line);width:30px;height:30px;font-family:var(--mono);color:var(--accent);border-radius:8px;place-items:center;font-size:12px;font-weight:700;display:grid}.card .head .t{letter-spacing:-.01em;font-weight:680}.card .head .sub{font-family:var(--mono);color:var(--faint);font-size:12px}.flightgrid{grid-template-columns:1fr auto 1fr;align-items:center;gap:14px;display:grid}.flightgrid .end{flex-direction:column;gap:2px;display:flex}.flightgrid .end.r{text-align:right;align-items:flex-end}.flightgrid .end .time{font-family:var(--mono);font-size:22px;font-weight:700;line-height:1}.flightgrid .end .ap{font-family:var(--mono);color:var(--muted);font-size:12px}.flightgrid .mid{color:var(--faint);flex-direction:column;align-items:center;gap:3px;display:flex}.flightgrid .mid .l{background:repeating-linear-gradient(90deg, var(--line) 0 5px, transparent 5px 9px);width:74px;height:1px}.meta{border-top:1px dashed var(--line);flex-wrap:wrap;gap:7px 16px;margin-top:13px;padding-top:12px;display:flex}.meta .m{flex-direction:column;gap:1px;display:flex}.meta .m .k{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-size:10px}.meta .m .val{font-family:var(--mono);font-size:13px;font-weight:600}.hotelrow{grid-template-columns:1fr;gap:14px;display:grid}.addr{color:var(--muted);font-size:13px;line-height:1.45}.addr .maplink{color:var(--accent);gap:5px;margin-top:6px;font-size:12.5px;font-weight:600;display:inline-flex}.maplink{color:var(--accent);gap:5px;font-size:12.5px;font-weight:600;display:inline-flex}.stay-detail{border-top:1px dashed var(--line);margin-top:10px;padding-top:9px}.stay-detail>summary{cursor:pointer;color:var(--accent);align-items:center;gap:6px;font-size:12.5px;font-weight:600;list-style:none;display:inline-flex}.stay-detail>summary::-webkit-details-marker{display:none}.stay-detail>summary:before{content:"▸";font-size:10px;transition:transform .15s}.stay-detail[open]>summary:before{transform:rotate(90deg)}.stay-detail-body{color:var(--muted);flex-direction:column;gap:4px;margin-top:8px;font-size:13px;line-height:1.5;display:flex}.doc{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:12px;align-items:center;gap:9px;padding:11px 14px;display:flex}.doc .ic{border-radius:8px;place-items:center;width:30px;height:30px;font-size:15px;display:grid}.doc.ok .ic{background:var(--ok-bg);color:var(--ok)}.doc.warn .ic{background:var(--warn-bg);color:var(--warn)}.doc.neutral .ic{background:var(--surface-2);color:var(--muted)}.doc .t{font-size:13.5px;font-weight:620}.doc .s{color:var(--muted);font-size:12px}.doc .go{color:var(--accent);margin-left:auto;font-size:12.5px;font-weight:600}.grid{grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:14px;display:grid}.trip{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;color:inherit;flex-direction:column;gap:11px;padding:15px 16px;transition:border-color .15s,transform .15s;display:flex}.trip:hover{border-color:var(--accent);transform:translateY(-2px)}.trip .row{justify-content:space-between;align-items:center;gap:8px;display:flex}.trip .dest{letter-spacing:-.01em;font-size:16.5px;font-weight:700}.trip .flag{font-size:17px}.trip .dates{font-family:var(--mono);color:var(--muted);font-size:12.5px}.trip .chips{flex-wrap:wrap;gap:6px;margin-top:2px;display:flex}.chip{color:var(--muted);background:var(--surface-2);border:1px solid var(--line);border-radius:8px;align-items:center;gap:5px;padding:3px 8px;font-size:11.5px;font-weight:560;display:inline-flex}.chip.warn{color:var(--warn);border-color:var(--warn)}.trip .bar{background:var(--surface-2);border-radius:4px;height:4px;overflow:hidden}.trip .bar i{background:var(--accent);height:100%;display:block}.foot-strip{grid-template-columns:1fr 1fr 1fr;gap:14px;margin-top:6px;display:grid}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 17px}.stat .k{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-size:11px}.stat .big{font-family:var(--mono);letter-spacing:-.01em;margin-top:5px;font-size:27px;font-weight:720}.stat .big u{color:var(--accent);font-size:16px;text-decoration:none}.stat .sub{color:var(--muted);margin-top:4px;font-size:12.5px}.rank{flex-direction:column;gap:8px;margin-top:11px;display:flex}.rank .r{grid-template-columns:1fr auto;align-items:center;gap:8px;font-size:13px;display:grid}.rank .r .n{color:var(--muted)}.rank .r .v{font-family:var(--mono);font-weight:600}.rank .r .track{background:var(--surface-2);border-radius:5px;grid-column:1/3;height:5px;overflow:hidden}.rank .r .track i{background:var(--accent);opacity:.85;height:100%;display:block}.empty{border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);background:var(--surface-2);padding:22px;font-size:13.5px}.note{border:1px dashed var(--line);color:var(--muted);background:var(--surface-2);border-radius:12px;margin-top:34px;padding:14px 16px;font-size:13px}.note b{color:var(--ink)}@media (max-width:900px){.app{grid-template-columns:1fr}.rail{display:none}.hero .body,.foot-strip{grid-template-columns:1fr}.main{padding:20px}}.page-shell{max-width:960px;margin:0 auto;padding:3rem 1.5rem}.muted{color:var(--text-muted)}.auth-shell{justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:360px;padding:2rem}.auth-card h1{margin:0 0 .25rem;font-size:1.25rem}.auth-subtitle{color:var(--text-muted);margin:0 0 1.5rem;font-size:.9rem}.auth-form{flex-direction:column;gap:.75rem;display:flex}.auth-form label{color:var(--text-muted);font-size:.85rem}.auth-form input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;width:100%;padding:.6rem .75rem;font-size:.95rem}.auth-form input:focus{outline:2px solid var(--accent);outline-offset:1px}.auth-form button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:.65rem .75rem;font-weight:600}.auth-form button:disabled{opacity:.6;cursor:default}.auth-status{color:var(--text-muted);margin-top:1rem;font-size:.85rem}.auth-error{color:var(--danger);margin-top:1rem;font-size:.85rem}.trip-list{flex-direction:column;gap:.75rem;margin-top:1.5rem;display:flex}.trip-card-link{color:inherit;text-decoration:none;display:block}.trip-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem 1.5rem}.trip-card-link:hover .trip-card{border-color:var(--accent)}.trip-card-title{margin:0 0 .25rem;font-size:1.05rem}.trip-card-location,.trip-card-dates{margin:0 0 .25rem;font-size:.9rem}.trip-card-counts{color:var(--text-muted);margin:.5rem 0 0;font-size:.85rem}.trip-timeline{flex-direction:column;gap:.75rem;margin:1.5rem 0 0;padding:0;list-style:none;display:flex}.timeline-row{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);padding:.85rem 1.1rem}.timeline-row-stay{border-left-color:var(--text-muted)}.timeline-row-main{justify-content:space-between;gap:1rem;font-weight:600;display:flex}.timeline-row-route{color:var(--text-muted);font-weight:400}.timeline-row-detail{margin-top:.35rem;font-size:.85rem}.calendar-grid{border:1px solid var(--border);border-radius:var(--radius);margin-top:1.5rem;overflow:hidden}.calendar-weekday-row,.calendar-week{grid-template-columns:repeat(7,1fr);display:grid}.calendar-weekday{color:var(--text-muted);text-align:center;border-bottom:1px solid var(--border);padding:.5rem .4rem;font-size:.75rem}.calendar-day{border-top:1px solid var(--border);border-left:1px solid var(--border);flex-direction:column;gap:.2rem;min-height:5.5rem;padding:.4rem;font-size:.8rem;display:flex}.calendar-week .calendar-day:first-child,.calendar-weekday-row .calendar-weekday:first-child{border-left:none}.calendar-day-blank{background:var(--bg)}.calendar-day-num{font-weight:600}.calendar-day-today{background:#0e86a81f}.calendar-day-today .calendar-day-num{color:var(--accent)}.calendar-day-today-badge{color:var(--accent);text-transform:uppercase;letter-spacing:.03em;font-size:.65rem}.calendar-day-stay{box-shadow:inset 3px 0 0 var(--text-muted);background:#8b93a11f}.calendar-flight-marker{color:var(--accent);font-size:.72rem;font-weight:600}.calendar-stay-marker{color:var(--text-muted);font-size:.7rem}.entry-doc-panel{margin-top:1.5rem}.entry-doc-panel-title{margin:0 0 .75rem;font-size:1rem}.entry-doc-chip-list{flex-direction:column;gap:.6rem;display:flex}.entry-doc-chip{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--text-muted);border-radius:var(--radius);align-items:center;gap:.6rem;padding:.6rem .9rem;font-size:.9rem;display:flex}.entry-doc-chip-warning{border-left-color:var(--danger)}.entry-doc-chip-success{border-left-color:var(--success)}.entry-doc-chip-label{text-transform:uppercase;letter-spacing:.03em;border-radius:999px;padding:.15rem .5rem;font-size:.78rem;font-weight:600}.entry-doc-chip-warning .entry-doc-chip-label{color:var(--danger);background:#c6483d1f}.entry-doc-chip-success .entry-doc-chip-label{color:var(--success);background:#1f9d6b1f}.entry-doc-chip-system{flex:1}.entry-doc-chip-link{font-size:.85rem;font-weight:600}.stat-counter-row{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.stat-counter{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex:160px;padding:1.25rem 1.5rem}.stat-counter-value{letter-spacing:-.01em;color:var(--accent);margin:0;font-size:2rem;font-weight:700}.stat-counter-unit{color:var(--text-muted);font-size:1rem;font-weight:600}.stat-counter-label{margin:.25rem 0 0;font-size:.85rem}.stat-list-section{margin-top:2rem}.stat-list-section h2{margin:0 0 .75rem;font-size:1rem}.stat-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.stat-list-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);justify-content:space-between;gap:1rem;padding:.65rem 1rem;font-size:.9rem;display:flex}.stat-list-value{color:var(--text-muted);white-space:nowrap}.book-launcher-panel{margin-top:1.5rem}.book-launcher-panel-title{margin:0 0 .75rem;font-size:1rem}.book-launcher{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.6rem;padding:.6rem .9rem;font-size:.9rem;display:flex}.book-launcher-links{gap:.75rem;display:flex}.book-launcher-link{font-size:.85rem;font-weight:600}
