*{box-sizing:border-box;margin:0;padding:0}:root{--bg-from:#0f172a;--bg-to:#1e293b;--text:#f1f5f9;--muted:#94a3b8;--soft:#cbd5e1;--line:#334155;--panel:rgba(30,41,59,0.7);--panel-deep:rgba(15,23,42,0.5);--accent-luke:#38bdf8;--accent-monica:#f472b6;--accent-claire:#c4b5fd;--accent-family:#fbbf24;--accent-birthday:#f59e0b;--bali:#34d399;--bkk:#fb7185;--europe:#a78bfa;--sin:#fcd34d;--home:#94a3b8}body,html{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,Helvetica Neue,Arial,sans-serif;background:linear-gradient(180deg,var(--bg-from) 0,var(--bg-to) 100%);background-attachment:fixed;color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}.page{max-width:880px;margin:0 auto;padding:40px 24px 80px}.header{text-align:center;margin-bottom:36px;padding-bottom:24px;border-bottom:1px solid var(--line)}.header h1{font-size:clamp(26px,5vw,38px);font-weight:700;letter-spacing:-.5px;margin-bottom:8px;line-height:1.15}.header .sub{font-size:clamp(14px,2.5vw,16px);color:var(--muted)}.header .badge{display:inline-block;background:var(--accent-birthday);color:var(--bg-from);font-size:12px;font-weight:700;padding:5px 14px;border-radius:999px;margin-top:12px;letter-spacing:.4px}.tabs{display:flex;gap:6px;padding:6px;background:var(--panel-deep);border:1px solid var(--line);border-radius:14px;margin-bottom:8px;overflow-x:auto}.tab{flex:1 1;min-width:0;background:transparent;color:var(--soft);border:none;padding:10px 14px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:background .12s ease,color .12s ease;white-space:nowrap;font-family:inherit}.tab.active,.tab:hover{color:var(--text)}.tab.active{background:var(--panel);box-shadow:inset 0 0 0 1px var(--line)}.section-heading{margin:48px 0 16px;font-size:20px;font-weight:700;letter-spacing:-.2px;color:var(--text);display:flex;align-items:center;gap:10px}.section-heading:after{content:"";flex:1 1;height:1px;background:var(--line)}.timeline{position:relative;padding-left:28px}.timeline:before{content:"";position:absolute;left:8px;top:12px;bottom:12px;width:2px;background:linear-gradient(180deg,var(--accent-luke) 0,var(--europe) 50%,var(--accent-monica) 100%)}.stop{position:relative;margin-bottom:22px}.stop:before{content:"";position:absolute;left:-28px;top:18px;width:18px;height:18px;border-radius:50%;background:var(--bg-from);border:3px solid var(--accent-luke);box-shadow:0 0 0 4px rgba(56,189,248,.15)}.stop.theme-bali:before{border-color:var(--bali);box-shadow:0 0 0 4px rgba(52,211,153,.15)}.stop.theme-bkk:before{border-color:var(--bkk);box-shadow:0 0 0 4px rgba(251,113,133,.15)}.stop.theme-europe:before{border-color:var(--europe);box-shadow:0 0 0 4px rgba(167,139,250,.15)}.stop.theme-birthday:before{border-color:var(--accent-birthday);box-shadow:0 0 0 4px rgba(245,158,11,.2)}.stop.theme-sin:before{border-color:var(--sin);box-shadow:0 0 0 4px rgba(252,211,77,.15)}.stop.theme-home:before{border-color:var(--home);box-shadow:0 0 0 4px rgba(148,163,184,.15)}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 18px}.card.highlight{background:linear-gradient(135deg,rgba(245,158,11,.18) 0,var(--panel) 100%);border-color:var(--accent-birthday)}.row{display:flex;align-items:baseline;gap:12px;margin-bottom:6px;flex-wrap:wrap}.place{font-size:clamp(17px,3vw,21px);font-weight:700}.dates{font-size:13px;color:var(--muted);font-weight:500}.nights{margin-left:auto;font-size:12px;background:var(--bg-to);padding:3px 10px;border-radius:999px;border:1px solid var(--line)}.detail,.nights{color:var(--soft)}.detail{font-size:14px;line-height:1.55;margin-top:4px}.detail strong{color:var(--text)}.companion{margin-top:8px;font-size:13px;font-weight:600}.companion.luke{color:var(--accent-luke)}.companion.monica{color:var(--accent-monica)}.companion.claire{color:var(--accent-claire)}.companion.family{color:var(--accent-family)}.companion.solo{color:var(--muted)}.flight{margin:6px 0 6px 6px;padding:9px 18px;background:var(--panel-deep);border-left:3px solid #475569;border-radius:0 8px 8px 0;font-size:13px;color:var(--soft)}.flight.tentative{border-left-style:dashed;opacity:.85}.flight .code{color:var(--accent-luke)}.flight .code,.flight .time{font-family:ui-monospace,SF Mono,Menlo,monospace;font-weight:600}.flight .time{color:var(--text)}.flight .cabin{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin-left:6px}.legend{margin-top:36px;padding-top:20px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:center;gap:16px 22px;font-size:12px;color:var(--muted)}.legend .item{display:flex;align-items:center;gap:8px}.legend .dot{width:11px;height:11px;border-radius:50%}.grid-list{display:grid;grid-gap:12px;gap:12px}.list-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px}.list-card .title{font-weight:700;font-size:15px}.list-card .meta{font-size:13px;color:var(--muted);margin-top:2px}.list-card .note{font-size:13px;color:var(--soft);margin-top:6px;line-height:1.5}.list-card .status{display:inline-block;font-size:10px;text-transform:uppercase;letter-spacing:.4px;font-weight:700;padding:3px 8px;border-radius:999px;margin-top:8px}.status.booked{background:rgba(52,211,153,.18);color:#6ee7b7;border:1px solid rgba(52,211,153,.4)}.status.pending{background:rgba(251,191,36,.18);color:#fcd34d;border:1px solid rgba(251,191,36,.4)}.status.tentative{background:rgba(148,163,184,.18);color:#cbd5e1;border:1px solid rgba(148,163,184,.4)}.footer{text-align:center;margin-top:48px;padding-top:24px;border-top:1px solid var(--line);font-size:12px;color:#64748b;line-height:1.7}@media (max-width:540px){.page{padding:24px 16px 60px}.timeline{padding-left:22px}.timeline:before{left:6px}.stop:before{left:-24px;width:14px;height:14px}.flight{padding:9px 14px}.nights{margin-left:0}}