*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--text-primary:#fafafa;--text-secondary:#b8b6b0;--text-tertiary:#76746e;--success:#6be3a4;--warning:#f2c063;--danger:#ff6b6b;--card-bg:hsla(0,0%,100%,.04);--card-radius:16px;--font-sans:-apple-system,BlinkMacSystemFont,"Inter","Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace}html{font-family:var(--font-sans);color:var(--text-primary)}body{background:#050506;min-height:100vh;overflow-x:hidden;position:relative}body:before{background:radial-gradient(ellipse 60% 50% at 82% 14%,rgba(224,118,88,.16) 0,transparent 70%),radial-gradient(ellipse 50% 60% at 18% 90%,rgba(180,180,200,.06) 0,transparent 70%);filter:blur(40px);animation:washDrift 36s ease-in-out infinite alternate}body:after,body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0}body:after{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='3' height='3'%3E%3Ccircle cx='1.5' cy='1.5' r='0.6' fill='rgba(255,255,255,0.014)'/%3E%3C/svg%3E");background-repeat:repeat}@keyframes washDrift{0%{transform:translate(0) scale(1)}50%{transform:translate(-15px,10px) scale(1.04)}to{transform:translate(10px,-8px) scale(.97)}}.page-wrap{position:relative;z-index:1;max-width:1100px;margin:0 auto;padding:32px 20px 80px}.dash-nav{display:flex;align-items:center;gap:8px;margin-bottom:28px;flex-wrap:wrap}.dash-nav-link{font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);text-decoration:none;padding:6px 12px;border-radius:8px;border:1px solid transparent;transition:color .2s,border-color .2s,background .2s}.dash-nav-link:hover{color:var(--text-secondary);background:hsla(0,0%,100%,.04)}.dash-nav-link.active{color:var(--text-primary);border-color:hsla(0,0%,100%,.12);background:hsla(0,0%,100%,.06)}.dash-nav-spacer{flex:1 1}.dash-nav-logout{font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-tertiary);background:none;border:none;cursor:pointer;padding:6px 12px;border-radius:8px;transition:color .2s,background .2s}.dash-nav-logout:hover{color:var(--danger);background:hsla(0,100%,71%,.08)}.dash-title{font-size:28px;font-weight:700;letter-spacing:-.025em;background:linear-gradient(180deg,#fff,#c7c4bc 120%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:14px}@media (max-width:480px){.dash-title{font-size:22px}}.card{background:var(--card-bg);border-radius:var(--card-radius);padding:20px 22px;-webkit-backdrop-filter:blur(24px) saturate(1.2);backdrop-filter:blur(24px) saturate(1.2);box-shadow:0 12px 40px rgba(0,0,0,.45);margin-bottom:12px;position:relative;overflow:hidden}.section-title{font-size:10.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--text-tertiary);display:flex;align-items:center;gap:12px;margin-bottom:12px}.section-title:before{content:"";width:18px;height:1px;background:var(--text-tertiary);opacity:.6}.section-title:after{content:"";flex:1 1;height:1px;background:linear-gradient(90deg,hsla(0,0%,100%,.08),transparent)}.input{flex:1 1;min-width:120px;padding:10px 14px;border-radius:12px;border:1px solid hsla(0,0%,100%,.08);background:hsla(0,0%,100%,.04);color:var(--text-primary);font-size:13px;font-family:var(--font-sans);outline:none;transition:border-color .2s}.input::placeholder{color:var(--text-tertiary)}.input:focus{border-color:hsla(0,0%,100%,.25)}.btn-primary{padding:10px 20px;border-radius:12px;border:none;background:linear-gradient(180deg,#fff,#e8e5dd);color:#0a0a0b;font-size:13px;font-weight:700;font-family:var(--font-sans);cursor:pointer;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.9),0 4px 16px rgba(0,0,0,.25);transition:transform .15s,box-shadow .15s;white-space:nowrap}.btn-primary:hover{transform:translateY(-1px);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.9),0 6px 20px rgba(0,0,0,.3)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-ghost{padding:10px 20px;border-radius:12px;border:1px solid hsla(0,0%,100%,.1);background:hsla(0,0%,100%,.04);color:var(--text-primary);font-size:13px;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:transform .15s,background .2s;white-space:nowrap}.btn-ghost:hover{background:hsla(0,0%,100%,.08);transform:translateY(-1px)}.btn-ghost:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-danger{padding:10px 20px;border-radius:12px;border:1px solid hsla(0,100%,71%,.25);background:hsla(0,100%,71%,.08);color:var(--danger);font-size:13px;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:background .2s;white-space:nowrap}.btn-danger:hover{background:hsla(0,100%,71%,.15)}.status-line{font-size:11px;color:var(--text-tertiary);margin-top:6px;min-height:16px}.status-line.err{color:var(--danger)}.status-line.ok{color:var(--success)}.empty-state{font-size:12px;color:var(--text-tertiary);font-style:italic;padding:14px 0;text-align:center}.select{border-radius:12px;border:1px solid hsla(0,0%,100%,.08);background:hsla(0,0%,100%,.04);color:var(--text-primary);font-size:13px;font-family:var(--font-sans);outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2376746E' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding:10px 32px 10px 14px;transition:border-color .2s}.select:focus{border-color:hsla(0,0%,100%,.25)}.select option{background:#1a1a1b}.textarea{width:100%;padding:10px 14px;border-radius:12px;border:1px solid hsla(0,0%,100%,.08);background:hsla(0,0%,100%,.04);color:var(--text-primary);font-size:13px;font-family:var(--font-sans);outline:none;resize:vertical;min-height:80px;transition:border-color .2s}.textarea::placeholder{color:var(--text-tertiary)}.textarea:focus{border-color:hsla(0,0%,100%,.25)}.form-label{font-size:10.5px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);display:block;margin-bottom:6px}.form-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}.form-col{display:flex;flex-direction:column;flex:1 1;min-width:120px}.modal-backdrop{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.7);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:#0e0e10;border:1px solid hsla(0,0%,100%,.08);border-radius:20px;padding:28px;width:100%;max-width:520px;max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px rgba(0,0,0,.6);position:relative}.modal-title{font-size:18px;font-weight:700;letter-spacing:-.02em;margin-bottom:20px}.modal-close{position:absolute;top:16px;right:16px;background:none;border:none;cursor:pointer;font-size:20px;color:var(--text-tertiary);width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:8px;transition:background .2s,color .2s}.modal-close:hover{background:hsla(0,0%,100%,.06);color:var(--text-primary)}.workout-item{display:flex;align-items:flex-start;gap:14px;padding:14px 16px;border-radius:12px;margin-bottom:8px;background:hsla(0,0%,100%,.035);border:1px solid hsla(0,0%,100%,.06);transition:background .2s}.workout-item:hover{background:hsla(0,0%,100%,.055)}.workout-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}.workout-icon.run{background:rgba(107,227,164,.12)}.workout-icon.strength{background:rgba(242,192,99,.12)}.workout-icon.cycling{background:rgba(100,160,255,.12)}.workout-icon.general{background:rgba(180,140,255,.12)}.workout-body{flex:1 1}.workout-title{font-size:14px;font-weight:600;margin-bottom:4px}.workout-meta{font-family:var(--font-mono);font-size:11px;color:var(--text-tertiary);display:flex;flex-wrap:wrap;gap:10px}.workout-meta span{display:flex;align-items:center;gap:4px}.workout-delete{background:none;border:none;cursor:pointer;font-size:14px;color:var(--text-tertiary);opacity:0;padding:4px;transition:opacity .2s,color .2s;align-self:center}.workout-item:hover .workout-delete{opacity:1}.workout-delete:hover{color:var(--danger)}.exercise-table{width:100%;border-collapse:collapse;margin-top:8px}.exercise-table td,.exercise-table th{padding:6px 10px;text-align:left;font-size:12px;border-bottom:1px solid hsla(0,0%,100%,.05)}.exercise-table th{font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-tertiary)}.goal-ticker{display:flex;align-items:center;gap:10px;padding:7px 12px;border-radius:12px;background-image:linear-gradient(180deg,rgba(0,0,0,.42),rgba(0,0,0,.3)),repeating-linear-gradient(0deg,hsla(0,0%,100%,.025),hsla(0,0%,100%,.025) 1px,transparent 0,transparent 3px);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.04);position:relative;overflow:hidden;margin-bottom:18px}.goal-ticker:after{content:"";position:absolute;top:0;bottom:0;width:30%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.04),transparent);animation:tickerSweep 8s ease-in-out infinite;pointer-events:none}@keyframes tickerSweep{0%{left:-40%}to{left:110%}}.led-dot{width:7px;height:7px;border-radius:50%;background:#6be3a4;box-shadow:0 0 8px rgba(107,227,164,.7);animation:ledPulse 1.6s ease-in-out infinite}@keyframes ledPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.85)}}.ticker-label{font-family:var(--font-mono);font-size:9.5px;font-weight:800;letter-spacing:.18em;color:var(--text-tertiary);white-space:nowrap}.ticker-stage{flex:1 1;height:22px;position:relative;overflow:hidden}.ticker-row{display:flex;align-items:center;gap:8px;height:22px;position:absolute;width:100%;font-family:var(--font-mono);font-size:12.5px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-primary);white-space:nowrap}.ticker-row.leaving{animation:tLeave .45s cubic-bezier(.55,0,.55,1) forwards}.ticker-row.entering{animation:tEnter .45s cubic-bezier(.22,1,.36,1) forwards}@keyframes tLeave{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}@keyframes tEnter{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.ticker-status{width:18px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.ticker-status[data-s=done]{color:#6be3a4}.ticker-status[data-s=empty],.ticker-status[data-s=pending]{color:var(--text-tertiary)}.ticker-text{flex:1 1;overflow:hidden;text-overflow:ellipsis}.ticker-meta{font-family:var(--font-mono);font-size:11px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-secondary);padding:3px 8px;border-radius:999px;background:hsla(0,0%,100%,.04);white-space:nowrap;flex-shrink:0}.day-ring-wrap{display:flex;align-items:center;gap:26px;justify-content:center;flex-wrap:wrap}.ring-svg-box{width:168px;height:168px;position:relative;flex-shrink:0}.ring-svg-box svg{width:100%;height:100%}.ring-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;gap:2px}.ring-pct{font-size:40px;font-weight:800;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.04em;line-height:1}.ring-phase{font-size:9.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;margin-top:5px}.ring-clock,.ring-phase{font-family:var(--font-mono);color:var(--text-tertiary)}.ring-clock{font-size:10.5px}.ring-info{max-width:280px;display:flex;flex-direction:column;gap:6px}.ring-status{font-size:14px;font-weight:700}.ring-remaining{font-size:12px;color:var(--text-secondary)}.ring-hours,.ring-remaining{font-family:var(--font-mono)}.ring-hours{font-size:11px;color:var(--text-tertiary)}.goal-list{list-style:none}.goal-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:12px;margin-bottom:6px;background:hsla(0,0%,100%,.035);border:1px solid hsla(0,0%,100%,.06);cursor:default;transition:background .2s}.goal-item:hover{background:hsla(0,0%,100%,.06)}.goal-item:hover .drag-handle,.goal-item:hover .goal-del{opacity:1}.goal-item.done{opacity:.45;background:rgba(107,227,164,.04)}.goal-item.done .goal-text{text-decoration:line-through;-webkit-text-decoration-color:hsla(0,0%,100%,.4);text-decoration-color:hsla(0,0%,100%,.4)}.goal-item.queued{background:rgba(242,192,99,.1);box-shadow:inset 3px 0 0 0 #f2c063}.goal-item.queued .goal-text{color:#ffe2a8}.goal-item.drag-over{border-top:2px solid hsla(0,0%,100%,.4)}.drag-handle{font-size:14px;color:var(--text-tertiary);cursor:-webkit-grab;cursor:grab;opacity:0;transition:opacity .2s;width:14px;text-align:center;letter-spacing:-2px;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0}.cb-wrap{width:22px;height:22px;flex-shrink:0;position:relative}.cb-wrap input{position:absolute;opacity:0;width:0;height:0}.cb-custom{width:22px;height:22px;border-radius:7px;border:1.5px solid hsla(0,0%,100%,.18);background:hsla(0,0%,100%,.04);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .25s,border-color .25s,box-shadow .25s;position:relative}.cb-custom:after{content:"";position:absolute;width:5px;height:9px;border-right:2px solid #050506;border-bottom:2px solid #050506;transform:rotate(45deg) scale(0) translateY(-1px);transition:transform .28s cubic-bezier(.34,1.56,.64,1)}.cb-wrap input:checked~.cb-custom{background:#6be3a4;border-color:#6be3a4;box-shadow:0 0 12px rgba(107,227,164,.4)}.cb-wrap input:checked~.cb-custom:after{transform:rotate(45deg) scale(1) translateY(-1px)}.goal-text{flex:1 1;font-size:14px;color:var(--text-primary);outline:none;min-height:1em;word-break:break-word}.goal-text[contenteditable=true]{outline:1px solid hsla(0,0%,100%,.25);border-radius:4px;padding:0 4px}.queue-btn{background:none;border:none;cursor:pointer;font-size:13px;color:var(--text-tertiary);opacity:.55;padding:4px;transition:opacity .2s,filter .2s}.queue-btn.active{color:#f2c063;opacity:1;filter:drop-shadow(0 0 4px rgba(242,192,99,.65))}.goal-del{background:none;border:none;cursor:pointer;font-size:14px;color:var(--text-tertiary);opacity:0;padding:4px;transition:opacity .2s,color .2s}.goal-del:hover{color:var(--danger)}.gm-bar{display:flex;gap:4px;height:6px;margin-bottom:16px}.gm-bar-seg{flex:1 1;border-radius:999px;background:hsla(0,0%,100%,.1)}.gm-bar-seg.done{background:#6be3a4;box-shadow:0 0 6px rgba(107,227,164,.4)}.gm-streak{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;background:hsla(0,0%,100%,.04);color:var(--text-tertiary);font-size:11px;font-weight:700}.gm-streak.active{background:rgba(242,192,99,.1);color:#f2c063;border:1px solid rgba(242,192,99,.32)}.gm-streak.active .streak-icon{filter:drop-shadow(0 0 6px rgba(242,192,99,.6))}.push-btn{width:100%;padding:10px 16px;border-radius:12px;border:1px dashed hsla(0,0%,100%,.12);background:none;cursor:pointer;font-size:12px;color:var(--text-tertiary);margin-bottom:12px;transition:color .2s,border-color .2s}.push-btn:hover{color:var(--text-primary);border-color:hsla(0,0%,100%,.25)}.show-more{display:flex;align-items:center;justify-content:center;padding:10px 14px;border-radius:12px;border:1px dashed hsla(0,0%,100%,.12);font-size:12px;color:var(--text-tertiary);cursor:pointer;margin-bottom:6px;background:none;width:100%;transition:color .2s}.show-more:hover{color:var(--text-secondary)}.input-wrap{gap:8px;border-top:1px solid hsla(0,0%,100%,.06);padding-top:14px;margin-top:14px;flex-wrap:wrap}.input-wrap,.login-wrap{display:flex;align-items:center}.login-wrap{min-height:100vh;justify-content:center;padding:20px;position:relative;z-index:1}.login-card{width:100%;max-width:380px;background:hsla(0,0%,100%,.04);border:1px solid hsla(0,0%,100%,.08);border-radius:20px;padding:36px 32px;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);box-shadow:0 24px 80px rgba(0,0,0,.5)}.login-title{font-size:24px;font-weight:700;letter-spacing:-.025em;background:linear-gradient(180deg,#fff,#c7c4bc 120%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:6px}.login-sub{font-size:13px;color:var(--text-tertiary);margin-bottom:28px}.login-field{margin-bottom:16px}.login-actions{display:flex;flex-direction:column;gap:10px;margin-top:24px}.workout-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.filter-btn{padding:6px 14px;border-radius:999px;border:1px solid hsla(0,0%,100%,.08);background:none;color:var(--text-tertiary);font-size:12px;font-family:var(--font-sans);cursor:pointer;transition:all .2s}.filter-btn:hover{color:var(--text-secondary)}.filter-btn.active{background:hsla(0,0%,100%,.08);color:var(--text-primary);border-color:hsla(0,0%,100%,.18)}.workout-date-header{font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-tertiary);padding:8px 0 6px}@media (max-width:480px){.ring-svg-box{width:144px;height:144px}.ring-pct{font-size:32px}.ring-status{font-size:13px}.modal{padding:20px}}.error-boundary{position:relative;z-index:1;min-height:100vh;display:flex;align-items:center;justify-content:center}.error-header{font-size:24px;font-weight:700;letter-spacing:-.025em;color:var(--danger);margin-bottom:16px}.error-message{font-size:14px;color:var(--text-secondary);line-height:1.6;margin-bottom:24px}.error-retry{padding:12px 24px;border-radius:12px;border:1px solid hsla(0,100%,71%,.25);background:hsla(0,100%,71%,.08);color:var(--danger);font-size:13px;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:background .2s}.error-retry:hover{background:hsla(0,100%,71%,.15)}