:root{--navy:#0b3b66;--blue:#1769aa;--sky:#e9f5ff;--gold:#ffc857;--ink:#13283d;--muted:#63758a;--line:#dce6ef;--paper:#f5f8fc;--white:#fff;--green:#168267;--red:#d64a4a;--shadow:0 14px 38px rgba(11,59,102,.11)}*{box-sizing:border-box}html{font-size:16px}body{margin:0;background:var(--paper);color:var(--ink);font:1rem/1.5 Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}h1,h2,h3,p{margin-top:0}h2{line-height:1.22}small{display:block}.muted{color:var(--muted)}.wide{width:100%}.btn{border:0;border-radius:12px;padding:11px 16px;font-weight:800}.primary{background:var(--navy);color:white}.gold{background:var(--gold);color:#3f2b00}.soft{background:#e8f0f7;color:var(--navy)}.pill{display:inline-flex;border-radius:99px;padding:5px 10px;background:#e7f2fc;color:var(--blue);font-size:.78rem;font-weight:850}.pill.green{background:#e5f7f1;color:var(--green)}
.login-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 15% 20%,#d8efff,transparent 30%),radial-gradient(circle at 85% 80%,#fff1bf,transparent 28%),var(--paper)}.login-card{width:min(480px,100%);background:white;padding:32px;border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}.logo{display:flex;gap:12px;align-items:center}.logo>span{display:grid;place-items:center;width:46px;height:46px;border-radius:14px;background:var(--gold);color:var(--navy);font-weight:950}.logo strong{font-size:1.12rem}.logo small{color:var(--muted)}.welcome-art{display:flex;justify-content:center;gap:14px;margin:28px 0}.welcome-art div{display:grid;place-items:center;width:72px;height:72px;border-radius:22px;background:var(--sky);font-size:2rem;transform:rotate(-4deg)}.welcome-art div:nth-child(2){background:#fff3c9;transform:translateY(-12px) rotate(4deg)}.login-card label{display:block;font-weight:750;margin:15px 0}.login-card input{display:block;width:100%;margin-top:7px;padding:12px;border:1px solid var(--line);border-radius:11px}.login-card .consent{display:grid;grid-template-columns:auto 1fr;gap:9px;font-size:.9rem;font-weight:500}.consent input{width:auto;margin:4px 0}.privacy-note{font-size:.8rem;color:var(--muted);margin:12px 0 0;text-align:center}
.app-shell{min-height:100vh;display:grid;grid-template-columns:235px 1fr}.sidebar{background:var(--navy);color:white;padding:24px 17px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}.logo.light{padding:0 8px 25px}.logo.light small{color:#b9d0e5}.sidebar nav{display:grid;gap:7px}.nav{display:flex;gap:12px;align-items:center;border:0;background:transparent;color:#d9e9f7;padding:12px 14px;border-radius:12px;text-align:left;font-weight:750}.nav.active,.nav:hover{background:rgba(255,255,255,.12);color:white}.side-tools{margin-top:auto;display:grid;gap:7px}.mini-btn{border:1px solid rgba(255,255,255,.18);background:transparent;color:#d9e9f7;border-radius:9px;padding:8px}.app-shell main{padding:26px 30px;max-width:1500px;width:100%;margin:auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.eyebrow{text-transform:uppercase;color:var(--blue);font-size:.75rem;font-weight:900;letter-spacing:.1em;margin-bottom:4px}.topbar h1{margin:0;font-size:clamp(1.55rem,3vw,2.2rem)}.profile{display:flex;align-items:center;gap:10px}.profile>span{background:#fff2c1;padding:7px 10px;border-radius:99px;font-size:.8rem;font-weight:800}.avatar{width:42px;height:42px;background:var(--blue);color:white;border-radius:50%;display:grid;place-items:center;font-weight:900}.profile small{color:var(--muted)}
.view{display:none}.view.active{display:block}.hero-card{display:grid;grid-template-columns:1.35fr .65fr;gap:26px;background:linear-gradient(125deg,var(--navy),#145f98);color:white;padding:30px;border-radius:23px;box-shadow:var(--shadow)}.hero-card h2{font-size:clamp(1.75rem,4vw,2.75rem);max-width:620px;margin:15px 0 10px}.hero-card p{color:#d8e8f6}.speech-visual{display:grid;place-items:center;align-content:center;background:rgba(255,255,255,.09);border-radius:20px;padding:20px}.mic{font-size:4rem}.wave,.live-wave{display:flex;align-items:center;gap:6px;height:58px}.wave i,.live-wave i{display:block;width:6px;background:var(--gold);border-radius:99px}.wave i:nth-child(1),.wave i:nth-child(5){height:16px}.wave i:nth-child(2),.wave i:nth-child(4){height:35px}.wave i:nth-child(3){height:52px}.speech-visual small{color:#d8e8f6;text-align:center}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:20px 0}.stat{background:white;border:1px solid var(--line);border-radius:16px;padding:18px;position:relative}.stat b{font-size:1.8rem;color:var(--navy);display:block}.stat small{color:var(--muted)}.stat i{position:absolute;right:12px;top:12px;font-style:normal;font-size:1.5rem}.section-title{font-size:1.15rem;margin:26px 0 12px}.mode-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.mode-card{display:flex;align-items:center;gap:14px;text-align:left;padding:18px;background:white;border:1px solid var(--line);border-radius:17px;color:var(--ink)}.mode-card:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:var(--shadow)}.mode-card>span{font-size:2rem}.mode-card small{color:var(--muted)}.info-strip{display:flex;gap:14px;align-items:flex-start;background:#fff7d9;border-left:5px solid var(--gold);padding:16px;margin-top:20px;border-radius:12px}
.practice-toolbar{display:grid;grid-template-columns:1fr 1fr .7fr;gap:12px;margin-bottom:16px}.practice-toolbar label{font-size:.82rem;font-weight:850}.practice-toolbar select{display:block;width:100%;padding:10px;margin-top:5px;border:1px solid var(--line);border-radius:10px;background:white}.practice-grid,.record-grid{display:grid;grid-template-columns:1.4fr .65fr;gap:17px}.record-grid{margin-top:17px}.card{background:white;border:1px solid var(--line);border-radius:19px;padding:21px;box-shadow:0 6px 22px rgba(11,59,102,.06)}.task-head,.card-row{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.icon-btn{border:0;background:#edf3f8;border-radius:50%;width:38px;height:38px;font-size:1.3rem}.task-card h2{font-size:clamp(1.35rem,2.7vw,2rem);margin:20px 0}.point-map{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.point-map div{background:var(--sky);border-radius:11px;padding:10px;text-align:center;font-size:.88rem;font-weight:750}.format-box{background:#fff7dc;border-left:4px solid var(--gold);border-radius:10px;padding:11px 13px;margin:15px 0;font-size:.9rem}.support-tabs{display:flex;gap:6px;overflow:auto;padding-top:10px}.support-tab{border:0;border-bottom:3px solid transparent;background:transparent;padding:9px 11px;white-space:nowrap;color:var(--muted);font-weight:800}.support-tab.active{color:var(--blue);border-color:var(--gold)}.support-content{background:var(--paper);border-radius:13px;padding:14px;margin-top:8px;min-height:100px}.support-content ul{margin:7px 0;padding-left:22px}.sample-actions{display:flex;gap:8px;margin-top:10px}.timer-card{text-align:center;display:grid;align-content:center}.timer-icon{font-size:2rem}.timer-card>small{text-transform:uppercase;letter-spacing:.09em;color:var(--blue);font-weight:900}.timer{font-size:clamp(3rem,7vw,5rem);font-weight:950;letter-spacing:-.06em;color:var(--navy);font-variant-numeric:tabular-nums}.timer-track{height:10px;background:#e7edf3;border-radius:99px;overflow:hidden}.timer-track span{display:block;height:100%;background:var(--gold)}.timer-card p{color:var(--muted);font-size:.9rem}.button-row{display:flex;gap:9px;flex-wrap:wrap;justify-content:center}.sequence{display:flex;justify-content:center;gap:6px;margin-top:13px}.sequence span{width:10px;height:10px;border-radius:50%;background:#dbe3eb}.sequence span.done{background:var(--green)}.sequence span.now{background:var(--gold);outline:3px solid #fff0b5}
.card-title{display:flex;gap:10px}.card-title>span{font-size:1.7rem}.recording-zone{display:flex;align-items:center;gap:14px;background:var(--paper);padding:16px;border-radius:15px;margin:15px 0}.record-btn{width:58px;height:58px;border:0;border-radius:50%;background:#ffe4e4;color:var(--red);font-size:1.8rem}.record-btn.recording{background:var(--red);color:white;animation:pulse 1.2s infinite}.recording-zone small{color:var(--muted)}.live-wave{height:34px;margin-left:auto;opacity:.3}.live-wave i{height:10px;background:var(--blue);width:4px}.live-wave.active{opacity:1}.live-wave.active i{animation:wave 1s ease-in-out infinite}.live-wave i:nth-child(2n){animation-delay:.15s}@keyframes pulse{50%{box-shadow:0 0 0 10px rgba(214,74,74,.15)}}@keyframes wave{50%{height:30px}}audio{width:100%;margin-bottom:12px}.notes-card textarea{width:100%;min-height:135px;padding:12px;border:1px solid var(--line);border-radius:11px;resize:vertical}.pre-framework{display:grid;grid-template-columns:auto 1fr;gap:6px 10px;margin-top:12px}.pre-framework b{background:var(--gold);border-radius:7px;text-align:center;padding:3px 8px}.loading{padding:14px;text-align:center;color:var(--blue);font-weight:800}.loading span{display:inline-block;width:16px;height:16px;border:3px solid #cde1f2;border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.feedback-card{margin-top:17px;border-top:5px solid var(--gold)}.score-total{display:flex;align-items:center;gap:12px}.score-circle{width:90px;height:90px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--gold) var(--score),#e9eef3 0);position:relative}.score-circle:after{content:"";position:absolute;inset:9px;background:white;border-radius:50%}.score-circle b{z-index:1;font-size:1.35rem;color:var(--navy)}.score-bars{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin:17px 0}.score-item{background:var(--paper);border-radius:11px;padding:11px}.score-item b{display:flex;justify-content:space-between;font-size:.85rem}.score-item i{display:block;height:7px;background:#dfe7ee;border-radius:99px;margin-top:7px;overflow:hidden}.score-item i span{display:block;height:100%;background:var(--blue)}.feedback-columns{display:grid;grid-template-columns:1fr 1fr;gap:15px}.feedback-box{border:1px solid var(--line);border-radius:13px;padding:14px}.feedback-box.good{border-left:4px solid var(--green)}.feedback-box.improve{border-left:4px solid var(--gold)}.model-response{background:#eef6fc;border-radius:13px;padding:15px;margin-top:15px}.transcript{margin-top:12px}.transcript p{white-space:pre-wrap;color:var(--muted)}
.page-intro{display:flex;gap:16px;align-items:center;background:linear-gradient(100deg,#e9f5ff,#fff7d7);border-radius:20px;padding:24px;margin-bottom:17px}.big-icon{font-size:3rem}.diagnostic-grid,.two-col{display:grid;grid-template-columns:1fr 1fr;gap:17px;margin-bottom:17px}.mini-result{margin-top:12px;font-weight:850;color:var(--green)}.bar-chart{display:flex;align-items:end;justify-content:center;gap:55px;height:220px;border-bottom:1px solid var(--line);padding:20px}.bar-group{text-align:center}.bar{width:70px;background:linear-gradient(var(--gold),#e5a700);border-radius:9px 9px 0 0;min-height:4px;padding-top:8px;font-weight:900}.bar.post{background:linear-gradient(#36b48b,var(--green));color:white}.trend-chart{display:flex;align-items:end;gap:9px;height:190px;border-bottom:1px solid var(--line);padding-top:15px}.trend-chart div{flex:1;background:var(--blue);border-radius:7px 7px 0 0;min-width:14px;position:relative}.trend-chart span{position:absolute;top:-25px;width:100%;text-align:center;font-size:.75rem;font-weight:800}.criterion-row{display:grid;grid-template-columns:155px 1fr 35px;gap:9px;align-items:center;margin:12px 0}.criterion-track{height:10px;background:#e8eef3;border-radius:99px;overflow:hidden}.criterion-track span{display:block;height:100%;background:linear-gradient(90deg,var(--blue),#46a9eb)}.attempt{border-top:1px solid var(--line);padding:15px 0}.attempt-head{display:flex;justify-content:space-between;gap:12px}.teacher-note{background:#fff7d8;border-radius:9px;padding:9px}.teacher-hero{display:flex;justify-content:space-between;gap:20px;align-items:center;background:linear-gradient(120deg,var(--navy),var(--blue));color:white;border-radius:20px;padding:25px}.teacher-hero p{color:#d8e8f6;margin:0}.teacher-actions{display:flex;gap:8px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.76rem;text-transform:uppercase;color:var(--muted)}td textarea{width:220px;min-height:58px;border:1px solid var(--line);border-radius:8px;padding:8px}.score-badge{display:inline-flex;padding:4px 8px;background:#e6f5ef;color:var(--green);border-radius:99px;font-weight:850;white-space:nowrap}.empty{text-align:center;color:var(--muted);padding:28px}#toast{position:fixed;right:22px;bottom:22px;background:var(--ink);color:white;padding:11px 15px;border-radius:10px;opacity:0;transform:translateY(10px);transition:.2s;pointer-events:none;z-index:20}#toast.show{opacity:1;transform:none}.large-text{font-size:19px}
@media(max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;position:sticky;z-index:10;padding:9px 13px;display:flex;flex-direction:row;align-items:center}.logo.light{padding:0}.logo.light div{display:none}.sidebar nav{display:flex;margin-left:auto}.nav{padding:9px}.nav span{display:none}.side-tools{display:none}.app-shell main{padding:20px}.practice-grid,.record-grid{grid-template-columns:1fr}.stat-grid{grid-template-columns:repeat(2,1fr)}.hero-card{grid-template-columns:1fr}.speech-visual{display:none}.point-map{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.profile>span,.profile div:last-child{display:none}.practice-toolbar,.mode-grid,.diagnostic-grid,.two-col,.feedback-columns,.score-bars{grid-template-columns:1fr}.stat-grid{grid-template-columns:1fr 1fr}.teacher-hero{align-items:flex-start;flex-direction:column}.point-map{grid-template-columns:1fr}.card{padding:17px}.app-shell main{padding:16px}}@media print{.sidebar,.topbar,.teacher-actions,.btn{display:none!important}.app-shell{display:block}.view{display:none!important}#teacher{display:block!important}.app-shell main{padding:0}.teacher-hero{color:black;background:white;border:1px solid #ccc}}
