:root{--ground: #f4f6f8;--surface: #ffffff;--surface-2: #e9edf1;--text: #111a24;--text-2: #4e5c6b;--text-3: #77838f;--rule: #d3dae1;--accent: #0f3a4a;--accent-2: #0f7b8a;--sand: #e9c46a;--danger: #b4442e;--good: #177a5c;--good-soft: #def0e8;--warn: #9a6b12;--warn-soft: #f7ecd6;--radius: 4px;--sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--ground: #0e1620;--surface: #161f2b;--surface-2: #1e2937;--text: #dce3ea;--text-2: #9aa8b6;--text-3: #75838f;--rule: #2a3644;--accent: #3fb0c0;--accent-2: #3fb0c0;--danger: #e0836c;--good: #4cae87;--good-soft: #13322a;--warn: #cfa043;--warn-soft: #33270f;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--ground);color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.55;-webkit-text-size-adjust:100%}.shell{max-width:760px;margin:0 auto;padding-inline:20px;padding-block:24px 64px;display:flex;flex-direction:column;gap:24px}h1{font-size:26px;margin:0;letter-spacing:-.02em;text-wrap:balance}h2{font-size:18px;margin:0;letter-spacing:-.01em}a{color:var(--accent-2)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--rule);padding-bottom:14px}.topbar .who{font-size:13px;color:var(--text-3)}.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:16px 18px;display:flex;flex-direction:column;gap:10px}.list{display:flex;flex-direction:column;gap:10px}.trip{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;text-decoration:none;color:inherit}.trip .dates{font-size:13px;color:var(--text-3);font-variant-numeric:tabular-nums}.badge{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:2px;background:var(--surface-2);color:var(--text-2)}form{display:flex;flex-direction:column;gap:12px}label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text-2)}input,textarea,select{font:inherit;padding:9px 11px;border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);color:var(--text);width:100%}input:focus-visible,textarea:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}button{font:inherit;font-weight:600;padding:9px 16px;border-radius:var(--radius);border:1px solid transparent;background:var(--accent);color:#fff;cursor:pointer}button.ghost{background:transparent;color:var(--accent-2);border-color:var(--rule)}button:disabled{opacity:.5;cursor:not-allowed}.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.grow{flex:1;min-width:0}.error{color:var(--danger);font-size:13.5px;margin:0}.muted{color:var(--text-3);font-size:13.5px;margin:0}.empty{border:1px dashed var(--rule);border-radius:var(--radius);padding:24px 18px;text-align:center;color:var(--text-3)}code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12.5px;background:var(--surface-2);padding:2px 5px;border-radius:2px;overflow-wrap:anywhere}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}h3{font-size:15px;margin:0}.tabular{font-variant-numeric:tabular-nums}.sub{font-size:13px;color:var(--text-2)}.push-right{margin-left:auto}.trip-dates{margin-top:-12px}button.small{padding:5px 10px;font-size:13px}button.link{background:none;border:none;padding:0;font-weight:500;color:var(--accent-2);text-decoration:underline;text-underline-offset:2px}button.danger{color:var(--danger)}button.danger-solid{background:var(--danger)}.tabs{display:flex;gap:4px;box-shadow:inset 0 -1px 0 var(--rule);overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{background:none;color:var(--text-2);border:none;border-radius:0;border-bottom:2px solid transparent;padding:8px 14px;flex:none;white-space:nowrap}@media(max-width:480px){.tab{padding:8px 10px}}.tab.active{color:var(--text);border-bottom-color:var(--accent-2)}.summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:1px;margin:0;background:var(--rule);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}.summary>div{background:var(--surface);padding:10px 14px}.summary>div.wide{grid-column:span 2}.summary dt{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}.summary dd{margin:2px 0 0;font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}.summary .attention dd{color:var(--warn)}@media(max-width:480px){.summary>div.wide{grid-column:1 / -1}}.itinerary{display:flex;flex-direction:column;gap:16px}.timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.timeline-item{position:relative;padding-left:22px;padding-bottom:14px}.timeline-item:before{content:"";position:absolute;left:6px;top:0;bottom:0;border-left:2px dotted var(--rule)}.timeline-item:last-child:before{bottom:50%}.timeline-item:first-child:before{top:24px}.legs{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.leg,.item{display:grid;grid-template-columns:auto 1fr auto auto;grid-template-areas:"kind . meta edit" "body body body body";column-gap:10px;row-gap:2px;align-items:baseline}.leg>.grow,.item>.grow{grid-area:body;min-width:0}.leg>.link,.item>.link{grid-area:edit}@media(min-width:640px){.leg,.item{grid-template-columns:72px 1fr auto auto;grid-template-areas:"kind body meta edit"}}.leg{font-size:14px;padding:6px 0}.leg-mode,.item-kind{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-2);grid-area:kind}.add-leg{align-self:flex-start;background:none;color:var(--text-3);border:1px dashed var(--rule);font-weight:500;font-size:13px;padding:5px 10px}.leg.cancelled,.item.cancelled{opacity:.55}.leg.cancelled strong,.item.cancelled strong{text-decoration:line-through}.step{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:14px 16px;display:flex;flex-direction:column;gap:12px;position:relative}.step-head{display:flex;align-items:flex-start;gap:12px}.step-number{position:absolute;left:-24px;top:15px;width:16px;height:16px;border-radius:50%;background:var(--accent);color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;font-variant-numeric:tabular-nums}.step h2{font-size:17px}.step .notes{margin:0;font-size:13.5px;color:var(--text-2);white-space:pre-wrap}.items{display:flex;flex-direction:column;gap:10px}.items:empty{display:none}.item{border-top:1px solid var(--rule);padding-top:10px}.item-meta{grid-area:meta;display:inline-flex;gap:4px 8px;align-items:baseline;flex-wrap:wrap;justify-content:flex-end}.price{font-variant-numeric:tabular-nums;font-size:13.5px}.step-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.chip{font-size:10.5px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:2px;background:var(--surface-2);color:var(--text-2);white-space:nowrap}.chip.status-to_book{background:var(--warn-soft);color:var(--warn)}.chip.status-booked,.badge.step-booked,.badge.step-done{background:var(--good-soft);color:var(--good)}.badge.step-idea{background:transparent;border:1px dashed var(--rule)}.orphans{display:flex;flex-direction:column;gap:8px}.editor{border-color:var(--accent-2)}.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.fields label.narrow{max-width:120px}.place-search{display:flex;flex-direction:column;gap:6px}.place-search>label{font-size:13px;color:var(--text-2)}.place-results{list-style:none;margin:0;padding:0;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}.place-results button{width:100%;text-align:left;background:var(--surface);color:var(--text);border:none;border-radius:0;border-bottom:1px solid var(--rule);display:flex;flex-direction:column;gap:2px;font-weight:400}.place-results li:last-child button{border-bottom:none}.place-results button:hover{background:var(--surface-2)}.place-results span{font-size:12.5px;color:var(--text-3)}.attribution{font-size:11px;color:var(--text-3);margin:0}.place-chosen{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline}.map-view{display:flex;flex-direction:column;gap:8px}.map-frame{height:62vh;min-height:320px;max-width:100%;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}.map-marker{width:26px;height:26px;border-radius:50%;background:#0f3a4a;color:#fff;border:2px solid #fff;display:grid;place-items:center;font:700 12px var(--sans);box-shadow:0 1px 4px #00000059;cursor:pointer}.map-marker.step-idea{background:#fff;color:#0f3a4a;border-color:#0f3a4a;border-style:dashed}.maplibregl-popup-content{font:13px/1.4 var(--sans);color:#111a24}.offline-banner{background:var(--warn-soft);color:var(--warn);border-radius:var(--radius);padding:8px 12px;font-size:13.5px;margin:0}.doc-links{display:flex;flex-wrap:wrap;gap:6px 10px;margin-top:4px;align-items:baseline}.doc-link{background:var(--surface-2);color:var(--text);border:1px solid var(--rule);font-weight:500;font-size:12.5px;padding:3px 8px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.docs-toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between}.doc-group{display:flex;flex-direction:column;gap:8px}.doc-group h3{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.doc{display:grid;grid-template-columns:1fr;gap:6px 12px;align-items:center;background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:10px 12px}.doc-title{background:none;border:none;padding:0;color:var(--accent-2);text-align:left;font-weight:600;text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}.doc-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}@media(min-width:560px){.doc{grid-template-columns:1fr auto}.doc-actions{justify-content:flex-end}}.doc .sub{grid-column:1 / -1}.doc select{font-size:13px;padding:5px 8px}.chip.on-device{background:var(--good-soft);color:var(--good)}.viewer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#080e14b8;display:flex;padding:max(12px,env(safe-area-inset-top)) 12px max(12px,env(safe-area-inset-bottom))}.viewer{flex:1;display:flex;flex-direction:column;min-width:0;max-width:960px;margin:0 auto;background:var(--surface);border-radius:var(--radius);overflow:hidden}.viewer-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:10px 12px;border-bottom:1px solid var(--rule)}.viewer-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-body{flex:1;display:flex;align-items:center;justify-content:center;overflow:auto;background:var(--surface-2)}.viewer-body iframe{width:100%;height:100%;border:0;background:#fff}.viewer-body img{max-width:100%;max-height:100%;object-fit:contain}.viewer-body p{padding:16px}label.checkbox{flex-direction:row;align-items:center;gap:8px;color:var(--text);font-size:14px}label.checkbox input{width:auto}.ghost-button{display:inline-flex;align-items:center;cursor:pointer;font-weight:600;color:var(--accent-2);background:transparent;border:1px solid var(--rule);border-radius:var(--radius);padding:5px 10px;font-size:13px}.ghost-button:focus-within{outline:2px solid var(--accent-2);outline-offset:2px}.sync-bar{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center}.sync-bar>p{flex:1 1 220px}.position-tools summary{cursor:pointer;font-weight:600}.position-tools[open] summary{margin-bottom:4px}.pages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.page-card{width:100%;display:flex;gap:12px;align-items:flex-start;text-align:left;background:var(--surface);color:var(--text);border:1px solid var(--rule);border-radius:var(--radius);padding:12px;font-weight:400}.page-card:hover{border-color:var(--accent-2)}.page-card img{width:72px;height:72px;object-fit:cover;border-radius:3px;flex:none}.page-card>.grow{display:flex;flex-direction:column;gap:3px;min-width:0}.page-card strong{font-size:16px}.entry-date{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3)}.page-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}.chip.status-cancelled{background:transparent;color:var(--danger);border:1px solid currentColor}.entry{display:flex;flex-direction:column;gap:16px;max-width:64ch}.entry-head{display:flex;flex-direction:column;gap:4px}.entry-head h2{font-size:24px;text-wrap:balance}.entry-head .badge{align-self:flex-start}.entry-text p{margin:0 0 .8em;font-size:16px;line-height:1.7}.entry-text p:last-child{margin-bottom:0}.entry-place{margin:0;display:flex;gap:8px;align-items:baseline}.journal-photo{margin:0;display:flex;flex-direction:column;gap:6px}.journal-photo img{width:100%;max-width:100%;height:auto;border-radius:3px;background:var(--surface-2)}.journal-photo figcaption{font-size:13px;color:var(--text-2);display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}.photo-pair{display:grid;grid-template-columns:1fr 1fr;gap:8px}.photo-pair img{aspect-ratio:4 / 5;object-fit:cover}.photo-missing{display:grid;place-items:center;min-height:120px;padding:12px;text-align:center;background:var(--surface-2);color:var(--text-3);font-size:13px;border-radius:3px}.day-map{margin:0;display:flex;flex-direction:column;gap:6px}.day-map-frame{height:300px;max-width:100%;border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}.photo-marker{width:38px;height:38px;border-radius:50%;overflow:hidden;border:2px solid #fff;box-shadow:0 1px 4px #0006;background:#0f3a4a}.photo-marker img{width:100%;height:100%;object-fit:cover;display:block}.checkin-marker{width:14px;height:14px;border-radius:50%;background:#e9c46a;border:2px solid #0f3a4a;cursor:pointer}.journal-editor .blocks{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.block{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:start;border:1px solid var(--rule);border-radius:var(--radius);padding:8px;background:var(--ground)}.block textarea{resize:vertical;line-height:1.6;min-height:72px}.block-tools{display:flex;flex-direction:column;gap:4px}.block-photo-body{display:flex;gap:10px;align-items:flex-start}.block-photo-body img{width:88px;height:88px;object-fit:cover;border-radius:3px;flex:none}.block-photo-body .grow{display:flex;flex-direction:column;gap:6px}.block-photo-body .photo-missing{width:88px;min-height:88px;flex:none}.add-bar{display:flex;flex-wrap:wrap;gap:6px}@media(max-width:480px){.block{grid-template-columns:1fr}.block-tools{flex-direction:row;justify-content:flex-end}}
