:root{--ink:#18221c;--muted:#66716a;--paper:#f6f4ee;--surface:#fffdf8;--line:#dfe2db;--green:#194f3d;--green-2:#2d7359;--mint:#dceade;--lime:#d9ef8b;--orange:#e67845;--shadow:0 12px 36px #1f362a14}*{box-sizing:border-box}html,body{background:var(--paper);min-height:100%;color:var(--ink);margin:0;font-family:DM Sans,system-ui,sans-serif}button,input,textarea,select{font:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Newsreader,Georgia,serif}h1{margin-bottom:0;font-size:clamp(2rem,4vw,3.25rem);line-height:1}h2{font-size:1.6rem}.app{min-height:100vh}.sidebar{background:var(--green);color:#fff;z-index:10;flex-direction:column;width:244px;padding:28px 20px;display:flex;position:fixed;inset:0 auto 0 0}.brand{align-items:center;gap:12px;padding:0 8px 30px;display:flex}.brand-mark{background:var(--lime);width:42px;height:42px;color:var(--green);border-radius:13px;place-items:center;font:700 23px/1 Newsreader,serif;display:grid;transform:rotate(-4deg)}.brand strong,.brand small{display:block}.brand strong{letter-spacing:.08em;font-size:20px}.brand small{opacity:.62;margin-top:3px;font-size:10px}.sidebar nav{gap:5px;display:grid}.sidebar nav a{color:#dce9e2;border-radius:11px;align-items:center;gap:12px;padding:11px 13px;font-size:14px;display:flex}.sidebar nav a:hover,.sidebar nav a.active{color:#fff;background:#ffffff21}.nav-icon{text-align:center;width:24px;font-weight:700}.logout{color:#dce9e2;background:0 0;border:1px solid #fff3;border-radius:10px;margin-top:auto;padding:10px}.main{min-height:100vh;margin-left:244px;padding:44px clamp(24px,5vw,72px) 72px}.mobile-nav{display:none}.page-header{justify-content:space-between;align-items:end;gap:20px;margin:0 0 32px;display:flex}.eyebrow{color:var(--green-2);text-transform:uppercase;letter-spacing:.16em;margin-bottom:10px;font-size:12px;font-weight:700}.card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:20px;padding:24px}.grid{gap:18px;display:grid}.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))}.stack{gap:14px;display:grid}.stat strong{margin:10px 0 6px;font:600 2.15rem/1 Newsreader,serif;display:block}.stat span,.muted{color:var(--muted)}.stat-accent{background:var(--green);color:#fff;border-color:var(--green)}.stat-accent span{color:#c9ddd3}.button{background:var(--green);color:#fff;border:0;border-radius:11px;justify-content:center;align-items:center;gap:8px;padding:11px 17px;font-weight:600;display:inline-flex}.button:hover{background:var(--green-2)}.button.secondary{background:var(--mint);color:var(--green)}.button.ghost{border:1px solid var(--line);color:var(--ink);background:0 0}.button.danger{background:#9f3c35}.button:disabled{opacity:.55;cursor:not-allowed}.input,.textarea,.select{width:100%;color:var(--ink);background:#fff;border:1px solid #cdd2ca;border-radius:11px;outline:none;padding:12px 14px}.input:focus,.textarea:focus,.select:focus{border-color:var(--green-2);box-shadow:0 0 0 3px #2d73591f}.textarea{resize:vertical;min-height:150px;line-height:1.65}.field{gap:7px;display:grid}.field label{font-size:13px;font-weight:600}.form{gap:16px;display:grid}.form-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.auth{grid-template-columns:1.1fr .9fr;min-height:100vh;display:grid}.auth-story{background:var(--green);color:#fff;flex-direction:column;justify-content:space-between;padding:clamp(40px,8vw,110px);display:flex;position:relative;overflow:hidden}.auth-story:after{content:"8.0";color:#d9ef8b1f;font:600 18rem/1 Newsreader,serif;position:absolute;bottom:-85px;right:-25px}.auth-story h1{max-width:700px;font-size:clamp(3rem,7vw,6rem)}.auth-story p{color:#c9ddd3;max-width:520px;font-size:18px;line-height:1.6}.auth-panel{place-items:center;padding:30px;display:grid}.auth-box{width:min(430px,100%)}.auth-box h2{margin-bottom:8px;font-size:2.5rem}.auth-box .form{margin-top:30px}.auth-switch{color:var(--muted);margin-top:22px}.auth-switch a{color:var(--green-2);font-weight:700}.task{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:15px 0;display:flex}.task:last-child{border-bottom:0}.task-check{border:2px solid var(--green-2);color:#fff;background:0 0;border-radius:50%;flex:none;place-items:center;width:28px;height:28px;display:grid}.task.done .task-check{background:var(--green-2)}.task.done .task-title{color:var(--muted);text-decoration:line-through}.task-body{flex:1}.task-title{margin-bottom:3px;font-weight:700}.task-meta{color:var(--muted);font-size:12px}.task-actions{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.task-actions .button{padding:8px 12px;font-size:12px}.mistake-card{border-bottom:1px solid var(--line);padding:16px 0}.mistake-card:last-child{border-bottom:0}.practice-panel{background:#f3f4ee;border-radius:12px;margin:12px 0;padding:14px;line-height:1.55}.practice-panel p{margin:8px 0 0}.pill{background:var(--mint);color:var(--green);text-transform:uppercase;letter-spacing:.05em;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:700;display:inline-flex}.pill.orange{color:#934320;background:#f7dfd1}.progress{background:#e8e9e4;border-radius:999px;height:8px;overflow:hidden}.progress>span{background:var(--green-2);border-radius:inherit;height:100%;display:block}.section-title{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.section-title h2{margin:0}.content-list,.word-list{gap:10px;display:grid}.list-row{border:1px solid var(--line);background:var(--surface);border-radius:14px;justify-content:space-between;align-items:center;gap:18px;padding:16px;display:flex}.list-row:hover{border-color:#aebcaf}.list-row h3{margin:0 0 4px;font-family:DM Sans,sans-serif;font-size:16px}.list-meta{color:var(--muted);flex-wrap:wrap;gap:10px;font-size:12px;display:flex}.reader{white-space:pre-wrap;max-width:760px;font:1.15rem/1.85 Georgia,serif}.reader-grid{grid-template-columns:minmax(0,1fr) minmax(280px,360px)}.candidate-grid{flex-wrap:wrap;gap:8px;display:flex}.candidate{border:1px solid var(--line);color:var(--green);background:#fff;border-radius:999px;padding:7px 11px}.candidate:hover{background:var(--mint)}.review-card{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:420px;display:flex}.review-word{font:600 clamp(3rem,8vw,6rem)/1 Newsreader,serif}.review-answer{border-top:1px solid var(--line);max-width:620px;margin:24px auto;padding-top:22px}.rating-row{grid-template-columns:repeat(4,1fr);gap:10px;width:100%;max-width:680px;margin-top:24px;display:grid}.rating-row button{color:var(--ink);border:0;border-radius:12px;padding:12px 5px;font-weight:700}.rating-row button:first-child{background:#f4c8bf}.rating-row button:nth-child(2){background:#f3d8b6}.rating-row button:nth-child(3){background:#dceabe}.rating-row button:nth-child(4){background:#b9dfc8}.chat{max-width:900px;margin:0 auto}.mode-tabs{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.mode-tabs button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 13px}.mode-tabs button.active{background:var(--green);color:#fff;border-color:var(--green)}.teacher-result h3{font:600 1.7rem/1.2 Newsreader,serif}.teacher-result li{margin-bottom:9px;line-height:1.6}.chat-stream{gap:10px;max-height:360px;margin-bottom:16px;display:grid;overflow:auto}.chat-bubble{background:#eef0e9;border-radius:14px;max-width:85%;padding:10px 13px}.chat-bubble.mine{background:var(--mint);justify-self:end}.chat-bubble p{white-space:pre-wrap;margin:5px 0 0}.writing-area{min-height:280px}.band-score{background:var(--lime);width:58px;height:58px;color:var(--green);border-radius:50%;place-items:center;font:700 1.6rem/1 Newsreader,serif;display:grid}.rubric-grid{grid-template-columns:1fr 1fr;gap:8px;margin:16px 0;display:grid}.rubric-grid span{color:var(--muted);background:#f0f2eb;border-radius:10px;justify-content:space-between;padding:10px;display:flex}.bar-chart{align-items:end;gap:7px;height:190px;padding-top:20px;display:flex}.bar{background:var(--green-2);border-radius:5px 5px 0 0;flex:1;min-width:5px;max-width:28px;position:relative}.bar:hover:after{content:attr(data-value);background:var(--ink);color:#fff;border-radius:5px;padding:3px 6px;font-size:11px;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%)}.empty{text-align:center;color:var(--muted);padding:45px 20px}.empty span{color:var(--green-2);margin-bottom:8px;font-size:25px;display:block}.empty h3{color:var(--ink);margin-bottom:7px}.error-notice{color:#8b2c27;background:#f9dfdc;border-radius:10px;margin-bottom:14px;padding:12px 14px}.success-notice{color:var(--green);background:var(--mint);border-radius:10px;margin-bottom:14px;padding:12px 14px}.center-screen{min-height:100vh;color:var(--muted);justify-content:center;align-items:center;gap:12px;display:flex}.loader{border:3px solid var(--line);border-top-color:var(--green);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite spin}.loading-list{gap:12px;display:grid}.loading-list i{background:linear-gradient(90deg,#ecebe6,#f7f6f1,#ecebe6) 0 0/200% 100%;border-radius:12px;height:70px;animation:1.2s infinite shimmer}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{to{background-position:-200% 0}}@media (max-width:980px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}.auth{grid-template-columns:1fr}.auth-story{min-height:340px;padding:50px 30px}.auth-story h1{font-size:3.4rem}}@media (max-width:720px){.sidebar{display:none}.main{margin:0;padding:28px 17px 92px}.mobile-nav{padding:9px 4px max(9px, env(safe-area-inset-bottom));border-top:1px solid var(--line);z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffdf8f5;justify-content:flex-start;display:flex;position:fixed;inset:auto 0 0;overflow-x:auto}.mobile-nav a{color:var(--muted);place-items:center;gap:2px;min-width:55px;display:grid}.mobile-nav a.active{color:var(--green)}.mobile-nav span{font-weight:700}.mobile-nav small{font-size:9px}.grid-2,.grid-3,.grid-4,.form-row,.reader-grid{grid-template-columns:1fr}.page-header{align-items:start}.auth-story{min-height:290px}.auth-story p{font-size:15px}.auth-panel{padding:35px 20px 60px}.rating-row{grid-template-columns:repeat(2,1fr)}.list-row{align-items:start}}
