:root{--ink:#183226;--ink-soft:#4b6155;--bg:#fbf6ec;--card:#fffdf8;--line:#1832261f;--accent:#f08a24;--accent-dark:#b95d08;--green:#2f8f4e;--good:#1f8a4c;--bad:#d23c41;--font-display:"Kanit", system-ui, sans-serif;--font-body:"IBM Plex Sans Thai", system-ui, sans-serif;--shadow:0 10px 30px -18px #16342873}*{box-sizing:border-box}html{scroll-behavior:smooth}body.doc{background:var(--bg);min-height:100vh;color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;line-height:1.65}[hidden]{display:none!important}a{color:var(--accent-dark)}button{font:inherit;cursor:pointer}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--ink-soft)}.nowrap{white-space:nowrap}.doc-header{z-index:10;-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:#fbf6ece6;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem clamp(16px,4vw,40px);display:flex;position:sticky;top:0}.doc-brand{font-family:var(--font-display);color:var(--ink);align-items:center;gap:.6rem;font-size:1.1rem;font-weight:600;text-decoration:none;display:inline-flex}.doc-brand small{color:var(--accent-dark);margin-left:.3rem;font-weight:500}.brand-mark{width:36px;height:36px;display:inline-grid}.brand-mark svg{width:100%;height:100%}.doc-nav{flex-wrap:wrap;align-items:center;gap:.4rem 1rem;font-size:.95rem;display:flex}.doc-nav a{color:var(--ink);font-weight:500}.doc-user{color:var(--ink-soft);font-size:.9rem}.btn{font-family:var(--font-display);white-space:nowrap;border:0;border-radius:999px;justify-content:center;align-items:center;gap:.45rem;padding:.75rem 1.3rem;font-size:1rem;font-weight:500;line-height:1;transition:transform .15s,background .15s,box-shadow .15s;display:inline-flex}.btn:focus-visible,.class-item:focus-visible,.tabs button:focus-visible,.icon-del:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.btn:disabled{opacity:.55;pointer-events:none}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 4px 0 var(--accent-dark)}.btn-primary:hover{transform:translateY(-1px)}.btn-primary:active{box-shadow:0 1px 0 var(--accent-dark);transform:translateY(3px)}.btn-ghost{color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line);background:#fff}.btn-ghost:hover{box-shadow:inset 0 0 0 1.5px var(--ink-soft)}.btn-danger{color:var(--bad)}.btn-sm{padding:.55rem .95rem;font-size:.9rem}.btn-block{width:100%}.doc-main{max-width:1320px;margin:0 auto;padding:clamp(16px,3vw,32px) clamp(16px,4vw,40px) 64px}.doc-loading{color:var(--ink-soft)}.auth-view{place-items:center;min-height:calc(100vh - 160px);display:grid}.auth-card{background:var(--card);width:min(460px,100%);box-shadow:var(--shadow), inset 0 0 0 1px var(--line);border-radius:24px;padding:2rem}.doc-h1{font-family:var(--font-display);text-wrap:balance;margin:0 0 .4rem;font-size:clamp(1.6rem,3vw,2.2rem);font-weight:700;line-height:1.25}.doc-h2{font-family:var(--font-display);margin:0 0 .8rem;font-size:1.3rem;font-weight:600}.doc-h3{font-family:var(--font-display);margin:0 0 .7rem;font-size:1.05rem;font-weight:600}.doc-lead{color:var(--ink-soft);margin:0 0 1.2rem}.tabs{background:#1832260f;border-radius:14px;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:1rem;padding:4px;display:grid}.tabs button{font-family:var(--font-display);color:var(--ink-soft);background:0 0;border:0;border-radius:10px;padding:.6rem;font-weight:500}.tabs button[aria-selected=true]{color:var(--ink);background:#fff;box-shadow:0 2px 6px #1634281f}.doc-form{gap:.8rem;display:grid}.doc-field{gap:.3rem;display:grid}.doc-field span{font-size:.9rem;font-weight:600}.doc-field input{font:inherit;color:var(--ink);background:#fff;border:0;border-radius:12px;width:100%;padding:.7rem .85rem;box-shadow:inset 0 0 0 1.5px #18322633}.doc-field input:focus{box-shadow:inset 0 0 0 2.5px var(--accent);outline:none}.form-error{min-height:1.2em;color:var(--bad);margin:0;font-size:.92rem;font-weight:600}.dash{grid-template-columns:270px minmax(0,1fr);align-items:start;gap:1.6rem;display:grid}.dash-side{background:var(--card);box-shadow:var(--shadow), inset 0 0 0 1px var(--line);border-radius:20px;padding:1.1rem;position:sticky;top:80px}.class-list{gap:.35rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.class-item{text-align:left;width:100%;color:var(--ink);background:0 0;border:0;border-radius:12px;padding:.6rem .75rem;display:grid}.class-item strong{font-family:var(--font-display);font-weight:500}.class-item span{color:var(--ink-soft);font-size:.82rem}.class-item:hover{background:#1832260d}.class-item.is-active{background:color-mix(in srgb, var(--accent) 14%, white);box-shadow:inset 3px 0 0 var(--accent)}.create-class{border-top:1px solid var(--line);gap:.6rem;padding-top:1rem;display:grid}.empty-state .steps{gap:.5rem;padding-left:1.3rem;display:grid}.report-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1rem;display:flex}.eyebrow-doc{color:var(--accent-dark);margin:0;font-size:.85rem;font-weight:600}.report-actions,.join-actions{flex-wrap:wrap;gap:.5rem;display:flex}.join-box{background:var(--card);box-shadow:var(--shadow), inset 0 0 0 1px var(--line);border-radius:20px;align-items:center;gap:1.2rem;margin-bottom:1.2rem;padding:1rem;display:flex}.join-box canvas{border-radius:12px;flex:none}.join-box p{margin:0}.join-code{font-family:var(--font-display);letter-spacing:.25em;font-size:2.4rem;font-weight:700;line-height:1.2}.join-url{word-break:break-all;font-size:.85rem;margin-bottom:.6rem!important}.kpis{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.8rem;margin-bottom:1.6rem;display:grid}.kpi{background:var(--card);box-shadow:inset 0 0 0 1px var(--line);border-radius:18px;padding:.9rem 1rem;display:grid}.kpi span{color:var(--ink-soft);font-size:.85rem}.kpi b{font-family:var(--font-display);font-size:1.7rem;font-weight:600;line-height:1.3}.kpi small{color:var(--ink-soft);font-size:.78rem}.kpi-accent{background:color-mix(in srgb, var(--accent) 12%, white);box-shadow:inset 0 0 0 1.5px color-mix(in srgb, var(--accent) 40%, transparent)}.doc-section{margin-bottom:2rem}.doc-note{color:var(--ink-soft);margin:.5rem 0;font-size:.88rem}.doc-conclusion{border-left:4px solid var(--green);background:#eef7f0;border-radius:14px;margin:.8rem 0 0;padding:.8rem 1rem}.table-scroll{box-shadow:inset 0 0 0 1px var(--line);border-radius:16px;overflow-x:auto}.doc-table{border-collapse:collapse;background:var(--card);width:100%;box-shadow:inset 0 0 0 1px var(--line);border-radius:16px;font-size:.92rem;overflow:hidden}.table-scroll .doc-table{box-shadow:none}.doc-table th,.doc-table td{text-align:center;border-bottom:1px solid var(--line);vertical-align:middle;padding:.55rem .7rem}.doc-table th{font-family:var(--font-display);background:#1832260d;font-weight:500;line-height:1.3}.doc-table td:nth-child(2),.doc-table th:nth-child(2){text-align:left}.doc-table tbody tr:last-child td{border-bottom:0}.row-total td{background:#1832260a;font-weight:600}.student-table td,.student-table th{white-space:nowrap}.name-cell small{color:var(--ink-soft);font-size:.75rem;display:block}.up{color:var(--good);font-weight:700}.down{color:var(--bad);font-weight:700}.tag{border-radius:999px;padding:.15rem .6rem;font-size:.8rem;font-weight:600;display:inline-block}.tag-good{color:#17693a;background:#dff3e6}.tag-bad{color:#a1262a;background:#fde4e4}.mini-bar{vertical-align:middle;background:#1832261a;border-radius:99px;width:60px;height:8px;margin-right:.4rem;display:inline-block;overflow:hidden}.mini-bar i{background:var(--green);height:100%;display:block}.icon-del{color:var(--ink-soft);background:0 0;border:0;border-radius:8px;place-items:center;width:32px;height:32px;display:grid}.icon-del:hover{color:var(--bad);background:#fde4e4}.icon-del svg{width:16px;height:16px}.print-only{display:none}.signature{text-align:right;margin-top:3rem}@media (width<=860px){.dash{grid-template-columns:1fr}.dash-side{position:static}.join-box{flex-direction:column;align-items:flex-start}}@media print{@page{size:A4;margin:14mm}body.doc{background:#fff;font-size:11pt}.doc-header,.dash-side,.no-print{display:none!important}.print-only,.dash{display:block}.doc-main{max-width:none;padding:0}.doc-section{break-inside:avoid}.kpi,.doc-table,.table-scroll{box-shadow:0 0 0 1px #999}.doc-table th,.doc-table td{border-bottom-color:#bbb}a{color:inherit;text-decoration:none}}
