:root{--bg: #0f1115;--surface: #171a21;--surface-2: #1e222b;--line: #2a2f3a;--text: #e8eaed;--text-dim: #9aa0a6;--accent: #4f8cff;--good: #35c759;--warn: #ffcc00;--bad: #ff4d4f;--r-sm: 6px;--r-md: 10px;--r-lg: 16px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-6: 24px;--font: ui-monospace, "SF Mono", "Cascadia Mono", Menlo, monospace;--font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;color-scheme:dark}[data-theme=light]{--bg: #f6f7f9;--surface: #ffffff;--surface-2: #eef0f4;--line: #d5d9e0;--text: #1b1e24;--text-dim: #5f6672;--good: #1f9d4d;--warn: #b58900;--bad: #d7373f;color-scheme:light}*{box-sizing:border-box;touch-action:manipulation}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;height:100%}body{display:flex;flex-direction:column;min-height:100dvh}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;padding:0}.ps-num{font-family:var(--font);font-variant-numeric:tabular-nums}.ps-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:44px;min-width:44px;padding:0 var(--sp-4);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--line);color:var(--text);font-size:15px;font-weight:600;transition:background .12s ease,border-color .12s ease;user-select:none;-webkit-user-select:none}.ps-btn:hover{background:var(--surface)}.ps-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ps-btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.ps-btn--primary:hover{filter:brightness(1.1);background:var(--accent)}.ps-btn--ghost{background:transparent;border-color:transparent}.ps-btn--icon{padding:0;width:44px}.ps-btn[disabled]{opacity:.45;cursor:default}.ps-btn[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.ps-header{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--line);background:var(--surface);position:sticky;top:0;z-index:10;padding-top:max(var(--sp-2),env(safe-area-inset-top))}.ps-header__title{font-weight:800;font-size:17px;letter-spacing:.02em;margin-right:var(--sp-1)}.ps-header__title em{color:var(--accent);font-style:normal}.ps-header__sub{color:var(--text-dim);font-size:13px}.ps-header__spacer{flex:1}.ps-modal-backdrop{position:fixed;inset:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:100;padding:var(--sp-4);animation:ps-fade-in .12s ease}.ps-modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);width:min(440px,100%);max-height:min(85dvh,700px);display:flex;flex-direction:column;overflow:hidden;animation:ps-pop-in .14s ease}.ps-modal__head{display:flex;align-items:center;padding:var(--sp-4);border-bottom:1px solid var(--line)}.ps-modal__title{font-size:17px;font-weight:800;flex:1;margin:0}.ps-modal__body{padding:var(--sp-4);overflow-y:auto}.ps-modal__actions{display:flex;gap:var(--sp-2);padding:var(--sp-4);border-top:1px solid var(--line)}.ps-modal__actions>.ps-btn{flex:1}@keyframes ps-fade-in{0%{opacity:0}}@keyframes ps-pop-in{0%{opacity:0;transform:scale(.96)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;transition-duration:1ms!important}}.ps-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-2);text-align:center;margin-bottom:var(--sp-4)}.ps-stat__value{font-size:24px;font-weight:800;font-family:var(--font)}.ps-stat__label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em}.ps-hist{display:flex;flex-direction:column;gap:var(--sp-1)}.ps-hist__row{display:flex;align-items:center;gap:var(--sp-2);font-size:13px}.ps-hist__label{width:90px;color:var(--text-dim);text-align:right;flex-shrink:0}.ps-hist__track{flex:1;background:var(--surface-2);border-radius:var(--r-sm);overflow:hidden;height:20px}.ps-hist__bar{height:100%;background:var(--accent);border-radius:var(--r-sm);min-width:2px;display:flex;align-items:center;justify-content:flex-end;padding-right:var(--sp-1);color:#fff;font-size:11px;font-family:var(--font)}.ps-setting{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3) 0;border-bottom:1px solid var(--line)}.ps-setting:last-child{border-bottom:none}.ps-setting__label{font-size:15px}.ps-setting__hint{font-size:12px;color:var(--text-dim);margin-top:2px}.ps-toggle{position:relative;width:52px;height:30px;border-radius:15px;background:var(--surface-2);border:1px solid var(--line);flex-shrink:0;transition:background .15s ease}.ps-toggle:after{content:"";position:absolute;top:2px;left:2px;width:24px;height:24px;border-radius:50%;background:var(--text-dim);transition:transform .15s ease,background .15s ease}.ps-toggle[aria-checked=true]{background:var(--accent);border-color:var(--accent)}.ps-toggle[aria-checked=true]:after{transform:translate(22px);background:#fff}.ps-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ps-seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden}.ps-seg>button{padding:var(--sp-2) var(--sp-3);font-size:13px;min-height:36px;background:var(--surface-2);color:var(--text-dim)}.ps-seg>button[aria-pressed=true]{background:var(--accent);color:#fff}.ps-toast-host{position:fixed;bottom:calc(var(--sp-6) + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;gap:var(--sp-2);align-items:center;pointer-events:none}.ps-toast{background:var(--surface-2);border:1px solid var(--line);color:var(--text);border-radius:var(--r-md);padding:var(--sp-2) var(--sp-4);font-size:14px;box-shadow:0 4px 16px #00000059;animation:ps-pop-in .14s ease}.ps-kbd{font-family:var(--font);font-size:12px;background:var(--surface-2);border:1px solid var(--line);border-bottom-width:2px;border-radius:var(--r-sm);padding:1px 6px}.ps-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:var(--sp-1)}.ps-cal__day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line);font-size:12px;font-family:var(--font);color:var(--text-dim)}.ps-cal__day--done{background:var(--accent);border-color:var(--accent);color:#fff}.ps-cal__day--today{outline:2px solid var(--accent);outline-offset:1px}.ps-cal__day--future{opacity:.35}:root{--accent: #4f8cff}#app{display:flex;flex-direction:column;flex:1;min-height:0}.hud-chip{display:inline-flex;align-items:center;gap:4px;font-family:var(--font);font-variant-numeric:tabular-nums;font-size:14px;color:var(--text);padding:0 var(--sp-2);white-space:nowrap}.hud-risk{color:var(--warn);font-size:14px;display:none}.hud-risk--on{display:inline-flex}.hud-badge{font-size:10px;font-family:var(--font);color:var(--text-dim);margin-left:2px;min-width:12px;text-align:left}.board-wrap{position:relative;flex:1;min-height:0;overflow:hidden;background:var(--surface)}.board-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:pointer}.board-wrap--shake{animation:boom-shake .4s ease}@keyframes boom-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px,2px)}40%{transform:translate(5px,-3px)}60%{transform:translate(-4px,-2px)}80%{transform:translate(3px,2px)}}.magnifier{position:absolute;width:120px;height:120px;border-radius:50%;border:2px solid var(--accent);box-shadow:0 6px 20px #0006;overflow:hidden;pointer-events:none;z-index:40;display:none;background:var(--surface)}.magnifier canvas{width:100%;height:100%;display:block}.magnifier--on{display:block}.gen-overlay{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);background:var(--surface);z-index:30;color:var(--text-dim);font-size:14px}.gen-overlay--on{display:flex}.gen-track{width:min(260px,70vw);height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}.gen-bar{height:100%;width:0%;background:var(--accent);border-radius:3px;transition:width .12s ease}.toolbar{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);padding-bottom:max(var(--sp-2),env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--surface)}body.left-handed .toolbar,body.left-handed .ps-header{flex-direction:row-reverse}.toolbar .ps-btn{font-size:17px}.toolbar .ps-btn[aria-pressed=true]{background:var(--accent);color:#fff;border-color:var(--accent)}.sheet-time{font-size:44px;font-weight:800;text-align:center;font-family:var(--font)}.sheet-stars{text-align:center;font-size:24px;color:var(--warn);letter-spacing:4px;margin:var(--sp-1) 0 var(--sp-2)}.sheet-sub{text-align:center;color:var(--text-dim);font-size:14px;margin:2px 0}.sheet-streak{text-align:center;font-size:15px;margin-top:var(--sp-2)}.sheet-percentile{text-align:center;color:var(--accent);font-size:14px;font-weight:600;margin-top:var(--sp-2);min-height:18px}.sheet-boom{text-align:center;font-size:44px;margin-bottom:var(--sp-2)}.menu-list{display:flex;flex-direction:column;gap:var(--sp-2)}.menu-list .ps-btn{justify-content:flex-start}.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-3)}.cal-title{font-weight:700}.cal-head{text-align:center;font-size:10px;color:var(--text-dim);text-transform:uppercase;align-self:center}.cal-clickable{cursor:pointer}.cal-clickable:hover{border-color:var(--accent)}.ps-cal__day[disabled]{cursor:default}.htp-grid{display:grid;gap:3px;justify-content:center;margin:var(--sp-3) 0}.htp-cell{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border-radius:var(--r-sm);font-family:var(--font);font-weight:800;font-size:16px;cursor:default}.htp-hidden{background:var(--surface-2);border:1px solid var(--line);cursor:pointer}.htp-open,.htp-mine{background:var(--bg)}.htp-flagged{background:var(--surface-2);border:1px solid var(--line)}.htp-good{background:var(--good);color:#fff}.htp-glow{outline:2px solid var(--accent)}.htp-n1{color:var(--accent)}.htp-n2{color:var(--good)}.htp-feedback{min-height:40px;font-size:14px}.htp-keys{list-style:none;padding:0;display:flex;flex-direction:column;gap:6px;font-size:14px}.ps-modal__body p{margin:0 0 var(--sp-3);line-height:1.5}
