html,body{overflow-x:clip}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-base);line-height:1.55}button,input,textarea,select{font:inherit}button,a,input,textarea,select{-webkit-tap-highlight-color:transparent}:focus-visible{outline:3px solid var(--color-focus);outline-offset:2px}a{color:inherit}h1,h2,h3{font-family:var(--font-display);font-style:normal;line-height:1.08;letter-spacing:-.025em;overflow-wrap:anywhere;min-width:0}h1{font-size:var(--text-display);margin:0}h2{font-size:clamp(2rem,4vw,3.4rem);margin:0}h3{font-size:var(--text-lg);margin:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;inset-block-start:var(--space-sm);inset-inline-start:var(--space-sm);z-index:var(--z-toast);transform:translateY(-160%);background:var(--color-ink);color:var(--color-paper);padding:var(--space-sm) var(--space-md)}.skip-link:focus{transform:none}.button,.icon-button{min-height:44px;border:var(--rule-thin) solid var(--color-rule-strong);background:var(--color-paper);color:var(--color-ink);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);font-weight:700;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-short) var(--ease-out),color var(--dur-short) var(--ease-out),transform var(--dur-micro) var(--ease-out)}.button--primary{background:var(--color-ink);color:var(--color-paper);border-color:var(--color-ink)}.button--quiet{background:transparent;border-color:transparent}.button:active,.icon-button:active{transform:translateY(1px)}.button:disabled{opacity:.55;cursor:not-allowed}.button[data-state=loading]{cursor:wait}.button[data-state=error]{border-color:var(--color-error)}.button[data-state=success]{border-color:var(--color-success)}@media(hover:hover) and (pointer:fine){.button:hover,.icon-button:hover{background:var(--color-paper-2)}.button--primary:hover{background:var(--color-accent);color:var(--color-accent-ink);border-color:var(--color-accent)}}
/* Login */.login-shell{min-height:100dvh;display:grid;align-items:center;padding:max(var(--space-lg),env(safe-area-inset-top)) max(var(--space-lg),env(safe-area-inset-right)) max(var(--space-lg),env(safe-area-inset-bottom)) max(var(--space-lg),env(safe-area-inset-left));background:linear-gradient(105deg,var(--color-paper) 0 66%,var(--color-paper-2) 66% 100%)}.login-card{width:min(100%,38rem);margin-inline:auto}.login-mark{display:flex;align-items:center;gap:var(--space-sm);font-weight:700;color:var(--color-accent);margin-block-end:var(--space-xl)}.login-mark i{display:block;width:min(30vw,12rem);height:1px;background:var(--color-rule-strong);position:relative}.login-mark i::after{content:"";position:absolute;inset-inline-end:0;inset-block-start:-3px;width:7px;height:7px;border-radius:50%;background:var(--color-accent)}.trip-dates{font-size:var(--text-sm);letter-spacing:.12em;font-weight:700}.login-copy{max-width:52ch;color:var(--color-muted);font-size:var(--text-md);margin-block:var(--space-lg) var(--space-xl)}.login-form{display:grid;gap:var(--space-xs);max-width:28rem}.login-form label,.field-label{font-weight:700;font-size:var(--text-sm)}input,textarea,select{width:100%;border:1px solid var(--color-rule-strong);outline:2px solid transparent;outline-offset:1px;background:var(--color-paper);color:var(--color-ink);border-radius:var(--radius-sm);padding:.72rem var(--space-sm);min-height:44px}textarea{resize:vertical;min-height:7rem}input::placeholder,textarea::placeholder{color:var(--color-muted)}input:focus-visible,textarea:focus-visible,select:focus-visible{outline-color:var(--color-focus)}@media(hover:hover){input:hover,textarea:hover,select:hover{background:var(--color-paper-2)}}.field-help,.field-error{font-size:var(--text-sm);min-height:1.4em;margin:0}.field-help{color:var(--color-muted)}.field-error{color:var(--color-error);font-weight:700}
/* Navigation */.rail{display:none}.mobile-bar{position:sticky;inset-block-start:0;z-index:var(--z-sticky);display:flex;align-items:center;justify-content:space-between;padding:var(--space-sm) max(var(--space-md),env(safe-area-inset-right)) var(--space-sm) max(var(--space-md),env(safe-area-inset-left));background:var(--color-paper);border-block-end:1px solid var(--color-rule)}.mobile-bar__brand{font-family:var(--font-display);font-size:var(--text-md);font-weight:700;text-decoration:none}.mobile-menu{position:absolute;inset:100% var(--space-md) auto var(--space-md);background:var(--color-ink);color:var(--color-paper);padding:var(--space-md);border-radius:var(--radius-md)}.mobile-menu a{display:block;min-height:44px;padding:var(--space-sm);text-decoration:none;white-space:nowrap}.page{padding:var(--space-xl) max(var(--space-md),env(safe-area-inset-right)) 8rem max(var(--space-md),env(safe-area-inset-left));max-width:90rem;margin-inline:auto}.section{scroll-margin-top:6rem;margin-block-end:var(--space-3xl)}.section-head{display:grid;gap:var(--space-sm);margin-block-end:var(--space-xl)}.section-head p{max-width:62ch;color:var(--color-muted);margin:0}.kicker{font-size:var(--text-sm);letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:var(--color-accent)}
/* Overview */.hero{display:grid;gap:var(--space-xl);padding-block:var(--space-lg) var(--space-xl);border-block-end:1px solid var(--color-rule)}.hero__copy{display:grid;gap:var(--space-md);align-content:start}.hero__copy>p{font-size:var(--text-md);color:var(--color-muted);max-width:48ch;margin:0}.status-line{display:flex;flex-wrap:wrap;gap:var(--space-sm)}.status-chip{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:34px;padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-rule);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:700}.status-chip::before{content:"";width:.55rem;height:.55rem;border-radius:50%;background:var(--color-warning)}.status-chip--confirmed::before{background:var(--color-confirmed)}.route-board{border-block:1px solid var(--color-rule);padding-block:var(--space-lg);align-self:end}.route-board svg{display:block;width:100%;height:auto;max-height:19rem}.route-board__meta{display:flex;justify-content:space-between;gap:var(--space-md);font-size:var(--text-sm);font-weight:700;margin-block-start:var(--space-sm)}.overview-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:var(--space-md);margin-block-start:var(--space-xl)}.metric{padding:var(--space-lg);border-block-start:1px solid var(--color-rule)}.metric strong{display:block;font-family:var(--font-display);font-size:clamp(2.2rem,8vw,4.8rem);line-height:1;font-variant-numeric:tabular-nums}.metric span{color:var(--color-muted)}.metric--wide{grid-column:1/-1;background:var(--color-ink);color:var(--color-paper)}.metric--wide span{color:var(--color-paper-2)}
/* itinerary */.toolbar{display:flex;gap:var(--space-sm);flex-wrap:wrap;margin-block-end:var(--space-lg)}.segmented{display:flex;gap:var(--space-2xs);padding:var(--space-2xs);border:1px solid var(--color-rule);border-radius:var(--radius-md)}.segmented button{border:0;background:transparent;min-height:40px;padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-weight:700;cursor:pointer;white-space:nowrap}.segmented button[aria-pressed=true]{background:var(--color-ink);color:var(--color-paper)}.search-field{flex:1 1 15rem}.day-list{display:grid;gap:var(--space-sm)}.day-card{display:grid;gap:var(--space-md);padding:var(--space-lg) 0;border-block-start:1px solid var(--color-rule)}.day-card__date{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}.date-stack strong{display:block;font-family:var(--font-display);font-size:var(--text-lg);line-height:1.1}.date-stack span{font-size:var(--text-sm);color:var(--color-muted)}.status-toggle{display:inline-flex;align-items:center;gap:var(--space-xs);font-size:var(--text-sm);font-weight:700;white-space:nowrap}.status-toggle input{width:1.1rem;height:1.1rem;min-height:auto;accent-color:var(--color-confirmed)}.day-card[data-status=confirmed]{background:var(--color-confirmed-soft);padding-inline:var(--space-md);border-color:var(--color-confirmed)}.day-card__fields{display:grid;gap:var(--space-sm)}.field-group{display:grid;gap:var(--space-2xs);min-width:0}.field-group label{font-size:var(--text-sm);font-weight:700}.field-group--notes{grid-column:1/-1}.map-link{display:inline-flex;align-items:center;min-height:44px;font-weight:700;color:var(--color-accent);text-underline-offset:.25em;white-space:nowrap}.skip-link,.mobile-bar__brand,.mobile-menu a,.rail a,footer a{white-space:nowrap}.empty-note{color:var(--color-muted);padding-block:var(--space-xl)}
/* bookings */.booking-list{display:grid;gap:var(--space-md)}.booking-card{display:grid;gap:var(--space-sm);border-block-start:1px solid var(--color-rule);padding-block:var(--space-lg)}.booking-card__top{display:flex;justify-content:space-between;gap:var(--space-md)}.booking-card dl{display:grid;grid-template-columns:auto 1fr;gap:var(--space-xs) var(--space-md);margin:0}.booking-card dt{color:var(--color-muted)}.booking-card dd{margin:0;font-weight:700;word-break:break-word}.text-button{border:0;background:transparent;color:var(--color-accent);font-weight:700;min-height:44px;padding:var(--space-xs);cursor:pointer;white-space:nowrap}.empty-state{border-block:1px solid var(--color-rule);padding:var(--space-xl) 0;display:grid;gap:var(--space-md);justify-items:start}.empty-state p{margin:0;color:var(--color-muted)}
/* checklist and notes */.split-grid{display:grid;gap:var(--space-2xl)}.checklist{display:grid;gap:var(--space-xs)}.check-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-sm);min-height:52px;border-block-end:1px solid var(--color-rule)}.check-row input[type=checkbox]{width:1.25rem;height:1.25rem;min-height:auto;accent-color:var(--color-confirmed)}.check-row label{min-width:0}.check-row:has(input:checked) label{text-decoration:line-through;color:var(--color-muted)}.inline-add{display:flex;gap:var(--space-sm);margin-block-start:var(--space-md)}.inline-add input{flex:1}.note-panel{display:grid;gap:var(--space-lg)}.note-panel__group{display:grid;gap:var(--space-xs)}
/* save */.save-bar{position:fixed;z-index:var(--z-sticky);inset:auto 0 0 0;display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) max(var(--space-md),env(safe-area-inset-right)) max(var(--space-sm),env(safe-area-inset-bottom)) max(var(--space-md),env(safe-area-inset-left));background:var(--color-paper);border-block-start:1px solid var(--color-rule-strong)}.save-bar>span{font-size:var(--text-sm);font-weight:700}.save-bar__actions{display:flex;gap:var(--space-xs)}.save-bar.is-dirty>span{color:var(--color-warning)}.save-bar.is-error>span{color:var(--color-error)}.toast{position:fixed;z-index:var(--z-toast);inset:auto var(--space-md) 5.5rem auto;background:var(--color-ink);color:var(--color-paper);padding:var(--space-sm) var(--space-md);display:flex;align-items:center;gap:var(--space-md);border-radius:var(--radius-sm);max-width:min(28rem,calc(100% - 2rem))}.toast button{color:var(--color-paper);border:1px solid var(--color-paper-3);background:transparent;min-height:40px;padding:var(--space-xs) var(--space-sm);font-weight:700}.loading-state{min-height:50dvh;display:grid;place-items:center;color:var(--color-muted)}
@media(min-width:40rem){.page{padding-inline:var(--space-xl)}.hero{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}.day-card{grid-template-columns:minmax(8rem,.28fr) minmax(0,1fr)}.day-card__date{display:block}.day-card__fields{grid-template-columns:repeat(2,minmax(0,1fr))}.section-head{grid-template-columns:minmax(0,1fr) minmax(18rem,.7fr);align-items:end}.booking-list{grid-template-columns:repeat(2,minmax(0,1fr))}.split-grid{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr)}}
@media(min-width:60rem){.mobile-bar{display:none}.rail{position:fixed;inset:0 auto 0 0;width:4.5rem;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:var(--space-lg) var(--space-sm);border-inline-end:1px solid var(--color-rule);background:var(--color-paper);z-index:var(--z-sticky)}.rail a{white-space:nowrap;text-decoration:none}.rail__brand,.rail__exit{writing-mode:vertical-rl;transform:rotate(180deg);font-weight:700}.rail__brand{font-family:var(--font-display);font-size:var(--text-md)}.rail__links{display:flex;align-items:center;gap:var(--space-lg);writing-mode:vertical-rl;transform:rotate(180deg);font-size:var(--text-sm)}.rail__links a{color:var(--color-muted)}.rail__links a.is-active{color:var(--color-accent);font-weight:700}.page{padding-inline:clamp(3rem,7vw,7rem);margin-inline-start:4.5rem}.hero{align-items:center}.overview-grid{grid-column:1/-1;grid-template-columns:minmax(0,1.4fr) repeat(2,minmax(0,.7fr));width:100%}.metric--wide{grid-column:auto}.day-card__fields{grid-template-columns:repeat(4,minmax(0,1fr))}.day-card .field-group--notes{grid-column:1/-1}.booking-list{grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);align-items:start}.booking-card:nth-child(3n){grid-column:1/-1}}
@media(max-width:35rem){.save-bar{align-items:flex-end}.save-bar>span{max-width:7.5rem}.button--quiet{display:none}.save-bar__actions{margin-inline-start:auto}.status-toggle span{display:none}.overview-grid{grid-template-columns:1fr}.metric--wide{grid-column:auto}.inline-add{align-items:stretch;flex-direction:column}.login-shell{background:var(--color-paper)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:150ms!important;animation-iteration-count:1!important;transition-duration:150ms!important}}
@media print{.rail,.mobile-bar,.save-bar,.toolbar,.button,.text-button,.status-toggle{display:none!important}body{background:var(--color-paper);font-size:10pt}.page{padding:0;margin:0;max-width:none}.section{break-inside:avoid;margin-block-end:2rem}.hero{min-height:0;grid-template-columns:1fr 1fr}.day-card{grid-template-columns:8rem 1fr;padding:.5rem 0;break-inside:avoid}.day-card__fields{grid-template-columns:repeat(2,1fr)}input,textarea,select{border:0;padding:.15rem;background:transparent;min-height:auto}.field-group label{font-size:8pt}.booking-list{grid-template-columns:1fr 1fr}}
