:root{color-scheme:light;--bg:#ffffff;--canvas:#f6f8fa;--panel:#ffffff;--panel-muted:#f6f8fa;--border:#d0d7de;--border-muted:#eaeef2;--text:#1f2328;--muted:#59636e;--accent:#0969da;--accent-strong:#0550ae;--accent-soft:#ddf4ff;--danger:#cf222e;--danger-soft:#ffebe9;--warn:#9a6700;--warn-soft:#fff8c5;--ok:#1a7f37;--ok-soft:#dafbe1;--sidebar-width:240px;--content-gutter:32px;--control-radius:4px;--shadow:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:var(--bg);color:var(--text)}body{font-size:14px;line-height:1.5;overflow-x:hidden}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button{cursor:pointer;touch-action:manipulation}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{text-wrap:balance}.app-root,.shell{min-height:100vh}.shell{min-width:1100px;display:flex;background:var(--canvas)}.skip-link{position:fixed;left:16px;top:12px;z-index:30;border:1px solid var(--accent);border-radius:var(--control-radius);background:var(--accent);color:#ffffff;padding:8px 12px;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0);outline:0}.desktop-gate{display:none}.sidebar{position:fixed;inset:0 auto 0 0;z-index:10;width:var(--sidebar-width);display:flex;flex-direction:column;padding:16px 12px;overflow:hidden;border-right:1px solid var(--border);background:var(--panel)}.sidebar-brand{display:flex;align-items:center;gap:10px;min-height:40px;padding:0 8px 16px;border-bottom:1px solid var(--border-muted);color:inherit}.sidebar-brand,.sidebar-brand:hover{text-decoration:none}.brand-mark{display:grid;width:32px;height:32px;place-items:center;border:1px solid var(--border);border-radius:4px;background:var(--panel-muted);color:var(--accent-strong);font-size:12px;font-weight:700}.brand-copy{display:grid;grid-gap:2px;gap:2px;min-width:0}.brand-copy strong{overflow:hidden;color:var(--text);font-size:14px;text-overflow:ellipsis;white-space:nowrap}.brand span,.brand-copy span,.muted{color:var(--muted);font-size:13px}.sidebar-section{display:grid;grid-gap:6px;gap:6px;padding:16px 4px 0}.sidebar-nav-groups{display:grid;flex:1 1 auto;min-height:0;overflow-y:auto}.sidebar-section-label{padding:0 8px;color:var(--muted);font-size:11px;font-weight:600;line-height:20px}.sidebar-nav{display:grid;grid-gap:2px;gap:2px}.sidebar-link{display:flex;align-items:center;gap:10px;min-height:34px;padding:6px 9px;border:1px solid transparent;border-radius:var(--control-radius);color:var(--text);font-size:14px;font-weight:500;transition:background-color .12s ease,border-color .12s ease,color .12s ease}.sidebar-link:hover{background:var(--panel-muted);text-decoration:none}.sidebar-link[aria-current=page]{border-color:var(--border-muted);border-left:3px solid var(--accent);background:var(--panel-muted);color:var(--accent-strong);font-weight:600;padding-left:7px}.sidebar-link-icon{display:inline-flex;width:18px;align-items:center;justify-content:center;color:currentColor}.sidebar-footer{margin-top:auto;padding:16px 4px 0;border-top:1px solid var(--border-muted)}.sidebar-footer form{margin:0}.sidebar-action{width:100%;justify-content:flex-start}.main{flex:1 1 auto;width:auto;min-width:0;min-height:100vh;margin-left:var(--sidebar-width)}.container,.main-inner{width:calc(100% - (var(--content-gutter) * 2));max-width:none;margin:0 auto;padding:0 0 48px}.shell-header{display:flex;min-height:48px;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px;border-bottom:1px solid var(--border);color:var(--muted)}.shell-header-route{display:inline-flex;align-items:center;gap:8px;color:var(--text);font-size:13px;font-weight:600}.shell-header-route svg{color:var(--accent)}.shell-header-status{color:var(--muted);font-size:12px}.page{display:grid;grid-gap:28px;gap:28px}.auth-card,.card,.details,.hero,.metric,.panel,.state-box{border:1px solid var(--border);border-radius:var(--control-radius);background:var(--panel);box-shadow:var(--shadow)}.hero{display:grid;grid-gap:8px;gap:8px;padding:0 0 20px;border:0;border-bottom:1px solid var(--border);background:transparent}.auth-card h1,.hero h1{color:var(--text);font-size:26px;font-weight:600;letter-spacing:0;line-height:1.25}.hero p{max-width:78ch;line-height:1.5}.hero-actions,.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.grid-2,.grid-3,.grid-4,.review-grid{display:grid;grid-gap:16px;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.review-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.review-span-2{grid-column:span 2}.summary-grid{display:grid;overflow:hidden;border:1px solid var(--border-muted);border-radius:var(--control-radius)}.summary-grid,.summary-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr))}.summary-grid.discipline-summary-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.summary-grid.discipline-summary-grid>.summary-item:nth-child(3n){border-right:1px solid var(--border-muted)}.summary-grid.discipline-summary-grid>.summary-item:nth-child(5n){border-right:0}.summary-grid.discipline-summary-grid>.summary-item:nth-last-child(-n+5){border-bottom:0}.summary-item{min-width:0;padding:14px 16px;border-right:1px solid var(--border-muted);border-bottom:1px solid var(--border-muted);background:var(--panel)}.summary-grid>.summary-item:nth-child(3n){border-right:0}.summary-grid>.summary-item:nth-last-child(-n+3){border-bottom:0}.metric strong,.summary-item strong{display:block;margin-top:4px;color:var(--text);font-size:20px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.25}.card,.metric{min-width:0;padding:14px}.metric{min-height:88px}.metric strong{font-size:22px}.label,.metric .label{color:var(--muted);font-size:12px;font-weight:600}.panel{min-width:0;padding:16px}.card h3,.card h4{margin-bottom:6px}.stack{display:grid;grid-gap:12px;gap:12px}.list{display:grid;grid-gap:8px;gap:8px}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:var(--control-radius)}.table{width:100%;border-collapse:collapse;background:var(--panel);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table td,.table th{padding:10px 12px;border-bottom:1px solid var(--border-muted);text-align:left;vertical-align:top}.table tr:last-child td{border-bottom:0}.table tbody tr:hover,.table th{background:var(--panel-muted)}.table th{color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap}.input,.textarea,select{width:100%;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--bg);color:var(--text);padding:8px 10px}.input:hover,.textarea:hover,select:hover{border-color:#8c959f}.input:focus,.textarea:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgb(9 105 218/12%);outline:0}.field-inline{display:grid;grid-gap:6px;gap:6px;min-width:240px;flex:1 1 280px}.field-inline>span{color:var(--muted);font-size:12px;font-weight:600}.textarea{min-height:128px;resize:vertical}.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;border:1px solid var(--accent);border-radius:var(--control-radius);background:var(--accent);color:#ffffff;padding:6px 14px;font-size:14px;font-weight:600;line-height:20px;white-space:nowrap;transition:background-color .12s ease,border-color .12s ease,color .12s ease,transform .12s ease}.button:hover{border-color:var(--accent-strong);background:var(--accent-strong);text-decoration:none}.button:active,.icon-button:active{transform:translateY(1px)}.button:disabled,.icon-button:disabled{opacity:.55;cursor:not-allowed;transform:none}.button.secondary{border-color:var(--border);background:var(--panel);color:var(--text)}.button.secondary:hover{background:var(--panel-muted);border-color:#8c959f}.button.danger{border-color:rgb(207 34 46/35%);background:var(--danger-soft);color:var(--danger)}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--panel);color:var(--muted);padding:0;transition:background-color .12s ease,border-color .12s ease,color .12s ease,transform .12s ease}.icon-button:hover{border-color:#8c959f;color:var(--text);background:var(--panel-muted)}.danger-button{color:var(--danger)}.danger-button:hover{border-color:rgb(207 34 46/28%);background:var(--danger-soft);color:var(--danger)}.tag{display:inline-flex;align-items:center;gap:5px;min-height:24px;border:1px solid var(--border);border-radius:999px;background:var(--panel-muted);color:var(--muted);padding:2px 8px;font-size:12px;white-space:nowrap}.tag.ok{border-color:#aceebb;background:var(--ok-soft);color:var(--ok)}.tag.warn{border-color:#d4a72c;background:var(--warn-soft);color:var(--warn)}.tag.danger{border-color:#ff8182;background:var(--danger-soft);color:var(--danger)}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:38px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--panel)}.toggle-row input[type=checkbox]{accent-color:var(--accent)}.mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:12px}.timeline{display:grid;grid-gap:8px;gap:8px}.details summary{cursor:pointer;list-style:none;padding:14px 16px}.details summary::-webkit-details-marker{display:none}.details>.stack{padding:0 16px 16px}.snapshot-item{border:0;border-top:1px solid var(--border-muted);border-radius:0;background:transparent}.snapshot-item:last-child{border-bottom:1px solid var(--border-muted)}.snapshot-item>summary{padding:12px 0}.snapshot-item>summary::-webkit-details-marker{display:none}.snapshot-item[open]>summary{border-bottom:1px solid var(--border-muted)}.snapshot-body{padding:12px 0}.batch-detail{margin-top:12px;border-color:var(--border-muted);border-radius:var(--control-radius);background:var(--panel-muted)}.batch-detail .table{background:transparent}.batch-detail .table td,.batch-detail .table th{padding:10px 12px}.batch-detail .table th{background:rgb(255 255 255/60%)}.chart{width:100%;min-height:260px;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--panel-muted)}.progress{width:100%;height:8px;overflow:hidden;border-radius:999px;background:#eaeef2}.progress span{display:block;height:100%;border-radius:inherit;background:var(--ok)}.small{font-size:12px}.error{color:var(--danger)}.state-box{display:grid;grid-gap:8px;gap:8px;padding:24px}.state-box h1,.state-box h2{font-size:20px;line-height:1.3}.state-box p{max-width:65ch}.error-state{border-color:rgb(207 34 46/35%);background:var(--danger-soft)}.spin{animation:spin .9s linear infinite}.auth-page{display:grid;min-height:100vh;place-items:center;padding:32px;background:var(--canvas)}.auth-card{width:min(420px,100%);padding:28px}.auth-card .brand{display:grid;grid-gap:2px;gap:2px;margin-bottom:24px}.auth-card .brand strong{font-size:16px}.auth-card h1{margin-bottom:8px}.auth-card .button{width:100%}.auth-card .muted{line-height:1.5}.dashboard-hero{grid-template-columns:minmax(0,1fr) minmax(360px,.7fr);align-items:start}.hero-copy,.hero-side{min-width:0}.surface-stat{padding:16px;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--panel-muted)}.stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:14px;gap:14px}.stat-grid.compact{grid-template-columns:repeat(3,minmax(0,1fr))}.stat{min-width:0}.stat strong{display:block;margin-top:3px;font-size:20px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.queue-list{display:grid;border-top:1px solid var(--border-muted)}.queue-row{display:grid;grid-template-columns:minmax(220px,1fr) auto minmax(240px,1.2fr);grid-gap:16px;gap:16px;align-items:center;padding:14px 0;border-bottom:1px solid var(--border-muted);color:var(--text)}.queue-row:last-child{border-bottom:0}.queue-row:hover{text-decoration:none}.queue-main,.queue-meta,.queue-snippet{min-width:0}.queue-snippet{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.divider-row,.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.section-head{padding-bottom:12px;border-bottom:1px solid var(--border-muted)}.section-head h2{font-size:18px;font-weight:600}.section-head h3{font-size:16px;font-weight:600}.divider-list{display:grid;border-top:1px solid var(--border-muted)}.divider-row{min-width:0;padding:12px 0;border-bottom:1px solid var(--border-muted)}.empty-state{display:grid;grid-gap:8px;gap:8px;padding:24px 0 8px}.empty-state p{margin:0}.subsection{min-width:0;padding-top:14px;border-top:1px solid var(--border-muted)}.subsection:first-of-type{padding-top:0;border-top:0}.review-shell{padding:16px 0;border-top:1px solid var(--border-muted);border-bottom:1px solid var(--border-muted)}.discipline-core-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);grid-gap:20px;gap:20px;align-items:start}.discipline-primary-actions{min-height:38px}.discipline-signals-panel{gap:16px}.discipline-signal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:8px;gap:8px}.discipline-settings>summary{padding:0}.discipline-settings>summary .section-head{padding:16px;border-bottom:0}.discipline-settings-body{padding:0 16px 16px}.discipline-settings-section{padding-top:16px;border-top:1px solid var(--border-muted)}.discipline-settings-section:first-child{padding-top:0;border-top:0}.practice-workspace{gap:20px}.practice-toolbar{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(240px,.8fr) minmax(360px,1.5fr);grid-gap:20px;gap:20px;align-items:end}.practice-category-field{display:grid;grid-gap:6px;gap:6px}.practice-rule-strip{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:16px;min-height:34px;color:var(--muted);font-size:12px}.practice-rule-strip span{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.practice-scene-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(360px,.75fr);grid-gap:20px;gap:20px;align-items:start}.practice-decision-panel,.practice-progress-panel,.practice-scene-panel{min-width:0}.practice-scene-panel .section-head h2{margin-top:8px;font-size:22px}.poker-table{display:grid;grid-gap:10px;gap:10px;margin-top:16px}.poker-felt{position:relative;min-height:500px;overflow:hidden;border:10px solid #25323c;border-radius:28px;background:#e4f0e8;box-shadow:inset 0 0 0 2px #b9d1c1}.poker-felt:before{position:absolute;inset:48px 12% 56px;border:2px solid #8fb79c;border-radius:50%;content:"";opacity:.8}.poker-board,.poker-hero-hand,.poker-history,.poker-pot,.poker-seat,.poker-table-header{position:absolute;z-index:1}.poker-table-header{top:18px;left:22px;display:flex;align-items:center;gap:10px}.poker-pot{top:128px;left:50%;display:grid;grid-gap:2px;gap:2px;min-width:90px;transform:translateX(-50%);text-align:center}.poker-pot strong{color:#1f2328;font-size:18px}.poker-board{top:194px;min-height:58px;align-items:center}.poker-board,.poker-hero-hand{left:50%;display:flex;gap:7px;transform:translateX(-50%)}.poker-hero-hand{bottom:82px}.poker-board-empty{color:#59636e;font-size:12px;font-weight:600}.playing-card{display:grid;width:42px;height:58px;place-items:center;border:1px solid #8c959f;border-radius:4px;background:#ffffff;color:#1f2328;font-size:17px;font-weight:700;box-shadow:0 2px 0 rgb(31 35 40/12%)}.playing-card.is-red{color:#cf222e}.poker-seat{display:flex;align-items:center;gap:7px;min-width:112px;padding:6px 8px;border:1px solid #b9d1c1;border-radius:4px;background:rgb(255 255 255/88%)}.poker-seat-0{bottom:16px;left:50%;transform:translateX(-50%)}.poker-seat-1{right:6%;bottom:104px}.poker-seat-2{right:4%;top:190px}.poker-seat-3{top:64px;left:50%;transform:translateX(-50%)}.poker-seat-4{top:190px;left:4%}.poker-seat-5{bottom:104px;left:6%}.poker-seat-avatar{display:grid;width:26px;height:26px;flex:0 0 auto;place-items:center;border:1px solid #8c959f;border-radius:50%;background:#f6f8fa;color:#59636e;font-size:11px;font-weight:700}.poker-seat-avatar.is-hero{border-color:#0969da;background:#ddf4ff;color:#0550ae}.poker-seat-avatar.is-folded{opacity:.55}.poker-seat-copy{display:grid;min-width:0;grid-gap:1px;gap:1px}.poker-seat-copy span,.poker-seat-copy strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.poker-seat-copy strong{font-size:12px}.poker-seat-copy span{color:#59636e;font-size:11px}.poker-history{right:18px;top:18px;left:auto;max-width:42%;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.poker-history span{padding:3px 7px;border:1px solid #b9d1c1;border-radius:999px;background:rgb(255 255 255/72%);color:#59636e;font-size:11px}.poker-table-stats{display:flex;flex-wrap:wrap;gap:14px;color:var(--muted);font-size:12px}.poker-table-stats span{display:inline-flex;align-items:center;gap:5px}.practice-prompt{display:grid;grid-gap:6px;gap:6px;margin-top:16px;padding-top:14px;border-top:1px solid var(--border-muted)}.practice-prompt p{font-size:15px;line-height:1.65}.practice-decision-panel{display:grid;grid-gap:16px;gap:16px}.practice-timer{display:flex;align-items:center;gap:8px;padding:12px 14px;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--panel-muted);color:var(--muted)}.practice-timer.is-running{border-color:#d4a72c;background:var(--warn-soft);color:var(--warn)}.practice-timer strong{color:var(--text);font-size:21px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.practice-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px}.practice-action-button{display:inline-flex;min-height:52px;align-items:center;justify-content:flex-start;gap:9px;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--panel);color:var(--text);padding:10px 12px;font-weight:600;text-align:left;transition:border-color .12s ease,background-color .12s ease,color .12s ease,transform .12s ease}.practice-action-button:not(:disabled):hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.practice-action-button:not(:disabled):active{transform:translateY(1px)}.practice-action-button:disabled{opacity:.58;cursor:not-allowed}.practice-action-button.is-selected{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.practice-action-button.action-fold{color:var(--danger)}.practice-action-button.action-fold:not(:disabled):hover{border-color:var(--danger);background:var(--danger-soft)}.practice-stop-icon{display:inline-grid;width:17px;height:17px;place-items:center;border:1px solid;border-radius:50%;font-size:10px;line-height:1}.practice-start-button{width:100%}.practice-feedback{display:grid;grid-gap:12px;gap:12px;padding:14px;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--panel-muted)}.practice-feedback.is-correct{border-color:#aceebb;background:var(--ok-soft);color:var(--ok)}.practice-feedback.is-wrong{border-color:#ff8182;background:var(--danger-soft);color:var(--danger)}.practice-feedback p,.practice-feedback-actions{color:var(--text)}.practice-feedback-actions{display:grid;grid-gap:4px;gap:4px;font-size:13px}.practice-feedback .muted{color:var(--muted)}.practice-feedback .button{margin-left:auto}.practice-progress-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(260px,1.4fr);grid-gap:12px;gap:12px}.practice-mastery{display:grid;align-content:center;grid-gap:10px;gap:10px;min-width:0;padding:14px;border:1px solid var(--border);border-radius:var(--control-radius)}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}@media (max-width:1399px){.dashboard-hero,.discipline-core-grid{grid-template-columns:minmax(0,1fr)}.practice-toolbar{grid-template-columns:minmax(180px,.8fr) minmax(220px,1fr)}.practice-rule-strip{grid-column:1/-1;justify-content:flex-start}.grid-3,.grid-4,.review-grid,.stat-grid,.stat-grid.compact,.summary-grid,.summary-grid.compact,.summary-grid.discipline-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-grid.discipline-summary-grid>.summary-item:nth-child(2n),.summary-grid>.summary-item:nth-child(2n){border-right:0}.summary-grid.discipline-summary-grid>.summary-item:nth-last-child(-n+2),.summary-grid>.summary-item:nth-last-child(-n+2){border-bottom:0}.queue-row{grid-template-columns:minmax(0,1fr) auto;align-items:start}.queue-snippet{grid-column:1/-1;white-space:normal}.practice-scene-layout{grid-template-columns:minmax(0,1fr)}.practice-progress-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.practice-mastery{grid-column:1/-1}}@media (max-width:1099px){body{overflow-x:hidden}.app-root,.skip-link{display:none}.desktop-gate{display:grid;min-height:100vh;width:100%;place-items:center;padding:32px;background:var(--canvas)}.desktop-gate-card{width:min(420px,100%);padding:24px;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--panel);box-shadow:var(--shadow)}.desktop-gate-card p{margin:8px 0 0;color:var(--muted)}}