:root{--bg:#0f1424;--surface:#181f36;--border:#2a3352;--text:#eef1f8;--muted:#8b93ab;--accent:#6182ff;--accent-text:#1a1a18;--danger:#e5566f;--success:#3ecf8e;--shadow-ink:#060a19;--shadow-resting:0 1px 0 #060a19e6, 0 2px 5px #060a1980;--shadow-raised:0 2px 0 #060a19f2, 0 4px 10px #060a198c;--shadow-overlay:0 4px 0 #060a19f2, 0 10px 24px #060a1999;--shadow-overlay-up:0 -4px 0 #060a19f2, 0 -10px 24px #060a1999;--radius-xs:8px;--radius-sm:10px;--radius-md:12px;--radius-lg:14px;--radius-xl:16px;--radius-pill:999px;--radius-full:50%;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);min-height:100dvh;margin:0}input,textarea,button{font:inherit;color:inherit}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{max-width:480px;margin:0 auto}.app-content{padding:1rem 1rem calc(env(safe-area-inset-bottom,0) + 6rem);position:relative}header{justify-content:space-between;align-items:baseline;padding:1rem 1rem 0;display:flex}header h1{margin:0;font-size:1.25rem}.auth-screen{text-align:center;max-width:320px;margin:15dvh auto 0;padding:0 1rem}.auth-screen h1{margin-bottom:1.5rem}.auth-form,.session-form,.belt-form,.technique-form{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-resting);flex-direction:column;gap:.75rem;padding:1rem;display:flex}.session-form{margin-bottom:1.5rem}.belt-form{margin-bottom:1.25rem}.belt-form-actions{align-items:center;gap:1rem;display:flex}.belt-form-actions button[type=submit]{flex:1}.stats-panel{grid-template-columns:repeat(4,1fr);gap:.6rem;margin-bottom:1.25rem;display:grid}.stat-tile{background:var(--surface);border-radius:var(--radius-sm);text-align:center;box-shadow:var(--shadow-resting);flex-direction:column;gap:.15rem;padding:.6rem .5rem;display:flex}.stat-value{color:var(--text);font-size:1.15rem;font-weight:600}.stat-label{color:var(--muted);font-size:.68rem;line-height:1.2}.stat-tile.editable{cursor:pointer;font-family:inherit}.stat-tile.editable.active{outline:2px solid var(--accent);outline-offset:2px}@media (width<=340px){.stats-panel,.profile-stats-row{grid-template-columns:repeat(2,1fr)}}label{color:var(--muted);text-align:left;flex-direction:column;gap:.3rem;font-size:.85rem;display:flex}.field-row{gap:.75rem;display:flex}.field-row label{flex:1}input,textarea,select{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-xs);padding:.6rem .7rem;font-size:1rem}textarea{resize:vertical}button[type=submit]{background:var(--accent);color:var(--accent-text);border-radius:var(--radius-xs);cursor:pointer;border:none;padding:.7rem;font-size:1rem;font-weight:600}button[type=submit]:disabled{opacity:.6}.link-button{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:.3rem 0;font-size:.9rem}.link-button.danger{color:var(--danger)}.link-button.show-more{text-align:center;width:100%;margin-bottom:.5rem;display:block}.error{color:var(--danger);margin:0;font-size:.85rem}.empty{color:var(--muted);text-align:center;margin-top:2rem}.week-strip{justify-content:space-between;margin-bottom:1rem;display:flex}.week-strip-day{flex-direction:column;align-items:center;gap:.35rem;display:flex}.week-strip-label{color:var(--muted);font-size:.68rem;font-weight:600}.week-strip-dot{border-radius:var(--radius-full);width:1.9rem;height:1.9rem;color:var(--text);background:var(--surface);border:1px solid var(--border);justify-content:center;align-items:center;font-size:.8rem;font-weight:600;display:flex}.week-strip-dot.trained{border-color:#0000}.week-strip-dot.today:not(.trained){box-shadow:inset 0 0 0 1.5px var(--text);color:var(--text)}.streak-box{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-raised);align-items:center;margin-bottom:1.25rem;padding:.9rem 1rem;display:flex}.streak-box-side{flex:1;align-items:center;gap:.65rem;display:flex}.streak-box-side.column{flex-direction:column;align-items:flex-start;gap:.2rem}.streak-icon-badge{border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:2.4rem;height:2.4rem;display:flex}.streak-icon-badge svg{width:1.25rem;height:1.25rem}.streak-number{font-size:1.25rem;font-weight:700;line-height:1}.streak-label{color:var(--muted);margin-top:.2rem;font-size:.68rem}.streak-divider{background:var(--border);align-self:stretch;width:1px;margin:0 .9rem}.goal-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-raised);margin-bottom:1.25rem;padding:.9rem 1rem}.goal-card-header{justify-content:space-between;align-items:center;display:flex}.goal-card-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.68rem}.goal-system-name{margin-top:.3rem;font-size:1.05rem;font-weight:600}.goal-concepts{color:var(--muted);flex-direction:column;gap:.3rem;margin:.5rem 0 0;padding-left:1.1rem;font-size:.85rem;display:flex}.goal-suggestion{margin-top:.6rem;display:block}.goal-form{margin-top:.5rem}.goal-form-row{gap:.6rem;display:flex}.goal-form-row select{flex:1}.goal-form .goal-concepts{margin-top:.7rem}.system-detail-title{font-size:1.15rem;font-weight:700}.system-detail-section-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:1rem;margin-bottom:.4rem;font-size:.68rem}.streak-this-week-title{font-size:.85rem;font-weight:600}.streak-this-week-detail{color:var(--muted);font-size:.75rem}.next-class-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-raised);flex-direction:column;gap:.6rem;margin-bottom:1.25rem;padding:.9rem 1rem;display:flex}.next-class-row{align-items:center;gap:.65rem;display:flex}.next-class-text{flex-direction:column;flex:1;min-width:0;display:flex}.next-class-title{font-size:.9rem;font-weight:600}.next-class-meta{color:var(--muted);font-size:.75rem}.next-class-log-button{background:var(--accent);color:var(--accent-text);border-radius:var(--radius-xs);cursor:pointer;border:none;flex-shrink:0;padding:.4rem .8rem;font-size:.8rem;font-weight:600}.next-class-upcoming{color:var(--muted);font-size:.75rem}.session-list ul{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.session-item{background:var(--surface);border-radius:var(--radius-sm);box-shadow:var(--shadow-resting);padding:.75rem .9rem}.session-item.expanded{box-shadow:var(--shadow-raised);outline:2px solid var(--accent);outline-offset:2px}.session-item-main{text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:.7rem;width:100%;padding:0;font-family:inherit;font-size:.95rem;display:flex}.session-icon-badge{border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:2.4rem;height:2.4rem;display:flex}.session-icon-badge svg{width:1.2rem;height:1.2rem}.session-card-text{flex-direction:column;flex:1;gap:.1rem;min-width:0;display:flex}.session-card-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.session-card-meta{color:var(--muted);font-size:.8rem}.session-summary-row{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.6rem;display:flex}.expand-indicator{color:var(--muted);flex-shrink:0;transition:transform .15s}.session-item.expanded .expand-indicator{transform:rotate(90deg)}.session-date{color:var(--muted);min-width:4.5rem}.session-gym{flex:1;font-weight:600}.session-notes{color:var(--muted);white-space:pre-wrap;margin:.4rem 0 0;font-size:.85rem}.session-details{border-top:1px solid var(--border);flex-direction:column;gap:.4rem;margin-top:.6rem;padding-top:.6rem;display:flex}.session-actions{gap:.5rem;margin-top:.2rem;display:flex}.icon-button{border:1px solid var(--border);border-radius:var(--radius-xs);width:2.1rem;height:2.1rem;color:var(--muted);cursor:pointer;background:0 0;justify-content:center;align-items:center;display:flex}.icon-button svg{width:1.05rem;height:1.05rem}.icon-button.danger{color:var(--danger)}.confirm-delete{background:var(--bg);border:1px solid var(--danger);border-radius:var(--radius-xs);align-items:center;gap:.75rem;padding:.5rem .7rem;font-size:.85rem;display:flex}.confirm-delete span{color:var(--muted);flex:1}.star-rating{gap:.15rem;display:flex}.star{color:var(--border);cursor:pointer;background:0 0;border:none;padding:.3rem;font-size:1.3rem;line-height:1}.star-rating.read-only .star{cursor:default;padding:0;font-size:1rem}.star.filled{color:var(--accent)}.bottom-nav{background:var(--surface);box-shadow:var(--shadow-overlay-up);padding:.5rem 1rem calc(env(safe-area-inset-bottom,0) + .5rem);z-index:20;justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.nav-item{color:var(--muted);cursor:pointer;background:0 0;border:none;flex-direction:column;align-items:center;gap:.2rem;padding:.2rem .6rem;display:flex}.nav-item.active{color:var(--accent)}.nav-icon{width:1.4rem;height:1.4rem}.nav-icon svg{width:100%;height:100%}.nav-label{font-size:.68rem}.fab{right:1.25rem;bottom:calc(env(safe-area-inset-bottom,0) + 4.75rem);border-radius:var(--radius-full);background:var(--accent);width:3.25rem;height:3.25rem;color:var(--accent-text);cursor:pointer;box-shadow:var(--shadow-overlay);z-index:20;border:none;justify-content:center;align-items:center;font-size:1.75rem;line-height:1;display:flex;position:fixed}.modal-backdrop{z-index:30;background:#00000080;align-items:flex-end;display:flex;position:fixed;inset:0}.modal-sheet{background:var(--bg);border-radius:var(--radius-xl) var(--radius-xl) 0 0;width:100%;max-height:85dvh;padding:1.25rem 1rem calc(env(safe-area-inset-bottom,0) + 1.25rem);box-shadow:var(--shadow-overlay-up);overflow-y:auto}.modal-sheet .session-form{margin-bottom:0}.calendar{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-resting);padding:1rem}.calendar-header{justify-content:space-between;align-items:center;margin-bottom:.6rem;display:flex}.calendar-header .link-button{padding:0 .5rem;font-size:1.2rem}.calendar-month{font-size:.95rem;font-weight:600}.calendar-weekdays,.calendar-grid{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.calendar-weekdays span{text-align:center;color:var(--muted);padding-bottom:.3rem;font-size:.7rem}.calendar-day{aspect-ratio:1;border-radius:var(--radius-xs);color:var(--text);cursor:default;background:0 0;border:none;font-size:.85rem}.calendar-day.outside{color:var(--muted);opacity:.4}.calendar-day.today{box-shadow:inset 0 0 0 1px var(--border)}.calendar-day.trained{background:var(--accent);color:var(--accent-text);cursor:pointer;font-weight:600}.calendar-day.selected{box-shadow:inset 0 0 0 2px var(--text)}.calendar-day-sessions{border-top:1px solid var(--border);flex-direction:column;gap:.5rem;margin:.75rem 0 0;padding:.6rem 0 0;list-style:none;display:flex}.calendar-day-sessions li{align-items:center;gap:.5rem;font-size:.85rem;display:flex}.calendar-day-sessions .session-gym{flex:1}.profile-screen{flex-direction:column;gap:1rem;display:flex}.avatar-picker{border-radius:var(--radius-full);background:var(--surface);border:1px solid var(--border);cursor:pointer;justify-content:center;align-self:center;align-items:center;width:5.5rem;height:5.5rem;display:flex;position:relative;overflow:hidden}.avatar-image{object-fit:cover;width:100%;height:100%}.avatar-placeholder{color:var(--muted);font-size:1.8rem;font-weight:600}.avatar-uploading{color:var(--text);text-align:center;background:#0000008c;justify-content:center;align-items:center;font-size:.65rem;display:flex;position:absolute;inset:0}.avatar-error{text-align:center}.profile-stats-row{grid-template-columns:repeat(3,1fr);gap:.6rem;display:grid}.editable-field{font:inherit;color:inherit;text-align:inherit;cursor:pointer;background:0 0;border:none;width:100%;padding:0;display:block}.editable-field-placeholder{color:var(--muted)}.editable-field.editing input{width:100%}.profile-username{text-align:center}.profile-username-value{font-size:1.05rem;font-weight:600}.profile-username.editing input{text-align:center;font-size:1.05rem;font-weight:600}.favorites-row{grid-template-columns:repeat(2,1fr);gap:.6rem;display:grid}.top-techniques-row{margin-bottom:1.25rem}.favorite-card{background:var(--surface);border-radius:var(--radius-md);box-shadow:var(--shadow-resting);flex-direction:column;gap:.3rem;padding:.75rem .9rem;display:flex}.favorite-label{color:var(--muted);font-size:.68rem}.favorite-value-field,.favorite-value-field.editing input{font-size:1rem;font-weight:600}.profile-start-date{text-align:center;color:var(--muted);font-size:.75rem}.profile-start-date.editing input{text-align:center;font-size:.75rem}.belt-display{background:var(--surface);border-radius:var(--radius-pill);width:100%;min-height:3.5rem;font:inherit;color:var(--text);cursor:pointer;box-shadow:var(--shadow-resting);align-items:center;padding:0 .5rem 0 1.4rem;transition:outline-color .15s;display:flex}.belt-display.belt-empty{justify-content:center;padding:0 1.4rem}.belt-display.active{outline:2px solid var(--accent);outline-offset:2px}.belt-name{letter-spacing:.04em;text-transform:uppercase;font-size:1.05rem;font-weight:800}.belt-degree-bar{border-radius:var(--radius-sm);background:#000;border:1px solid #ffffff24;flex-shrink:0;justify-content:center;align-self:stretch;align-items:center;gap:.3rem;min-width:7rem;margin:0 .5rem 0 auto;padding:0 .6rem;display:flex}.belt-degree-stripe{background:0 0;border-radius:1px;width:.2rem;height:60%}.belt-degree-stripe.filled{background:#fff}.view-toggle{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);gap:.25rem;margin-bottom:.75rem;padding:.25rem;display:flex}.view-toggle-btn{border-radius:var(--radius-xs);font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;flex:1;padding:.5rem;font-size:.85rem;font-weight:600}.view-toggle-btn.active{background:var(--accent);color:var(--accent-text)}.technique-add-button{border:1px solid var(--accent);color:var(--accent);border-radius:var(--radius-pill);cursor:pointer;background:0 0;flex-shrink:0;padding:.3rem .7rem;font-size:.75rem;font-weight:600}.technique-add-button.added{border-color:var(--border);color:var(--muted);cursor:default}.technique-add-button:disabled{opacity:.7}.technique-search{width:100%;margin-bottom:.6rem}.filter-chips{gap:.4rem;margin-bottom:.75rem;padding-bottom:.2rem;display:flex;overflow-x:auto}.chip{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:var(--radius-pill);cursor:pointer;flex-shrink:0;padding:.35rem .8rem;font-size:.8rem}.chip.active{border-color:var(--accent);color:var(--text)}.technique-list ul{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.technique-item{background:var(--surface);border-radius:var(--radius-sm);box-shadow:var(--shadow-resting);padding:.75rem .9rem}.technique-item.expanded{box-shadow:var(--shadow-raised);outline:2px solid var(--accent);outline-offset:2px}.technique-item-main{align-items:center;gap:.6rem;display:flex}.technique-item-title{text-align:left;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;gap:.15rem;min-width:0;padding:0;font-family:inherit;display:flex}.technique-name{font-size:.95rem;font-weight:600}.technique-category{color:var(--muted);font-size:.75rem}.tag-pills{flex-wrap:wrap;gap:.35rem;display:flex}.tag-pills-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.tag-pills-label{color:var(--muted);flex-shrink:0;font-size:.75rem}.tag-pill{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--muted);padding:.1rem .55rem;font-size:.75rem}.tag-pill.submission{color:var(--success)}.tag-pill.tap{color:var(--danger)}.tag-counter-input{flex-direction:column;gap:.5rem;display:flex}.tag-counters{flex-wrap:wrap;gap:.4rem;display:flex}.tag-counter{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text);align-items:center;gap:.3rem;padding:.15rem .3rem .15rem .6rem;font-size:.8rem;display:flex}.tag-counter button{color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:1.2rem;height:1.2rem;padding:0;font-size:.9rem;line-height:1;display:flex}.tag-counter-count{text-align:center;min-width:1rem;font-weight:600}.tag-simple{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-pill);color:var(--text);align-items:center;gap:.3rem;padding:.15rem .3rem .15rem .6rem;font-size:.8rem;display:flex}.tag-simple button{color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:1.2rem;height:1.2rem;padding:0;font-size:.9rem;line-height:1;display:flex}.tag-counter-add-wrap{position:relative}.tag-counter-add{gap:.4rem;display:flex}.tag-counter-add input{flex:1}.tag-suggestions{z-index:5;background:var(--surface);border-radius:var(--radius-xs);box-shadow:var(--shadow-overlay);flex-direction:column;gap:.1rem;padding:.3rem;display:flex;position:absolute;top:calc(100% + .3rem);left:0;right:0}.tag-suggestion{text-align:left;font:inherit;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.4rem .5rem;font-size:.85rem}.tag-suggestion:hover,.tag-suggestion:active{background:var(--bg)}.link-list{flex-direction:column;gap:.3rem;margin:0;padding:0;list-style:none;display:flex}.link-list a{color:var(--accent);word-break:break-word;font-size:.85rem}.link-editor{flex-direction:column;gap:.5rem;display:flex}.link-editor-label{color:var(--muted);font-size:.85rem}.link-row{gap:.4rem;display:flex}.link-row input{flex:1;min-width:0}.checkbox-field{flex-direction:row;align-items:center;gap:.5rem}.checkbox-field input[type=checkbox]{width:auto;accent-color:var(--accent);background:0 0;border:none;padding:0}
