:root{font-family:'DM Sans',sans-serif;color:#233e36;background:#edf2e7;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;border:1px solid #d7dfd3;background:#fff;color:#274238;border-radius:9px;padding:9px 12px;font-weight:600}button:hover{background:#edf3e8;border-color:#90a795}button.active{background:#264b3f;color:white;border-color:#264b3f}button:disabled{opacity:.45;cursor:default}header{height:86px;background:#fbfcf7;display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid #d9e0d2;gap:20px}.brand{display:flex;align-items:center;gap:12px;font-family:'Space Grotesk',sans-serif;font-weight:700;letter-spacing:1px;font-size:18px}.brand small{display:block;font-family:'DM Sans',sans-serif;font-size:10px;letter-spacing:2px;margin-top:5px;color:#7d8e78}.brandmark{display:grid;place-items:center;background:#284d3e;color:#e9efbd;border-radius:12px;width:44px;height:44px;font-size:20px;letter-spacing:-3px;padding-right:3px}.stats{display:flex;gap:44px}.stats small{display:block;font-size:10px;font-weight:700;letter-spacing:1.5px;color:#7c8c79;margin-bottom:5px}.stats b{font-family:'Space Grotesk',sans-serif;font-size:23px}main{display:flex;height:calc(100dvh - 86px);min-height:540px}aside{width:310px;flex-shrink:0;background:#fbfcf7;padding:25px 20px 12px;display:flex;flex-direction:column;border-right:1px solid #d9e0d2;z-index:2}.parkname{font-size:10px;font-weight:700;letter-spacing:1.2px;display:flex;justify-content:space-between}.parkname span{color:#638253}h1{font-family:'Space Grotesk',sans-serif;font-size:29px;line-height:1.15;letter-spacing:-1px;margin:20px 0 24px}.tabs{display:flex;gap:4px;padding:4px;background:#eef1e8;border-radius:10px;margin-bottom:20px}.tabs button{flex:1;border:0;background:transparent;padding:8px}.tabs button.active{background:#fff;color:#294939;box-shadow:0 2px 5px #213d3010}#panel{overflow:auto;flex:1;padding-right:2px}.sectiontitle{font-size:11px;letter-spacing:1.6px;font-weight:700;color:#84907c;margin:3px 0 12px}.card{width:100%;display:flex;align-items:center;gap:12px;text-align:left;padding:12px;margin-bottom:8px;border:1px solid #e0e5d9;border-radius:11px;background:#fff}.card.selected{border:2px solid #51745b;padding:11px;background:#f0f5e8}.icon{font-size:27px;display:grid;place-items:center;background:#f0f2e8;width:48px;height:48px;border-radius:10px;flex-shrink:0}.card strong{display:block;font-size:14px}.card small{display:block;font-weight:400;color:#859080;font-size:12px;margin-top:5px}.price{margin-left:auto;font-size:12px;color:#416545}.tip{font-size:12px;line-height:1.6;color:#7d8c78;margin:15px 2px}.asidefoot{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#85927d;border-top:1px solid #e0e5d8;padding-top:10px;margin-top:10px}.asidefoot button{font-size:12px;padding:5px 12px}.world{flex:1;position:relative;overflow:hidden;background:#b7d88c}canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}.worldtop{position:absolute;top:22px;left:24px;right:24px;display:flex;justify-content:space-between;pointer-events:none}.location{background:#fffffff0;border:1px solid #fff9;border-radius:10px;padding:12px 17px;font-weight:700;font-size:14px;box-shadow:0 5px 20px #47674510}.location small{display:block;font-size:11px;color:#859279;margin-top:5px;margin-left:23px;font-weight:400}.time{display:flex;gap:3px;pointer-events:auto;background:#ffffffed;padding:5px;border-radius:10px;align-self:start}.time button{border:0;background:transparent;padding:7px 10px;font-size:13px}.time button.active{background:#294d3e}.worldbottom{position:absolute;bottom:40px;left:24px;right:24px;display:flex;align-items:center;justify-content:space-between;pointer-events:none;gap:10px}#toolHint{font-size:12px;background:#fafff0ee;border-radius:8px;padding:11px 14px;box-shadow:0 4px 16px #36502912}.zoom{display:flex;gap:4px;pointer-events:auto}.zoom button{font-size:20px;width:39px;padding:6px}.legend{position:absolute;bottom:13px;left:27px;color:#486342;font-size:10px;letter-spacing:.3px}.legend i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#5a7a42}.legend span{color:#f5fff0}#toast{position:absolute;bottom:95px;left:50%;transform:translateX(-50%);background:#254a3eed;color:white;padding:13px 20px;border-radius:10px;max-width:90%;font-size:13px;pointer-events:none;transition:opacity .4s;box-shadow:0 5px 20px #233d3420}#trackbar{position:absolute;top:105px;left:24px;right:24px;background:#fffef4f5;padding:14px;border-radius:12px;box-shadow:0 5px 20px #27412d20;font-size:13px}#trackbar button{margin:5px 3px 0 0;font-size:12px}#trackbar strong{display:block;margin-bottom:6px}.managebox{background:white;border:1px solid #e1e6db;border-radius:12px;padding:14px;margin-bottom:12px}.managebox h3{margin:0 0 10px;font-size:15px}.row{display:flex;align-items:center;justify-content:space-between;margin:11px 0;font-size:13px;gap:8px}.row button{padding:4px 9px}.row input{width:70px;padding:7px;border:1px solid #ced8c7;border-radius:6px}.wide{width:100%;margin-top:8px}.goal{padding:14px 0;border-bottom:1px solid #e1e7d8;font-size:14px}.goal small{display:block;color:#819078;margin:7px 0}.progress{height:6px;border-radius:4px;background:#e1e7d8;overflow:hidden}.progress i{display:block;height:100%;background:#769954}dialog{border:0;border-radius:18px;padding:30px;max-width:460px;width:90%;color:#294535;box-shadow:0 25px 90px #162d3e55}dialog::backdrop{background:#183b365c;backdrop-filter:blur(3px)}dialog h2{font-family:'Space Grotesk',sans-serif;font-size:27px;margin-top:0}dialog p,dialog li{font-size:14px;line-height:1.7}dialog li{margin:8px 0}.close{float:right;border:0;font-size:23px;padding:0 4px}.positive{color:#628c42}.danger{color:#a35440}.badge{display:inline-block;background:#e9efde;color:#5b783d;border-radius:5px;font-size:11px;padding:5px 8px}@media(max-width:900px){header{padding:0 15px}.stats{gap:20px}.brand{font-size:14px}.stats b{font-size:19px}#help span{display:none}aside{width:270px;padding:20px 14px}.worldtop{left:15px;right:15px}.location{display:none}}@media(max-width:600px){header{height:70px;gap:8px}.brand{font-size:11px;letter-spacing:0}.brandmark{width:30px;height:35px;font-size:16px}.brand small{display:none}.stats{gap:12px}.stats b{font-size:15px}.stats small{font-size:8px;letter-spacing:.4px}.stats>div:last-child{display:none}main{height:calc(100dvh - 70px);min-height:600px;flex-direction:column-reverse}aside{width:100%;height:255px;padding:10px 12px}.parkname,h1,.asidefoot{display:none}.tabs{margin-bottom:8px}.tabs button{padding:5px}.world{min-height:345px}.worldtop{top:12px;justify-content:flex-end}.worldbottom{bottom:12px;left:10px;right:10px}.legend{display:none}#toolHint{max-width:70%;font-size:10px;padding:8px}#toast{bottom:64px}.card{width:calc(50% - 5px);display:inline-flex;margin-right:5px;padding:8px;gap:6px}.card.selected{padding:7px}.icon{width:30px;height:36px;font-size:22px}.card strong{font-size:12px}.card small{font-size:10px}.price{font-size:10px}.sectiontitle{display:none}#trackbar{top:62px;left:10px;right:10px;padding:10px}.tip{margin:4px;font-size:11px}}
/* Portable edition: all functionality is bundled, with system font fallbacks. */
select{font:inherit;color:#284838;border:1px solid #cad6c1;background:#fffdf5;border-radius:8px;padding:8px;max-width:100%}
#buildFilter,#rideAuto{width:100%;margin-bottom:12px;font-size:13px}
.filterlabel{display:block;font-size:12px;font-weight:600;margin:0 0 7px;color:#6a7f65}
.check{display:flex;gap:8px;align-items:center;font-size:14px;line-height:1.5}
.check input{width:17px;height:17px;accent-color:#35654e}
#refurbishAt{max-width:140px;font-size:12px}
.track-controls{display:flex;flex-wrap:wrap;align-items:center;gap:3px;margin:5px 0}
#trackbar small{display:block;font-size:12px;line-height:1.5;color:#61765b}
#trackbar p{font-size:12px;margin-bottom:2px}
#trackbar{max-height:45%;overflow:auto;right:18px;left:18px}
#fullscreen{margin-left:auto}
header .stats{margin-left:auto}
@media(max-width:900px){header{gap:10px}.stats{gap:15px}#fullscreen{padding:8px}#help{padding:8px}}
@media(max-width:600px){#fullscreen{display:none}#trackbar{max-height:52%;left:8px;right:8px}#trackbar button{padding:5px 7px;font-size:11px}.track-controls{gap:1px}#buildFilter{font-size:12px;padding:5px;margin-bottom:6px}.filterlabel{display:none}main{min-height:520px}.world{min-height:290px}aside{height:230px;flex-shrink:0}.stats{gap:9px}}

/* Phone gestures stay on the canvas; menus keep native scrolling. */
canvas{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.world,aside,#panel{min-height:0;min-width:0}
#panel{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
@media(pointer:coarse){.zoom button,.time button,.tabs button{min-width:44px;min-height:44px}.row button{min-width:40px;min-height:40px}#trackbar button{min-height:40px}.close{min-width:44px;min-height:44px}.row input,select{font-size:16px}}
@media(max-width:600px){main{min-height:0;height:calc(100dvh - 70px)}.world{min-height:0}aside{height:clamp(150px,32dvh,245px)}.worldbottom{bottom:9px;gap:5px}#toolHint{max-width:calc(100% - 150px);font-size:11px}.zoom{gap:3px}#trackbar{max-height:50%}dialog{max-height:90dvh;overflow:auto}.stats b{font-size:14px}.brand{max-width:98px}.card strong{font-size:14px}}
@media(max-height:600px) and (orientation:landscape){header{height:52px;padding:0 10px}.brand small,.parkname,h1,.asidefoot,.location,.legend{display:none}main{height:calc(100dvh - 52px);min-height:0;flex-direction:row}aside{width:225px;height:100%;padding:8px;flex-shrink:0}.world{min-height:0}.card{width:100%;padding:8px;margin-right:0}.card.selected{padding:7px}.tabs{margin-bottom:8px}.worldtop{top:8px;left:8px;right:8px;justify-content:flex-end}.worldbottom{bottom:8px;left:8px;right:8px}#trackbar{top:66px;max-height:55%}#toolHint{font-size:11px;max-width:calc(100% - 150px)}.stats{gap:14px}.stats b{font-size:16px}.brand{font-size:12px}.brandmark{height:32px;width:32px}#toast{bottom:62px}}
