:root{--ink:#243c3c;--muted:#83908f;--line:#e5eae7;--green:#2e6657;--bg:#f7f9f6}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:13px -apple-system,BlinkMacSystemFont,'Segoe UI','Noto Sans TC',sans-serif}button,input,select,textarea{font:inherit}button{background:#fff;border:1px solid #dfe6e1;border-radius:7px;color:#405752;cursor:pointer;padding:9px 12px;white-space:nowrap}button:hover{background:#edf4ef}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--green);color:#fff;border-color:var(--green)}button.danger{color:#b55454}a{color:var(--green)}header{height:76px;padding:0 34px;display:flex;align-items:center;background:#fff;border-bottom:1px solid var(--line);gap:13px}.brand{text-decoration:none;background:#2e6657;color:white;font-size:33px;font-weight:600;width:43px;height:43px;display:flex;justify-content:center;align-items:center;border-radius:12px}.brand span{font-size:20px;align-self:flex-start;margin-top:5px}.brandtext{font-size:14px;font-weight:650;letter-spacing:2px}.brandtext small{display:block;font-size:8px;letter-spacing:1.8px;color:var(--muted);margin-top:5px}.headerline{height:26px;width:1px;background:var(--line);margin:0 10px}.tripname{font-size:14px}.pill{font-size:10px;background:#f0f4ef;border-radius:5px;padding:5px 7px;color:#70816e;margin-left:7px}.topactions{margin-left:auto;display:flex;align-items:center;gap:10px}#saved{color:#819489;font-size:11px;margin-right:12px}main{max-width:1900px;margin:auto;padding:30px 30px 24px}.intro{display:flex;justify-content:space-between;align-items:center;margin:8px 0 26px}.eyebrow{font-size:9px;letter-spacing:2px;font-weight:600;color:#8b9d92}h1{font-size:30px;letter-spacing:1px;font-weight:600;margin:9px 0 11px}h1 span{font-weight:400;font-size:11px;color:#88968d;letter-spacing:1px;margin-left:20px}p{line-height:1.8;color:#7e8c84}h2{font-size:17px;font-weight:600;margin:7px 0}.intro p{margin:0;font-size:12px}.tripstats{display:flex;gap:34px}.tripstats>div{padding-left:28px;border-left:1px solid #dde5de;min-width:100px}.tripstats strong{font-size:25px;font-weight:500;display:block}.tripstats small{font-size:13px}.tripstats span{display:block;color:#8d9a91;font-size:10px;margin-top:8px}.notice{background:#edf2eb;border:1px solid #e1e8dc;border-radius:8px;padding:11px 14px;display:flex;gap:10px;color:#7b8971;font-size:11px;margin-bottom:21px;line-height:1.6}.notice b{font-weight:600}.notice button{border:0;background:transparent;padding:0 0 0 12px;color:#52765b;font-size:11px}.workspace{display:grid;grid-template-columns:minmax(580px,1.15fr) minmax(390px,1fr);gap:22px;align-items:start}.calendarpanel,.mappanel,.routepanel{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 3px 12px #264a3910}.paneltoolbar{display:flex;justify-content:space-between;align-items:center;padding:21px 20px 16px}h2 span{color:#92a097;font-size:11px;font-weight:400;margin-left:10px}.toolbarbuttons{display:flex;gap:7px}.calendarhint{display:flex;justify-content:space-between;padding:0 18px 13px;font-size:9px;color:#94a097}.calendar{height:655px;overflow:auto;position:relative;overscroll-behavior:contain}.calgrid{min-width:720px;display:grid;grid-template-columns:42px repeat(8,minmax(82px,1fr));position:relative}.dayhead{height:67px;position:sticky;top:0;background:#fff;z-index:5;text-align:center;border-bottom:1px solid var(--line);padding:8px 0;cursor:pointer;color:#9aa59e}.dayhead b{display:block;font-size:19px;font-weight:500;color:#61776a;margin-top:7px}.dayhead.active{background:#f0f5ed;color:#588160}.dayhead.active b{background:#44725c;color:white;display:inline-flex;justify-content:center;align-items:center;width:29px;height:29px;border-radius:50%;margin-top:3px}.times{position:relative;height:1152px;color:#9ba69f;font-size:9px}.times span{position:absolute;right:6px;transform:translateY(-5px)}.daycol{position:relative;height:1152px;border-left:1px solid #e9eee9;background:repeating-linear-gradient(to bottom,transparent 0,transparent 35px,#f0f3f0 35px,#f0f3f0 36px,transparent 36px,transparent 71px,#e7ede7 71px,#e7ede7 72px)}.daycol.active{background-color:#fcfdfb}.event{position:absolute;left:3px;right:3px;border:0;border-left:3px solid #719b74;background:#e8f1e4;color:#52744f;border-radius:5px;padding:5px 5px;overflow:hidden;text-align:left;white-space:normal;cursor:grab;touch-action:none;user-select:none;min-height:20px}.event.food{background:#faf0de;border-color:#c5a362;color:#98783e}.event.hotel{background:#e9edf3;border-color:#879bc2;color:#627694}.event.flight{background:#f1e9ed;border-color:#bd90a8;color:#9d6f86}.event.selected{box-shadow:0 0 0 2px #305f50;z-index:3}.event small{font-size:9px;display:block;line-height:1.4;opacity:.85}.event strong{display:block;font-size:10px;font-weight:550;margin-top:4px;line-height:1.5}.event .resize{position:absolute;bottom:0;height:9px;left:0;right:0;cursor:ns-resize;display:flex;justify-content:center;align-items:center}.resize:after{content:'';width:17px;height:2px;background:currentColor;opacity:.3}.calendarfooter{display:flex;gap:15px;border-top:1px solid var(--line);padding:15px 18px;font-size:10px;color:#8a998e}.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#83a380;margin-right:5px}.dot.food{background:#c5a362}.dot.hotel{background:#879bc2}.dot.flight{background:#bd90a8}.lockedhint{margin-left:auto}aside{display:flex;flex-direction:column;gap:18px}.mapheading,.routeheading{padding:18px 20px;display:flex;align-items:center;justify-content:space-between}.mapheading button{font-size:11px}#map{height:350px;background:#edf1eb;position:relative}#map iframe{width:100%;height:100%;border:0}.mapfoot{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line);font-size:9px;color:#929c94}.mapfoot button{border:0;font-size:10px;padding:2px 0;color:#56816b}.legend{display:flex;justify-content:center;gap:17px;padding:13px 8px;font-size:10px;color:#839186}.legend i{display:inline-block;width:12px;height:3px;margin-right:5px;vertical-align:middle}.routeheading{padding-bottom:12px}#routes{padding:0 20px 12px;max-height:440px;overflow:auto}.routecard{border:1px solid #e6ece5;border-radius:8px;padding:12px;margin-bottom:9px}.routetop{display:flex;justify-content:space-between;align-items:center;gap:10px}.routetop b{font-size:11px;font-weight:550;line-height:1.7}.routecard button{font-size:10px;padding:6px 8px}.routecard p{font-size:10px;margin:7px 0 0;line-height:1.5}.routecard .routechips{display:flex;gap:5px;flex-wrap:wrap;margin-top:9px}.chip{font-size:9px;padding:3px 6px;border-radius:3px;background:#f4f6f3}.routecard.stale{border-color:#e6c18a}.warn{padding:9px 15px;background:#fff5e7;color:#a57a3f;font-size:11px;border-top:1px solid #eee5d6;cursor:pointer}dialog{border:1px solid var(--line);border-radius:15px;padding:24px;width:560px;max-width:94vw;color:var(--ink);box-shadow:0 20px 80px #173b3229}dialog::backdrop{background:#15332e50;backdrop-filter:blur(3px)}#transport{width:790px}.dialoghead{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px}.dialoghead button{border:0;font-size:17px}label{display:block;font-size:12px;margin:14px 0;color:#64796c}input,select,textarea{display:block;width:100%;border:1px solid #dfe6df;border-radius:6px;padding:10px;background:#fff;color:#344c3f;margin-top:6px}input:focus,select:focus,textarea:focus{outline:2px solid #b0cbb8;border-color:#6f9980}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.check{display:flex;gap:8px;align-items:center}.check input{width:auto;margin:0}.dialogfooter{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:20px}.searchrow{display:flex;align-items:center;gap:8px}.searchrow input,.searchrow select{margin:0}.searchrow button{flex-shrink:0}.muted{font-size:11px;color:#91a093}.sectionline{margin:20px 0 8px;display:flex;align-items:center;justify-content:space-between}.step{padding:12px 0;border-bottom:1px solid var(--line)}.stepgrid{display:grid;grid-template-columns:110px 1fr 80px 90px 32px;gap:8px;align-items:end}.stepgrid label{margin:0;font-size:10px}.stepgrid input,.stepgrid select{padding:8px;font-size:11px}.step p{font-size:10px;margin:8px 0 0}.searchresult{display:block;width:100%;text-align:left;margin-top:8px;white-space:normal}.searchresult small{display:block;color:#8d9a92;margin-top:5px}.alternative{display:block;width:100%;text-align:left;margin:8px 0}.alternative.active{border-color:var(--green);background:#edf5ef}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#294c40;color:#fff;padding:13px 24px;border-radius:8px;z-index:100;opacity:0;pointer-events:none;transition:opacity .2s}#toast.show{opacity:1}#warnings:empty{display:none}@media(min-width:1700px){.calendar{height:740px}#map{height:420px}}@media(max-width:1100px){.workspace{grid-template-columns:minmax(480px,1.2fr) minmax(320px,1fr);gap:14px}main{padding:22px 18px}.tripstats{gap:15px}.tripstats>div{padding-left:15px}.tripstats strong{font-size:21px}.tripname,.headerline{display:none}h1 span{display:none}.legend{gap:9px}#saved{display:none}}@media(max-width:850px){header{padding:0 16px}.brandtext{display:none}.topactions button{font-size:11px}.workspace{display:flex;flex-direction:column}.calendarpanel,aside{width:100%}.intro{align-items:flex-start;gap:15px}.tripstats>div:first-child{display:none}.tripstats{gap:12px}.tripstats>div{min-width:65px}h1{font-size:24px}.intro p{font-size:10px}.calendar{height:530px}.notice{font-size:10px}#map{height:330px}.stepgrid{grid-template-columns:90px 1fr 65px 65px 28px}.stepgrid input{width:100%}.searchrow{flex-wrap:wrap}.searchrow input{flex:1}.tripstats strong{font-size:19px}}
.event{align-content:start}.mapplaceholder{position:absolute;left:18px;right:18px;bottom:15px;padding:12px 14px;border:1px solid #dce5dc;background:#ffffffed;border-radius:8px;pointer-events:none;color:#5e7968;font-size:11px;line-height:1.7;box-shadow:0 3px 12px #264a3910}.mapplaceholder b{display:block;font-size:12px;color:#3d6551}.dayhead{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px}.dayhead b,.dayhead.active b{margin-top:0}.calendarhint{gap:12px}

.event{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:0}.event small,.event strong{flex-shrink:0}

[hidden]{display:none!important}.pagetabs{display:flex;gap:8px;margin:18px 0}.pagetabs a{text-decoration:none;padding:12px 22px;border-radius:8px}.pagetabs a.active{background:#2e6657;color:white}#expensespage{background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px}.budgetheading{display:flex;justify-content:space-between;align-items:center}.budgetheading h2{font-size:26px;margin:8px 0}.budgetheading p{color:#708078}.budgetcards{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:16px;margin:24px 0}.budgetcards article{border:1px solid #e0e8df;background:#f7faf6;border-radius:12px;padding:22px}.budgetcards span,.budgetcards small{display:block;color:#728277}.budgetcards strong{display:block;font-size:30px;margin:14px 0}.budgetcards em{font-size:22px;font-style:normal;color:#809087}.budgetnotice{background:#fff7e9;color:#86662f;padding:16px;border-radius:9px;line-height:1.9}.exchange{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.exchange input{width:150px;margin:0}.budgettablewrap{overflow:auto}.budgettable{width:100%;border-collapse:collapse;margin-top:20px}.budgettable th{text-align:left;color:#7d8982;font-weight:500;background:#f8faf7}.budgettable td,.budgettable th{padding:15px 12px;border-bottom:1px solid #e8ede7}.budgettable td:nth-child(2){max-width:550px;line-height:1.7}.budgettable small{display:block;color:#88918b;font-size:11px;margin-top:5px}.budgettable a{font-size:11px}.budgettable .amount{white-space:nowrap;font-weight:600}.budgetstatus{font-size:11px;white-space:nowrap;background:#f0f4ef;padding:5px 8px;border-radius:5px}.budgetstatus.estimate,.budgetstatus.stale,.budgetstatus.missing{color:#9b6928;background:#fff2dc}.budgetstatus.confirmed{color:#2e6657;background:#e9f4e9}.routewarning{color:#a26b2c}.stepgrid{grid-template-columns:90px 1fr 65px 80px 65px 30px}@media(max-width:850px){#expensespage{padding:16px}.budgetcards{grid-template-columns:1fr}.budgetheading{align-items:flex-start;gap:12px}.budgetheading h2{font-size:22px}.stepgrid{grid-template-columns:80px 1fr 65px}.budgettable{min-width:740px}}

#routecontrols{display:grid;grid-template-columns:minmax(0,1fr) 130px;gap:12px;padding:0 16px}#routecontrols label{margin:0 0 10px}#routecontrols select{font-size:11px;padding:8px}#maprouteinfo{font-size:11px;color:#64796c;padding:0 16px;margin:0 0 12px;line-height:1.6}#routepreview{height:440px;background:#edf1eb}#routepreview iframe{width:100%;height:100%;border:0}.mapheading button.active{background:#edf5ef;border-color:#6f9980}.routetop{flex-wrap:wrap}.routetop b{flex:1;min-width:140px}[hidden]{display:none!important}@media(max-width:850px){#routepreview{height:380px}#routecontrols{grid-template-columns:minmax(0,1fr) 115px}}

/* Compact desktop planner: the calendar and map share the available browser height. */
.transportevent{position:absolute;display:flex;flex-direction:column;align-items:flex-start;gap:1px;text-align:left;overflow:hidden;min-height:10px;padding:2px 4px;border:1px solid #dd8d35;border-left:3px solid #d77916;border-radius:4px;background:#ffe5bd;color:#8b4e0e;cursor:pointer;z-index:2;font-size:9px;line-height:1.25}.transportevent span{white-space:nowrap}.transportevent strong{font-size:9px;font-weight:500}.transportevent:hover,.transportevent:focus-visible{background:#ffd28b;outline:2px solid #d77916;z-index:5}.transportevent.stale,.transportevent.missing{border-style:dashed}.dot.transport{background:#e59635}.routepanel summary{padding:12px 16px;cursor:pointer;color:#496958;font-size:12px}.routepanel:not([open]) .routeheading,.routepanel:not([open]) #routes{display:none}.times,.daycol{height:var(--timeline-height,1152px)}.daycol{background:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--hour-height,72px) - 1px),#e7ede7 calc(var(--hour-height,72px) - 1px),#e7ede7 var(--hour-height,72px))}.calgrid .dayhead{height:46px}.dayhead b{font-size:15px}.dayhead.active b{width:24px;height:24px}.event{padding:2px 4px}.event strong{margin-top:1px;line-height:1.25}.calendarfooter{gap:9px;flex-wrap:wrap}.calendarhint{font-size:10px}.mapfoot{gap:10px;line-height:1.5}.mapfoot button{flex-shrink:0}dialog{max-height:92dvh;overflow:auto}
@media(min-width:1200px){
 body.plannerpage{height:100dvh;overflow:hidden;display:flex;flex-direction:column}
 header{height:56px;min-height:56px;padding:0 24px}
 body.plannerpage main{flex:1;min-height:0;display:flex;flex-direction:column;width:100%;max-width:none;padding:12px 20px 16px}
 .intro{padding:0;margin:0;min-height:68px;flex-shrink:0}h1{font-size:27px;margin:4px 0}h1 span{font-size:12px}.intro .eyebrow{font-size:9px}.tripstats strong{font-size:24px}.tripstats{gap:20px}.tripstats>div{padding-left:20px}
 .pagetabs{margin:8px 0 10px;flex-shrink:0}.pagetabs a{padding:7px 16px;font-size:12px}
 .workspace{flex:1;min-height:0;display:grid;grid-template-columns:minmax(680px,1.12fr) minmax(480px,1fr);gap:16px}
 .calendarpanel{min-height:0;display:flex;flex-direction:column;overflow:hidden}.paneltoolbar{padding:12px 15px;flex-shrink:0}.paneltoolbar .eyebrow{display:none}.paneltoolbar h2{font-size:17px}.calendarhint{padding:4px 14px 10px;flex-shrink:0}.calendar{flex:1;height:auto;min-height:0;overflow:auto}.calgrid{grid-template-columns:42px repeat(8,minmax(72px,1fr))}.calendarfooter{padding:9px 12px;flex-shrink:0;font-size:9px}.event strong{font-size:9px}.event small{font-size:8px}
 aside{min-height:0;gap:10px}.mappanel{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.mapheading{padding:12px 15px;flex-shrink:0}.mapheading .eyebrow{display:none}.mapheading h2{font-size:16px}.mapheading button{padding:6px 9px}#routecontrols{flex-shrink:0}#routecontrols label{font-size:10px}#routecontrols select{margin-top:3px;padding:6px}#maprouteinfo{flex-shrink:0;font-size:10px;margin-bottom:8px}#routepreview,#map{flex:1;height:auto;min-height:0}#legend,.mapfoot{flex-shrink:0}.routepanel{flex-shrink:0;max-height:26%;overflow:auto}.routepanel #routes{max-height:180px}.routeheading{padding-top:0}.routeheading .eyebrow{display:none}
}
@media(min-width:1200px) and (max-height:800px){.intro{min-height:54px}h1{font-size:23px}.event small:last-of-type{display:none}.calendarhint{padding-bottom:5px}.paneltoolbar{padding:8px 12px}}
@media(min-width:1200px){.workspace{align-items:stretch}.calendarpanel,aside{height:100%}.mappanel{width:100%}}

/* The route details expand in document flow; only the page scrolls their contents. */
.toolmenu{margin-top:12px;border:1px solid var(--line);border-radius:10px;background:#fff}.toolmenu summary{padding:11px 16px;font-size:12px;color:#496958;cursor:pointer}.toolmenu .topactions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;padding:4px 16px 14px}.routepanel,.routepanel #routes{max-height:none;overflow:visible}.calendar{overscroll-behavior:contain}
@media(min-width:1200px){
 body.plannerpage{height:auto;min-height:100dvh;overflow:auto;display:block;--workspace-height:calc(100dvh - 156px)}
 body.plannerpage main{display:block;min-height:100dvh;height:auto;padding:12px 20px 16px}
 .workspace{height:auto;min-height:var(--workspace-height);align-items:start}
 .calendarpanel{height:var(--workspace-height)}
 aside{height:auto;min-height:0;align-self:start;display:flex;flex-direction:column}
 .mappanel{height:calc(var(--workspace-height) - 54px);flex:none;min-height:300px}
 .routepanel{flex:none;height:auto;max-height:none;overflow:visible}
 .routepanel #routes{max-height:none;overflow:visible}
 .toolmenu{margin-top:12px}
}

/* Floating bottom tab: rounded trapezoid above, concave feet below. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.toolmenu{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:112px;height:28px;margin:0!important;padding:0;border:0;border-radius:0;background:transparent;z-index:30}
.toolmenu summary{position:relative;isolation:isolate;display:flex;align-items:center;justify-content:center;list-style:none;width:100%;height:28px;padding:0;color:#fff;cursor:pointer;outline-offset:3px;-webkit-tap-highlight-color:transparent}
.toolmenu summary::-webkit-details-marker{display:none}
.toolmenu summary::before{content:'';position:absolute;z-index:-1;inset:0;background:#2e6657;mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20112%2028%22%3E%3Cpath%20d%3D%22M0%2028%20A14%2014%200%200%200%209.899494936611665%2023.899494936611667%20L29.698484809835%204.100505063388334%20A14%2014%200%200%201%2039.59797974644667%200%20H72.40202025355333%20A14%2014%200%200%201%2082.30151519016499%204.100505063388334%20L102.10050506338834%2023.899494936611667%20A14%2014%200%200%200%20112%2028%20Z%22%2F%3E%3C%2Fsvg%3E") center/100% 100% no-repeat;-webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20112%2028%22%3E%3Cpath%20d%3D%22M0%2028%20A14%2014%200%200%200%209.899494936611665%2023.899494936611667%20L29.698484809835%204.100505063388334%20A14%2014%200%200%201%2039.59797974644667%200%20H72.40202025355333%20A14%2014%200%200%201%2082.30151519016499%204.100505063388334%20L102.10050506338834%2023.899494936611667%20A14%2014%200%200%200%20112%2028%20Z%22%2F%3E%3C%2Fsvg%3E") center/100% 100% no-repeat}
.toolmenu summary::after{content:none}
.toolicon{width:15px;height:12px;background:linear-gradient(#fff,#fff) top/100% 2px no-repeat,linear-gradient(#fff,#fff) center/100% 2px no-repeat,linear-gradient(#fff,#fff) bottom/100% 2px no-repeat;transition:transform .16s}
.toolmenu[open] .toolicon{transform:rotate(180deg)}
.toolmenu summary:hover::before{background:#265849}.toolmenu summary:focus-visible{outline:2px solid #d39a43;border-radius:8px}
.toolmenu .topactions{position:absolute;bottom:42px;left:50%;transform:translateX(-50%);width:min(540px,calc(100vw - 28px));display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:16px;border:1px solid #dce6df;border-radius:14px;background:#fff;box-shadow:0 -8px 32px #173b3226}
.toolmenu:not([open]) .topactions{display:none}.toolmenu .topactions #saved{grid-column:1/-1;font-size:11px;color:#718178;text-align:center}.toolmenu .topactions button{width:100%;padding:11px;font-size:12px}
@media(prefers-reduced-motion:reduce){.toolicon{transition:none}}

/* One SVG contour joins all four radius-14 arcs tangentially to the 45-degree sides. */
.farecalculator{margin-top:10px;padding:8px 10px;border:1px solid #e1e8df;border-radius:8px;background:#f8faf6}.farecalculator summary{cursor:pointer;font-size:11px;color:#48705b}.farecalculator label{font-size:11px}.farecalculator p{line-height:1.7}.farecalculator button{font-size:11px}.farecalculator .check input{min-height:0}

/* Currency cards stack beside a single aligned breakdown panel. */
.budgetoverview{display:grid;grid-template-columns:minmax(280px,0.8fr) minmax(0,1.3fr);grid-template-rows:auto auto auto;gap:16px 20px;margin:24px 0;align-items:stretch}.budgetoverview .budgetcards{display:contents}.budgetoverview .budgetcards article{grid-column:1;margin:0;padding:22px 24px;min-width:0}.budgetoverview .budgetcards strong{margin:14px 0;font-size:30px}.budgetreconcile,.budgetbreakdown{border:1px solid #e0e8df;border-radius:12px;padding:24px;min-width:0}.budgetreconcile{grid-column:1;grid-row:3;background:#edf4ef;padding:12px 24px}.budgetreconcile>span{font-size:12px;color:#52685d}.budgetreconcile>strong{display:block;font-size:28px;color:#2e6657;margin:8px 0}.budgetreconcile p{margin:6px 0;font-size:11px}.budgetbreakdown{grid-column:2;grid-row:1/4;display:flex;flex-direction:column;justify-content:center}.budgetreconcile p,.budgetbreakdown p,.budgetbreakdown>small{color:#728277;line-height:1.7}.budgetbreakdown p,.budgetbreakdown>small{font-size:13px}.budgetbreakdown>small{display:block;margin:0}.budgetbreakdown h3{margin:8px 0;font-size:20px}.chartcontent{display:flex;align-items:center;gap:28px;margin:24px 0}.budgetpie{width:170px;height:170px;flex:none;border-radius:50%;box-shadow:0 0 0 5px #f7faf6}.chartlegend{padding:0;margin:0;list-style:none;flex:1;min-width:0}.chartlegend li{display:grid;grid-template-columns:10px minmax(0,1fr) auto 42px;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid #edf0eb;font-size:13px}.chartlegend i{width:10px;height:10px;border-radius:50%}.chartlegend strong{white-space:nowrap}.chartlegend small{color:#728277;text-align:right}@media(max-width:1100px){.chartcontent{gap:20px}.budgetpie{width:140px;height:140px}.chartlegend li{gap:8px}}@media(max-width:850px){.budgetoverview{grid-template-columns:1fr;grid-template-rows:auto;gap:16px}.budgetoverview .budgetcards article{padding:20px 24px}.budgetbreakdown{grid-column:1;grid-row:4}.chartcontent{flex-wrap:wrap}.chartlegend{min-width:220px}}

/* Readable planner: 60% calendar / 40% map on side-by-side layouts. */
@media(min-width:851px){.workspace{grid-template-columns:minmax(0,3fr) minmax(0,2fr)}.calendarpanel,aside{min-width:0}}
.calgrid{min-width:920px;grid-template-columns:48px repeat(8,minmax(108px,1fr))}.calendarpanel .event{padding:3px 5px}.calendarpanel .event strong{font-size:12px;font-weight:600;line-height:1.3;margin-top:2px}.calendarpanel .event small{font-size:11px;line-height:1.25;opacity:1}.calendarpanel .transportevent{font-size:11px;line-height:1.3;padding:2px 5px}.calendarpanel .transportevent strong{font-size:12px;font-weight:600}.calendarpanel .dayhead{font-size:13px}.calendarpanel .dayhead b{font-size:17px}.calendarpanel .times{font-size:11px;color:#65786c}.calendarpanel .calendarhint,.calendarpanel .calendarfooter{font-size:11px}

/* Sidebar overview on the left; full-height calendar on the right. */
@media(min-width:1200px){
 body.plannerpage main{display:grid;grid-template-columns:minmax(340px,1fr) minmax(0,2fr);grid-template-rows:auto auto minmax(0,1fr);column-gap:20px;row-gap:10px;height:100dvh;min-height:100dvh;padding:16px 20px 32px;max-width:none}
 body.plannerpage .intro{grid-column:1;grid-row:1;display:flex;flex-direction:column;align-items:stretch;gap:12px;min-height:0;margin:0;padding:8px 6px 0}
 body.plannerpage h1{font-size:27px;line-height:1.35;margin:10px 0 6px;letter-spacing:.3px}
 body.plannerpage h1 span{display:inline-block;margin:6px 0 0 12px;font-size:11px;letter-spacing:.5px}
 body.plannerpage .tripstats{gap:0;justify-content:space-between;margin:0;padding-top:2px}
 body.plannerpage .tripstats>div{min-width:0;padding-left:16px;flex:1}.plannerpage .tripstats>div:first-child{padding-left:0;border-left:0}
 body.plannerpage .tripstats strong{font-size:22px;white-space:nowrap}body.plannerpage .tripstats span{font-size:10px;line-height:1.5;margin-top:5px}
 body.plannerpage .pagetabs{grid-column:1;grid-row:2;display:flex;align-items:center;gap:6px;margin:0;padding:0 6px}
 body.plannerpage .workspace{display:contents}
 body.plannerpage .calendarpanel{grid-column:2;grid-row:1/4;height:100%;min-width:0;min-height:0;align-self:stretch}
 body.plannerpage aside{grid-column:1;grid-row:3;height:100%;min-height:0;gap:10px;align-self:stretch}
 body.plannerpage .mappanel{height:calc(100% - 46px);min-height:0;flex:none}
 body.plannerpage #routecontrols{grid-template-columns:minmax(0,1fr) 115px;gap:8px;padding:0 12px}
 body.plannerpage .mapheading{padding:12px;gap:8px;flex-wrap:wrap}body.plannerpage .mapheading h2{font-size:15px}body.plannerpage .mapheading button{font-size:10px;padding:6px 8px}
 body.plannerpage #maprouteinfo{padding:0 12px;font-size:10px}body.plannerpage .mapfoot{padding:8px 10px;flex-wrap:wrap;font-size:9px}
 body.plannerpage .routepanel{flex:none;min-height:36px}body.plannerpage .calendar{flex:1;min-height:0}
 body.plannerpage #cloudsave{margin-top:4px}body.plannerpage #cloudstatus{margin-bottom:0}
}
.toolmenu{position:fixed!important;bottom:0!important;left:50%!important;transform:translateX(-50%)!important;margin:0!important}

@media(min-width:1200px){body.plannerpage .calgrid{min-width:720px;grid-template-columns:42px repeat(8,minmax(80px,1fr))}}

/* Local-only ?cards=1 visual prototype. */
.cardpreview .calendarpanel .previewcard{border-left:0;border-radius:10px;padding:5px 6px 5px 9px;box-shadow:0 1px 3px #243c3c12;z-index:2}.cardpreview .previewcard::before{content:'';position:absolute;left:3px;top:3px;width:3px;height:var(--actual-height);max-height:calc(100% - 6px);border-radius:3px;background:currentColor;opacity:.65}.cardpreview .calendarpanel .previewcard strong{font-size:12px;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin:3px 0}.cardpreview .calendarpanel .previewcard small{font-size:10px;line-height:1.25;display:block}.cardpreview .actualtime{position:absolute;width:3px;border-radius:3px;background:#246c9b;pointer-events:none;z-index:4}.cardpreview .timeconnector{position:absolute;border-left:1px dashed #246c9b;pointer-events:none;z-index:3}.cardpreview .calendarpanel .previewtransport{border-left-width:2px;border-radius:6px;padding:3px 5px;justify-content:center}.cardpreview .previewtransport span{font-size:10px;white-space:normal;line-height:1.15}.cardpreview .calendarhint{color:#246c9b}.cardpreview .event:hover,.cardpreview .event:focus-visible{z-index:8;box-shadow:0 0 0 2px #2e6657}

/* Fit short blocks to their actual visible height without changing duration. */
.calendarpanel .event.rowcompact{padding:2px 4px}.calendarpanel .event.rowcompact strong{font-size:10px;line-height:1.15;margin-top:1px}.calendarpanel .event.rowcompact small{font-size:9px;line-height:1.1}.calendarpanel .event.rowcompact small:last-of-type{display:none}
.calendarpanel .event.rowtiny{padding:1px 3px}.calendarpanel .event.rowtiny small{font-size:8px;line-height:1.05}.calendarpanel .event.rowtiny strong{font-size:9px;line-height:1.1;margin-top:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendarpanel .event.rowtiny small:last-of-type{display:none}
.calendarpanel .event.rowmicro{padding:0 3px;min-height:10px;display:flex;align-items:center}.calendarpanel .event.rowmicro small{display:none}.calendarpanel .event.rowmicro strong{font-size:8px;line-height:10px;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendarpanel .event.rowmicro .resize,.calendarpanel .event.rowtiny .resize{height:3px}.calendarpanel .event.rowmicro .resize::after,.calendarpanel .event.rowtiny .resize::after{display:none}
.calendarpanel .transportevent.rowcompact{font-size:9px;line-height:1.15;padding:1px 3px}.calendarpanel .transportevent.rowcompact strong{font-size:10px;line-height:1.15}.calendarpanel .transportevent.rowtiny,.calendarpanel .transportevent.rowmicro{padding:0 2px;justify-content:center;gap:0}.calendarpanel .transportevent.rowtiny span{font-size:9px;line-height:1.1;white-space:nowrap}.calendarpanel .transportevent.rowmicro span{font-size:8px;line-height:9px;white-space:nowrap}.calendarpanel .transportevent.rowtiny strong,.calendarpanel .transportevent.rowmicro strong{display:none}

/* One calendar category for ground transport and flights. */
:root{--travel-bg:#f1e9ed;--travel-border:#bd90a8;--travel-ink:#9d6f86}
.calendarpanel .transportevent,.calendarpanel .event.flight{background:var(--travel-bg);border-color:var(--travel-border);color:var(--travel-ink)}
.calendarpanel .transportevent:hover,.calendarpanel .transportevent:focus-visible{background:#e9dce3;outline-color:var(--travel-border)}
.dot.transport,.dot.flight{background:var(--travel-border)}

/* Local-only prototype B: readable single-day cards with a time rail. */
.timelinepreview .calendar{scroll-behavior:smooth}.timeline-dates{position:sticky;top:0;z-index:10;display:grid;grid-template-columns:repeat(8,1fr);background:white;padding:0 16px;border-bottom:1px solid var(--line)}.timeline-dates .dayhead{position:relative;height:68px;border:0;border-radius:8px;background:transparent}.timeline-dates .dayhead.active{background:#edf4ef}.timeline-intro{display:flex;flex-direction:column;gap:6px;padding:20px 24px 14px}.timeline-intro strong{font-size:17px}.timeline-intro span{font-size:12px;color:#7e8c84;line-height:1.6}.timeline-list{padding:4px 32px 32px 24px;max-width:900px;margin:auto}.timeline-group{display:grid;grid-template-columns:62px 22px minmax(0,1fr);gap:12px;margin:10px 0;position:relative}.timeline-clock{display:flex;flex-direction:column;justify-content:space-between;padding:5px 0;color:#83928d}.timeline-clock b{font-size:18px;font-weight:550}.timeline-clock small{font-size:12px}.timeline-rail{position:relative;min-height:65px;border-left:2px solid #e0e7e2}.timeline-rail i{position:absolute;width:10px;border-radius:4px;background:#80a082}.timeline-rail .rail-travel,.timeline-rail .rail-flight{background:#bd90a8}.timeline-rail .rail-food{background:#d9b365}.timeline-rail .rail-hotel{background:#879bc2}.timeline-stack{min-width:0;display:flex;flex-direction:column;gap:8px}.timeline-stack.has-overlap{padding:12px;background:#f0f1f4;border-radius:12px}.overlap-label{font-size:12px;color:#8b7482;margin-bottom:2px}.calendarpanel .timeline-card{position:relative!important;display:flex!important;flex-direction:column;align-items:flex-start;justify-content:center;gap:5px;left:auto;right:auto;top:auto;width:100%;height:auto;min-height:74px;border-radius:9px;padding:12px 16px!important;cursor:pointer;touch-action:auto;user-select:text;white-space:normal;overflow:visible}.calendarpanel .timeline-card strong{font-size:15px!important;line-height:1.5;margin:0;display:block}.calendarpanel .timeline-card small,.calendarpanel .timeline-card>span{font-size:12px!important;line-height:1.6;display:block;white-space:normal}.calendarpanel .timeline-card .timeline-note{font-size:11px!important;opacity:.8}.timeline-gap{margin:12px 0 12px 98px;color:#91a097;font-size:12px;display:flex;gap:14px;padding:8px 0;border-top:1px dashed #dde5df}.timelinepreview .calendarfooter{justify-content:center}.timelinepreview .calendarhint{color:#627b70}@media(max-width:700px){.timeline-list{padding:4px 12px 24px}.timeline-group{grid-template-columns:46px 12px minmax(0,1fr);gap:6px}.timeline-clock b{font-size:14px}.timeline-gap{margin-left:70px}.calendarpanel .timeline-card{padding:10px!important}.timeline-dates{padding:0 4px}}

.calendar-viewtoggle{display:flex;border:1px solid #dce5df;border-radius:7px;padding:2px;gap:2px}.calendar-viewtoggle button{font-size:11px;border:0;padding:6px 9px;background:transparent}.calendar-viewtoggle button.active{background:#2e6657;color:#fff}.timeline-conflict{background:#fff3e5;color:#985e2c;padding:6px 8px;border-radius:5px}.toolbarbuttons{align-items:center;flex-wrap:wrap}

.route-mode-icon{display:inline-block;width:20px;height:20px;vertical-align:-3px;flex-shrink:0}.timeline-card strong>.route-mode-icon{margin-right:8px}.calendarpanel .timeline-card .route-segments{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:3px;font-size:14px!important;color:#775567}.route-segment{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;border-radius:6px;background:#ffffff8c;white-space:nowrap}.route-segment b{font-size:15px;font-variant-numeric:tabular-nums}.route-segment-arrow{opacity:.7;font-size:16px}.route-segment-unit{font-size:11px;opacity:.8}.highspeed-label{font-size:10px;font-weight:600}.route-endpoints{color:#775567;line-height:1.6!important}

/* Local-only weekly route summary trial: ?weekroutes=1&timeline=0 */
.calendarpanel .week-route-card{padding:3px 4px;gap:2px;justify-content:flex-start}.calendarpanel .week-route-card>strong{font-size:11px;line-height:1.2;margin:0}.calendarpanel .week-route-card>small{font-size:8px;line-height:1.15}.week-route-card .week-route-endpoints{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;font-size:9px;line-height:1.25}.calendarpanel .week-route-card .route-segments{display:flex;gap:3px;flex-wrap:wrap;align-items:center;white-space:normal;margin-top:2px}.week-route-card .route-segment{padding:1px 2px;gap:3px;background:transparent}.week-route-card .route-mode-icon{width:12px;height:12px}.week-route-card .route-segment b{font-size:10px}.week-route-card .route-segment-arrow{font-size:10px}.week-route-card .route-segment-unit,.week-route-card .highspeed-label{display:none}.calendarpanel .week-route-card.routesmall,.calendarpanel .week-route-card.routeminimal{justify-content:center;padding:0 3px}.week-route-card .week-route-total{display:flex;align-items:center;gap:4px;font-size:10px;line-height:1;white-space:nowrap}.week-route-card .week-route-total b{font-size:10px;font-weight:600}.week-route-card.routeminimal .route-mode-icon{width:9px;height:9px}.week-route-card.routeminimal .week-route-total b{font-size:8px}

#cloudstatus{font-size:11px;color:#587563;margin:5px 0 0;line-height:1.4}#cloudloading{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;background:#f5f8f4;color:#2e6657;font-size:16px}#cloudconflict button{margin:8px 6px 0 0}
#cloudsave{margin:8px 0 2px}#cloudstatus{font-size:12px}