*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f4f6f9;--bg2: #ffffff;--bg3: #eef1f5;--border: #dde2ea;--text: #1b1f27;--muted: #687387;--accent: #16a34a;--accent2: #2563eb;--warn: #d97706;--danger: #dc2626;--chart-grid: #e7eaf0;--radius: 12px;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--shadow: 0 1px 3px rgba(20, 30, 50, .06), 0 1px 2px rgba(20, 30, 50, .04)}body{background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.6;min-height:100vh;min-height:100dvh;overflow-x:hidden}.nav{display:flex;align-items:center;gap:1.5rem;padding:0 2rem;height:56px;background:var(--bg2);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100}.nav-logo{display:flex;align-items:center;gap:.5rem;text-decoration:none;white-space:nowrap}.brand-logo{width:30px;height:30px;object-fit:contain;display:block;flex:none}.brand-name{font-weight:700;font-size:1rem;color:var(--text);letter-spacing:.04em}.nav-collapse{display:flex;align-items:center;gap:1.25rem;flex:1;min-width:0}.nav-actions{display:flex;align-items:center;gap:.75rem;flex:none}.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:4px;width:38px;height:34px;padding:7px 8px;margin-left:auto;background:none;border:1px solid var(--border);border-radius:8px;cursor:pointer}.nav-toggle span{display:block;width:100%;height:2px;background:var(--text);border-radius:2px;transition:transform .2s,opacity .2s}.nav.open .nav-toggle span:nth-child(1){transform:translateY(6px) rotate(45deg)}.nav.open .nav-toggle span:nth-child(2){opacity:0}.nav.open .nav-toggle span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.nav-links{display:flex;gap:.25rem;flex:1;min-width:0}.nav-links a{color:var(--muted);text-decoration:none;padding:.35rem .85rem;border-radius:8px;font-size:.9rem;transition:color .15s,background .15s}.nav-links a:hover,.nav-links a.active{color:var(--text);background:var(--bg3)}.btn-icon{background:none;border:1px solid var(--border);color:var(--muted);width:34px;height:34px;border-radius:8px;cursor:pointer;font-size:1.1rem;display:flex;align-items:center;justify-content:center;transition:color .15s,border-color .15s}.btn-icon:hover{color:var(--text);border-color:var(--accent)}.btn-logout{background:var(--danger);border:1px solid var(--danger);color:#fff;height:34px;padding:0 .8rem;border-radius:8px;cursor:pointer;font-size:.85rem;font-weight:600;display:inline-flex;align-items:center;transition:background .15s,border-color .15s}.btn-logout:hover{background:#b91c1c;border-color:#b91c1c}main{padding:2rem;max-width:1200px;margin:0 auto}.grid{display:grid;gap:1rem}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-2-1{grid-template-columns:2fr 1fr}.sess{background:var(--bg2);border:1px solid var(--border);border-radius:10px;margin-bottom:.6rem;padding:.85rem 1rem}.sess-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.sess-date{color:var(--muted);font-size:.8rem}.sess-type{font-weight:600}.sess-grow{flex:1}.sess-acr{font-weight:600;color:var(--accent);font-size:.85rem;white-space:nowrap}.sess-spec{display:block;width:100%;margin-top:.5rem;background:var(--bg3);border:1px solid var(--border);border-radius:7px;color:var(--text);padding:.45rem .6rem;font-size:.85rem;font-family:var(--font)}.sess-spec:focus{outline:none;border-color:var(--accent2)}.sess-spec:disabled{opacity:.8}.sess-metrics{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;margin-top:.75rem}.sess-stat{display:flex;flex-direction:column;line-height:1.2}.sess-stat b{font-weight:600;font-size:.9rem}.sess-stat span{font-size:.64rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.sess-tools{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.75rem}.sess-walked{display:flex;align-items:center;gap:.3rem;margin-left:auto}@media(max-width:768px){.sess-walked{margin-left:0}}@media(max-width:768px){.grid-2,.grid-3,.grid-4,.grid-2-1{grid-template-columns:1fr}main{padding:1rem 1rem calc(3rem + env(safe-area-inset-bottom,0px))}}@media(max-width:860px){.nav{padding:0 1rem;gap:.75rem}.nav-toggle{display:flex}.nav-collapse{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:.35rem;background:var(--bg2);border-bottom:1px solid var(--border);box-shadow:var(--shadow);padding:.6rem 1rem .9rem;z-index:200}.nav.open .nav-collapse{display:flex}.nav-links{flex-direction:column;gap:.1rem}.nav-links a{font-size:.95rem;padding:.6rem .75rem}.nav-actions{flex-wrap:wrap;gap:.6rem;margin-top:.4rem;padding-top:.7rem;border-top:1px solid var(--border)}.nav-user{margin-left:auto;align-self:center}}.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow)}.card-title{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.75rem}.metric-value{font-size:2rem;font-weight:600;line-height:1}.metric-unit{font-size:.85rem;color:var(--muted);margin-left:.25rem}.metric-sub{font-size:.8rem;color:var(--muted);margin-top:.35rem}.badge{display:inline-block;padding:.2rem .6rem;border-radius:99px;font-size:.75rem;font-weight:500}.badge-green{background:#dcfce7;color:#15803d}.badge-amber{background:#fef3c7;color:#b45309}.badge-red{background:#fee2e2;color:#b91c1c}.badge-blue{background:#dbeafe;color:#1d4ed8}.flag-card{background:#fef2f2;border:1px solid #fbcaca;border-radius:var(--radius);padding:1rem 1.25rem;display:flex;align-items:center;gap:.75rem;color:var(--danger);font-size:.9rem}.flag-card .flag-icon{font-size:1.2rem;flex-shrink:0}.chart-wrap{position:relative;height:180px}.section-title{font-size:1.1rem;font-weight:600;margin-bottom:1rem;margin-top:1.5rem}.session-row{display:flex;align-items:center;gap:1rem;padding:.85rem 1rem;background:var(--bg2);border:1px solid var(--border);border-radius:10px;margin-bottom:.5rem}.session-row .session-date{color:var(--muted);font-size:.8rem;min-width:80px}.session-row .session-type{flex:1;font-weight:500}.session-row .session-dur{color:var(--muted);font-size:.85rem}.session-row .session-acr{font-weight:600;color:var(--accent);min-width:60px;text-align:right}.rpe-btn{background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:.25rem .75rem;border-radius:8px;cursor:pointer;font-size:.8rem;transition:background .15s}.rpe-btn:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.rating-row{display:flex;gap:.5rem;margin-top:.5rem}.rating-btn{width:36px;height:36px;border-radius:8px;border:1px solid var(--border);background:var(--bg3);color:var(--muted);cursor:pointer;font-size:.85rem;font-weight:500;transition:all .15s}.rating-btn:hover{border-color:var(--accent2);color:var(--accent2)}.rating-btn.active{background:var(--accent2);border-color:var(--accent2);color:#fff}.rating-row-10{gap:.3rem}.rating-row-10 .rating-btn{flex:1 1 0;min-width:0;width:auto;height:34px;padding:0;font-size:.8rem}.range-bar{display:flex;gap:.4rem;margin-bottom:1rem;flex-wrap:wrap}.range-btn{background:var(--bg2);border:1px solid var(--border);color:var(--muted);border-radius:8px;padding:.35rem .8rem;font-size:.82rem;cursor:pointer;transition:color .15s,border-color .15s,background .15s}.range-btn:hover{color:var(--text);border-color:var(--accent2)}.range-btn.active{background:var(--accent2);border-color:var(--accent2);color:#fff}.input-field{background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:.5rem .75rem;border-radius:8px;font-size:.9rem;width:100%;font-family:var(--font)}.input-field:focus{outline:none;border-color:var(--accent2)}.btn{background:var(--accent);border:none;color:#fff;padding:.5rem 1.25rem;border-radius:8px;cursor:pointer;font-weight:600;font-size:.9rem;transition:opacity .15s}.btn:hover{opacity:.85}.btn-secondary{background:var(--bg3);border:1px solid var(--border);color:var(--text)}.checkbox-row{display:flex;align-items:center;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--border)}.checkbox-row:last-child{border-bottom:none}.checkbox-row input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);cursor:pointer}.pill-row{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.empty{color:var(--muted);font-size:.9rem;text-align:center;padding:2rem}.auth-banner{background:#eff6ff;border:1px solid #bfdbfe;border-radius:var(--radius);padding:1rem 1.5rem;display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.auth-banner span{color:var(--accent2);flex:1;font-size:.9rem}.auth-banner a{background:var(--accent2);color:#fff;text-decoration:none;padding:.35rem 1rem;border-radius:8px;font-size:.85rem;font-weight:600}.settings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem}.provider-card{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.75rem;padding:1.5rem 1rem 1.25rem;background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .15s,box-shadow .15s,transform .15s}.provider-card:hover{border-color:var(--accent2);box-shadow:var(--shadow);transform:translateY(-2px)}.provider-card.is-connected{border-color:var(--accent)}.provider-card.is-soon{opacity:.7}.provider-card.is-soon:hover{transform:none;border-color:var(--border);box-shadow:none}.provider-logo{width:56px;height:56px;display:flex;align-items:center;justify-content:center}.provider-logo svg{width:100%;height:100%}.provider-name{font-weight:600;font-size:1rem}.provider-action{margin-top:.25rem;width:100%}.provider-action .btn,.provider-action a.btn{display:inline-block;width:100%;text-align:center;text-decoration:none}.spinner{display:inline-block;width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:200}.modal{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;width:360px;max-width:90vw}.modal h3{margin-bottom:1rem}.modal-actions{display:flex;gap:.75rem;margin-top:1.25rem;justify-content:flex-end}.week-grid{width:100%;border-collapse:collapse}.week-grid th{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:.4rem .5rem;text-align:center;font-weight:400}.week-grid td{padding:.35rem .5rem;text-align:center}.week-grid .sup-name{text-align:left;font-size:.88rem;color:var(--text);padding-right:1rem}.week-grid .day-cell input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);cursor:pointer}.week-grid tr:not(:last-child) td{border-bottom:1px solid var(--border)}.week-nav{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.week-nav button{background:var(--bg3);border:1px solid var(--border);color:var(--text);width:30px;height:30px;border-radius:6px;cursor:pointer;font-size:1rem;display:flex;align-items:center;justify-content:center}.week-nav button:hover{border-color:var(--accent2);color:var(--accent2)}.week-nav .week-label{font-size:.85rem;color:var(--muted);flex:1}.plan-nav{display:flex;align-items:center;gap:.5rem}.plan-nav button{background:none;border:1px solid var(--border);color:var(--muted);width:28px;height:28px;border-radius:6px;cursor:pointer;font-size:.9rem}.plan-nav button:hover{border-color:var(--accent2);color:var(--accent2)}.plan-nav .plan-date{font-size:.82rem;color:var(--muted);min-width:80px;text-align:center}.journal-entry{border-bottom:1px solid var(--border);padding:.9rem 0}.journal-entry:last-child{border-bottom:none}.journal-meta{display:flex;align-items:center;gap:.75rem;margin-bottom:.4rem}.journal-date{font-size:.78rem;color:var(--muted)}.journal-text{font-size:.9rem;color:var(--text);line-height:1.6;white-space:pre-wrap}.race-row{display:grid;grid-template-columns:80px 1fr 120px 120px auto;gap:.75rem;align-items:center;padding:.75rem 1rem;background:var(--bg2);border:1px solid var(--border);border-radius:10px;margin-bottom:.5rem;font-size:.88rem}.race-result{font-weight:600;color:var(--accent)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.3rem}.cal-head{margin-bottom:.35rem}.cal-head span{text-align:center;font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.cal-cell{min-height:46px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;border-radius:8px;padding-top:3px}.cal-cell.today{background:var(--bg3);box-shadow:inset 0 0 0 1px var(--border)}.cal-cell.future,.cal-cell.othermonth{opacity:.3}.cal-cell.has-activity{cursor:pointer;transition:background .12s}.cal-cell.has-activity:hover{background:var(--bg3)}.cal-cell.selected{background:color-mix(in srgb,var(--accent2) 16%,transparent);box-shadow:inset 0 0 0 1.5px var(--accent2)}.cal-nav-btn{background:var(--bg3);border:1px solid var(--border);color:var(--text);width:28px;height:28px;border-radius:6px;cursor:pointer;font-size:1rem;line-height:1}.cal-nav-btn:hover:not(:disabled){border-color:var(--accent2);color:var(--accent2)}.cal-nav-btn:disabled{opacity:.3;cursor:default}.cal-daynum{font-size:.66rem;color:var(--muted);line-height:1}.cal-dot{flex:1;display:flex;align-items:center;justify-content:center}.cal-empty{width:5px;height:5px;border-radius:50%;background:var(--border)}.cal-legend{display:flex;flex-wrap:wrap;gap:.45rem .9rem}.cal-legend span{display:inline-flex;align-items:center;gap:.32rem;font-size:.74rem;color:var(--muted)}.cal-legend i{width:9px;height:9px;border-radius:50%;display:inline-block}.metric-green{color:#16a34a}.metric-amber{color:#d97706}.metric-red{color:#dc2626}.metric-gray{color:#687387}#auth-screen{min-height:100vh;display:grid;place-items:center;padding:1.5rem}.auth-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:2rem;width:100%;max-width:380px}.auth-brand{display:flex;align-items:center;gap:.6rem;margin-bottom:.35rem}.auth-brand .brand-logo{width:44px;height:44px}.auth-brand .brand-name{font-size:1.35rem;letter-spacing:.03em}.auth-tagline{color:var(--muted);font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;margin:0 0 1.25rem}.auth-notice{background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 35%,transparent);color:var(--text);border-radius:8px;padding:.6rem .75rem;font-size:.85rem;margin-bottom:1rem}.auth-card h1{font-size:1.4rem;margin:0 0 .25rem}.auth-sub{color:var(--muted);font-size:.9rem;margin:0 0 1.25rem}.auth-card form{display:flex;flex-direction:column;gap:.85rem}.auth-card label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;color:var(--muted)}.auth-card input{padding:.6rem .7rem;border:1px solid var(--border);border-radius:8px;font-size:1rem;font-family:var(--font);background:var(--bg)}.auth-card input:focus{outline:none;border-color:var(--accent)}.auth-card button[type=submit]{margin-top:.3rem;background:var(--accent);color:#fff;border:none;padding:.7rem;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer}.auth-card button[type=submit]:disabled{opacity:.6;cursor:default}.auth-err{color:var(--danger);font-size:.85rem;min-height:1.1em}.auth-link{color:var(--accent2);font-size:.9rem}.nav-user{color:var(--muted);font-size:.85rem;margin-left:.25rem}.admin-wrap{max-width:960px;margin:0 auto}.admin-invite{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.admin-invite input,.admin-invite select{padding:.5rem .6rem;border:1px solid var(--border);border-radius:8px;font-size:.9rem;font-family:var(--font);background:var(--bg)}.admin-invite button,.admin-actions button{background:var(--bg3);border:1px solid var(--border);border-radius:7px;padding:.4rem .65rem;font-size:.82rem;cursor:pointer;color:var(--text)}.admin-invite button{background:var(--accent);color:#fff;border-color:var(--accent)}.admin-actions button:hover{border-color:var(--accent)}.admin-actions button.danger:hover{border-color:var(--danger);color:var(--danger)}.admin-table{width:100%;border-collapse:collapse;font-size:.88rem}.admin-table th{text-align:left;color:var(--muted);font-weight:600;padding:.5rem .4rem;border-bottom:1px solid var(--border)}.admin-table td{padding:.5rem .4rem;border-bottom:1px solid var(--bg3);vertical-align:middle}.admin-table select{padding:.25rem .4rem;border:1px solid var(--border);border-radius:6px;background:var(--bg)}.admin-actions{display:flex;gap:.35rem;flex-wrap:wrap}.admin-table.audit{font-size:.8rem}.badge.active{background:#dcfce7;color:#15803d}.badge.blocked{background:#fee2e2;color:#b91c1c}.invite-box{margin-top:.8rem;padding:.75rem;background:var(--bg3);border-radius:8px;font-size:.85rem}.invite-row{display:flex;gap:.5rem;margin:.4rem 0}.invite-row input{flex:1;padding:.45rem .6rem;border:1px solid var(--border);border-radius:7px;font-size:.82rem;background:var(--bg2)}.invite-row button{background:var(--accent2);color:#fff;border:none;border-radius:7px;padding:0 .8rem;cursor:pointer}.flash{padding:.6rem .8rem;border-radius:8px;margin-bottom:.8rem;font-size:.88rem}.flash.ok{background:#dcfce7;color:#15803d}.flash.err{background:#fee2e2;color:#b91c1c}[hidden]{display:none!important}#users-table,#audit-log{overflow-x:auto}.admin-table{min-width:520px}.auth-hint{color:var(--muted);font-size:.8rem;margin:.4rem 0 0}.mfa-enroll{display:flex;flex-direction:column;gap:1rem}.mfa-opt{border:1px solid var(--border);border-radius:10px;padding:.9rem 1rem}.mfa-opt.done{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,transparent)}.mfa-opt-head{display:flex;align-items:center;justify-content:space-between;font-weight:600}.mfa-opt p{color:var(--muted);font-size:.85rem;margin:.35rem 0 .6rem}.mfa-opt button{background:var(--bg3);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:.5rem .9rem;cursor:pointer;font-size:.88rem}.mfa-opt button:hover{border-color:var(--accent)}.mfa-enroll>button#enroll-finish{background:var(--accent);color:#fff;border:none;border-radius:9px;padding:.7rem;cursor:pointer;font-weight:600}.mfa-enroll>button#enroll-finish:disabled{opacity:.5;cursor:default}.totp-setup{margin-top:.7rem;display:flex;flex-direction:column;gap:.5rem;align-items:flex-start}.totp-qr{background:#fff;padding:.5rem;border-radius:8px;width:180px;height:180px}.totp-qr svg{width:100%;height:100%}.totp-secret{font-family:monospace;background:var(--bg3);padding:.35rem .55rem;border-radius:6px;letter-spacing:.12em;font-size:.85rem;word-break:break-all}.totp-setup form{width:100%}.recovery-list{list-style:none;padding:.8rem 1rem;margin:0 0 1rem;background:var(--bg3);border-radius:10px;display:grid;grid-template-columns:1fr 1fr;gap:.35rem .9rem;font-family:monospace;font-size:.95rem;letter-spacing:.08em}.recovery-actions{display:flex;gap:.6rem}.recovery-actions button{flex:1;border:1px solid var(--border);background:var(--bg3);color:var(--text);border-radius:9px;padding:.65rem;cursor:pointer}.recovery-actions #recovery-done{background:var(--accent);color:#fff;border:none;font-weight:600}.mfa-step{display:flex;flex-direction:column;gap:.85rem}.mfa-step button.big{background:var(--accent);color:#fff;border:none;border-radius:10px;padding:.85rem;font-size:.95rem;font-weight:600;cursor:pointer}.mfa-step .or{text-align:center;color:var(--muted);font-size:.8rem;position:relative}.mfa-step form{display:flex;flex-direction:column;gap:.5rem}.mfa-step form button{background:var(--accent);color:#fff;border:none;border-radius:9px;padding:.65rem;font-weight:600;cursor:pointer}.mfa-enroll button.big{background:var(--accent);color:#fff;border:none;border-radius:10px;padding:.85rem;font-size:.95rem;font-weight:600;cursor:pointer}.mfa-enroll button.big:disabled{opacity:.6;cursor:default}.mfa-fallback{border-top:1px dashed var(--border);padding-top:.7rem}.mfa-fallback>summary{cursor:pointer;color:var(--accent2);font-size:.88rem;list-style:none;-webkit-user-select:none;user-select:none}.mfa-fallback>summary::-webkit-details-marker{display:none}.mfa-fallback>summary:before{content:"▸ "}.mfa-fallback[open]>summary{margin-bottom:.7rem}.mfa-fallback[open]>summary:before{content:"▾ "}.coach-banner{background:#eaf2ff;border-bottom:1px solid var(--border);color:var(--muted);font-size:.72rem;line-height:1.3;padding:.3rem 1.5rem;text-align:center}.coach-banner.warn{background:#fff5e6;color:var(--warn)}.athlete-switch{font:inherit;font-weight:600;color:var(--text);background:#fff;border:1px solid var(--border);border-radius:6px;padding:.1rem .4rem;margin:0 .15rem;cursor:pointer}.btn-small{padding:.3rem .7rem;font-size:.8rem;border-radius:6px}.vis-list{display:flex;flex-direction:column;gap:.5rem}.vis-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:.75rem;padding:.6rem .85rem;background:var(--bg3);border:1px solid var(--border);border-radius:8px}.vis-label{font-weight:600}.vis-row input[type=checkbox]{width:1.15rem;height:1.15rem;accent-color:var(--accent);cursor:pointer}.vis-state{color:var(--muted);font-size:.8rem;min-width:64px;text-align:right}.plan-list{display:flex;flex-direction:column;gap:.5rem}.plan-row{display:grid;grid-template-columns:110px 1fr auto;gap:.75rem;align-items:start;padding:.6rem .75rem;background:var(--bg2);border:1px solid var(--border);border-radius:8px}.plan-row.is-today{border-color:var(--accent2);box-shadow:0 0 0 1px var(--accent2) inset}.plan-row.is-filled{background:#f3faf5}.plan-row.is-key{border-left:3px solid #f59e0b}.plan-day{font-weight:600;font-size:.85rem;color:var(--muted);padding-top:.4rem}.plan-key-toggle{display:inline-block;margin-top:.3rem;background:none;border:none;cursor:pointer;font-size:1rem;line-height:1;color:var(--border);padding:0;transition:color .15s}.plan-key-toggle:hover,.plan-key-toggle.on{color:#f59e0b}.plan-key-badge{font-size:.7rem;font-weight:600;color:#b45309;background:color-mix(in srgb,#f59e0b 18%,transparent);border-radius:999px;padding:.1rem .5rem;white-space:nowrap}.plan-fields{display:flex;flex-direction:column;gap:.4rem}.plan-fields input,.plan-fields textarea{width:100%;padding:.4rem .6rem;border:1px solid var(--border);border-radius:6px;font:inherit;font-size:.85rem;background:var(--bg2);color:var(--text);resize:vertical}.plan-fields input:focus,.plan-fields textarea:focus{outline:none;border-color:var(--accent)}.plan-actions{display:flex;flex-direction:column;gap:.35rem;align-items:stretch;min-width:96px}.plan-status{font-size:.75rem;color:var(--accent);text-align:center;min-height:1rem}@media(max-width:640px){.plan-row{grid-template-columns:1fr}.plan-actions{flex-direction:row}.vis-row{grid-template-columns:1fr auto}.vis-state{display:none}}
