*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0a0a0f;--surface:#111118;--border:#222230;--text:#e8e8e8;--accent:#fff;--flash-accent:#fcd34d;--muted:#555;--font:"JetBrains Mono", monospace}html,body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;min-height:100dvh;font-size:14px;line-height:1.4;overflow-x:hidden}button{font-family:var(--font);cursor:pointer;color:var(--text);background:0 0;border:none;border-radius:20px;font-size:14px}input,textarea,select{font-family:var(--font);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:12px;outline:none;padding:8px 12px;font-size:14px}input:focus,textarea:focus{border-color:var(--accent)}#app{flex-direction:column;max-width:480px;min-height:100dvh;margin:0 auto;padding:0;display:flex}.header{border-bottom:1px solid var(--border);background:var(--bg);z-index:100;justify-content:space-between;align-items:center;padding:12px 16px;display:flex;position:sticky;top:0}.header-left{align-items:center;gap:12px;display:flex}.app-name{color:var(--accent);letter-spacing:-.5px;font-size:16px;font-weight:700}.mode-toggle{border:1px solid var(--border);border-radius:20px;gap:0;display:flex;overflow:hidden}.mode-btn{color:var(--muted);background:var(--surface);border:none;min-height:32px;padding:6px 12px;font-size:12px;transition:color .15s,background .15s}.mode-btn.active{color:var(--accent);background:var(--bg)}.header-right{align-items:center;gap:8px;display:flex}.overall-pct{color:var(--muted);font-size:12px}.overall-pct span{color:var(--accent)}.scale-select-btn{color:var(--muted);border:1px solid var(--border);min-height:32px;padding:4px 8px;font-size:12px}.scale-select-btn:active{color:var(--accent)}.main-content{flex:1;padding:16px 16px 80px}.setup-view{flex-direction:column;gap:24px;display:flex}.setup-title{color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;font-size:13px}.setup-section{flex-direction:column;gap:8px;display:flex}.grade-picker{flex-wrap:wrap;gap:6px;display:flex}.grade-btn{border:1px solid var(--border);background:var(--surface);min-width:44px;min-height:44px;color:var(--text);padding:10px 14px;font-size:13px;transition:all .1s}.grade-btn.selected{border-color:var(--accent);color:var(--accent);background:var(--bg)}.depth-control{align-items:center;gap:16px;display:flex}.depth-num{color:var(--accent);text-align:center;min-width:32px;font-size:24px}.depth-btn{border:1px solid var(--border);background:var(--surface);justify-content:center;align-items:center;width:44px;height:44px;font-size:24px;display:flex}.setup-cta{background:var(--accent);color:#111;letter-spacing:.5px;min-height:48px;margin-top:8px;padding:14px 24px;font-size:15px;font-weight:700}.pyramid{flex-direction:column;gap:8px;display:flex}.pyramid-row{align-items:center;gap:8px;min-height:44px;display:flex}.row-grade{color:var(--muted);text-align:right;flex-shrink:0;width:36px;font-size:12px}.row-grade.project-grade{color:var(--accent)}.row-label{color:var(--muted);text-align:right;flex-shrink:0;width:36px;font-size:12px}.row-label.project-grade{color:var(--accent)}.pyramid-row-wrapper{transition:all .15s}.pyramid-row-wrapper.selected{border:1px solid #ffffff40;border-radius:12px;padding:8px;transition:all .15s;transform:scale(1.03);box-shadow:0 0 16px #ffffff14,inset 0 0 20px #ffffff05}.row-label.selected-label{color:#fff;font-weight:700}.row-inner{flex-direction:column;flex:1;min-width:0;display:flex}.row-metrics{font-family:var(--font);color:#888;margin-top:4px;padding-left:2px;font-size:11px}.row-deselect-btn{color:var(--muted);border-radius:20px;justify-content:center;align-items:center;width:32px;min-width:32px;height:32px;padding:0;font-size:14px;display:flex}.pyramid-svg-area{justify-content:center;align-items:center;min-width:0;display:flex}.pyramid-row-svg{display:block;overflow:visible}.tri-up{cursor:pointer;transform-box:fill-box;transform-origin:50%;transition:opacity .1s}.tri-up:active{opacity:.7}.row-controls{gap:4px;display:flex}.block-grid{flex-wrap:wrap;flex:1;gap:4px;display:flex}.block{border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:4px;justify-content:center;align-items:center;width:32px;min-width:32px;height:32px;min-height:32px;font-size:14px;transition:background .1s,border-color .1s;display:flex;position:relative}.block:active{opacity:.7}.block.state-empty{background:var(--bg);border-color:var(--border)}.block.state-sent{background:var(--accent);border-color:var(--accent)}.block.state-flash{background:var(--flash-accent);border-color:var(--flash-accent);color:#111}.block.state-attempted{border:1px dashed var(--muted);color:var(--muted);background:0 0}.block.state-outdoor:after{content:"🪨";font-size:10px;position:absolute;bottom:1px;right:1px}@keyframes blockPop{0%{transform:scale(1)}50%{transform:scale(1.15)}to{transform:scale(1)}}.block.pop{animation:.15s ease-in-out blockPop}@keyframes pyramidPulse{0%{opacity:1}50%{opacity:.6}to{opacity:1}}.pyramid.pulse{animation:.8s ease-in-out pyramidPulse}.row-meta{flex-shrink:0;align-items:center;gap:8px;display:flex}.row-count{color:var(--muted);white-space:nowrap;text-align:right;border-radius:20px;min-width:32px;font-size:11px}.row-count.complete{color:var(--accent)}.quick-btn{border:1px solid var(--border);background:var(--surface);width:28px;height:28px;color:var(--muted);justify-content:center;align-items:center;min-width:28px;min-height:28px;padding:0;font-size:16px;line-height:1;display:flex}.quick-btn:active{color:var(--accent);border-color:var(--accent)}.target-edit{text-align:center;background:var(--surface);border:1px solid var(--border);width:36px;color:var(--text);padding:2px 4px;font-size:12px}.pyramid-controls{gap:8px;margin-top:8px;display:flex}.pyramid-ctrl-btn{border:1px solid var(--border);background:var(--surface);color:var(--muted);min-height:36px;padding:8px 14px;font-size:12px}.pyramid-ctrl-btn:active{color:var(--accent);border-color:var(--accent)}.panel-backdrop{z-index:200;background:#000000b3;align-items:flex-end;display:flex;position:fixed;inset:0}.detail-panel{background:var(--surface);border-top:1px solid var(--border);border-radius:20px 20px 0 0;flex-direction:column;gap:16px;width:100%;max-height:85dvh;padding:20px 16px 32px;transition:transform .25s;display:flex;overflow-y:auto;transform:translateY(0)}.detail-panel.entering{transform:translateY(100%)}.panel-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding-bottom:12px;display:flex}.panel-title{color:var(--accent);font-size:15px;font-weight:700}.panel-close{color:var(--muted);justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;display:flex}.panel-close:active{color:var(--text)}.field-group{flex-direction:column;gap:6px;display:flex}.field-label{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-size:11px}.field-input{background:var(--bg);border:1px solid var(--border);width:100%;min-height:44px;color:var(--text);border-radius:12px;padding:10px 12px}textarea.field-input{resize:vertical;min-height:80px}.toggle-row{flex-wrap:wrap;gap:8px;display:flex}.toggle-btn{border:1px solid var(--border);background:var(--bg);min-height:44px;color:var(--muted);padding:10px 16px;font-size:13px;transition:all .1s}.toggle-btn.active{border-color:var(--accent);color:var(--accent);background:var(--surface)}.flash-toggle{letter-spacing:.5px;flex:1;min-height:52px;font-size:14px;font-weight:700}.feel-row{gap:8px;display:flex}.feel-btn{letter-spacing:.5px;flex:1;min-height:44px;font-size:12px;font-weight:700}.outdoor-toggle{width:100%;min-height:44px;font-size:13px}.panel-actions{gap:8px;padding-top:8px;display:flex}.btn-save{background:var(--accent);color:#111;flex:1;min-height:52px;padding:14px;font-size:15px;font-weight:700}.panel-delete-row{justify-content:center;padding-top:4px;display:flex}.btn-delete-link{color:var(--muted);background:0 0;border:none;border-radius:0;padding:8px 16px;font-size:12px}.btn-delete-link:active{color:#ef4444}.btn-delete{border:1px solid var(--border);min-height:48px;color:var(--muted);padding:14px 20px;font-size:14px}.btn-delete:active{color:#ef4444;border-color:#ef4444}.session-bar{background:var(--surface);border-top:1px solid var(--border);z-index:150;border-radius:20px 20px 0 0;flex-direction:column;gap:8px;max-width:480px;margin:0 auto;padding:10px 16px 12px;display:flex;position:fixed;bottom:0;left:0;right:0}.session-top-row{justify-content:space-between;align-items:center;display:flex}.session-timer{color:var(--accent);font-variant-numeric:tabular-nums;font-size:16px;font-weight:700}.session-end-btn{color:var(--muted);border:1px solid var(--border);min-height:36px;padding:6px 12px;font-size:12px}.session-end-btn:active{color:#ef4444;border-color:#ef4444}.warmup-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.warmup-label{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-size:11px}.warmup-grade-btn{border:1px solid var(--border);background:var(--bg);color:var(--muted);min-height:36px;padding:6px 10px;font-size:12px}.warmup-grade-btn:active{color:var(--accent);border-color:var(--accent)}.warmup-grade-btn .count{color:var(--accent);margin-left:4px}.rest-timer-row{align-items:center;gap:10px;display:flex}.rest-countdown{color:var(--flash-accent);font-variant-numeric:tabular-nums;font-size:14px;font-weight:700}.rest-cancel-btn{color:var(--muted);border:1px solid var(--border);min-height:32px;padding:4px 10px;font-size:12px}.start-session-bar{background:var(--bg);border-top:1px solid var(--border);z-index:150;border-radius:20px 20px 0 0;gap:8px;max-width:480px;margin:0 auto;padding:10px 16px 12px;display:flex;position:fixed;bottom:0;left:0;right:0}.start-session-btn{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--muted);flex:1;padding:12px;font-size:13px}.start-session-btn:active{color:var(--accent);border-color:var(--accent)}.history-btn{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--muted);padding:12px 16px;font-size:12px}.history-btn:active,.history-btn.active{color:var(--accent);border-color:var(--accent)}.export-btn{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--muted);padding:12px 16px;font-size:12px}.export-btn:active{color:var(--accent)}.history-view{flex-direction:column;gap:8px;display:flex}.history-title{color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:4px;font-size:11px}.history-item{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:12px;justify-content:space-between;align-items:flex-start;gap:12px;min-height:60px;padding:14px;display:flex}.history-item.milestone{border-color:var(--accent)}.history-item:active{background:var(--bg)}.history-item-left{flex-direction:column;gap:4px;display:flex}.history-grade{color:var(--text);font-size:16px;font-weight:700}.history-item.milestone .history-grade{color:var(--accent)}.history-type{color:var(--muted);font-size:11px}.history-milestone-star{color:var(--accent);font-size:16px}.history-date{color:var(--muted);font-size:11px}.history-empty{color:var(--muted);text-align:center;padding:32px 0;font-size:13px}.toast{background:var(--surface);border:1px solid var(--accent);color:var(--accent);letter-spacing:1px;z-index:10000;pointer-events:none;border-radius:12px;padding:10px 20px;font-size:13px;font-weight:700;animation:1.5s forwards toastFade;position:fixed;top:80px;left:50%;transform:translate(-50%)}@keyframes toastFade{0%{opacity:0;transform:translate(-50%)translateY(-8px)}15%{opacity:1;transform:translate(-50%)translateY(0)}70%{opacity:1}to{opacity:0}}.ceremony-overlay{z-index:9998;background:#111111f5;justify-content:center;align-items:center;padding:32px 24px;display:flex;position:fixed;inset:0}.ceremony-content{background:var(--surface);border-radius:16px;flex-direction:column;align-items:flex-start;gap:32px;width:100%;max-width:320px;padding:28px 24px;display:flex}.ceremony-text{font-family:var(--font);color:var(--text);white-space:pre-wrap;font-size:20px;line-height:1.6}.ceremony-buttons{flex-wrap:wrap;gap:16px;display:flex}.ceremony-btn{color:var(--muted);background:0 0;border:none;min-height:44px;padding:12px 0;font-size:16px}.ceremony-btn.accent{color:var(--accent)}.ceremony-btn:active{opacity:.7}.scale-picker-overlay{z-index:300;background:#000000b3;align-items:flex-end;display:flex;position:fixed;inset:0}.scale-picker-panel{background:var(--surface);border-top:1px solid var(--border);border-radius:20px 20px 0 0;flex-direction:column;gap:12px;width:100%;padding:20px 16px 32px;display:flex}.scale-picker-title{color:var(--muted);text-transform:uppercase;letter-spacing:1px;font-size:11px}.scale-option-btn{border:1px solid var(--border);background:var(--bg);min-height:48px;color:var(--text);text-align:left;padding:14px 16px;font-size:14px}.scale-option-btn.active{border-color:var(--accent);color:var(--accent)}.session-summary-overlay{z-index:9998;background:#111111f5;justify-content:center;align-items:center;padding:32px 24px;display:flex;position:fixed;inset:0}.session-summary-content{background:var(--surface);border-radius:16px;flex-direction:column;gap:24px;width:100%;max-width:320px;padding:24px;display:flex}.session-summary-text{font-family:var(--font);color:var(--text);white-space:pre-wrap;font-size:15px;line-height:1.8}.session-summary-close{border:1px solid var(--border);min-height:48px;color:var(--muted);padding:14px;font-size:14px}.warmup-section{border-top:1px solid var(--border);margin-top:24px;padding-top:20px}.warmup-section-title{color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:12px;font-size:11px}.warmup-grades{flex-wrap:wrap;gap:8px;display:flex}.warmup-add-btn{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--muted);padding:8px 14px;font-size:13px}.warmup-add-btn:active{color:var(--accent);border-color:var(--accent)}.warmup-entry{border:1px solid var(--border);background:var(--surface);align-items:center;gap:6px;min-height:44px;padding:8px 14px;font-size:13px;display:flex}.warmup-count{color:var(--accent)}.hidden{display:none!important}.accent-text{color:var(--accent)}.muted-text{color:var(--muted)}
