:root{--ink:#172126;--muted:#697278;--paper:#f5f1e8;--card:#fffdf8;--blue:#143c52;--blue-2:#205d72;--rust:#d5643d;--green:#2d6f5b;--line:#d9d2c5;--gold:#c49a4a}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);margin:0;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,sans-serif}button,a{font:inherit}a{color:inherit}button{cursor:pointer}.hero{background:var(--blue);color:#fff;min-height:660px;padding:0 clamp(24px,6vw,92px) 50px;position:relative;overflow:hidden}.hero:before{content:"";border:1px solid #ffffff1f;border-radius:50%;width:520px;height:520px;position:absolute;top:80px;right:-110px;box-shadow:0 0 0 70px #ffffff06,0 0 0 150px #ffffff05}.topbar{z-index:2;border-bottom:1px solid #ffffff2e;justify-content:space-between;align-items:center;height:88px;display:flex;position:relative}.brand{letter-spacing:.06em;align-items:center;gap:10px;font-weight:700;text-decoration:none;display:flex}.brand span{border:1px solid #ffffff8c;border-radius:50%;place-items:center;width:31px;height:31px;font-family:Georgia,serif;display:grid}.top-actions{gap:8px;display:flex}.top-actions button,.top-tool-link{color:#fff;background:#ffffff12;border:1px solid #ffffff4d;border-radius:999px;padding:8px 13px;text-decoration:none}.top-actions button:hover,.top-tool-link:hover{background:#ffffff29}.hero-copy{z-index:1;max-width:900px;padding:86px 0 70px;position:relative}.eyebrow{letter-spacing:.2em;text-transform:uppercase;color:var(--rust);margin:0 0 14px;font-size:12px;font-weight:800}.hero .eyebrow{color:#efaa83}.hero h1{letter-spacing:-.045em;margin:0;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(44px,7vw,88px);font-weight:500;line-height:1.02}.hero-intro{color:#ffffffb8;margin:24px 0 0;font-size:18px}.hero-stats{gap:48px;margin-top:44px;display:flex}.hero-stats div{align-items:baseline;gap:9px;display:flex}.hero-stats strong{color:#f1c47b;font-family:Georgia,serif;font-size:32px;font-weight:500}.hero-stats span{color:#ffffff9e;font-size:13px}.route-strip{z-index:1;align-items:center;max-width:760px;display:flex;position:relative}.route-stop{flex-direction:column;gap:2px;min-width:64px;display:flex}.route-stop b{font-family:Georgia,serif;font-size:21px}.route-stop span{color:#fff9;font-size:12px}.route-stop.active b{color:#f3c67c}.route-strip i{background:#ffffff42;flex:1;height:1px;margin:0 12px;position:relative}.route-strip i:after{content:"";opacity:.7;background:#fff;border-radius:50%;width:5px;height:5px;position:absolute;top:-2px;right:0}.quick-panel{z-index:3;grid-template-columns:repeat(3,1fr);gap:12px;max-width:1180px;margin:-34px auto 64px;padding:0 24px;display:grid;position:relative}.quick-card{background:var(--card);border:1px solid var(--line);border-radius:15px;align-items:center;gap:15px;min-height:102px;padding:22px;display:flex;box-shadow:0 12px 40px #342d230f}.quick-card.attention{background:#fff7e8;border-color:#ebc982}.quick-icon{width:38px;height:38px;color:var(--green);background:#e4eee9;border-radius:50%;flex:0 0 38px;place-items:center;font-weight:900;display:grid}.attention .quick-icon{color:#9a5b19;background:#f2dcae}.quick-card div{flex-direction:column;gap:5px;display:flex}.quick-card small{color:var(--muted);letter-spacing:.08em;font-size:11px}.quick-card strong{font-size:14px;line-height:1.4}.weather-panel{max-width:1180px;margin:-26px auto 58px;padding:0 24px}.weather-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:end;gap:28px;padding-bottom:16px;display:flex}.weather-heading .eyebrow{color:var(--rust);margin-bottom:5px}.weather-heading h2{color:var(--blue);margin:0;font-family:Georgia,Noto Serif SC,serif;font-size:25px}.weather-heading>p{max-width:480px;color:var(--muted);text-align:right;margin:0;font-size:11px;line-height:1.7}.weather-links{grid-template-columns:repeat(4,1fr);gap:9px;padding-top:14px;display:grid}.weather-links a{border:1px solid var(--line);background:#fffdf8b8;border-radius:12px;grid-template-rows:auto auto;grid-template-columns:26px 1fr;column-gap:8px;min-height:66px;padding:11px 12px;text-decoration:none;transition:border-color .15s,transform .15s,background .15s;display:grid}.weather-links a:hover{border-color:var(--blue-2);background:var(--card);transform:translateY(-2px)}.weather-links a>span{color:var(--gold);grid-row:1/3;align-self:center;font-size:19px}.weather-links b{color:var(--blue);font-size:12px}.weather-links small{color:var(--muted);font-size:9px}.content-grid{grid-template-columns:190px 1fr;align-items:start;gap:62px;max-width:1180px;margin:0 auto;padding:0 24px 100px;display:grid}.side-nav{border-left:1px solid var(--line);flex-direction:column;gap:4px;padding-left:18px;display:flex;position:sticky;top:24px}.side-nav p{color:var(--muted);text-transform:uppercase;letter-spacing:.16em;margin:0 0 12px;font-size:11px}.side-nav a{color:var(--muted);padding:8px 0;font-size:13px;text-decoration:none}.side-nav a:hover{color:var(--rust)}.itinerary{min-width:0}.day-card{grid-template-columns:82px 1fr;gap:28px;padding:0 0 68px;scroll-margin-top:24px;display:grid}.date-block{border-top:3px solid var(--rust);flex-direction:column;align-items:center;height:104px;padding-top:7px;display:flex}.date-block span{color:var(--rust);letter-spacing:.16em;font-size:10px;font-weight:900}.date-block strong{font-family:Georgia,serif;font-size:43px;font-weight:500;line-height:1.05}.date-block small{color:var(--muted);font-size:11px}.day-content{border-top:1px solid var(--line);min-width:0;padding-top:22px}.day-heading{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:28px;display:flex}.day-heading p{color:var(--blue-2);letter-spacing:.06em;margin:0 0 6px;font-size:12px;font-weight:800}.day-heading h2{letter-spacing:-.025em;margin:0;font-family:Georgia,Noto Serif SC,serif;font-size:clamp(27px,4vw,40px);font-weight:500;line-height:1.15}.status{white-space:nowrap;border-radius:999px;padding:7px 11px;font-size:11px;font-weight:800}.status-confirmed{color:var(--green);background:#dfece6}.status-todo{color:#a04d24;background:#f8e1c9}.status-plan{color:var(--blue-2);background:#e2ebef}.status-actions{flex-direction:column;align-items:flex-end;gap:7px;display:flex}.day-expense-button{color:#9a5b19;white-space:nowrap;background:#fff9ee;border:1px solid #d5b180;border-radius:999px;padding:6px 10px;font-size:10px;font-weight:900}.day-expense-button:hover{background:#f3dfbd}.flight-board{background:var(--blue);color:#fff;border-radius:18px;grid-template-columns:1fr 1.4fr 1fr;align-items:center;padding:26px;display:grid}.airport{flex-direction:column;display:flex}.airport:last-child{text-align:right}.airport strong{color:#efc178;font-size:14px}.airport b{font-family:Georgia,serif;font-size:38px;font-weight:500}.airport span{color:#ffffff9e;font-size:11px}.flight-line{text-align:center;color:#ffffffb3;flex-direction:column;gap:8px;display:flex}.flight-line span{font-size:11px}.flight-line i{background:#ffffff59;height:1px;position:relative}.flight-line i:after{content:"✦";color:#efc178;background:var(--blue);padding:0 3px;position:absolute;top:-10px;left:calc(50% - 6px)}.flight-line small{font-size:10px}.note{border-left:3px solid var(--gold);color:var(--muted);background:#ffffff59;margin:13px 0 26px;padding:10px 14px;font-size:12px;line-height:1.6}.note.important{border-color:var(--rust);color:#74422d;background:#fff6ea}.event-row{grid-template-columns:90px 1fr;gap:18px;padding:22px 0;display:grid}.event-row.compact{padding-bottom:15px}.time{color:var(--rust);padding-top:3px;font:600 15px Georgia,serif}.event-body h3,.stay-card h3,.plan-list h3,.car-card h3{margin:0 0 8px;font-size:16px}.event-body p,.plan-list p{color:var(--muted);margin:0 0 12px;font-size:13px;line-height:1.7}.arrival-steps{gap:8px;margin:16px 0;display:grid}.arrival-steps section{border:1px solid var(--line);background:#fffdf8b8;border-radius:12px;grid-template-columns:34px 1fr;gap:12px;padding:14px;display:grid}.arrival-steps section>span{background:var(--blue);color:#fff;border-radius:50%;place-items:center;width:30px;height:30px;font:600 11px Georgia,serif;display:grid}.arrival-steps b{color:var(--blue);font-size:13px}.arrival-steps p{margin:5px 0 0;font-size:11px}.ticket-note{border-left:3px solid var(--gold);background:#fff7e8;border-radius:0 11px 11px 0;margin-top:16px;padding:15px 16px}.ticket-note>b{color:#8a571d;font-size:12px}.ticket-note p{margin:5px 0 0;font-size:11px}.ticket-note strong{color:var(--ink)}.links{flex-wrap:wrap;gap:8px;display:flex}.map-link{color:var(--blue-2);border:1px solid #b9c6cb;border-radius:999px;align-items:center;gap:6px;padding:7px 11px;font-size:11px;font-weight:800;text-decoration:none;display:inline-flex}.map-link:hover{background:#e5eef1}.map-link span{font-size:12px}.mini-grid{grid-template-columns:repeat(3,1fr);gap:7px;margin-top:18px;display:grid}.mini-grid span{color:var(--muted);background:#ece8df;border-radius:10px;padding:12px;font-size:11px;line-height:1.45}.mini-grid b{color:var(--ink);margin-bottom:4px;display:block}.stay-card{background:var(--card);border:1px solid var(--line);border-radius:15px;grid-template-columns:1fr auto;align-items:center;gap:10px 24px;padding:20px;display:grid}.stay-label{color:var(--rust);letter-spacing:.15em;margin-bottom:7px;font-size:9px;font-weight:900;display:block}.stay-card p{color:var(--muted);margin:0;font-size:12px}.stay-card .map-link{grid-column:1/-1;justify-self:start}.stay-meta{text-align:right;color:var(--muted);flex-direction:column;gap:5px;font-size:11px;display:flex}.footnote{color:#8c857b;margin:8px 0 0;font-size:10px;line-height:1.6}.plan-list{border-top:1px solid var(--line)}.plan-list>div{border-bottom:1px solid var(--line);grid-template-columns:80px 1fr;gap:20px;padding:22px 0;display:grid}.plan-list>div>span{color:var(--rust);font:600 14px Georgia,serif}.plan-list.single{margin-top:22px}.concert-card{color:#fff;background:#172126;border-radius:18px;align-items:center;gap:22px;margin-bottom:14px;padding:26px;display:flex}.concert-mark{color:#e6c680;border:1px solid #d8b871;border-radius:50%;flex:0 0 58px;place-items:center;width:58px;height:58px;font:500 19px Georgia,serif;display:grid}.concert-card small{color:#d9b76d;letter-spacing:.15em;font-size:9px}.concert-card h3{margin:5px 0 8px;font:500 21px Georgia,serif}.concert-card p{color:#ffffffa6;margin:0;font-size:12px;line-height:1.6}.reminder{background:#ece8df;border-radius:11px;gap:16px;margin-top:15px;padding:15px;font-size:12px;line-height:1.55;display:flex}.reminder b{white-space:nowrap;color:var(--blue)}.reminder span{color:var(--muted)}.train-ticket{background:var(--card);border:1px solid var(--line);border-radius:16px;grid-template-columns:1fr 1fr 1fr;align-items:center;padding:22px;display:grid}.train-ticket>div:not(.train-track){flex-direction:column;gap:4px;display:flex}.train-ticket>div:last-child{text-align:right}.train-ticket small{color:var(--muted);letter-spacing:.1em;font-size:9px}.train-ticket strong{color:var(--blue);font:500 30px Georgia,serif}.train-ticket span{color:var(--muted);font-size:11px}.train-track{text-align:center;position:relative}.train-track i{background:var(--line);height:1px;display:block}.train-track b{background:var(--card);color:var(--rust);padding:0 8px;font-size:10px;position:relative;top:-9px}.car-card{background:#e3ece8;border-radius:16px;align-items:center;gap:18px;margin-bottom:14px;padding:22px;display:flex}.car-key{background:var(--green);color:#fff;letter-spacing:.1em;border-radius:13px;place-items:center;width:52px;height:52px;font-size:10px;font-weight:900;display:grid}.car-card p{color:var(--muted);margin:0 0 8px;font-size:12px}.car-card div div{gap:8px;display:flex}.car-card span{color:var(--green);background:#ffffffb3;border-radius:999px;padding:5px 8px;font-size:10px;font-weight:700}.bled-flow-card{background:linear-gradient(145deg,#f7faf8,#edf4f0);border:1px solid #bfcfc8;border-radius:18px;margin-top:24px;padding:24px;overflow:hidden}.bled-flow-heading{border-bottom:1px solid #ccdad4;justify-content:space-between;align-items:center;gap:16px;padding-bottom:18px;display:flex}.bled-flow-heading small{color:var(--green);letter-spacing:.16em;font-size:9px;font-weight:900}.bled-flow-heading h3{color:var(--blue);margin:4px 0 0;font:500 22px Georgia,Noto Serif SC,serif}.bled-flow-heading>span{color:var(--green);background:#ffffffc7;border-radius:999px;padding:7px 10px;font-size:10px;font-weight:800}.bled-flow{grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;align-items:stretch;gap:8px;padding:22px 0 16px;display:grid}.flow-node{background:#ffffffe0;border:1px solid #c8d6d0;border-radius:12px;flex-direction:column;justify-content:center;gap:4px;min-height:78px;padding:13px 12px;display:flex}.flow-node b{color:var(--green);letter-spacing:.06em;font-size:10px}.flow-node span{color:var(--ink);font-size:12px;font-weight:800;line-height:1.35}.flow-node small{color:var(--muted);font-size:9px}.flow-arrow{min-width:46px;color:var(--green);flex-direction:column;justify-content:center;align-items:center;display:flex}.flow-arrow small{max-width:65px;color:var(--muted);text-align:center;font-size:8px;line-height:1.3}.flow-arrow i{font-size:20px;font-style:normal}.bled-boat-loop{grid-template-columns:1fr 120px 1fr;align-items:center;gap:12px;max-width:510px;margin:0 0 0 auto;padding:8px 0 18px;display:grid}.flow-node.water{background:#f2fafc;border-color:#a9cad3}.flow-node.water b{color:var(--blue-2)}.boat-arrows{color:var(--blue-2);text-align:center;flex-direction:column;gap:7px;font-size:9px;font-weight:800;display:flex}.flow-continuation{color:var(--green);justify-content:center;align-items:center;gap:12px;padding:12px 0 16px;display:flex}.flow-continuation i{font-size:17px;font-style:normal}.flow-continuation span,.flow-continuation strong{border-radius:999px;padding:8px 12px;font-size:10px}.flow-continuation span{color:var(--ink);background:#fff;border:1px solid #c8d6d0}.flow-continuation strong{background:var(--green);color:#fff}.bled-branches{grid-template-columns:1fr 1fr;gap:12px;display:grid;position:relative}.branch-card{background:#fff;border:1px solid #c8d6d0;border-radius:14px;padding:17px}.branch-card.easy{border-top:3px solid var(--gold)}.branch-card.full{border-top:3px solid var(--rust)}.branch-card small{color:var(--muted);letter-spacing:.12em;font-size:9px;font-weight:900}.branch-card h4{color:var(--blue);margin:6px 0;font-size:14px}.branch-card p{color:var(--muted);margin:0;font-size:10px;line-height:1.5}.flow-finish{background:var(--blue);color:#fff;border-radius:999px;align-items:center;gap:8px;width:max-content;max-width:100%;margin:18px auto 0;padding:10px 16px;display:flex}.flow-finish span{color:#ffffffa6;font-size:9px}.flow-finish strong{font-size:12px}.expense-section{border:1px solid var(--line);background:var(--card);border-radius:20px;margin:6px 0 58px 110px;padding:30px;scroll-margin-top:24px}.expense-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:18px;padding-bottom:20px;display:flex}.expense-heading .eyebrow{margin-bottom:4px}.expense-heading h2{color:var(--blue);margin:0;font:500 34px Georgia,Noto Serif SC,serif}.expense-heading>span{color:var(--green);background:#e3ece8;border-radius:999px;padding:7px 10px;font-size:10px;font-weight:800}.expense-summary{grid-template-columns:repeat(3,1fr);gap:8px;margin:20px 0;display:grid}.expense-summary div{background:#ece8df;border-radius:12px;flex-direction:column;justify-content:space-between;min-height:82px;padding:15px;display:flex}.expense-summary small{color:var(--muted);font-size:10px}.expense-summary strong{color:var(--blue);font:500 20px Georgia,serif}.expense-form{background:#f5f1e8;border-radius:14px;grid-template-columns:repeat(3,1fr);gap:12px;padding:20px;display:grid}.expense-form label{color:var(--muted);flex-direction:column;gap:6px;font-size:10px;font-weight:800;display:flex}.expense-form input,.expense-form select{width:100%;height:42px;color:var(--ink);background:#fff;border:1px solid #cbc5ba;border-radius:9px;padding:0 11px;font:500 12px inherit}.amount-field>div{grid-template-columns:78px 1fr;gap:6px;display:grid}.note-field{grid-column:span 2}.expense-add{background:var(--rust);color:#fff;border:0;border-radius:9px;align-self:end;height:42px;font-size:12px;font-weight:900}.expense-add:hover{background:#b84f2d}.expense-list-heading{justify-content:space-between;align-items:center;margin-top:24px;display:flex}.expense-list-heading h3{color:var(--blue);margin:0;font-size:15px}.expense-list-heading button{color:var(--blue-2);background:0 0;border:1px solid #b9c6cb;border-radius:999px;padding:7px 11px;font-size:10px;font-weight:800}.expense-list-heading button:disabled{opacity:.42;cursor:default}.expense-empty{color:var(--muted);text-align:center;padding:28px 0;font-size:12px}.expense-list{border-top:1px solid var(--line);margin-top:12px}.expense-list article{border-bottom:1px solid var(--line);grid-template-columns:78px 1fr auto auto;align-items:center;gap:14px;padding:13px 0;display:grid}.expense-date,.expense-detail{flex-direction:column;gap:3px;display:flex}.expense-date b{color:var(--rust);font:600 14px Georgia,serif}.expense-date span,.expense-detail span{color:var(--muted);font-size:9px}.expense-detail strong{font-size:11px}.expense-amount{color:var(--blue);white-space:nowrap;font:600 14px Georgia,serif}.expense-list article>button{color:#a45b46;background:0 0;border:0;font-size:9px}.expense-privacy{color:#8c857b;margin:18px 0 0;font-size:9px;line-height:1.6}.pending{background:var(--rust);color:#fff;border-radius:20px;margin:12px 0 0 110px;padding:34px}.pending .eyebrow{color:#ffd3bb}.pending h2{margin:0 0 25px;font:500 34px Georgia,serif}.pending ol{counter-reset:items;margin:0;padding:0;list-style:none}.pending li{counter-increment:items;border-top:1px solid #ffffff40;grid-template-columns:1fr 1.6fr;gap:20px;padding:17px 0 17px 42px;display:grid;position:relative}.pending li:before{content:counter(items, decimal-leading-zero);color:#ffd3bb;font:500 16px Georgia,serif;position:absolute;left:0}.pending li b{font-size:13px}.pending li span{color:#ffffffb8;font-size:12px;line-height:1.5}footer{color:#fff;background:#172126;justify-content:space-between;gap:20px;padding:42px max(24px,50vw - 566px);display:flex}footer p{margin:0;font:500 18px Georgia,serif}footer span{color:#ffffff80;font-size:11px}.private-mode .sensitive{filter:blur(6px);-webkit-user-select:none;user-select:none}@media (max-width:820px){.hero{min-height:620px}.hero-copy{padding-top:70px}.quick-panel{grid-template-columns:1fr;margin-top:-50px}.quick-card{min-height:78px}.weather-panel{margin-top:-22px}.weather-links{grid-template-columns:repeat(2,1fr)}.content-grid{grid-template-columns:1fr}.side-nav{display:none}.expense-section,.pending{margin-left:0}}@media (max-width:580px){.hero{min-height:570px;padding-inline:20px}.topbar{height:72px}.brand{font-size:13px}.top-actions button{padding:7px 9px;font-size:11px}.top-actions button:last-child{display:none}.hero-copy{padding:62px 0 58px}.hero h1{font-size:43px}.hero-intro{font-size:13px;line-height:1.6}.hero-stats{gap:20px;margin-top:30px}.hero-stats strong{font-size:26px}.route-stop b{font-size:16px}.route-stop span{font-size:9px}.route-strip i{margin:0 5px}.quick-panel{margin-bottom:52px;padding:0 14px}.weather-panel{margin-bottom:48px;padding:0 15px}.weather-heading{flex-direction:column;align-items:start;gap:8px}.weather-heading>p{text-align:left}.weather-links{grid-template-columns:1fr 1fr;gap:7px}.weather-links a{min-height:62px;padding:10px}.content-grid{padding:0 15px 70px}.day-card{grid-template-columns:54px 1fr;gap:14px;padding-bottom:50px}.date-block strong{font-size:34px}.day-heading{flex-direction:column;margin-bottom:20px}.day-heading h2{font-size:28px}.status-actions{flex-direction:row;align-self:flex-start;align-items:flex-start}.status{align-self:flex-start}.flight-board{padding:18px 14px}.airport b{font-size:27px}.airport span,.flight-line small{font-size:8px}.flight-line span{font-size:9px}.event-row,.plan-list>div{grid-template-columns:1fr;gap:7px}.expense-section{padding:22px 16px}.expense-heading{flex-direction:column}.expense-heading h2{font-size:28px}.expense-summary{grid-template-columns:1fr}.expense-summary div{min-height:68px}.expense-form{grid-template-columns:1fr;padding:15px}.note-field{grid-column:auto}.expense-list article{grid-template-columns:62px 1fr auto;gap:9px}.expense-list article>button{grid-column:3}.mini-grid,.stay-card{grid-template-columns:1fr}.stay-meta{text-align:left;flex-direction:row}.concert-card{align-items:flex-start;padding:19px}.concert-mark{flex-basis:44px;width:44px;height:44px}.concert-card h3{font-size:17px}.train-ticket{padding:17px 12px}.train-ticket strong{font-size:24px}.bled-flow-card{padding:18px 14px}.bled-flow-heading{flex-direction:column;align-items:flex-start}.bled-flow{grid-template-columns:1fr;padding-top:18px}.flow-arrow{min-height:38px}.flow-arrow i{transform:rotate(90deg)}.bled-boat-loop{grid-template-columns:1fr;margin:4px 0 0}.boat-arrows{padding:3px 0}.bled-branches{grid-template-columns:1fr}.flow-continuation{flex-direction:column}.reminder{flex-direction:column;gap:5px}.pending{padding:25px 20px}.pending h2{font-size:28px}.pending li{grid-template-columns:1fr;gap:5px;padding-left:35px}footer{flex-direction:column}}@media print{.top-actions,.side-nav,.quick-panel,.weather-panel,.expense-form,.expense-list-heading button{display:none!important}.hero{min-height:auto;padding-bottom:28px}.hero-copy{padding:35px 0}.content-grid{padding-top:40px;display:block}.day-card{break-inside:avoid}.pending,.expense-section{margin-left:110px}}
