*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#c3bcac;color:#504c43;font-family:-apple-system,BlinkMacSystemFont,"Hiragino Kaku Gothic ProN",sans-serif}button{font:inherit;color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:2px solid #b7ab85;outline-offset:4px}button:disabled{opacity:.3;cursor:default}[hidden]{display:none!important}#world,#world canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;display:block}#world{cursor:crosshair}.vignette{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 40%,transparent 40%,#3027191c 100%);z-index:1}.symbols{position:absolute;width:0;height:0;overflow:hidden}header{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:calc(20px + env(safe-area-inset-top)) 25px 0;pointer-events:none;z-index:3}header button{pointer-events:auto}.watermark{border:0;background:none;opacity:.38;padding:8px}.watermark svg{width:34px;height:22px;fill:none;stroke:#403c32;stroke-width:1.6;stroke-linecap:round}.top-controls{display:flex;gap:8px}.icon-button{background:#f8f5e44d;border:1px solid #fff8;border-radius:50%;width:39px;height:39px;display:grid;place-items:center;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.icon-button svg,.tool svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}.icon-button:hover{background:#fff9}.tool-dock{position:fixed;bottom:calc(25px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:#f9f7edb8;border:1px solid #fff8;box-shadow:0 6px 30px #332b1714;border-radius:19px;padding:6px;display:flex;gap:3px;align-items:center;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);z-index:4}.tool-dock>span{height:22px;width:1px;background:#68635229;margin:0 5px}.tool{width:47px;height:47px;border:0;border-radius:13px;background:none;display:grid;place-items:center;color:#716b59;transition:background .2s,transform .2s}.tool.active{background:#777259;color:#fffdf2;box-shadow:0 2px 4px #382c201f}.tool:hover:not(.active){background:#efeada}.tool.pulse{animation:toolPulse 2s 3}.gesture-cue{position:fixed;width:52px;height:52px;pointer-events:none;z-index:2;opacity:0;transition:opacity .8s;transform:translate(-50%,-50%)}.gesture-cue.visible{opacity:.55}.gesture-cue svg{width:100%;height:100%;fill:none;stroke:#fffdf0;stroke-width:1.8;stroke-linecap:round;filter:drop-shadow(0 2px 3px #0005);animation:leverHint 2s infinite}.saved-indicator{position:fixed;bottom:110px;left:0;right:0;text-align:center;pointer-events:none;color:#5e6553;font-size:11px;letter-spacing:.1em;opacity:0;transition:opacity .8s;z-index:3}.saved-indicator.show{opacity:.8}#loading{position:fixed;inset:0;background:#d3ccbc;display:grid;place-items:center;z-index:20;transition:opacity 1s}#loading>span{width:24px;height:24px;border:1px solid #fff9;border-top-color:#696655;border-radius:50%;animation:spin 1s linear infinite}#loading.loaded{opacity:0;pointer-events:none}#toast{position:fixed;bottom:110px;left:50%;transform:translateX(-50%);background:#403d32ce;color:#fffdf0;padding:12px 18px;font-size:11px;max-width:85%;border-radius:24px;z-index:30;opacity:0;transition:opacity .25s;pointer-events:none;line-height:1.7;text-align:center}#toast.show{opacity:1}dialog{background:#faf8f0;color:#575447;border:1px solid #fff9;border-radius:18px;max-height:82dvh;width:min(440px,calc(100vw - 28px));padding:24px;box-shadow:0 20px 70px #1c1a1933}dialog::backdrop{background:#2f302a55;backdrop-filter:blur(6px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:22px}.dialog-head h2{font-size:18px;letter-spacing:.1em;font-weight:500;margin:0}.dialog-head .icon-button{height:30px;width:30px;background:transparent;border-color:#dcd8c9}.dialog-head .icon-button svg{width:15px;height:15px}.note{font-size:10px;line-height:1.9;color:#99927e}.total{margin:15px 0 27px}.total strong{font-family:serif;font-size:49px;font-weight:400}.total span{font-size:11px;margin-left:10px;color:#9a937d}.check{font-size:11px;display:flex;align-items:center;gap:8px;line-height:1.9}.check input{accent-color:#7e795f;width:16px;height:16px}.text-button{border:0;background:none;text-decoration:underline;text-underline-offset:4px;color:#9d947c;font-size:10px;padding:10px 0}.simple-button{border:1px solid #dad5c3;background:#ede9dd;border-radius:9px;font-size:11px;padding:12px 19px}.share-buttons{display:flex;gap:7px;margin-top:20px}.share-buttons>button{flex:1;padding-left:5px;padding-right:5px}#shareCanvas{width:100%;border-radius:7px;display:block;margin-bottom:17px}#recordList{max-height:300px;overflow:auto;margin:16px 0}.record{border-top:1px solid #e4e0d1;padding:12px 0;display:flex;align-items:center;justify-content:space-between;gap:10px}.record time{font-size:11px;color:#938c77}.record span{font-size:10px;color:#aba28e}.record img{width:60px;height:74px;object-fit:contain;background:#f0ebdf;border:1px solid #e3decd;border-radius:4px}.empty{font-size:11px;color:#aaa18b;margin:25px 0}#aboutDialog>p:not(.note){font-size:12px;line-height:2}#clearConfirm{padding:12px;background:#f0ecdf;border-radius:8px;font-size:11px}#clearNo{margin-left:15px}.webgl-error{position:fixed;inset:0;display:grid;place-content:center;padding:30px;text-align:center;line-height:2;font-size:13px;background:#e3ddcd}@keyframes spin{to{transform:rotate(360deg)}}@keyframes toolPulse{50%{box-shadow:0 0 0 6px #b9ae8150}}@keyframes leverHint{50%{transform:rotate(12deg) translateY(3px)}}@media(max-width:600px){header{padding:calc(15px + env(safe-area-inset-top)) 17px 0}.icon-button{width:36px;height:36px}.top-controls{gap:7px}.tool-dock{bottom:calc(23px + env(safe-area-inset-bottom))}.tool{width:46px;height:46px}}@media(prefers-reduced-motion:reduce){.gesture-cue svg,.tool.pulse{animation:none}}

