:root { color-scheme: light; --ink:#000; --muted:#000; --paper:#f7f5ef; --card:#fffdfa; --line:#d9ded7; --forest:#154c3f; --gold:#bd7e17; --soft:#e9f1ec; --danger:#a93c28; font-family:ui-rounded, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; background:var(--paper); color:var(--ink); }
* { box-sizing:border-box; } body { margin:0; min-width:320px; } button, input { font:inherit; } button { cursor:pointer; min-height:44px; border-radius:12px; padding:10px 14px; border:1px solid var(--line); background:var(--card); color:var(--ink); font-weight:650; } button:focus-visible, a:focus-visible, input:focus-visible { outline:3px solid #e5a83b; outline-offset:2px; } button:disabled { opacity:.42; cursor:default; } a { color:#095b98; }
.skip-link { position:absolute; left:8px; top:-50px; background:white; padding:8px; z-index:10; }.skip-link:focus { top:8px; }.app-header { padding:calc(16px + env(safe-area-inset-top)) max(18px, env(safe-area-inset-right)) 16px max(18px, env(safe-area-inset-left)); display:flex; gap:14px; align-items:center; border-bottom:1px solid var(--line); background:rgba(247,245,239,.96); position:sticky; top:0; z-index:3; }.app-header p { margin:0 0 2px; color:var(--forest); font-weight:800; font-size:.78rem; letter-spacing:.08em; text-transform:uppercase; }.app-header h1 { font-size:1.35rem; margin:0; line-height:1.15; }.page { width:min(780px, 100%); padding:20px max(16px, env(safe-area-inset-right)) calc(36px + env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left)); margin:auto; }.hero { background:var(--forest); color:white; border-radius:18px; padding:22px; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; }.hero p { margin:0; max-width:28rem; }.primary { background:var(--forest); border-color:var(--forest); color:white; }.hero .primary { background:white; color:var(--forest); border-color:white; }.quiet { background:transparent; }.empty,.muted { color:var(--muted); }.trip-card,.overview,.day-tools { background:var(--card); border:1px solid var(--line); border-radius:16px; padding:18px; margin:16px 0; }.trip-card h2 { margin:0; font-size:1.2rem; }.trip-card p { color:var(--muted); margin:.45rem 0; }.trip-card button { margin-top:8px; }.day-list { margin-top:28px; }.day-list h2 { font-size:1rem; }.day-link { display:block; text-align:left; width:100%; border-radius:0; border-width:0 0 1px; padding:14px 4px; }.day-link small { display:block; color:var(--muted); font-weight:400; margin-top:3px; }.today { color:var(--forest); background:var(--soft); padding-left:10px; border-radius:10px; }.overview summary,.day-tools summary { cursor:pointer; font-weight:700; }.day-nav { display:grid; grid-template-columns:1fr 1fr 1fr; gap:7px; position:sticky; top:77px; background:var(--paper); padding:10px 0; z-index:2; }.day-nav button { padding-inline:6px; font-size:.83rem; }.day-title { margin:18px 0 3px; font-size:1.48rem; }.timeline { margin-top:20px; }.block { display:grid; grid-template-columns:58px 26px 1fr; gap:10px; padding:12px 0; border-bottom:1px solid var(--line); }.block-time { color:var(--muted); font-size:.85rem; font-variant-numeric:tabular-nums; padding-top:2px; }.block-icon { width:24px; height:24px; border-radius:50%; background:var(--soft); color:var(--forest); display:grid; place-items:center; font-size:.78rem; font-weight:800; }.block-title { font-weight:700; line-height:1.35; }.block-detail,.notes p { margin:4px 0 0; color:var(--muted); font-size:.92rem; line-height:1.45; }.notes { border-left:3px solid #c9d4ca; padding-left:9px; margin-top:6px; }.block-warning { background:#fff5dc; margin:6px -10px; padding:12px 10px; border-left:4px solid var(--gold); }.block-warning .block-icon { background:var(--gold); color:white; }.block-parking .block-icon { background:#e9edf3; color:#385a82; }.block-flight .block-icon { background:#e7f2f5; color:#176477; }.timeline-heading { margin:28px 0 6px 68px; font-size:1rem; color:var(--forest); }.choice,.optional,.reference { display:block; border:1px solid var(--line); border-radius:14px; padding:14px; margin:12px 0; }.choice { background:#fffaf0; border-left:4px solid var(--gold); }.optional { background:#f3f5f3; border-style:dashed; }.reference { background:var(--soft); }.choice h3,.optional h3,.reference h3 { font-size:1rem; margin:0; }.choice-hint { margin:4px 0 8px; color:var(--muted); font-size:.85rem; }.nested { margin-top:8px; padding-left:10px; border-left:1px solid var(--line); }.nested .block { grid-template-columns:48px 22px 1fr; }.collections { display:grid; gap:10px; margin-top:10px; }.collection-card { background:white; padding:12px; border-radius:10px; }.collection-card h3 { margin:0 0 8px; font-size:.95rem; }.collection-items { margin:0; padding:0; list-style:none; }.collection-items li { padding:6px 0; border-top:1px solid #edf0ec; }.collection-items label { display:flex; align-items:flex-start; gap:9px; }.collection-items input { width:20px; height:20px; margin:0; accent-color:var(--forest); }.collection-items small { display:block; color:var(--muted); margin:3px 0 0 29px; }.links { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }.links a { font-size:.85rem; }
.block-details { display:grid; gap:3px; margin-top:4px; }.block-details .block-detail { margin:0; }.block-detail-poi-icon { margin-right:6px; }.block-detail-map-link { color:inherit; text-decoration:underline; text-underline-offset:2px; }.block-status { display:inline-block; width:max-content; margin-top:6px; padding:3px 8px; border-radius:999px; background:#e9edf3; font-size:.76rem; font-weight:800; }.block-status-booked,.block-status-confirmed { background:#dcefe2; color:#164d2c; }.block-status-to_book { background:#fff0c9; color:#704500; }.block-status-cancelled { background:#fde3df; color:#8e281d; }.flight-route { display:grid; grid-template-columns:1fr 28px 1fr; gap:7px; align-items:stretch; margin:12px 0; padding:12px; border:1px solid #c9d9dd; border-radius:12px; background:#f4fafb; }.flight-endpoint { min-width:0; }.flight-endpoint-label { color:#176477; font-size:.72rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }.flight-airport-code { font-size:1.7rem; font-weight:800; letter-spacing:.02em; }.flight-airport-name { min-height:2.5em; font-size:.8rem; line-height:1.25; }.flight-time { margin-top:7px; font-size:1.15rem; font-weight:800; }.flight-date,.flight-terminal { margin-top:2px; font-size:.78rem; }.flight-route-arrow { display:grid; place-items:center; color:#176477; font-size:1.1rem; }
.block { grid-template-columns:26px 1fr; }.block-time { display:flex; align-items:center; gap:5px; width:max-content; margin-bottom:5px; padding:0; color:var(--ink); font-size:.78rem; font-weight:800; font-variant-numeric:tabular-nums; }.block-time-icon { font-size:.8rem; line-height:1; }.timeline-heading { margin-left:36px; }.nested .block { grid-template-columns:22px 1fr; }
.block-time,.block-detail-estimated-cost { display:flex; align-items:center; gap:5px; }.car-rental-provider { margin-top:6px; font-weight:700; }.car-rental-schedule { display:grid; grid-template-columns:1fr 28px 1fr; gap:7px; align-items:stretch; margin:12px 0; padding:12px; border:1px solid #d9d3c4; border-radius:12px; background:#fcfaf3; }.car-rental-point-label { color:#795b14; font-size:.72rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }.car-rental-point-time { margin-top:5px; font-weight:800; line-height:1.3; }.car-rental-point-location { margin-top:4px; font-size:.8rem; line-height:1.3; }.car-rental-arrow { display:grid; place-items:center; color:#795b14; }.car-rental-price { display:grid; grid-template-columns:28px 1fr auto; align-items:center; gap:9px; margin:10px 0; padding:10px 12px; border-radius:12px; background:#edf5ef; }.car-rental-price-icon { font-size:1.2rem; }.car-rental-price-label { font-size:.78rem; font-weight:800; text-transform:uppercase; letter-spacing:.05em; }.car-rental-payment-status { margin-top:2px; font-size:.78rem; }.car-rental-price-value { font-size:1.2rem; font-weight:900; }
.car-rental-price { grid-template-columns:20px 1fr auto; gap:7px; margin:8px 0; padding:7px 0; border-radius:0; background:transparent; border-top:1px solid #dbe5dc; border-bottom:1px solid #dbe5dc; }.car-rental-price-icon { font-size:1rem; }.car-rental-price-label { font-size:.7rem; }.car-rental-payment-status { font-size:.72rem; }.car-rental-price-value { font-size:1rem; }.block-note { display:flex; gap:7px; align-items:flex-start; padding:3px 0; }.block-note::before { content:'✦'; color:#7d9182; font-size:.72rem; line-height:1.65; }.notes { border-left-color:#dbe5dc; }.hotel-address { display:flex; align-items:center; gap:6px; width:max-content; max-width:100%; margin-top:5px; font-size:.86rem; }.hotel-address-link { color:inherit; text-decoration:underline; text-underline-offset:2px; }.hotel-nights { margin-top:7px; font-size:.8rem; font-weight:800; }.hotel-schedule { display:grid; grid-template-columns:1fr 24px 1fr; gap:7px; align-items:stretch; margin:8px 0; padding:10px 12px; border:1px solid #d3ddd7; border-radius:12px; background:#f5f9f6; }.hotel-point-label { color:#316249; font-size:.72rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }.hotel-point-time { margin-top:5px; font-weight:800; line-height:1.3; }.hotel-arrow { display:grid; place-items:center; color:#316249; }.hotel-payment { margin:9px 0; padding:9px 0; border-top:1px solid #dbe5dc; border-bottom:1px solid #dbe5dc; }.hotel-payment-title { font-size:.8rem; font-weight:800; }.hotel-payment-row { display:grid; grid-template-columns:1fr auto; gap:8px; margin-top:5px; font-size:.86rem; }.hotel-payment-row small { grid-column:1/-1; margin-top:-4px; }.hotel-payment-note { margin:4px 0 0; font-size:.82rem; }.hotel-amenities { display:flex; flex-wrap:wrap; gap:5px; margin:8px 0; }.hotel-amenity { display:inline-flex; align-items:center; gap:4px; padding:3px 7px; border-radius:999px; font-size:.76rem; font-weight:700; }.hotel-amenity-available { background:#edf3ef; }.hotel-amenity-unavailable { background:#ededed; color:#8a8a8a; text-decoration:line-through; }.hotel-amenity-icon { text-decoration:none; }
@media (min-width:700px) { .page { padding-top:30px; }.app-header { padding-inline:max(calc((100% - 744px)/2), 24px); }.day-nav { top:79px; } }
