*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;height:100dvh;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;touch-action:manipulation}body{background:var(--bg);color:var(--fg);font-family:var(--font-display);font-feature-settings:var(--font-feature);font-synthesis:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#bg{position:fixed;inset:0;width:100%;height:100%;z-index:-1;display:block;pointer-events:none}.app{position:relative;min-height:100dvh;padding:calc(var(--safe-top) + 16px) calc(var(--safe-right) + 20px) calc(var(--safe-bottom) + 16px) calc(var(--safe-left) + 20px);display:flex;flex-direction:column;gap:24px}.app:after{content:"";position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(to bottom,#0000 0 2px,#00000040 2px 3px);opacity:var(--scanline-opacity);mix-blend-mode:multiply;z-index:2}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px}.topbar .title{font-size:14px;letter-spacing:.18em;text-transform:uppercase;color:var(--fg-dim)}.network-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--border);font-size:12px;letter-spacing:.08em;color:var(--fg-dim)}.network-badge .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent)}.network-badge[data-online=false] .dot{background:var(--danger);box-shadow:0 0 8px var(--danger)}.topbar-status{display:inline-flex;align-items:center;gap:10px}.battery-badge{font-size:12px;letter-spacing:.04em;color:var(--fg-dim);font-variant-numeric:tabular-nums}.battery-badge[data-low=true]{color:var(--danger)}.clock-tappable{cursor:pointer}.dim-screen{position:fixed;inset:0;z-index:60;background:#000;display:flex;align-items:center;justify-content:center}.dim-inner{animation:dim-drift 90s ease-in-out infinite alternate}.dim-screen .clock{opacity:.32;filter:saturate(.6)}.dim-screen .clock-date{opacity:.5}@keyframes dim-drift{0%{transform:translate(-3vw,-4vh)}50%{transform:translate(3vw,2vh)}to{transform:translate(-2vw,4vh)}}.clock-wrap{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:12px}.clock{font-family:var(--font-display);font-weight:300;font-size:clamp(72px,22vw,168px);line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:0;color:var(--fg);text-shadow:var(--digit-shadow);background:var(--digit-gradient);background-clip:text;-webkit-background-clip:text}.clock .sep{opacity:.5;animation:blink 1s steps(2) infinite;margin:0 .05em}@keyframes blink{to{opacity:1}}.clock-date{font-size:14px;letter-spacing:.22em;text-transform:uppercase;color:var(--fg-dim)}.clock-ampm{font-size:.3em;margin-left:.4em;letter-spacing:.1em;align-self:center;color:var(--fg-dim);-webkit-text-fill-color:var(--fg-dim)}.almanac{display:flex;flex-direction:column;gap:10px;padding:14px 16px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}.alm-row{display:flex;align-items:center;gap:10px;font-size:15px;line-height:1.2}.alm-icon{flex:none;width:1.5em;text-align:center;font-size:18px}.alm-text{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.alm-sub{flex:none;color:var(--fg-dim);font-size:13px;letter-spacing:.02em}.alm-dim,.alm-sun{color:var(--fg-dim)}.alm-sun .alm-text{flex:none}.alm-sun .alm-icon:nth-of-type(2){margin-left:auto}.alm-holiday .alm-text{font-weight:500}.alm-tappable{cursor:pointer}.alm-forecast{display:flex;gap:8px;overflow-x:auto;padding:2px;-webkit-overflow-scrolling:touch}.alm-fc-day{flex:none;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:50px;padding:8px 6px;border-radius:var(--radius-sm);background:var(--surface);font-size:12px}.alm-fc-dow{color:var(--fg-dim);text-transform:capitalize}.alm-fc-emoji{font-size:17px}.alm-fc-temp{font-weight:600}.alm-fc-low{color:var(--fg-dim)}.segmented{display:inline-flex;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);padding:3px;gap:2px}.seg{appearance:none;border:0;background:transparent;color:var(--fg-dim);font:inherit;font-size:14px;padding:6px 14px;border-radius:var(--radius-pill);cursor:pointer}.seg[aria-pressed=true]{background:var(--accent);color:var(--bg);font-weight:600}.loc-search{display:flex;gap:8px;margin-top:8px}.loc-input{flex:1;min-width:0;padding:10px 12px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--fg);font:inherit}.loc-results{display:flex;flex-direction:column;gap:6px;margin-top:8px}.loc-result{text-align:left;padding:10px 12px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--fg);font:inherit;cursor:pointer}.loc-reset{margin-top:10px}.btn-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.btn{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--fg);font:inherit;font-size:16px;font-weight:500;letter-spacing:.04em;min-height:var(--tap);padding:14px 18px;border-radius:var(--radius);box-shadow:var(--button-shadow);display:inline-flex;align-items:center;justify-content:center;gap:10px;cursor:pointer;transition:transform .08s ease,background .15s ease,border-color .15s}.btn:active{transform:scale(.97);background:var(--surface-strong)}.btn.primary{background:var(--accent);color:var(--bg);border-color:transparent;font-weight:600}.btn.primary:active{background:var(--accent-strong)}.btn.ghost{background:transparent}.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--border))}.btn .icon{width:20px;height:20px;flex:0 0 auto}.btn-stack{display:flex;flex-direction:column;gap:14px}.btn-wide{width:100%}.alarm-form{display:flex;flex-direction:column;gap:10px}.alarm-time-input{padding:10px 12px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--fg);font:inherit;font-size:20px}.day-chips{display:flex;flex-wrap:wrap;gap:6px}.day-chip{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--fg-dim);font:inherit;font-size:13px;padding:8px 10px;border-radius:var(--radius-pill);cursor:pointer}.day-chip[aria-pressed=true]{background:var(--accent);color:var(--bg);border-color:transparent}.alarm-list{display:flex;flex-direction:column;gap:8px}.alarm-item{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border)}.alarm-item[data-enabled=false]{opacity:.55}.alarm-meta{flex:1;min-width:0}.alarm-time{font-size:26px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.1}.alarm-sub{font-size:12px;color:var(--fg-dim)}.alarm-item .delete{appearance:none;border:0;background:transparent;color:var(--fg-dim);font-size:16px;width:32px;height:32px;cursor:pointer}.alarm-note{margin-top:4px}.alarm-ring{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:32px;background:var(--overlay);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.alarm-ring-time{font-family:var(--font-display);font-size:clamp(64px,26vw,160px);font-weight:300;line-height:1;color:var(--fg);font-variant-numeric:tabular-nums}.alarm-ring-label{font-size:18px;letter-spacing:.08em;color:var(--fg-dim)}.alarm-ring-actions{display:flex;gap:14px;margin-top:8px}.picker{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;align-items:stretch;background:var(--surface);border-radius:var(--radius-lg);padding:12px 6px;position:relative;border:1px solid var(--border)}.picker-col{position:relative;height:calc(var(--picker-item) * 5);--picker-item: 56px;overflow-y:scroll;scroll-snap-type:y mandatory;scrollbar-width:none;-ms-overflow-style:none;mask-image:linear-gradient(to bottom,transparent,#000 25%,#000 75%,transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 25%,#000 75%,transparent)}.picker-col::-webkit-scrollbar{display:none}.picker-col ul{margin:0;padding:calc(var(--picker-item) * 2) 0;list-style:none}.picker-col li{scroll-snap-align:center;scroll-snap-stop:always;height:var(--picker-item);display:flex;align-items:center;justify-content:center;font-size:28px;font-variant-numeric:tabular-nums;font-weight:300;color:var(--fg-dim);transition:color .15s,transform .15s,opacity .15s}.picker-col li[aria-selected=true]{color:var(--fg);font-weight:500;transform:scale(1.15)}.picker-frame{position:absolute;left:8px;right:8px;top:50%;height:56px;transform:translateY(-50%);border-top:1px solid var(--border);border-bottom:1px solid var(--border);pointer-events:none;border-radius:var(--radius-sm)}.picker-label{text-align:center;font-size:11px;letter-spacing:.18em;color:var(--fg-dim);text-transform:uppercase;margin-top:6px}.presets{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.preset-chip{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--fg);padding:8px 14px;border-radius:var(--radius-pill);font:inherit;font-size:13px;font-variant-numeric:tabular-nums;cursor:pointer;min-height:36px;transition:background .15s,transform .08s}.preset-chip:active{transform:scale(.94);background:var(--surface-strong)}.preset-chip[data-default=true]:before{content:"★ ";color:var(--accent);font-size:10px}.countdown{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:14px;position:relative}.countdown-ring{position:relative;width:min(72vw,320px);aspect-ratio:1;display:grid;place-items:center}.countdown-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}.countdown-ring .ring-track{fill:none;stroke:var(--border);stroke-width:6}.countdown-ring .ring-progress{fill:none;stroke:var(--accent);stroke-width:6;stroke-linecap:round;filter:drop-shadow(0 0 8px var(--accent));transition:stroke-dashoffset .25s linear}.countdown-time{font-size:clamp(56px,16vw,96px);font-variant-numeric:tabular-nums;font-weight:200;letter-spacing:-.02em}.countdown.is-done .countdown-time{animation:pulse .6s ease-out infinite alternate;color:var(--accent)}@keyframes pulse{to{transform:scale(1.08);text-shadow:0 0 24px var(--accent)}}.section{display:flex;flex-direction:column;gap:10px}.section h2{margin:0;font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--fg-dim)}.theme-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.theme-tile{appearance:none;border:1px solid var(--border);background:var(--surface);color:var(--fg);border-radius:var(--radius);padding:14px;min-height:84px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;font:inherit;font-size:13px;cursor:pointer;position:relative;overflow:hidden}.theme-tile .swatch{width:100%;height:36px;border-radius:var(--radius-sm);margin-bottom:8px;border:1px solid var(--border)}.theme-tile[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 50%,transparent)}.sound-list{display:flex;flex-direction:column;gap:6px;background:var(--surface);border-radius:var(--radius);padding:6px;border:1px solid var(--border)}.sound-row{display:flex;align-items:center;gap:10px;padding:12px;border-radius:var(--radius-sm);cursor:pointer;min-height:48px}.sound-row[aria-pressed=true]{background:color-mix(in srgb,var(--accent) 18%,transparent)}.sound-row .name{flex:1;font-size:15px}.sound-row .meta{font-size:11px;color:var(--fg-dim);letter-spacing:.08em}.sound-row .play,.sound-row .delete{appearance:none;background:transparent;border:0;color:var(--fg);padding:8px;border-radius:50%;cursor:pointer;min-width:36px;min-height:36px}.sound-row .delete{color:var(--danger)}.upload-tile{appearance:none;border:1px dashed var(--border);background:transparent;color:var(--fg-dim);border-radius:var(--radius);padding:18px;text-align:center;font:inherit;cursor:pointer;min-height:56px}.upload-tile:active{background:var(--surface)}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);min-height:56px}.toggle-row .label{font-size:14px}.toggle-row .desc{font-size:11px;color:var(--fg-dim)}.switch{position:relative;width:44px;height:26px;flex:0 0 auto}.switch input{opacity:0;position:absolute;inset:0;margin:0}.switch .slider{position:absolute;inset:0;background:var(--surface-strong);border-radius:999px;transition:background .2s}.switch .slider:after{content:"";position:absolute;width:20px;height:20px;border-radius:50%;background:var(--fg);top:3px;left:3px;transition:transform .2s}.switch input:checked+.slider{background:var(--accent)}.switch input:checked+.slider:after{transform:translate(18px);background:var(--bg)}@media (prefers-reduced-motion: reduce){.clock .sep,.countdown.is-done .countdown-time{animation:none}}:root{--bg: #0b0c10;--bg-elev: #14161d;--fg: #e8e8ec;--fg-dim: #8b8fa0;--accent: #58c2ff;--accent-strong: #2aa3ff;--danger: #ff5566;--surface: rgba(255, 255, 255, .06);--surface-strong: rgba(255, 255, 255, .1);--border: rgba(255, 255, 255, .08);--shadow: 0 8px 32px rgba(0, 0, 0, .4);--font-display: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font-feature: "tnum" 1, "ss01" 1;--radius-sm: 8px;--radius: 16px;--radius-lg: 28px;--radius-pill: 999px;--tap: 56px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px);--overlay: rgba(0, 0, 0, .55);--digit-shadow: none;--digit-gradient: none;--button-shadow: 0 4px 14px rgba(0, 0, 0, .35);--scanline-opacity: 0}[data-theme=dark]{--bg: #0b0c10;--bg-elev: #14161d;--fg: #e8e8ec;--fg-dim: #8b8fa0;--accent: #58c2ff;--accent-strong: #2aa3ff;--danger: #ff5566;--surface: rgba(255, 255, 255, .06);--surface-strong: rgba(255, 255, 255, .1);--border: rgba(255, 255, 255, .08);--digit-shadow: 0 0 32px rgba(88, 194, 255, .18)}[data-theme=light]{--bg: #fafaf7;--bg-elev: #ffffff;--fg: #1a1a1f;--fg-dim: #6b6f7a;--accent: #4c5bff;--accent-strong: #2533e0;--danger: #d6364c;--surface: rgba(0, 0, 0, .04);--surface-strong: rgba(0, 0, 0, .08);--border: rgba(0, 0, 0, .08);--shadow: 0 8px 32px rgba(0, 0, 0, .08);--digit-shadow: 0 1px 0 rgba(0, 0, 0, .03);--button-shadow: 0 2px 8px rgba(0, 0, 0, .08)}[data-theme=marble]{--bg: #08070a;--bg-elev: #14101a;--fg: #f3e6c4;--fg-dim: #a9956a;--accent: #d4af37;--accent-strong: #f0c850;--danger: #c44b3b;--surface: rgba(212, 175, 55, .06);--surface-strong: rgba(212, 175, 55, .14);--border: rgba(212, 175, 55, .22);--shadow: 0 12px 40px rgba(0, 0, 0, .6);--font-display: "Cormorant Garamond", "Playfair Display", Georgia, serif;--digit-gradient: linear-gradient( 180deg, #f3e6c4 0%, #d4af37 35%, #8a6a1e 60%, #f0c850 80%, #d4af37 100% );--digit-shadow: 0 0 28px rgba(212, 175, 55, .4), 0 2px 0 rgba(0, 0, 0, .5);--button-shadow: 0 6px 22px rgba(212, 175, 55, .18)}[data-theme=marble] .clock{-webkit-text-fill-color:transparent;color:transparent;background-clip:text;-webkit-background-clip:text}[data-theme=marble] .clock-ampm{-webkit-text-fill-color:var(--fg-dim);color:var(--fg-dim)}[data-theme=marble] .btn.primary{background:linear-gradient(180deg,#f0c850,#d4af37 60%,#a07a1a);color:#1a1206;border:1px solid #8a6a1e}[data-theme=marble] .countdown-ring .ring-progress{stroke:var(--accent);filter:drop-shadow(0 0 12px var(--accent))}[data-theme=sandstone]{--bg: #3a2418;--bg-elev: #4a2f20;--fg: #f4e2c4;--fg-dim: #c7a787;--accent: #9b111e;--accent-strong: #c7172a;--danger: #ff7548;--surface: rgba(244, 226, 196, .06);--surface-strong: rgba(244, 226, 196, .12);--border: rgba(244, 226, 196, .18);--shadow: 0 10px 30px rgba(0, 0, 0, .45);--font-display: "Cinzel", "Trajan Pro", Georgia, serif;--digit-shadow: 0 2px 0 rgba(60, 20, 8, .6), 0 0 24px rgba(155, 17, 30, .15)}[data-theme=sandstone] .btn.primary{background:linear-gradient(180deg,#c7172a,#9b111e 65%,#6d0a16);color:#f4e2c4}[data-theme=sandstone] .countdown-ring .ring-progress{stroke:#c7172a;filter:drop-shadow(0 0 10px rgba(199,23,42,.7))}[data-theme=cyberpunk]{--bg: #0a0420;--bg-elev: #14082e;--fg: #f0f8ff;--fg-dim: #8a7cf2;--accent: #ff2ec4;--accent-strong: #00f0ff;--danger: #ff3860;--surface: rgba(255, 46, 196, .08);--surface-strong: rgba(0, 240, 255, .16);--border: rgba(0, 240, 255, .32);--shadow: 0 0 32px rgba(255, 46, 196, .4);--font-display: "Orbitron", "Rajdhani", ui-sans-serif, sans-serif;--digit-shadow: 0 0 8px #ff2ec4, 0 0 18px #ff2ec4, 0 0 32px #00f0ff;--button-shadow: 0 0 18px rgba(255, 46, 196, .35);--scanline-opacity: .18}[data-theme=cyberpunk] .clock{color:#f0f8ff;position:relative}[data-theme=cyberpunk] .btn.primary{background:#ff2ec4;color:#0a0420;text-shadow:0 0 8px rgba(255,255,255,.6);border:1px solid #00f0ff}[data-theme=cyberpunk] .network-badge .dot{background:#00f0ff;box-shadow:0 0 8px #00f0ff}[data-theme=cyberpunk] .countdown-ring .ring-progress{stroke:#ff2ec4;filter:drop-shadow(0 0 12px #ff2ec4) drop-shadow(0 0 18px #00f0ff)}[data-theme=dos]{--bg: #0000aa;--bg-elev: #0000aa;--fg: #ffffff;--fg-dim: #aaaaaa;--accent: #ffff55;--accent-strong: #ffff00;--danger: #ff5555;--surface: #0000aa;--surface-strong: #5555ff;--border: #aaaaaa;--shadow: none;--font-display: "Px437 IBM VGA8", "Perfect DOS VGA 437", "VT323", "Courier New", monospace;--font-mono: var(--font-display);--digit-shadow: none;--button-shadow: none;--scanline-opacity: .08}[data-theme=dos] body,[data-theme=dos] .app{background:#00a}[data-theme=dos] .clock{font-weight:400;letter-spacing:0;font-family:var(--font-display)}[data-theme=dos] .btn{border-radius:0;border-width:1px;border-style:solid;background:#00a;color:#fff;text-transform:uppercase;letter-spacing:.12em;box-shadow:inset 1px 1px #55f,inset -1px -1px #008}[data-theme=dos] .btn.primary{background:#aaa;color:#00a}[data-theme=dos] .btn:before{content:"[ ";color:var(--accent)}[data-theme=dos] .btn:after{content:" ]";color:var(--accent)}[data-theme=dos] .btn .icon{display:none}[data-theme=dos] .picker,[data-theme=dos] .network-badge,[data-theme=dos] .sound-list,[data-theme=dos] .toggle-row,[data-theme=dos] .theme-tile{border-radius:0;background:#00a;border:1px solid #aaaaaa}[data-theme=dos] .preset-chip{border-radius:0;border:1px solid #aaaaaa;background:#00a;color:#fff}[data-theme=dos] .preset-chip[data-default=true]:before{content:">";color:var(--accent);margin-right:4px}[data-theme=dos] .countdown-ring svg{display:none}[data-theme=dos] .clock-date,[data-theme=dos] .topbar .title{color:var(--fg);font-weight:400}[data-theme=dos] .clock .sep{animation:dos-blink 1s steps(1) infinite}@keyframes dos-blink{50%{opacity:0}}