html,body{overscroll-behavior:none;touch-action:none;position:fixed;inset:0;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}#world,#world canvas{touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}dialog{overscroll-behavior:contain;touch-action:pan-y}#recovery{position:fixed;inset:0;z-index:40;background:#ded8cbe6;display:grid;place-content:center;gap:12px;text-align:center;backdrop-filter:blur(8px)}#recovery p{font-size:12px;line-height:2;color:#77705f}.tool-dock{touch-action:manipulation}

#shareDialog{width:min(440px,calc(100vw - 24px));max-height:92dvh;padding:22px;overflow:auto}#shareDialog .dialog-head{margin-bottom:16px}#shareDialog h2{font-size:17px;letter-spacing:.03em}.eyebrow{font-size:10px;color:#89968d;margin:0 0 6px}#shareCanvas{width:min(100%,310px);margin:0 auto 18px;border-radius:6px;aspect-ratio:1}.caption-label{display:block;font-size:11px;margin-bottom:8px}.caption-label span{font-size:10px;color:#a29d8e;margin-left:5px}#shareCaption{display:block;width:100%;border:1px solid #dedcd0;background:#fffdf7;border-radius:8px;padding:12px;font:inherit;font-size:14px;color:#504c43;margin:0 0 13px;touch-action:manipulation;user-select:text;-webkit-user-select:text}#shareNote{min-height:2em;color:#7d796b}.primary-share{width:100%;background:#263d37;color:#fff;border-color:#263d37;font-size:14px;padding:14px}.share-help{margin:8px 0 0}.share-buttons{margin-top:10px}.play-again{display:block;margin:12px auto 0;font-size:11px}@media(max-height:740px){#shareCanvas{width:220px}#shareDialog{padding:18px}.dialog-head{margin-bottom:12px}#shareNote{margin:7px 0}}

