@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Libre+Caslon+Display&display=swap";:root{font-family:DM Sans,sans-serif;color:#f6f3e8;background:#233628;font-synthesis:none;--paper:#f5f2e8;--ink:#293c2f;--muted:#697363;--line:#dcded0;--accent:#d5e3a6}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:wait;opacity:.6}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #aabc73;outline-offset:4px}button{color:inherit}#canvas{width:100%;height:100dvh;display:block;touch-action:none;user-select:none;outline:none}.topbar{position:fixed;inset:30px 36px auto;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.topbar>*{pointer-events:auto}#title{display:flex;align-items:center;gap:10px;text-align:left;border:0;background:none;font-size:27px;font-weight:700;letter-spacing:-1.2px;text-shadow:0 2px 15px #14281d66}.brand-light{font-weight:400}.brand-mark{font-size:56px;line-height:1;color:var(--accent)}#title small{display:block;font-size:8px;letter-spacing:2.8px;margin-top:5px;font-weight:500}.weather-pill{border:1px solid #ffffff30;border-radius:28px;padding:12px 18px;background:#1a2d25bb;backdrop-filter:blur(16px);font-size:12px;display:flex;align-items:center;gap:12px}.weather-pill small{color:#d4dbc8}.weather-pill .dot{width:6px;height:6px;background:#d5e3a6;border-radius:50%}.welcome{position:fixed;top:21%;left:0;right:0;text-align:center;pointer-events:none;text-shadow:0 2px 24px #14281d99;transition:opacity 2s}.welcome.faded{opacity:0}.eyebrow{font-size:9px;font-weight:600;letter-spacing:2px}.welcome h1{font:400 clamp(35px,5vw,65px)/1.1 "Libre Caslon Display",Georgia,serif;letter-spacing:-1.5px;margin:14px 0}.welcome p{font-size:13px;color:#e0e7d6}.bottom-ui{position:fixed;bottom:max(48px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);text-align:center;z-index:5}#tool-hint{font-size:11px;letter-spacing:.3px;text-shadow:0 1px 8px #000;margin:0 0 14px}#tools{display:flex;align-items:center;gap:5px;padding:8px;background:#f5f2e8f0;border:1px solid #ffffff80;border-radius:20px;box-shadow:0 10px 40px #10231533;backdrop-filter:blur(20px)}#tools button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:66px;height:66px;border:0;border-radius:13px;background:transparent;color:#61715c;font-size:10px;transition:background .2s,color .2s}#tools button:hover{background:#e3e8d7;color:#293c2f}#tools button.active{background:#304b37;color:#f5f2e8}svg{width:23px;height:23px;display:block}kbd{font:9px DM Sans,sans-serif;opacity:.55}#tools kbd{position:absolute;right:7px;top:5px}.dock-divider{height:34px;width:1px;background:#cdd3c2;margin:0 3px}.quiet-footer{position:fixed;bottom:17px;left:36px;right:36px;display:flex;justify-content:space-between;align-items:center;font-size:8px;letter-spacing:1.7px;color:#e1e7d3b0}.quiet-footer button,#restore-ui{background:#23362899;border:1px solid #ffffff25;border-radius:20px;padding:7px 12px;font-size:10px;letter-spacing:0}#restore-ui{position:fixed;bottom:20px;right:20px;z-index:10}.quiet .topbar,.quiet .bottom-ui,.quiet .quiet-footer,.quiet .welcome{display:none}#heights{display:none;justify-content:center;gap:7px;margin-bottom:14px}#heights.show{display:flex}#heights button{background:#243b2deb;border:1px solid #ffffff40;border-radius:20px;padding:9px 13px;font-size:11px}#heights button:after{content:" mm";opacity:.65}#heights button.active{background:var(--accent);color:var(--ink)}#card{position:fixed;right:28px;top:104px;bottom:160px;width:370px;max-height:700px;z-index:8;background:var(--paper);color:var(--ink);border:1px solid #ffffff80;border-radius:21px;box-shadow:0 18px 70px #10231540;overflow:hidden;display:flex;flex-direction:column}#card[hidden]{display:none}.panel-header{padding:23px 24px 0}.panel-heading{display:flex;align-items:center;justify-content:space-between}.panel-heading h2{font:32px Libre Caslon Display,Georgia,serif;margin:6px 0 15px}.close-panel{width:34px;height:34px;border:1px solid var(--line);background:transparent;border-radius:50%;font-size:22px}.tabs{display:flex;border-bottom:1px solid var(--line);gap:23px}.tabs button{padding:12px 0;background:none;border:0;border-bottom:2px solid transparent;font-size:12px;color:var(--muted)}.tabs button[aria-current=true]{border-bottom-color:var(--ink);color:var(--ink)}.panel-body{padding:22px 24px;overflow-y:auto;overscroll-behavior:contain;font-size:12px;line-height:1.7}.panel-body h3{font:26px Libre Caslon Display,Georgia,serif;margin:0 0 9px}.panel-body p{margin:0 0 16px;color:#626e5d}.note{background:#e6ebd9;border-radius:12px;padding:17px;margin-bottom:22px}.note p{margin:7px 0 0;color:var(--ink)}.reading{display:flex;justify-content:space-between;gap:15px;padding:9px 0;border-bottom:1px solid var(--line)}.reading span:first-child{color:var(--muted)}.reading strong{font-weight:500;font-variant-numeric:tabular-nums}details{border-bottom:1px solid var(--line);padding:14px 0}summary{font-weight:500;cursor:pointer}details p{margin:10px 0 0!important}a{color:#476536;text-underline-offset:3px}.panel-body .primary{border:0;background:#304b37;color:var(--paper);padding:12px 18px;border-radius:9px;width:100%;font-size:12px}.fine{font-size:10px!important;color:var(--muted);margin-top:12px!important}.weather-large{font:58px Libre Caslon Display,Georgia,serif;margin:5px 0}.weather-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.weather-grid div{background:#e9ecdf;border-radius:10px;padding:12px}.weather-grid small{display:block;color:var(--muted)}.status{margin-top:12px!important}#nogpu{display:none;position:fixed;inset:0;align-items:center;justify-content:center;padding:30px;background:radial-gradient(ellipse at 50% 100%,#536746,#233628 75%);text-align:center}#nogpu.show{display:flex}#nogpu>div{max-width:450px}#nogpu h1{font:48px Libre Caslon Display,Georgia,serif}#nogpu p{font-size:14px;line-height:1.7;color:#dbe2d0}body.unavailable .bottom-ui,body.unavailable .welcome,body.unavailable .weather-pill{display:none}body.unavailable .topbar{z-index:2}.lil-gui{--width:290px}@media(max-width:700px){.topbar{inset:18px 18px auto}#title{font-size:22px}#title small{font-size:7px;letter-spacing:1.8px}.brand-mark{font-size:42px}.weather-pill{padding:10px 12px;font-size:11px;gap:7px}.weather-pill small{display:none}.welcome{top:24%;padding:0 24px}.bottom-ui{bottom:max(47px,calc(env(safe-area-inset-bottom) + 25px));width:max-content;max-width:calc(100% - 20px)}#tools{gap:1px;padding:6px;border-radius:16px}#tools button{width:clamp(37px,11.4vw,60px);height:59px;font-size:9px;gap:6px}#tools kbd{display:none}.dock-divider{margin:0 2px}#tool-hint{font-size:10px}.quiet-footer{left:18px;right:18px;bottom:12px}.quiet-footer>span{font-size:7px;letter-spacing:1px}#card{inset:85px 12px 155px;width:auto;max-height:none}.panel-header{padding:18px 20px 0}.panel-body{padding:18px 20px}.panel-heading h2{font-size:29px}}@media(max-height:600px){#card{top:16px;bottom:130px}.welcome{top:18%}.welcome h1{font-size:36px}.topbar{top:14px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}.welcome.faded{opacity:0}}.sound-panel{position:fixed;left:36px;bottom:46px;z-index:9;font-size:11px;letter-spacing:0;color:var(--paper)}.sound-panel>summary{list-style:none;width:max-content;background:#233628dd;border:1px solid #ffffff35;border-radius:20px;padding:9px 13px;backdrop-filter:blur(12px)}.sound-panel>summary::-webkit-details-marker{display:none}.sound-panel>summary span{color:var(--accent);margin-left:5px}.sound-controls{position:absolute;left:0;bottom:45px;width:285px;max-height:calc(100dvh - 155px);overflow:auto;background:var(--paper);color:var(--ink);padding:20px;border-radius:17px;box-shadow:0 12px 40px #10231540}.sound-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.sound-controls button{font-size:11px;border:1px solid var(--line);border-radius:7px;background:#e6ebd9;color:var(--ink);padding:8px 10px}.sound-controls p{font-size:10px;line-height:1.6;color:var(--muted);overflow-wrap:anywhere}.sound-controls label{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:12px;margin:15px 0}.sound-controls input[type=range]{accent-color:#42603b;width:135px;min-height:24px}.sound-controls .music-picker{display:block;border-top:1px solid var(--line);padding-top:15px}.music-picker input{display:block;font:10px DM Sans,sans-serif;margin-top:9px;max-width:100%}.music-actions{display:flex;gap:8px}.quiet .sound-panel{display:none}@media(max-width:900px){.sound-panel{left:18px;bottom:144px}.sound-controls{width:270px;max-height:calc(100dvh - 235px)}}@media(max-height:600px){.sound-panel{bottom:140px;left:12px}.sound-controls{max-height:calc(100dvh - 205px)}}.sound-panel{padding:0;border:0}@media(max-width:900px){.sound-panel{bottom:12px}.quiet-footer>span{visibility:hidden}.sound-controls{max-height:calc(100dvh - 150px)}}.music-panel{left:148px}.music-panel .sound-controls{left:-112px}@media(max-width:900px){.music-panel{left:130px}}@media(max-height:600px)and (min-width:901px){.music-panel{left:124px}}.camera-controls{position:fixed;right:18px;top:82px;z-index:7;display:none;text-align:right;color:var(--paper);font-size:11px}.camera-controls button{min-height:44px;border:1px solid #ffffff40;border-radius:22px;background:#233628ed;padding:9px 14px;font:inherit}.camera-controls button[aria-pressed=true]{background:var(--accent);color:var(--ink)}#camera-options{margin-top:8px;padding:12px;background:#233628ee;border:1px solid #ffffff30;border-radius:15px;backdrop-filter:blur(12px)}#camera-options p{margin:0 0 10px;font-size:10px}#camera-options>div{display:flex;gap:7px;justify-content:flex-end}#camera-in,#camera-out{font-size:20px;min-width:44px}.moving-camera #canvas{cursor:grab}.moving-camera #canvas:active{cursor:grabbing}.moving-camera #tool-hint{visibility:hidden}.quiet .camera-controls,.unavailable .camera-controls{display:none}@media(any-pointer:coarse),(max-width:700px){.camera-controls{display:block}.quiet .camera-controls,.unavailable .camera-controls{display:none}}@media(max-height:500px){.camera-controls{top:68px}}
