:root{font-family:ui-sans-serif,system-ui,-apple-system,sans-serif;color:#533b2b;background:#e3c196}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}button,a,label{font:inherit}button{cursor:pointer}.app{height:100dvh;width:100%;display:flex;background:#dbc5a5}.scene{position:relative;flex:1;min-width:0;min-height:0;isolation:isolate;overflow:hidden;background:#e3c196}#world{width:100%;height:100%;display:block;touch-action:none;cursor:grab}#world:active{cursor:grabbing}.brand{position:absolute;z-index:2;left:clamp(17px,3.3vw,48px);top:clamp(18px,4vh,38px);pointer-events:none;text-shadow:0 1px 0 #fff4}.brand-title{font-size:clamp(22px,2.7vw,35px);letter-spacing:-.055em;font-weight:540;color:#74533d;line-height:1}.brand-dot{color:#a27753}.brand-tag{margin-top:7px;font-size:clamp(9px,.9vw,11px);letter-spacing:.09em;color:#917258}.scene-label{position:absolute;z-index:2;left:clamp(17px,3.3vw,48px);bottom:clamp(15px,3vh,29px);display:flex;align-items:center;gap:9px;font-size:10px;letter-spacing:.17em;font-weight:700;color:#fbe5c2;text-shadow:0 1px 5px #5e372aa9;pointer-events:none}.scene-divider{opacity:.42}.live-dot{width:6px;height:6px;background:#c3d4ab;border-radius:50%}.scene-tools{position:absolute;z-index:4;right:clamp(15px,3vw,36px);bottom:clamp(12px,2.7vh,26px);display:flex;gap:7px;background:#f7ecdacb;padding:7px;border-radius:99px;box-shadow:0 6px 30px #70503128;backdrop-filter:blur(12px)}.scene-tools button{background:#fffdf86e;border:0;border-radius:99px;min-width:36px;height:36px;padding:0 11px;color:#73523b;font-size:17px}.scene-tools button:hover{background:#fffdf8}.scene-tools #clock{font-size:12px}.settings{position:absolute;z-index:5;right:clamp(15px,3vw,36px);bottom:calc(clamp(12px,2.7vh,26px) + 61px);width:min(335px,calc(100vw - 30px));max-height:calc(100dvh - 105px);overflow-y:auto;background:#fff8ebf2;border:1px solid #fff9ef9e;box-shadow:0 12px 40px #593b325c;border-radius:18px;padding:19px;backdrop-filter:blur(20px)}.settings[hidden]{display:none}.settings-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}.settings-head strong{font-size:14px}.settings-head button{border:0;background:none;font-size:24px;color:#8a715e}.settings-note{font-size:12px;line-height:1.7;color:#806b59;margin:5px 0 14px}.controls,.lab-tools,.nav-controls{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0}.settings button:not(.settings-head button),.lab-tools label{border:1px solid #e0cbb1;background:#fffdf8;color:#76543c;border-radius:11px;padding:9px 11px;font-size:12px}.settings button[aria-pressed=true]{background:#876a4e;color:#fff}.lab-tools input{display:none}.settings details{border-top:1px solid #e4d3be;padding-top:11px;margin-top:15px}.settings summary{font-size:12px;cursor:pointer;font-weight:700}.settings #lab-state{font-size:11px;color:#84705d;line-height:1.6}.mode-link{display:block;font-size:12px;color:#806147;text-decoration:none;padding:10px 0;border-top:1px solid #e7d9c7}.build{font-size:10px;color:#b19e89}.ambient-status{position:absolute;z-index:3;left:clamp(17px,3.3vw,48px);bottom:clamp(34px,6vh,54px);max-width:min(360px,50%);font-size:11px;color:#fce4c7;text-shadow:0 1px 5px #513c32a9;pointer-events:none}.widget-mode .brand,.widget-mode .scene-label,.widget-mode .scene-tools,.widget-mode .settings,.widget-mode .ambient-status{display:none!important}body[data-mode=puck]{background:radial-gradient(ellipse at 50% 20%,#fff9ec,#e5d6bd);overflow:auto}body[data-mode=puck] .app{height:auto;min-height:100dvh;background:transparent;align-items:center;justify-content:center;padding:80px 12px;flex-direction:column}body[data-mode=puck] .scene{flex:none;width:min(440px,calc(100vw - 24px));aspect-ratio:1;border-radius:50%;filter:drop-shadow(0 13px 18px #7962463d);overflow:visible}body[data-mode=puck] #world{border-radius:50%}body[data-mode=puck] .brand{top:-55px;left:50%;transform:translateX(-50%);text-align:center;white-space:nowrap}body[data-mode=puck] .brand-title{font-size:24px}body[data-mode=puck] .scene-label,body[data-mode=puck] .ambient-status{display:none}body[data-mode=puck] .scene-tools{bottom:-60px;right:50%;transform:translateX(50%)}body[data-mode=puck] .settings{bottom:-8px;right:0;transform:translateY(100%)}body[data-mode=puck] .settings #scale{display:inline-block!important}@media(max-width:650px){.scene-tools{right:12px;bottom:13px}.scene-label{bottom:62px}.ambient-status{bottom:85px;max-width:65%}.brand{left:18px;top:21px}.settings{right:12px;bottom:72px}}@media(max-height:380px){.brand{top:11px}.brand-title{font-size:19px}.brand-tag,.ambient-status{display:none}.scene-label{bottom:15px}.scene-tools{bottom:10px}}
/* v0.9: Responsive interactive clock and countdown; independent of world scale. */
.timepiece{position:absolute;z-index:6;top:clamp(18px,4vh,38px);left:50%;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;gap:11px;max-width:calc(100% - 22px);white-space:nowrap;color:#74543b;font-variant-numeric:tabular-nums}
.timepiece[hidden]{display:none!important}
.time-btn{border:0;color:inherit;cursor:pointer;font-family:inherit;line-height:1;touch-action:manipulation}
.time-primary{font-weight:520;font-size:clamp(24px,2.75vw,36px);letter-spacing:-.05em;background:transparent;padding:0 5px;text-shadow:0 1px 0 #fff4}
.clock-face:hover,.clock-face:focus-visible{opacity:.74}
.timepiece[data-timer-mode="setup"],.timepiece[data-timer-mode="running"],.timepiece[data-timer-mode="paused"]{background:#fff4e2d9;border:1px solid #fff8e9cf;box-shadow:0 4px 22px #6b4b3022;border-radius:20px;padding:6px 10px;backdrop-filter:blur(7px)}
.time-side{display:flex;flex-direction:column;gap:4px}
.time-side .time-btn{font-size:12px;font-weight:650;min-width:30px;min-height:22px;border-radius:7px;background:#e9d1af94}
.time-side .time-btn:hover{background:#dcc09c}
.time-icon{font-size:19px;font-weight:600;min-width:35px;min-height:37px;border-radius:11px;background:#e9d1af94}
.time-icon:hover{background:#dfc19a}
.time-current{font-size:clamp(24px,2.7vw,36px);font-weight:540;min-width:94px;text-align:center;letter-spacing:-.04em}
.puck-pan{display:none}
@media(max-width:600px){
 html:not(.widget-mode) body[data-mode=panorama] .timepiece{top:73px}
 html.widget-mode body[data-mode=panorama] .timepiece{top:16px}
 .timepiece[data-timer-mode="setup"],.timepiece[data-timer-mode="running"],.timepiece[data-timer-mode="paused"]{gap:7px;padding:5px 6px}
 .time-current{min-width:74px}
}
body[data-mode=puck] .timepiece{top:18%;max-width:72%}
body[data-mode=puck] .time-primary{font-size:clamp(20px,5.6vw,29px)}
body[data-mode=puck] .time-current{font-size:clamp(19px,5vw,28px);min-width:62px}
body[data-mode=puck] .time-side .time-btn{min-width:26px;min-height:22px;font-size:11px}
body[data-mode=puck] .time-icon{min-width:26px;min-height:31px;font-size:16px}
body[data-mode=puck] .timepiece[data-timer-mode="setup"],body[data-mode=puck] .timepiece[data-timer-mode="running"],body[data-mode=puck] .timepiece[data-timer-mode="paused"]{top:16%;gap:3px;padding:3px 4px;max-width:84%;border-radius:12px}
body[data-mode=puck] .puck-pan{display:block;position:absolute;inset:0;z-index:5;pointer-events:none}
body[data-mode=puck] .puck-pan button{pointer-events:auto;position:absolute;width:33px;height:33px;border:1px solid #e1c6a16e;border-radius:50%;background:#fff3d6af;color:#775a43;font-size:13px;opacity:.72;cursor:pointer;touch-action:manipulation}
body[data-mode=puck] .puck-pan button:hover,body[data-mode=puck] .puck-pan button:focus-visible{opacity:1;background:#fff5df}
body[data-mode=puck] .puck-pan [data-pan="up"]{top:4px;left:50%;transform:translateX(-50%)}
body[data-mode=puck] .puck-pan [data-pan="down"]{bottom:4px;left:50%;transform:translateX(-50%)}
body[data-mode=puck] .puck-pan [data-pan="left"]{left:4px;top:50%;transform:translateY(-50%)}
body[data-mode=puck] .puck-pan [data-pan="right"]{right:4px;top:50%;transform:translateY(-50%)}
.widget-mode .puck-pan{display:none!important}
@media(max-width:360px){body[data-mode=puck] .timepiece{top:18%}body[data-mode=puck] .puck-pan button{width:27px;height:27px;font-size:11px}}

/* v0.9.1: responsive observation frames. Auto stays a full-bleed PWA;
   framed views fit within browser limits and can be resized independently. */
.frame-settings{display:flex;flex-direction:column;gap:7px;margin:12px 0 10px;border-top:1px solid #e4d3be;padding-top:12px}
.frame-settings label{font-weight:700;font-size:12px;color:#76543c}
.frame-settings select{appearance:auto;width:100%;background:#fffdf8;border:1px solid #dfcbb0;border-radius:10px;color:#76543c;font-size:13px;padding:10px;cursor:pointer}
.frame-hint{font-size:11px;line-height:1.5;color:#988069;margin:0}
body[data-mode=puck] .frame-settings{display:none}
body[data-mode=panorama][data-frame-mode]:not([data-frame-mode=auto]) .app{
  padding:20px;align-items:center;justify-content:center;
  background:radial-gradient(ellipse at 50% 25%,#f8efdd 0%,#ddc9a9 100%);
}
body[data-mode=panorama][data-frame-mode]:not([data-frame-mode=auto]) .scene{
  flex:0 0 auto;min-width:175px;min-height:175px;
  max-width:calc(100vw - 40px);max-height:calc(100dvh - 40px);
  border-radius:16px;box-shadow:0 13px 45px #66472c3a;
  resize:both;overflow:hidden;
}
/* On narrower frames, reserve separate rows for brand and time. */
body[data-mode=panorama][data-frame-mode=portrait] .timepiece,
body[data-mode=panorama][data-frame-mode=custom] .timepiece{top:77px}
body[data-mode=panorama][data-frame-mode=portrait] .brand,
body[data-mode=panorama][data-frame-mode=custom] .brand{top:19px;left:18px}
body[data-mode=panorama][data-frame-mode=portrait] .scene-label,
body[data-mode=panorama][data-frame-mode=custom] .scene-label{display:none}
body[data-mode=panorama][data-frame-mode=portrait] .ambient-status,
body[data-mode=panorama][data-frame-mode=custom] .ambient-status{display:none}
/* Keep framed controls reachable without overwhelming small scenes. */
body[data-mode=panorama][data-frame-mode]:not([data-frame-mode=auto]) .scene-tools{bottom:12px;right:12px;gap:3px;padding:5px}
body[data-mode=panorama][data-frame-mode]:not([data-frame-mode=auto]) .scene-tools button{min-width:31px;height:31px;padding:0 7px}
body[data-mode=panorama][data-frame-mode]:not([data-frame-mode=auto]) .settings{bottom:60px;right:10px;width:min(315px,calc(100% - 20px));max-height:calc(100% - 80px)}
/* Native CSS resize grip is present; this subtle visible corner is a cue. */
body[data-mode=panorama][data-frame-mode]:not([data-frame-mode=auto]) .scene::after{
  content:'◢';position:absolute;z-index:4;right:3px;bottom:1px;
  font-size:11px;line-height:1;color:#fff5e4b6;pointer-events:none
}
@media(max-width:600px){
  body[data-mode=panorama][data-frame-mode]:not([data-frame-mode=auto]) .app{padding:12px}
  body[data-mode=panorama][data-frame-mode]:not([data-frame-mode=auto]) .scene{
    max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px)
  }
}

/* v0.9.2: Settings always take priority over the clock. */
.settings{z-index:10}
.scene.settings-open .timepiece{visibility:hidden;pointer-events:none}
.scene-tools [hidden],.controls [hidden]{display:none!important}
.mini-placeholder{display:none;align-items:center;justify-content:center;flex-direction:column;gap:17px;
  width:100%;height:100%;text-align:center;color:#74533d;padding:24px}
.mini-placeholder:not([hidden]){display:flex}
.mini-placeholder strong{font-size:22px;font-weight:550}
.mini-placeholder p{margin:0;line-height:1.6;max-width:300px;color:#806b59;font-size:14px}
.mini-placeholder button{background:#fff8eb;border:1px solid #d8bea0;color:#684b35;
  padding:11px 17px;border-radius:99px;cursor:pointer}
.mini-placeholder button:hover{background:#fffdf7}
