:root{--panel:#fff;--ink:#1d2227;--muted:#72777d;--line:#e8eaed;--soft:#f6f7f8;--accent:#1a272f;color-scheme:light}*{box-sizing:border-box}html,body{width:100%;height:100%;height:100dvh;margin:0;overflow:hidden;background:#fff;overscroll-behavior:none}body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink)}#tm-stage{position:fixed;inset:0;overflow:hidden;touch-action:manipulation}#tm-canvas{display:block}body.tm-dark{--panel:#15181a;--ink:#eff0ef;--muted:#a0a7ab;--line:#32383c;--soft:#202528;--accent:#ecede8;color-scheme:dark}button,input,select{font:inherit}button{cursor:pointer}#tm-launcher{position:fixed;right:max(24px,env(safe-area-inset-right));bottom:max(24px,env(safe-area-inset-bottom));width:46px;height:46px;border:1px solid var(--line);border-radius:50%;background:var(--panel);color:var(--muted);display:grid;place-items:center;opacity:0;transition:opacity .35s;z-index:4}body.tm-awake #tm-launcher,#tm-launcher:focus-visible{opacity:.78}#tm-launcher:hover{opacity:1}body.tm-idle{cursor:none}body.tm-kiosk #tm-launcher,body.tm-kiosk #tm-settings,body.tm-kiosk #tm-toast{display:none!important}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid #688dab;outline-offset:3px}#tm-settings{margin:auto;max-height:90dvh;width:min(470px,calc(100% - 24px));padding:28px;border:1px solid var(--line);border-radius:22px;background:var(--panel);color:var(--ink);box-shadow:0 30px 110px #0002;overflow-y:auto;overscroll-behavior:contain}#tm-settings::backdrop{background:#4448;backdrop-filter:blur(7px)}.tm-dialog-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:22px}.tm-eyebrow{font-size:9px;letter-spacing:.16em;color:var(--muted);font-weight:650}#tm-settings h1{font-size:26px;letter-spacing:-.8px;font-weight:500;line-height:1.2;margin:7px 0 0}.tm-icon{width:32px;height:32px;border:0;border-radius:50%;background:var(--soft);font-size:24px;font-weight:300;color:var(--ink)}.tm-readout{display:flex;align-items:center;justify-content:space-between;padding:18px;border-radius:13px;background:var(--soft);margin-bottom:23px;gap:10px}.tm-readout strong{font-size:25px;letter-spacing:1px;font-weight:450;font-variant-numeric:tabular-nums}.tm-readout span{font-size:11px;color:var(--muted);overflow-wrap:anywhere;text-align:right}.tm-field{margin-bottom:15px;min-width:0}.tm-field label{font-size:11px;font-weight:600;color:var(--muted);display:block;margin-bottom:7px}.tm-field input:not([type=range]),.tm-field select{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:8px;padding:10px 11px;width:100%;font-size:12px;min-height:39px}.tm-field input[type=range]{width:100%;accent-color:#647781}.tm-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.tm-note{color:var(--muted);font-size:11px;line-height:1.7}.tm-actions{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.tm-actions button{border:1px solid var(--line);border-radius:9px;padding:10px 13px;background:var(--soft);color:var(--ink);font-size:11px;font-weight:550}.tm-actions .tm-primary{background:var(--ink);color:var(--panel);border-color:var(--ink)}.tm-detail{padding:14px 0 0;margin-top:15px;border-top:1px solid var(--line)}.tm-detail summary{cursor:pointer;font-size:12px;font-weight:550}.tm-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#tm-toast{position:fixed;z-index:20;bottom:max(25px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);max-width:min(500px,90vw);padding:12px 18px;border-radius:12px;background:#16202deb;color:#fff;font-size:12px;line-height:1.5;text-align:center;box-shadow:0 8px 40px #0002}#tm-ad{position:fixed;inset:0;background:#fff;z-index:5;align-items:center;justify-content:center;padding:4vh 5vw}#tm-ad:not([hidden]){display:flex}.tm-ad-label{position:absolute;top:18px;left:50%;transform:translateX(-50%);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#777}#tm-ad-link{display:flex;align-items:center;justify-content:center;width:100%;height:100%;text-decoration:none;color:inherit}#tm-ad-image,#tm-ad-video{max-width:100%;max-height:100%;object-fit:contain}.tm-nojs{position:fixed;inset:0;display:grid;place-items:center;padding:30px;text-align:center}@media(max-width:400px){#tm-settings{padding:20px}.tm-two{gap:8px}.tm-readout strong{font-size:21px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

body.tm-gesture #tm-launcher{display:none}body.tm-gesture.tm-idle{cursor:none}.tm-public-check{display:flex;align-items:center;gap:9px;font-size:12px;margin:12px 0}.tm-spacing-top{margin-top:18px}#tm-speed-value{float:right;font-variant-numeric:tabular-nums}.tm-field output{color:var(--ink)}#tm-stage{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}#tm-settings{user-select:text;-webkit-user-select:text}

#tm-preferences > .tm-detail{margin-bottom:16px}

/* Safe-area-aware display and touch controls. The artwork itself contains no controls. */
:root{--tm-safe-top:env(safe-area-inset-top,0px);--tm-safe-right:env(safe-area-inset-right,0px);--tm-safe-bottom:env(safe-area-inset-bottom,0px);--tm-safe-left:env(safe-area-inset-left,0px)}
#tm-stage{height:100%;height:100dvh}#tm-settings{max-height:calc(100dvh - max(24px,var(--tm-safe-top)) - max(24px,var(--tm-safe-bottom)));scrollbar-width:thin}
@media(pointer:coarse){.tm-field input:not([type=range]),.tm-field select{font-size:16px;min-height:46px}.tm-actions button,.tm-icon{min-height:44px;min-width:44px}.tm-field input[type=range]{min-height:34px}.tm-public-check{min-height:38px}.tm-public-check input{width:20px;height:20px}#tm-settings{width:min(560px,calc(100% - 20px));padding:22px}.tm-note{font-size:12px}}
@media(max-height:480px){#tm-settings{max-height:calc(100dvh - 12px);padding:16px}.tm-dialog-head{margin-bottom:10px}.tm-readout{margin-bottom:12px;padding:12px}}

/* Separate static mineral plate from the moving hands: do not repaint the full plate every frame. */
#tm-stage{isolation:isolate}#tm-stage .tm-plate{position:absolute;inset:0;pointer-events:none;z-index:0}#tm-canvas{position:relative;z-index:1;background:transparent}/* Music is opt-in. The installation stays visually empty until controls are requested. */
#tm-sound-launcher{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));z-index:35;min-height:44px;padding:10px 16px;border:1px solid #9997;border-radius:24px;background:#181a1bd9;color:#fafafa;font:13px system-ui;cursor:pointer}#tm-sound-launcher[hidden],.tm-kiosk #tm-sound-launcher{display:none!important}#tm-sound-panel h2{font-size:17px}#tm-sound-credit{overflow-wrap:anywhere}

.tm-channel-caption{position:fixed;left:12px;right:12px;bottom:max(10px,env(safe-area-inset-bottom));z-index:12;text-align:center;font:500 clamp(11px,1vw,17px)/1.4 system-ui,sans-serif;letter-spacing:.04em;pointer-events:none}.tm-channel-caption[hidden]{display:none}.tm-channel-unavailable{top:45%;bottom:auto;font-size:20px}

/* v2.4 edge-to-edge installation mode */
html,body,#tm-stage{width:100vw!important;height:100vh!important;height:100dvh!important;margin:0!important;padding:0!important;max-width:none!important;max-height:none!important;border:0!important;border-radius:0!important;overflow:hidden!important;background:transparent}#tm-stage{inset:0!important;position:fixed!important}#tm-canvas,#tm-stage .tm-plate{width:100%!important;height:100%!important;display:block!important}body.tm-kiosk,body.tm-kiosk #tm-stage{cursor:none!important}
