:root{--color-bg: #f5f5f7;--color-surface: #ffffff;--color-text: #1d1d1f;--color-text-secondary: #6e6e73;--color-accent: #0071e3;--color-accent-hover: #0077ed;--color-accent-active: #006edb;--color-success-bg: #eaf6ef;--color-success-text: #1e7145;--color-danger: #d70015;--color-hairline: rgba(0, 0, 0, .08);--radius-lg: 18px;--radius-md: 12px;--radius-pill: 980px;--shadow-card: 0 2px 10px rgba(0, 0, 0, .05), 0 1px 2px rgba(0, 0, 0, .04);--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", "Helvetica Neue", Roboto, sans-serif}*{box-sizing:border-box}body{margin:0;font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased}.app-header{position:sticky;top:0;z-index:10;background:#1d1d1fcc;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);color:#f5f5f7;padding:0 1.5rem;height:52px;display:flex;align-items:center;gap:2rem}.admin-header{background:#1c1b33eb}.admin-badge{display:inline-block;margin-left:.5rem;padding:.15rem .55rem;background:#ffffff26;border-radius:var(--radius-pill);font-size:.7rem;font-weight:500;letter-spacing:.02em;vertical-align:middle}.app-header h1{font-size:.95rem;font-weight:600;letter-spacing:-.01em;margin:0;white-space:nowrap}.app-header nav{display:flex;gap:1.5rem}.app-header nav a{color:#f5f5f7bf;text-decoration:none;font-size:.8rem;font-weight:400;letter-spacing:.01em;transition:color .2s ease}.app-header nav a:hover{color:#fff}.app-header nav a.active{color:#fff}.app-header .auth-status{margin-left:auto;display:flex;align-items:center;gap:1rem;font-size:.8rem;color:#f5f5f7bf}.app-header .auth-status a{color:#f5f5f7bf;text-decoration:none;font-weight:400;transition:color .2s ease}.app-header .auth-status a:hover{color:#fff}.app-header .auth-status button{background:#ffffff1a;border:none;color:#f5f5f7;border-radius:var(--radius-pill);padding:.4rem .9rem;cursor:pointer;font-size:.8rem;font-family:inherit;transition:background .2s ease}.app-header .auth-status button:hover{background:#ffffff2e}main{max-width:640px;margin:0 auto;padding:3rem 1.5rem 4rem}section h2{font-size:2rem;font-weight:700;letter-spacing:-.03em;margin:0 0 .5rem}.hint{color:var(--color-text-secondary);font-size:.95rem;line-height:1.5}.hint a{color:var(--color-accent);text-decoration:none;font-weight:500}.hint a:hover{text-decoration:underline}.think-form,.auth-form{display:flex;flex-direction:column;gap:.85rem;margin-top:1.5rem}.auth-form{max-width:360px}.think-form textarea,.think-form input,.auth-form input,.auth-form select{padding:.85rem 1rem;border:none;background:var(--color-surface);box-shadow:inset 0 0 0 1px var(--color-hairline);border-radius:var(--radius-md);font-size:1rem;font-family:inherit;color:var(--color-text);resize:vertical;transition:box-shadow .2s ease}.think-form textarea:focus,.think-form input:focus,.auth-form input:focus,.auth-form select:focus{outline:none;box-shadow:inset 0 0 0 1.5px var(--color-accent)}.think-form textarea::placeholder,.think-form input::placeholder,.auth-form input::placeholder{color:#a1a1a6}.think-form button,.auth-form button{align-self:flex-start;padding:.7rem 1.5rem;background:var(--color-accent);color:#fff;border:none;border-radius:var(--radius-pill);font-weight:500;font-size:.95rem;font-family:inherit;cursor:pointer;transition:background .2s ease,transform .1s ease}.think-form button:hover:not(:disabled),.auth-form button:hover:not(:disabled){background:var(--color-accent-hover)}.think-form button:active:not(:disabled),.auth-form button:active:not(:disabled){background:var(--color-accent-active);transform:scale(.98)}.think-form button:disabled,.auth-form button:disabled{background:#d2d2d7;color:#8a8a8e;cursor:not-allowed}.admin-app main{max-width:1200px}.admin-page{display:grid;grid-template-columns:220px minmax(0,1fr);column-gap:2rem;align-items:start}.admin-page>*{grid-column:2}.admin-page>.admin-sidebar{grid-column:1;grid-row:1 / span 100;position:sticky;top:76px}.admin-sidebar{display:flex;flex-direction:column;gap:.25rem;padding:.75rem;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.admin-tab{display:flex;align-items:center;justify-content:space-between;padding:.6rem .85rem;border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-text-secondary);font-size:.9rem;font-weight:500;text-align:left;cursor:pointer}.admin-tab:hover{background:var(--color-bg)}.admin-tab.active{background:var(--color-accent);color:#fff}.admin-mobilebar,.admin-backdrop{display:none}@media(max-width:767px){.admin-app main{padding:1rem 1rem 3rem}.admin-page{grid-template-columns:minmax(0,1fr)}.admin-page>*{grid-column:1}.admin-page>.admin-sidebar{grid-column:1;grid-row:auto;position:fixed;top:0;bottom:0;left:0;z-index:30;width:260px;max-width:80vw;padding:4rem .75rem 1rem;border-radius:0 var(--radius-lg) var(--radius-lg) 0;overflow-y:auto;transform:translate(-105%);transition:transform .25s ease}.admin-page>.admin-sidebar.open{transform:translate(0)}.admin-header{position:static}.admin-page>.admin-mobilebar{grid-column:1;display:flex;align-items:center;gap:.75rem;position:sticky;top:0;z-index:5;margin:0 -1rem 1rem;padding:.6rem 1rem;background:#f5f5f7eb;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-bottom:1px solid var(--color-hairline)}.admin-menu-toggle{display:inline-flex;padding:.4rem;border:none;border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-card);cursor:pointer}.admin-mobilebar-title{font-size:.95rem;font-weight:600}.admin-page>.admin-backdrop{grid-column:1;display:block;position:fixed;inset:0;z-index:20;background:#00000059}body.admin-nav-locked{overflow:hidden}}.admin-tab-count{font-size:.78rem;opacity:.8}.user-list-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap}.user-list-header .class-name,.user-list-total{margin:0}.user-search{width:260px;max-width:100%;margin:0;padding:.6rem .9rem;border:none;background:var(--color-bg);box-shadow:inset 0 0 0 1px var(--color-hairline);border-radius:var(--radius-md);font-size:.95rem;font-family:inherit;color:var(--color-text)}.user-search:focus{outline:none;box-shadow:inset 0 0 0 1.5px var(--color-accent)}.user-list{list-style:none;margin:1rem 0 0;padding:0}.user-list-columns,.user-row{display:grid;grid-template-columns:var(--user-cols, minmax(0, 2.2fr) minmax(0, 1.4fr) 80px 170px);column-gap:1rem;align-items:center}.user-list-columns{padding:.5rem .75rem;background:var(--color-bg);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:.78rem;font-weight:600}.user-group-header{margin-top:1.25rem;padding:0 .75rem .4rem;border-bottom:1px dashed var(--color-hairline);color:var(--color-text-secondary);font-size:.82rem;font-weight:600}.user-row{padding:.75rem;border-bottom:1px solid var(--color-hairline)}.user-row-main{display:flex;align-items:center;gap:.75rem;min-width:0}.user-row-check-spacer{display:inline-block;width:20px;flex:none}.user-avatar{flex:none;display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:#e8e8fd;color:#4a47a3;font-size:.9rem;font-weight:600}.user-identity{min-width:0}.user-name{font-size:.95rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-identity .roster-email{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-row-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem}.role-badge,.org-chip,.status-chip{display:inline-block;padding:.15rem .6rem;border-radius:var(--radius-pill);font-size:.75rem;font-weight:600;white-space:nowrap}.role-admin{background:#ece6ff;color:#5b3fd1}.role-teacher{background:#e3f0ff;color:#0a5cc2}.role-other{background:#ececef;color:#55555b}.org-chip{background:var(--color-bg);color:var(--color-text-secondary);font-weight:500}.status-chip.active{background:var(--color-success-bg);color:var(--color-success-text)}.status-chip.inactive{background:#fdecee;color:var(--color-danger)}.user-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:.4rem}.user-action-primary{padding:.4rem .9rem;border:none;border-radius:var(--radius-md);background:#eaf2ff;color:var(--color-accent);font-size:.82rem;font-weight:600;cursor:pointer}.user-action-primary:hover:not(:disabled){background:#dbe9ff}.user-menu{position:relative}.user-menu-toggle{display:inline-flex;padding:.35rem;border:none;border-radius:var(--radius-md);background:transparent;color:var(--color-text-secondary);cursor:pointer}.user-menu-toggle:hover:not(:disabled){background:var(--color-bg)}.user-menu-popover{position:absolute;right:0;top:calc(100% + 4px);z-index:15;min-width:150px;display:flex;flex-direction:column;padding:.35rem;background:var(--color-surface);border-radius:var(--radius-md);box-shadow:0 8px 24px #00000024,0 0 0 1px var(--color-hairline)}.user-menu-popover button{padding:.5rem .75rem;border:none;border-radius:8px;background:transparent;color:var(--color-text);font-size:.85rem;text-align:left;cursor:pointer}.user-menu-popover button:hover{background:var(--color-bg)}.user-menu-popover button.danger{color:var(--color-danger)}.user-row-panel{grid-column:1 / -1;min-width:0}.user-row-panel:empty{display:none}.user-row-panel>*{margin-top:.75rem}.user-row-panel .user-row-msg{margin-bottom:0}.user-list-filters{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem}.user-list-filters .hint{margin:0}.user-list.teacher-list{--user-cols: minmax(0, 2fr) minmax(0, 1.2fr) minmax(0, 2.6fr)}.user-list.audit-list{--user-cols: 170px minmax(0, 1fr)}.user-list.code-list{--user-cols: minmax(0, 1.3fr) minmax(0, 1.4fr) minmax(0, 1fr) 90px 140px}.org-avatar{border-radius:10px;background:#e3f0ff;color:#0a5cc2}.user-action-secondary{padding:.4rem .8rem;border:none;border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text);font-size:.82rem;font-weight:500;cursor:pointer}.user-action-secondary:hover:not(:disabled){background:#ebebef}.teacher-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem}.metric{display:flex;flex-direction:column}.metric-label{color:var(--color-text-secondary);font-size:.72rem}.metric-value{font-size:.95rem;font-weight:600}.audit-time{color:var(--color-text-secondary);font-size:.8rem}.audit-desc{font-size:.9rem;line-height:1.4}.join-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9rem;font-weight:600;letter-spacing:.04em}.user-row-usage{display:flex;flex-direction:column;font-size:.88rem}@media(max-width:1100px){.user-name,.user-identity .roster-email{white-space:normal;overflow-wrap:break-word}.user-list-columns{display:none}.user-search{width:100%}.user-row{grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"main main main" "meta status actions";row-gap:.5rem;column-gap:.5rem}.user-row-main{grid-area:main}.user-row-actions{grid-area:actions}.user-row-meta{grid-area:meta}.user-row-status{grid-area:status;justify-self:end}.user-row-main .user-name,.user-row-main .roster-email{white-space:normal}.user-row-usage{grid-area:usage;flex-direction:row;gap:.75rem}.code-list .user-row{grid-template-areas:"main main actions" "meta meta status" "usage usage usage"}.teacher-list .user-row{grid-template-areas:"main main main" "meta meta meta" "status status status"}.teacher-list .user-row-status{justify-self:stretch}.audit-list .user-row{grid-template-columns:minmax(0,1fr);grid-template-areas:none;row-gap:.15rem}}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem 1.5rem;margin:1.25rem 0 0}.detail-item{min-width:0;padding:.75rem 1rem;background:var(--color-bg);border-radius:var(--radius-md)}.detail-item dt{color:var(--color-text-secondary);font-size:.75rem;font-weight:600}.detail-item dd{margin:.25rem 0 0;font-size:.98rem;font-weight:600;overflow-wrap:anywhere}.seat-bar{display:block;height:6px;margin-top:.5rem;background:#e3e3e8;border-radius:var(--radius-pill);overflow:hidden}.seat-bar>span{display:block;height:100%;background:var(--color-accent);border-radius:var(--radius-pill)}.card-section{margin-top:1.5rem;padding-top:1.25rem;border-top:1px dashed var(--color-hairline)}.auth-form.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem 1rem;max-width:none;margin-top:1.25rem}.form-grid>label{display:flex;flex-direction:column;gap:.35rem;font-size:.8rem;font-weight:600;color:var(--color-text-secondary)}.form-grid input,.form-grid select{width:100%;min-width:0;padding:.65rem .9rem;font-size:.95rem}.form-grid>button[type=submit]{grid-column:1 / -1;justify-self:end}.form-hint{grid-column:1 / -1;margin:-.35rem 0 0;font-size:.82rem}.form-actions{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:.5rem}.auth-form .secondary-button{background:var(--color-bg);color:var(--color-text)}.auth-form .secondary-button:hover:not(:disabled){background:#ebebef}@media(max-width:767px){.auth-form.form-grid{grid-template-columns:minmax(0,1fr)}}.result-card{margin-top:1.5rem;padding:1.5rem;background:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.status{font-size:.8rem;color:var(--color-success-text);font-weight:600;text-transform:uppercase;letter-spacing:.03em;margin:0 0 .5rem}.thinking-canvas{display:block;width:280px;height:90px;margin:.5rem 0 1rem}.class-name{font-size:1.1rem;font-weight:600;margin:0}.class-toggle{cursor:pointer;-webkit-user-select:none;user-select:none}.question-text{font-size:1.05rem;font-style:normal;color:var(--color-text);margin:0 0 1rem}.streak-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .9rem;border-radius:var(--radius-pill);background:var(--color-hairline);color:var(--color-text-secondary);font-weight:600;font-size:.9rem;margin:.5rem 0 1rem}.streak-pill--active{background:var(--color-accent);color:#fff}.active-topic-hint{color:var(--color-text-secondary);font-size:.9rem;margin:.25rem 0 .75rem}.active-badge{display:inline-flex;align-items:center;padding:.2rem .6rem;border-radius:var(--radius-pill);background:var(--color-accent);color:#fff;font-size:.85rem;font-weight:600}.level-reveal{padding:1rem 1.25rem;background:var(--color-bg);border-radius:var(--radius-md)}.level-reveal strong{font-size:1.1rem}.level-bar-row{display:flex;align-items:center;gap:.6rem}.level-bar-max{color:var(--color-text-secondary);font-size:.9rem}.level-bar-track,.subscore-bar-track{flex:1;height:8px;background:var(--color-hairline);border-radius:var(--radius-pill);overflow:hidden}.level-bar-fill,.subscore-bar-fill{height:100%;width:var(--bar-fill, 0%);background:var(--color-accent);border-radius:var(--radius-pill);animation:bar-fill .6s ease-out both}.subscore-list{list-style:none;margin:.9rem 0 0;padding:0;display:flex;flex-direction:column;gap:.45rem}.subscore-row{display:grid;grid-template-columns:4.2rem 1fr 2.6rem;align-items:center;gap:.6rem;font-size:.85rem;color:var(--color-text-secondary)}.subscore-value{text-align:right;font-variant-numeric:tabular-nums}@keyframes bar-fill{0%{width:0%}}.level-reveal.level-up{animation:level-up-pulse 1.1s ease-out}.personal-best-badge{margin:.5rem 0 0;font-weight:600;color:var(--color-accent)}.level-reveal.personal-best{animation:personal-best-glow 1.4s ease-out}@keyframes personal-best-glow{0%{box-shadow:0 0 #ffb80080}70%{box-shadow:0 0 0 16px #ffb80000}to{box-shadow:0 0 #ffb80000}}@keyframes level-up-pulse{0%{box-shadow:0 0 #0071e359}60%{box-shadow:0 0 0 10px #0071e300}to{box-shadow:0 0 #0071e300}}@media(prefers-reduced-motion:reduce){.level-bar-fill,.subscore-bar-fill,.level-reveal.level-up,.level-reveal.personal-best{animation:none}}.coaching-box{margin-top:1rem;padding:1rem 1.25rem;background:var(--color-success-bg);border-radius:var(--radius-md)}.coaching-box a{color:var(--color-accent);text-decoration:none;font-size:.85rem;font-weight:500}.hint-button{margin-top:1rem;padding:.55rem 1.1rem;background:var(--color-bg);border:none;border-radius:var(--radius-pill);color:var(--color-accent);cursor:pointer;font-size:.9rem;font-family:inherit;font-weight:500;transition:background .2s ease}.hint-button:hover{background:#e8e8ed}.error{color:var(--color-danger);font-size:.9rem}.class-list{display:flex;flex-direction:column;gap:.75rem;margin-top:1.5rem}.roster-list{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.roster-list li{font-size:.95rem}.roster-list a{color:var(--color-accent);text-decoration:none;font-weight:500}.roster-list a:hover{text-decoration:underline}.roster-email{color:var(--color-text-secondary);font-size:.85rem}.result-card select,.result-card>input[type=text]{margin-top:.5rem;padding:.6rem .9rem;border:none;background:var(--color-bg);box-shadow:inset 0 0 0 1px var(--color-hairline);border-radius:var(--radius-md);font-size:.95rem;font-family:inherit;color:var(--color-text)}.result-card>input[type=text]{display:block;width:100%;max-width:320px}.result-card>input[type=text]:focus{outline:none;box-shadow:inset 0 0 0 1.5px var(--color-accent)}@media(max-width:640px){.app-header{height:auto;flex-wrap:wrap;row-gap:.6rem;padding:.75rem 1rem}.app-header nav{gap:1rem;flex-wrap:wrap}.app-header .auth-status{margin-left:0;flex-basis:100%;justify-content:flex-end}main{padding:2rem 1rem 3rem}section h2{font-size:1.5rem}}.growth-metrics{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.growth-metric-card{display:flex;flex-direction:column;gap:.4rem}.growth-chart{width:100%;max-width:280px;height:80px}