/* Night interior: UI sits quietly in the same dim room. */
html,body{background:#121820;color:#e0d8ca}.vignette{background:radial-gradient(ellipse at 48% 44%,transparent 30%,#080d1666 100%)}.watermark svg{stroke:#e5d7bc}.watermark{opacity:.55}.icon-button{background:#282a2c88;border-color:#e9dab72b;color:#e6d8c0}.icon-button:hover{background:#3b3b3bbd}.tool-dock{background:#25282ce0;border-color:#d7c6a22e;box-shadow:0 7px 30px #0005}.tool{color:#d1c6b2}.tool.active{background:#807057;color:#fff4dc}.tool:hover:not(.active){background:#ffffff13}.tool-dock>span{background:#d5c7ae26}#loading{background:#151a20}#loading>span{border-color:#dcccb22b;border-top-color:#dfbe85}.saved-indicator{color:#dec593}dialog{background:#24282c;color:#e0d9cc;border-color:#d5c9ae26}dialog::backdrop{background:#060b11a6}.note{color:#a39f96}.dialog-head .icon-button{border-color:#c9bea134}.check input{accent-color:#a38b62}.simple-button{background:#363b3c;border-color:#c3b79333;color:#e5dac6}.text-button{color:#bdb29d}#shareCaption{background:#1b2024;border-color:#b5ab922e;color:#e5ded0}.caption-label span,.eyebrow,#shareNote{color:#aba496}.primary-share{background:#a99876;color:#161c1b;border-color:#a99876}.record{border-color:#d4c4a620}#clearConfirm{background:#303536}#toast{background:#101820ed;color:#e8dfcd}#recovery{background:#151c25ed}#recovery p{color:#e2d8c5}.gesture-cue svg{stroke:#e7cfa6}

html,body{font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue","Hiragino Sans",sans-serif;background:#0c0906}.vignette{background:radial-gradient(ellipse at 48% 44%,transparent 24%,#0804008c 100%)}.dialog-head h2,#shareDialog h2{font-size:17px;font-weight:600;letter-spacing:0}.note,.simple-button,.check{font-size:12px}.dialog-head{margin-bottom:16px}#shareCanvas{aspect-ratio:4/5;width:min(100%,290px);margin:0 auto 16px}#shareDialog{padding:20px;border-radius:16px;width:min(400px,calc(100vw - 24px));background:#1c1b19}.primary-share{background:#f2f1ed;border-color:#f2f1ed;color:#161616;font-size:14px;font-weight:600;border-radius:8px;padding:12px}#shareCaption{background:transparent;border:0;border-bottom:1px solid #ffffff20;border-radius:0;padding:12px 0;margin-bottom:12px;font-size:14px}#shareNote:empty{display:none}.play-again{font-size:12px;text-decoration:none}.simple-button{font-weight:500}dialog{letter-spacing:0}details{font-size:12px;line-height:1.8}summary{cursor:pointer;padding:10px 0}.total span{font-size:13px;margin-left:8px}.total strong{font-family:inherit}.tool-dock{background:#21170ee6;border-color:#b0793929}.tool.active{background:#805b31}.icon-button{background:#21170e99;color:#dfc39d}#loading{background:#100b07}@media(max-height:740px){#shareCanvas{width:210px}#shareDialog{padding:16px}}

.action-cue{position:fixed;z-index:2;width:28px;height:28px;border:1px solid #efd6ac99;border-radius:50%;box-shadow:0 0 0 6px #f4c37b12;pointer-events:none;transform:translate(-50%,-50%);animation:actionPulse 2s ease-in-out infinite}@keyframes actionPulse{50%{opacity:.45;box-shadow:0 0 0 10px #f4c37b08}}@media(prefers-reduced-motion:reduce){.action-cue{animation:none}}

/* Native system type and readable controls. CSS px follow logical UI dimensions. */
:root{--ui-font:-apple-system,BlinkMacSystemFont,system-ui,sans-serif;--body:1.0625rem;--secondary:.9375rem;--label:1.0625rem;--heading:1.25rem}
html{font-size:16px;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body,button,input,summary,textarea{font-family:var(--ui-font);font-style:normal;letter-spacing:normal}
body{font-size:var(--body);line-height:1.45;font-weight:400}
button,input{font-size:var(--label)}
.dialog-head h2,#shareDialog h2{font-size:var(--heading);line-height:1.3;font-weight:600;letter-spacing:normal}
.note,.eyebrow,.caption-label span,#shareNote,.record time,.record span,.empty,.saved-indicator{font-size:var(--secondary);line-height:1.5;letter-spacing:normal;color:#c3beb5}
.check,.caption-label,details,summary,#clearConfirm,#recovery p,#aboutDialog>p:not(.note),.webgl-error{font-size:var(--body);line-height:1.5}
.simple-button,.text-button,.play-again,.primary-share,#shareCaption{font-size:var(--label);line-height:1.3;letter-spacing:normal}
.simple-button,.text-button,.play-again,summary,.check{min-height:48px}
.simple-button,.primary-share{padding:12px 16px;border-radius:12px;font-weight:600}
.text-button{padding:12px 4px}.check{gap:12px}.check input{width:22px;height:22px;flex:none}
.icon-button,.dialog-head .icon-button,.watermark{width:48px;height:48px;min-width:48px;min-height:48px;opacity:1}
.icon-button svg,.tool svg,.dialog-head .icon-button svg{width:22px;height:22px;stroke-width:1.6}
.top-controls{gap:8px}.tool{width:52px;height:52px}.tool-dock{gap:4px;border-radius:20px}
header{padding:calc(12px + env(safe-area-inset-top)) 16px 0}
dialog,#shareDialog{width:min(440px,calc(100vw - 24px));padding:20px;max-height:calc(100dvh - 32px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:auto}
.dialog-head{margin-bottom:12px;align-items:center}.dialog-head h2{flex:1}
#shareCanvas{width:min(100%,270px)}#shareCaption{min-height:48px;padding:12px 0}
.total strong{font-family:var(--ui-font);font-size:2.75rem;font-weight:600;font-variant-numeric:tabular-nums}.total span{font-size:var(--body)}
#toast{font-size:var(--secondary);line-height:1.45;max-width:calc(100vw - 32px)}
.vignette{background:radial-gradient(ellipse at 48% 44%,transparent 45%,#08040038 100%)}
@media(max-height:740px){#shareCanvas{width:min(100%,180px)}dialog,#shareDialog{padding:16px}.share-buttons{margin-top:8px}.play-again{margin:4px auto 0}}
@media(max-width:350px){header{padding-left:12px;padding-right:12px}.top-controls{gap:4px}.tool-dock{padding:4px}.tool{width:48px;height:48px}}
@media(max-height:450px) and (orientation:landscape){#shareDialog{width:min(560px,calc(100vw - 32px))}#shareCanvas{float:left;width:150px;margin:0 18px 8px 0}.share-buttons{display:flex}.play-again{clear:both}}
html,body{touch-action:manipulation}dialog{touch-action:pan-y pinch-zoom}
