:root{color-scheme:light;--bg:#f5f6f8;--ink:#20292e;--muted:#626e76;--line:#e2e7eb;--accent:#176b61}
*{box-sizing:border-box}html{scroll-padding-top:115px}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;line-height:1.65;-webkit-text-size-adjust:100%}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid var(--accent);outline-offset:4px}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.3;overflow-wrap:anywhere}p{overflow-wrap:anywhere}.shell{max-width:960px;padding:0 28px;margin:0 auto}.brand{display:flex;align-items:center;gap:10px;padding:30px 0;font-size:16px;font-weight:650}.brand-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:var(--accent);color:#fff;font-size:22px}.brand-note{margin-left:auto;color:var(--muted);font-size:14px;font-weight:400}.page-heading{padding:30px 0 32px}.eyebrow{font-size:12px;font-weight:700;letter-spacing:2px;color:var(--accent);margin-bottom:10px}h1{font-size:38px;letter-spacing:-1px}.intro{color:var(--muted);margin-top:12px;font-size:17px}.trip-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.trip-card{display:block;border-radius:24px;overflow:hidden;background:#fff;border:1px solid var(--line)}.trip-card:hover{border-color:#7eaaa2}.trip-cover{position:relative;isolation:isolate;background:#e8f0eb;padding:24px 26px;overflow:hidden;min-height:207px}.trip-cover:after{content:"";position:absolute;z-index:-1;width:260px;height:260px;right:-65px;top:55px;border:1px solid #c8d9ce;border-radius:50%;box-shadow:0 0 0 35px #e1ebe3,0 0 0 36px #ccded2}.cover-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:30px}.cover-label{font-size:13px;color:#506b60}.demo-badge{padding:3px 10px;background:#fff9e7;color:#785c20;border-radius:20px;font-size:12px;white-space:nowrap}.trip-cover h2{font-size:29px;color:#204b3b;letter-spacing:-.6px}.cover-rule{display:block;width:28px;height:2px;background:#7a9c85;margin:15px 0 9px}.cover-caption{color:#526d5d;font-size:14px}.trip-body{padding:22px 26px 0}.trip-dates{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums}.trip-summary{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:12px 0 22px;color:var(--muted);font-size:13px}.trip-summary strong{font-size:22px;color:var(--ink);margin-right:4px}.card-action{border-top:1px solid var(--line);padding:17px 0;display:flex;justify-content:space-between;color:var(--accent);font-size:15px;font-weight:650;min-height:55px}.list-note{font-size:13px;color:var(--muted);margin:24px 4px}.footer{display:flex;align-items:center;justify-content:space-between;gap:16px;color:var(--muted);font-size:12px;border-top:1px solid var(--line);margin-top:60px;padding:18px 0 30px}.footer a{display:inline-flex;align-items:center;min-height:44px;color:var(--accent);font-size:13px}.empty-state{border:1px dashed #bfc9ce;border-radius:22px;padding:30px;grid-column:1/-1}.empty-state h2{font-size:22px;margin-bottom:10px}.empty-state p{color:var(--muted)}.detail-shell{max-width:800px}.detail-header{display:flex;align-items:center;justify-content:space-between;padding:18px 0}.back-link{display:inline-flex;align-items:center;min-height:44px;color:var(--accent);font-size:15px;font-weight:600}.small-brand{color:var(--muted);font-size:13px}.trip-heading{padding:22px 0}.detail-dates{font-size:17px;margin-top:14px;font-variant-numeric:tabular-nums}.trip-facts{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:10px;color:var(--muted);font-size:13px}.description{font-size:15px;color:var(--muted);margin-top:18px;max-width:600px;line-height:1.85}.demo-notice{border:1px solid #e6dabc;border-radius:14px;background:#fffaf0;padding:14px 17px;margin:2px 0 22px;color:#725922;font-size:13px}.demo-notice strong{font-weight:600}.demo-notice p{margin-top:4px}.day-nav{display:flex;gap:8px;flex-wrap:wrap;position:sticky;top:0;z-index:2;padding:12px 0 18px;background:var(--bg)}.day-nav a{display:flex;align-items:center;gap:7px;padding:10px 12px;min-height:44px;border:1px solid #d8e1e3;background:#fff;border-radius:12px;font-size:13px;font-weight:600}.day-nav span{font-size:12px;color:var(--muted);font-weight:400}.day-nav a:hover{border-color:var(--accent)}.schedule{margin-top:8px}.day-section{margin-top:26px;scroll-margin-top:120px}.day-heading{display:flex;align-items:flex-start;gap:14px;margin-bottom:22px}.day-index{padding:8px 10px;border-radius:10px;background:#e5eee9;color:var(--accent);font-size:12px;font-weight:750;letter-spacing:.8px;white-space:nowrap}.day-heading h2{font-size:21px}.day-heading p{color:var(--muted);font-size:13px;margin-top:6px}.separator{margin:0 8px}.timeline{list-style:none;margin:0;padding:0}.event{display:grid;grid-template-columns:58px minmax(0,1fr);gap:14px;margin-bottom:18px;position:relative}.event:not(:last-child):before{content:"";position:absolute;top:80px;bottom:-15px;left:25px;border-left:1px solid #d9e0e3}.event-time{font-size:15px;line-height:1.3;font-weight:650;font-variant-numeric:tabular-nums;text-align:center;padding-top:17px;color:#344852}.end-time{display:block;font-size:12px;color:var(--muted);font-weight:400}.time-line{display:block;width:1px;height:12px;background:#bdc7cd;margin:5px auto}.event-card{border:1px solid var(--line);border-radius:20px;padding:20px 22px;background:#fff;min-width:0}.event-meta{display:flex;align-items:center;gap:9px;margin-bottom:10px}.type-badge{display:inline-flex;padding:2px 8px;border-radius:7px;background:#eaf2ee;color:#326852;font-size:12px}.type-transport{background:#e9eff9;color:#3d6191}.type-activity{background:#f1eafa;color:#795993}.transport-number{font-size:12px;letter-spacing:.6px;color:#607089}.event-card h3{font-size:20px;line-height:1.45;letter-spacing:-.3px}.event-description{margin-top:10px;color:#536069;font-size:14px;line-height:1.85}.place-line{padding-top:12px;margin-top:13px;border-top:1px solid #edf0f2;color:#536069;font-size:13px}.place-line>span:first-child{color:var(--accent);font-size:16px}.place-address{display:block;margin-top:4px}.event-note:not(.itinerary-card){margin-top:12px;font-size:12px;color:#727c83}.empty-day{padding:20px;color:var(--muted);font-size:14px}.skip-link{position:absolute;left:16px;top:-100px;background:#fff;padding:12px;z-index:5}.skip-link:focus{top:8px}
@media(min-width:700px){.trip-grid:has(>.trip-card:only-child){grid-template-columns:minmax(0,440px)}}
@media(max-width:600px){.shell{padding:0 20px}.brand{padding:23px 0}.brand-note{display:none}.page-heading{padding:25px 0 28px}h1{font-size:33px}.trip-grid{grid-template-columns:minmax(0,1fr)}.trip-cover{padding:23px 24px;min-height:204px}.trip-body{padding:21px 24px 0}.trip-cover h2{font-size:28px}.footer{margin-top:38px;align-items:flex-start}.detail-header{padding:15px 0}.trip-heading{padding:16px 0 22px}.day-nav{gap:6px;padding:10px 0 15px}.day-nav a{padding:10px 11px}.day-nav span{display:none}.day-heading{gap:12px}.day-heading h2{font-size:19px}.event{grid-template-columns:48px minmax(0,1fr);gap:10px}.event:not(:last-child):before{left:23px}.event-card{padding:17px 17px;border-radius:17px}.event-card h3{font-size:18px}.event-description{font-size:14px}.event-time{font-size:14px}.trip-dates,.detail-dates{font-size:15px}.list-note{line-height:1.8}.description{font-size:14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}

/* S1.5: overview, transport endpoints, optional budgets and type labels. */
.overview-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:#fff;border:1px solid var(--line);border-radius:17px;margin-top:20px;padding:18px 12px}.overview-stats>div{display:flex;align-items:baseline;justify-content:center;gap:7px;border-right:1px solid var(--line)}.overview-stats>div:last-child{border:0}.overview-stats strong{font-size:26px;font-weight:650;line-height:1.4}.overview-stats span{font-size:13px;color:var(--muted)}.timezone-note{margin-top:10px;font-size:12px;color:var(--muted)}.event-subtitle{margin-top:5px;color:var(--muted);font-size:13px}.transport-route{display:grid;grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr);gap:10px;margin:14px 0;padding:12px;border-radius:10px;background:#f4f7fb}.transport-route div{min-width:0}.transport-route div span{display:block;font-size:11px;color:var(--muted)}.transport-route strong{display:block;font-size:14px;overflow-wrap:anywhere;line-height:1.6;font-weight:600}.route-arrow{align-self:center;color:#8596ae}.cost-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap;border-top:1px solid #edf0f2;margin-top:13px;padding-top:12px;font-size:12px;color:var(--muted)}.cost-row strong{font-size:17px;font-weight:650;color:var(--ink);font-variant-numeric:tabular-nums}.type-meal{background:#fff0dc;color:#815c25}.type-hotel{background:#e6f0f7;color:#42667e}.event-transport{border-left:3px solid #9fb4d3}.event-place{border-left:3px solid #a2c2ac}.event-meal{border-left:3px solid #dec093}.event-hotel{border-left:3px solid #9dbed1}.event-activity{border-left:3px solid #b9a9cd}
@media(max-width:600px){.overview-stats{padding:15px 8px}.overview-stats>div{gap:5px}.overview-stats strong{font-size:24px}.overview-stats span{font-size:12px}.transport-route{gap:7px;padding:10px}.cost-row strong{font-size:16px}}

/* S2: explicit schedule states and a local-time marker. */
[hidden]{display:none!important}.trip-status{border-radius:12px;background:#e8f0ed;color:#245a50;padding:12px 15px;margin-top:16px;font-size:14px}.trip-status p{font-size:13px;margin-top:4px}.event-state{font-size:12px;font-weight:650;color:#54646c;margin-bottom:5px}.event-remaining{font-size:13px;color:#176b61;margin:3px 0 8px}.time-note{font-size:12px;color:#626e76;margin:4px 0 9px}.state-PAST .event-card{background:#f0f3f4;border-left-color:#c8d1d5}.state-PAST .event-card h3{color:#626e76;font-weight:550}.state-CURRENT .event-card{border:2px solid #176b61;background:#f5fbf8;box-shadow:0 0 0 3px #e3efe8}.state-CURRENT .event-state{color:#176b61;font-size:14px}.now-marker{list-style:none;margin:20px 0 22px 72px;padding:14px 16px;border:1px solid #9bc6b8;background:#eef7f2;border-radius:14px;scroll-margin-top:125px;overflow-anchor:none}.now-rule{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:700;color:#176b61}.now-rule:after{content:"";height:1px;background:#9bc6b8;flex:1}.now-date{font-size:12px;color:#546b60;margin-top:4px}.now-message{font-size:14px;margin-top:9px}.now-marker>[data-next-countdown]{font-size:13px;color:#416755;margin-top:4px}.virtual-day-heading{font-size:18px;margin-bottom:14px}.state-UNKNOWN .event-state{color:#765b2a}
@media(max-width:600px){.now-marker{margin-left:58px;padding:12px}.now-rule{font-size:14px}.now-message{font-size:13px}}

/* S3: server-rendered authentication forms; no additional JS. */
.auth-card{max-width:440px;margin:8vh auto;padding:28px;background:#fff;border:1px solid #dce3e8;border-radius:24px}
.auth-card label{display:block;font-weight:600;margin:20px 0 8px}
.auth-card input:not([type=hidden]){width:100%;box-sizing:border-box;min-height:48px;font:inherit;padding:12px;border:1px solid #bdc9cf;border-radius:12px}
.auth-card button,.account-bar button{min-height:44px;padding:10px 18px;border:1px solid #176e67;border-radius:12px;font:inherit;cursor:pointer;background:#176e67;color:white}
.auth-card button{width:100%;margin-top:24px}.auth-error{padding:12px;background:#fff0ef;color:#922d2d;border:1px solid #cd9696;border-radius:12px}
.account-bar{display:flex;align-items:center;flex-wrap:wrap;gap:12px;justify-content:flex-end;margin:12px 0 24px}.account-bar form{margin:0}.muted{color:#58666d}
@media(max-width:480px){.auth-card{margin:24px 16px;padding:24px}}

/* S5: small server-rendered forms and version history. */
button,input,select,textarea{font:inherit}button,a.button,.text-button{touch-action:manipulation}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.editor-heading{padding:18px 0 24px}.editor-heading h1{font-size:30px}.editor-heading>.muted{margin-top:8px}.editor-card{display:block;background:#fff;border:1px solid var(--line);border-radius:20px;padding:22px;margin:16px 0;min-width:0}.editor-card h2{font-size:20px}.editor-card h3{font-size:18px}.editor-card label{display:block;font-size:14px;font-weight:600;margin:16px 0}.editor-card input:not([type=hidden]),.editor-card select,.editor-card textarea{display:block;min-width:0;width:100%;max-width:100%;min-height:48px;border:1px solid #c8d3d9;border-radius:11px;padding:10px 12px;font-size:16px;line-height:1.5;background:#fff;color:var(--ink);margin-top:7px}.editor-card textarea{resize:vertical}.editor-card section{border-top:1px solid var(--line);margin-top:22px;padding-top:20px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid>label{min-width:0}.form-actions,.edit-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:18px}.button,.form-actions button,.order-controls button,.text-button{display:inline-flex;justify-content:center;align-items:center;min-height:44px;padding:10px 16px;border-radius:11px;border:1px solid #d4dfdf;line-height:1.45;font-size:14px;font-weight:600;cursor:pointer;overflow-wrap:anywhere}.primary{background:#176b61;color:#fff;border:1px solid #176b61!important}.secondary{background:#fff;color:#176b61}.text-button{padding:9px 12px;border:0;color:#176b61}.editor-day{margin:32px 0}.editor-day-heading{display:flex;gap:16px;align-items:center;justify-content:space-between}.editor-day-heading>div{min-width:0}.editor-day-heading h2{font-size:23px}.form-error{padding:14px 16px;background:#fff3ef;border:1px solid #d6b0a5;border-radius:12px;font-size:15px;color:#803b2e;margin-bottom:18px}.save-notice{padding:12px 16px;background:#e5f1ea;border-radius:12px;color:#176b61;margin:12px 0}.confirmation{font-size:16px}.preserve-lines{white-space:pre-wrap;overflow-wrap:anywhere}.history-list,.order-list{list-style:none;padding:0;margin:0}.history-top{display:flex;justify-content:space-between;gap:12px}.history-top>strong{font-size:21px}.history-top>span{color:var(--muted);font-size:13px}.history-summary{font-size:17px;font-weight:600;margin:10px 0 7px}.history-list .muted{font-size:13px}.revision-link:hover{border-color:var(--accent)}.revision-heading{margin-bottom:24px}.revision-heading>p+p{margin-top:8px}.diff-field{border-top:1px solid var(--line);margin-top:16px;padding-top:16px}.diff-field h3{font-size:13px;color:var(--muted);margin-bottom:8px}.diff-values{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:14px;font-size:15px}.diff-values>span:first-child{color:var(--muted)}.order-list>li{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);background:#fff;border-radius:15px;padding:14px;margin-bottom:12px;min-width:0}.order-list strong{min-width:0;font-size:15px;overflow-wrap:anywhere}.order-controls{display:flex;gap:6px;flex-shrink:0}.order-controls button{width:44px;padding:8px;background:#eef4f1;font-size:18px}.order-controls button:disabled{opacity:.35;cursor:default}.draft-label{font-size:13px;color:var(--muted);margin-top:18px}summary{cursor:pointer;min-height:44px}
@media(max-width:600px){.editor-heading h1{font-size:28px}.editor-card{padding:18px;border-radius:17px}.form-grid{grid-template-columns:minmax(0,1fr);gap:0}.editor-day-heading h2{font-size:21px}.editor-day-heading .button{flex-shrink:0}.diff-values{gap:10px}.order-list>li{padding:12px}.edit-tools{gap:5px}.form-actions>*{flex:1;min-width:110px}.editor-day-heading .eyebrow{font-size:11px}.editor-card input[type=date],.editor-card input[type=datetime-local]{min-width:0;appearance:none;-webkit-appearance:none}}

/* Account and membership pages share the travel card layout. */
.management form { display:grid; gap:12px; }
.management input,.management select { width:100%; min-width:0; min-height:48px; padding:12px; border:1px solid var(--line,#d8e1e4); border-radius:12px; font:inherit; background:white; color:inherit; box-sizing:border-box; }
.management .event-card { margin:20px 0; }
.user-card { display:block; text-decoration:none; color:inherit; }
.admin-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.invite-meta { display:grid; grid-template-columns:auto 1fr; gap:8px 16px; }
.invite-meta dd { margin:0; overflow-wrap:anywhere; }
.management h1,.management h2,.management h3 { overflow-wrap:anywhere; }
#invite-link { font-size:16px; }
@media(max-width:600px){.admin-grid{grid-template-columns:1fr}.management .topbar{flex-wrap:wrap;gap:12px}.management .edit-tools{flex-wrap:wrap}}

.management button {min-height:48px;padding:12px 18px;border:1px solid var(--accent);border-radius:12px;background:var(--accent);color:white;cursor:pointer;font:inherit;font-weight:600}
.management .topbar {display:flex;justify-content:space-between;align-items:center;gap:16px}
.management .topbar .edit-tools {margin-top:0}
.management .trip-stats {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;background:white;border:1px solid var(--line);border-radius:20px;padding:22px;margin:24px 0}
.management .trip-stats>div {display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:8px;text-align:center}
.management .trip-stats strong{font-size:28px}.management .trip-stats span{font-size:14px}

.offline-sync-status{font-size:.86rem;color:#526467;margin:10px 0}.offline-refresh{margin:0 0 14px}.offline-update{position:fixed;right:16px;bottom:16px;z-index:10}

.map-actions{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}.map-settings{margin-top:20px}.map-settings summary{cursor:pointer;min-height:44px;display:flex;align-items:center;font-weight:600}.map-settings[open] summary{margin-bottom:16px}

.auth-card .keep-login { display:flex; align-items:center; gap:.6rem; margin:1rem 0; min-height:44px; font-weight:400; }
.auth-card .keep-login input { display:inline-block; width:22px; height:22px; padding:0; margin:0; flex:0 0 22px; }
.import-input { min-height:220px; width:100%; padding:14px; border:1px solid #c8d3d9; border-radius:12px; font:inherit; resize:vertical; background:#fff; color:var(--ink); }
.import-issues { color:#8a3b20; }
.import-preview { white-space:pre-wrap; }

/* Native transitions are brief and only run for user navigation or changed data. */
/* Cross-document entrance is supplied by interaction.css; these pseudos serve local refresh. */
::view-transition-old(root) { animation: luce-out 100ms ease-out both; }
::view-transition-new(root) { animation: luce-in 160ms ease-out both; }
@keyframes luce-in { from { opacity:0; transform:translateY(3px); } to { opacity:1; transform:none; } }
@keyframes luce-out { to { opacity:0; } }
.offline-content-updated { animation:luce-in 160ms ease-out both; }
.offline-refresh { transition:background-color 120ms ease-out,opacity 120ms ease-out; }
.offline-refresh[aria-busy="true"] { opacity:.65; }
@media (prefers-reduced-motion:reduce) {
 ::view-transition-old(root),::view-transition-new(root),.offline-content-updated { animation:none; }
 .offline-refresh { transition:none; }
}

.member-actions { display:flex; flex-wrap:wrap; align-items:center; gap:10px; }
.member-actions select { flex:1 1 140px; min-width:0; margin:0; }
.trip-management-offline .trip-manage-actions { pointer-events:none; opacity:.6; }
