:root{--green:#26944a;--green-deep:#0f5a34;--forest:#05281f;--ink:#0b1f17;--muted:#4f5f58;--line:#e4e6e2;--cream:#fbefdb;--mint:#e2f4e2;--paper:#fdfcf9;--surface:#fff;--radius:1rem;--radius-sm:.625rem;--gutter:1.25rem;--measure:40rem;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-width:20rem;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Helvetica,Arial,sans-serif;font-size:1rem;line-height:1.55}h1,h2,h3,p,ul,ol,figure,blockquote{margin:0}ul{padding:0;list-style:none}button{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--green-deep);outline-offset:3px;border-radius:.25rem}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:60;background:var(--green-deep);color:#fff;border-radius:var(--radius-sm);padding:.75rem 1rem;font-weight:600;text-decoration:none;position:absolute;top:-4rem;left:.75rem}.skip-link:focus{top:.75rem}.shell{flex-direction:column;min-height:100dvh;display:flex}.masthead{padding:1rem var(--gutter);border-bottom:1px solid var(--line);background:var(--surface);z-index:20;justify-content:space-between;align-items:center;gap:1rem;display:flex;position:sticky;top:0}.wordmark{letter-spacing:.18em;color:var(--green-deep);font-size:.8125rem;font-weight:700}.progress{color:var(--muted);align-items:center;gap:.625rem;font-size:.75rem;font-weight:600;display:flex}.progress-track{background:var(--line);border-radius:999px;width:5.5rem;height:.3125rem;overflow:hidden}.progress-fill{background:var(--green-deep);border-radius:999px;height:100%;transition:width .22s}.stage{padding:2rem var(--gutter) 6.5rem;flex:1}.step{max-width:var(--measure);flex-direction:column;gap:1.5rem;margin:0 auto;display:flex}.eyebrow{text-transform:uppercase;letter-spacing:.14em;color:var(--green-deep);font-size:.6875rem;font-weight:700}.step h1{letter-spacing:-.02em;color:var(--forest);text-wrap:balance;font-size:clamp(1.75rem,1.35rem + 2vw,2.75rem);font-weight:700;line-height:1.12}.lede{color:var(--ink);font-size:1.125rem}.prose{color:var(--muted);flex-direction:column;gap:1rem;display:flex}.prose p{color:inherit}.highlight{border-left:.25rem solid var(--green);background:var(--mint);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--forest);padding:1rem 1.125rem;font-size:1.0625rem;font-weight:600}.role-card{background:var(--forest);color:#fff;border-radius:var(--radius);padding:1.25rem 1.375rem}.role-card .role-label{text-transform:uppercase;letter-spacing:.14em;color:#9fd3b2;font-size:.6875rem;font-weight:700}.role-card .role-name{margin-top:.25rem;font-size:1.375rem;font-weight:700;line-height:1.2}.role-card .role-territory{color:#d7e8dd;margin-top:.125rem;font-size:1rem}.section-title{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);font-size:.75rem;font-weight:700}.cards{grid-template-columns:1fr;gap:.75rem;display:grid}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.9375rem 1rem}.card strong{color:var(--forest);font-size:1rem;display:block}.card span{color:var(--muted);margin-top:.125rem;font-size:.9375rem;display:block}.chips{flex-wrap:wrap;gap:.5rem;display:flex}.chip{border:1px solid var(--line);background:var(--surface);color:var(--forest);border-radius:999px;padding:.4375rem .875rem;font-size:.875rem;font-weight:600}.meta{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.25rem;font-size:.875rem;display:flex}.ladder{flex-direction:column;gap:.5rem;display:flex}.rung{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);align-items:baseline;gap:.75rem;padding:.8125rem 1rem;display:flex}.rung-key{color:var(--green-deep);letter-spacing:.06em;min-width:1.75rem;font-size:.8125rem;font-weight:700}.hierarchy{flex-direction:column;align-items:stretch;gap:.375rem;display:flex}.hierarchy li{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--forest);padding:.8125rem 1rem;font-weight:600}.hierarchy li[data-depth="1"]{margin-inline-start:.75rem}.hierarchy li[data-depth="2"]{margin-inline-start:1.5rem}.hierarchy li[data-depth="3"]{margin-inline-start:2.25rem}.hierarchy .depth-note{color:var(--muted);font-size:.875rem;font-weight:400;display:block}.bands{flex-direction:column;gap:.5rem;display:flex}.band{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;padding:.75rem 1rem;display:grid}.band-year{color:var(--forest);font-size:.9375rem;font-weight:700}.band-bar{background:var(--line);border-radius:999px;height:.5rem;overflow:hidden}.band-bar span{background:var(--green);border-radius:999px;height:100%;display:block}.band-rate{color:var(--green-deep);font-variant-numeric:tabular-nums;font-weight:700}.example{background:var(--cream);border-radius:var(--radius);flex-direction:column;gap:.75rem;padding:1.125rem 1.25rem;display:flex}.example dl{font-variant-numeric:tabular-nums;grid-template-columns:1fr auto;gap:.4375rem 1rem;margin:0;display:grid}.example dt{color:var(--muted)}.example dd{color:var(--forest);margin:0;font-weight:600}.example .total dt,.example .total dd{color:var(--forest);border-top:1px solid #0b1f1724;padding-top:.5rem;font-weight:700}.footnote{color:var(--muted);font-size:.8125rem}.demo-flag{background:var(--cream);color:#6b4a12;text-transform:uppercase;letter-spacing:.08em;border:1px solid #e6d3ae;border-radius:999px;align-self:flex-start;align-items:center;gap:.4375rem;padding:.375rem .75rem;font-size:.75rem;font-weight:700;display:inline-flex}.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem;display:grid}.metric{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.875rem 1rem}.metric span{color:var(--muted);font-size:.75rem;font-weight:600;display:block}.metric strong{color:var(--forest);font-variant-numeric:tabular-nums;margin-top:.1875rem;font-size:1.375rem;display:block}.ai-demo{background:var(--forest);color:#fff;border-radius:var(--radius);flex-direction:column;gap:.875rem;padding:1.125rem 1.25rem;display:flex}.ai-demo .ai-question{border-radius:var(--radius-sm);background:#ffffff1f;padding:.6875rem .875rem;font-weight:600}.ai-demo ol{flex-direction:column;gap:.625rem;margin:0;padding-left:1.125rem;display:flex}.ai-demo li strong{display:block}.ai-demo li span{color:#cfe0d4;font-size:.9375rem}.question{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:.75rem;padding:1.125rem;display:flex}.question label{color:var(--forest);font-weight:600;display:block}.question textarea{resize:vertical;width:100%;min-height:7rem;font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.75rem}.question-actions{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.save-state{color:var(--muted);min-height:1.25rem;font-size:.8125rem}.save-state[data-state=failed]{color:#8a2c17;font-weight:600}.btn{border:2px solid var(--green-deep);background:var(--surface);min-height:2.875rem;color:var(--green-deep);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;padding:0 1.375rem;font-weight:600;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--green-deep);color:#fff}.btn.quiet{border-color:var(--line);color:var(--muted)}.btn.small{min-height:2.5rem;padding:0 1rem;font-size:.875rem}.btn.toggled{background:var(--mint);border-color:var(--green-deep);color:var(--green-deep)}.footer-bar{z-index:30;padding:.875rem var(--gutter) calc(.875rem + env(safe-area-inset-bottom,0px));background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--line);align-items:center;gap:.75rem;display:flex;position:fixed;bottom:0;left:0;right:0}.footer-inner{max-width:var(--measure);align-items:center;gap:.75rem;width:100%;margin:0 auto;display:flex}.footer-inner .btn.primary{flex:1}.ask-launcher{right:var(--gutter);bottom:calc(5.25rem + env(safe-area-inset-bottom,0px));z-index:35;background:var(--forest);color:#fff;cursor:pointer;border:0;border-radius:999px;min-height:3rem;padding:0 1.125rem;font-weight:600;position:fixed;box-shadow:0 10px 28px #05281f47}.ask-dialog{width:100%;max-width:100%;max-height:100dvh;color:inherit;background:0 0;border:0;margin:0;padding:0;position:fixed;inset:auto 0 0}.ask-dialog::backdrop{background:#05281f73}.ask-panel{background:var(--surface);border-radius:var(--radius) var(--radius) 0 0;width:100%;max-height:88dvh;padding:1.25rem var(--gutter) calc(1.25rem + env(safe-area-inset-bottom,0px));flex-direction:column;gap:1rem;display:flex;overflow-y:auto}.ask-head{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.ask-head h2{color:var(--forest);font-size:1.125rem}.ask-panel textarea{resize:vertical;width:100%;min-height:4.5rem;font:inherit;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);color:var(--ink);padding:.75rem}.ask-answer{background:var(--mint);border-radius:var(--radius-sm);color:var(--forest);padding:.875rem 1rem}.notice{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);text-align:center;flex-direction:column;gap:1rem;max-width:32rem;margin:3rem auto;padding:1.75rem;display:flex}.notice h1{color:var(--forest);font-size:1.375rem}.notice p{color:var(--muted)}.notice .btn{align-self:center}.completion{background:var(--forest);color:#fff;border-radius:var(--radius);flex-direction:column;gap:.75rem;padding:1.75rem 1.5rem;display:flex}.completion h2{font-size:1.5rem}.completion p{color:#d7e8dd}.completion .btn{color:var(--green-deep);background:#fff;border-color:#fff;align-self:flex-start}@media (min-width:48rem){:root{--gutter:2.5rem;--measure:46rem}body{font-size:1.0625rem}.stage{padding:3.5rem var(--gutter) 7rem}.step{gap:2rem}.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.ask-dialog{align-items:center;width:min(28rem,100%);height:100dvh;max-height:100dvh;padding:1.5rem;display:flex;inset:0 0 auto auto}.ask-panel{border-radius:var(--radius);width:100%;max-height:80dvh;box-shadow:0 24px 60px #05281f40}}@media (min-width:64rem){:root{--measure:52rem}.step h1{letter-spacing:-.03em}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.dashboard-header{background:var(--forest);color:#fff;border-bottom:2px solid var(--green);justify-content:space-between;align-items:center;padding:.75rem 1.5rem;display:flex}.dashboard-header-left{align-items:center;gap:2rem;display:flex}.portal-brand{align-items:center;gap:.75rem;display:flex}.brand-logo-icon{color:var(--cream);font-size:1.8rem}.brand-titles{flex-direction:column;display:flex}.brand-name{letter-spacing:-.02em;color:#fff;font-size:1.25rem;font-weight:700}.portal-subtitle{color:var(--cream);opacity:.85;font-size:.75rem}.role-switcher-nav{align-items:center;gap:.75rem;display:flex}.role-switcher-label{color:var(--cream);opacity:.8;font-size:.8rem}.role-tabs{border-radius:var(--radius-sm);background:#ffffff1a;gap:.25rem;padding:.2rem;display:flex}.role-tab-btn{color:#fff;cursor:pointer;background:0 0;border:none;border-radius:.4rem;padding:.4rem .85rem;font-size:.85rem;transition:all .15s}.role-tab-btn:hover{background:#ffffff26}.role-tab-btn.active{background:var(--green-deep);color:#fff;font-weight:600;box-shadow:0 1px 3px #0003}.dashboard-header-right{align-items:center;gap:1.25rem;display:flex}.demo-mode-badge{color:#1a1a1a;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;background:#f59e0b;border:1px solid #d97706;border-radius:999px;padding:.25rem .6rem;font-size:.7rem;font-weight:700}.user-profile-badge{align-items:center;gap:.6rem;display:flex}.user-avatar{background:var(--green-deep);color:#fff;border:1px solid #fff3;border-radius:50%;justify-content:center;align-items:center;width:2.2rem;height:2.2rem;font-weight:700;display:flex}.user-details{flex-direction:column;display:flex}.user-display-name{color:#fff;font-size:.875rem;font-weight:600}.user-territory{color:var(--cream);opacity:.8;font-size:.75rem}.dashboard-subnav{border-bottom:1px solid var(--line);background:#fff;gap:.5rem;padding:.75rem 1.5rem;display:flex}.subnav-link{color:var(--muted);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;padding:.5rem 1rem;font-size:.9rem;font-weight:500;transition:all .15s}.subnav-link:hover{color:var(--ink);background:var(--paper)}.subnav-link.active{color:var(--green-deep);background:var(--mint);font-weight:600}.dashboard-content{max-width:80rem;margin:0 auto;padding:1.5rem}.welcome-banner,.parent-welcome-banner,.coach-welcome-banner,.academy-welcome-banner{border-radius:var(--radius);border:1px solid var(--line);background:#fff;margin-bottom:1.5rem;padding:1.5rem}.welcome-banner h2,.parent-welcome-banner h2,.coach-welcome-banner h2,.academy-welcome-banner h2{color:var(--forest);margin-bottom:.5rem;font-size:1.5rem}.parent-welcome-banner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.child-selector-group{align-items:center;gap:.75rem;display:flex}.child-buttons{gap:.5rem;display:flex}.child-btn{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;padding:.5rem 1rem;font-size:.875rem}.child-btn.active{background:var(--green-deep);color:#fff;border-color:var(--green-deep);font-weight:600}.stat-grid{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem;margin-bottom:1.5rem;display:grid}.stat-card{border-radius:var(--radius);border:1px solid var(--line);background:#fff;flex-direction:column;padding:1.25rem;display:flex}.stat-card-top{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.stat-card-label{color:var(--muted);font-size:.85rem;font-weight:500}.stat-card-icon{font-size:1.25rem}.stat-card-value{color:var(--forest);margin-bottom:.25rem;font-size:1.75rem;font-weight:700}.stat-card-bottom{color:var(--muted);flex-direction:column;gap:.2rem;font-size:.75rem;display:flex}.stat-card-trend{font-weight:600}.trend-up{color:var(--green)}.trend-down{color:#d9381e}.section-card{border-radius:var(--radius);border:1px solid var(--line);background:#fff;margin-bottom:1.5rem;padding:1.5rem}.section-card h3{color:var(--forest);margin-bottom:1rem;font-size:1.15rem}.section-card-header{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.badge{border-radius:9999px;padding:.25rem .6rem;font-size:.75rem;font-weight:600;display:inline-block}.badge-success{background:var(--mint);color:var(--green-deep)}.badge-accent{background:var(--cream);color:#78350f}.badge-error{color:#991b1b;background:#fee2e2}.badge-neutral{background:var(--paper);color:var(--muted);border:1px solid var(--line)}.chess-viewer-container{background:var(--paper);border-radius:var(--radius);border:1px solid var(--line);flex-direction:column;align-items:center;margin:1rem 0;padding:1rem;display:flex}.chess-board-header{justify-content:space-between;align-items:center;width:100%;max-width:24rem;margin-bottom:.75rem;font-size:.85rem;display:flex}.board-wrapper{aspect-ratio:1;width:100%;max-width:24rem;position:relative}.board-grid{border:3px solid var(--forest);border-radius:4px;grid-template-rows:repeat(8,1fr);width:100%;height:100%;display:grid;overflow:hidden}.board-row{grid-template-columns:repeat(8,1fr);display:grid}.board-square{cursor:pointer;-webkit-user-select:none;user-select:none;border:none;justify-content:center;align-items:center;padding:0;display:flex;position:relative}.light-sq{background:#eee5d1}.dark-sq{background:#4f765f}.selected-sq{z-index:10;outline:3px solid #ffbe0b!important}.sq-coord-rank{color:#0006;font-size:.65rem;font-weight:700;position:absolute;top:2px;left:2px}.sq-coord-file{color:#0006;font-size:.65rem;font-weight:700;position:absolute;bottom:2px;right:2px}.chess-piece{font-size:2rem;line-height:1}.piece-white{color:#fff;text-shadow:0 1px 2px #000000b3}.piece-black{color:#111;text-shadow:0 1px 2px #fff6}.board-move-controls{align-items:center;gap:.5rem;margin-top:1rem;display:flex}.move-step-indicator{padding:0 .5rem;font-size:.85rem;font-weight:600}.games-layout{grid-template-columns:1fr 1.4fr;gap:1.5rem;display:grid}@media (max-width:48rem){.games-layout{grid-template-columns:1fr}}.game-item-card{border:1px solid var(--line);border-radius:var(--radius-sm);text-align:left;cursor:pointer;background:#fff;flex-direction:column;width:100%;margin-bottom:.5rem;padding:1rem;display:flex}.game-item-card.active{border-color:var(--green-deep);background:var(--mint)}.game-item-top{justify-content:space-between;margin-bottom:.25rem;font-weight:600;display:flex}.game-item-bottom{color:var(--muted);gap:1rem;font-size:.75rem;display:flex}.result-win{color:var(--green);font-weight:700}.result-loss{color:#d9381e;font-weight:700}.result-draw{color:#b45309;font-weight:700}.coach-chat-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;flex-direction:column;min-height:28rem;padding:1.5rem;display:flex}.coach-chat-header{border-bottom:1px solid var(--line);align-items:center;gap:1rem;margin-bottom:1rem;padding-bottom:1rem;display:flex}.coach-avatar{color:var(--green-deep);font-size:2rem}.coach-messages-area{flex-direction:column;flex:1;gap:1rem;padding:1rem 0;display:flex;overflow-y:auto}.coach-msg{display:flex}.msg-coach{justify-content:flex-start}.msg-student{justify-content:flex-end}.msg-bubble{border-radius:var(--radius);max-width:80%;padding:.85rem 1.15rem}.msg-coach .msg-bubble{background:var(--paper);border:1px solid var(--line)}.msg-student .msg-bubble{background:var(--green-deep);color:#fff}.msg-sender-name{color:var(--muted);margin-bottom:.25rem;font-size:.75rem;font-weight:600;display:block}.msg-student .msg-sender-name{color:var(--cream)}.coach-input-form{gap:.75rem;margin-top:1rem;display:flex}.coach-input-form input{border:1px solid var(--line);border-radius:var(--radius-sm);flex:1;padding:.75rem;font-size:.95rem}.table-responsive{overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:.875rem}.data-table th{text-align:left;background:var(--paper);border-bottom:2px solid var(--line);color:var(--muted);padding:.75rem 1rem;font-weight:600}.data-table td{border-bottom:1px solid var(--line);padding:.85rem 1rem}.row-selected{background:var(--mint)!important}.login-page-container{background:var(--paper);justify-content:center;align-items:center;min-height:100vh;padding:2rem 1rem;display:flex}.login-card{border-radius:var(--radius);border:1px solid var(--line);background:#fff;width:100%;max-width:28rem;padding:2.5rem 2rem;box-shadow:0 4px 20px #0000000d}.login-header{text-align:center;margin-bottom:2rem}.brand-logo-large{color:var(--green-deep);margin-bottom:.5rem;font-size:3rem}.login-header h1{color:var(--forest);margin-bottom:.25rem;font-size:1.75rem}.login-subtitle{color:var(--muted);font-size:.875rem}.login-form{flex-direction:column;gap:1.25rem;display:flex}.form-group{flex-direction:column;gap:.4rem;display:flex}.form-group label{color:var(--ink);font-size:.85rem;font-weight:600}.form-group input,.form-group select{border:1px solid var(--line);border-radius:var(--radius-sm);padding:.75rem;font-size:.95rem}.btn-full{width:100%;margin-top:.5rem;padding:.85rem}.login-divider{text-align:center;color:var(--muted);align-items:center;margin:1.75rem 0 1.25rem;font-size:.8rem;display:flex}.login-divider:before,.login-divider:after{content:"";border-bottom:1px solid var(--line);flex:1}.login-divider span{padding:0 .75rem}.persona-quick-grid{grid-template-columns:1fr 1fr;gap:.5rem;display:grid}.persona-btn{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;padding:.75rem;transition:all .15s;display:flex}.persona-btn:hover{border-color:var(--green-deep);background:var(--mint)}.persona-role{color:var(--green-deep);font-size:.75rem;font-weight:700}.persona-name{color:var(--muted);font-size:.8rem}.login-footer-links{text-align:center;color:var(--muted);margin-top:2rem;font-size:.8rem}.login-footer-links a{color:var(--green-deep);font-weight:600;text-decoration:underline}
