:root{--ink:#243e38;--green:#1b6655;--muted:#76827d;--line:#e3e8df;--paper:#f5f6f0;--lime:#dbeab1}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px 'DM Sans',sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{ -webkit-tap-highlight-color:transparent}button,a{cursor:pointer}button{border:1px solid var(--line);background:white;color:var(--ink);border-radius:10px;padding:11px 16px;font-weight:600}button:hover{filter:brightness(.96)}button:disabled{opacity:.45;cursor:default}.primary{background:var(--green);border-color:var(--green);color:white}.danger{color:#a44e41}aside{width:236px;position:fixed;inset:0 auto 0 0;background:#fff;border-right:1px solid var(--line);padding:35px 24px;display:flex;flex-direction:column}.brand{font:800 31px Manrope,sans-serif;letter-spacing:-1.8px;display:flex;gap:10px;align-items:center;text-decoration:none;color:var(--ink)}.logo{background:var(--green);color:white;width:42px;height:42px;border-radius:13px;display:inline-flex;justify-content:center;align-items:center;font-size:33px}.logo span{color:#ddebab}.school{font-size:12px;line-height:1.6;color:var(--muted);margin:18px 0 46px}aside>small{font-size:9px;letter-spacing:1.2px;color:#969f97}nav{margin-top:16px;display:grid;gap:8px}nav a{padding:13px 14px;border-radius:9px;text-decoration:none;color:#67766d;font-weight:500;display:flex;gap:13px}nav a.active{background:#edf3e8;color:var(--green);font-weight:700}nav a b{font-size:18px;width:20px}.aside-bottom{margin-top:auto;display:flex;gap:10px;align-items:center;font-size:12px;border-top:1px solid var(--line);padding-top:20px}.aside-bottom small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.avatar{height:42px;width:42px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#eaf0df;color:#3c6352;font-weight:700;flex-shrink:0}main{margin-left:236px;padding:36px 42px 20px;max-width:1660px}header{display:flex;justify-content:space-between;gap:20px;align-items:center}.eyebrow{font-size:10px;letter-spacing:1.8px;color:var(--muted)}h1{font:700 28px Manrope,sans-serif;letter-spacing:-.9px;margin:10px 0 20px}h2{font:700 19px Manrope,sans-serif;margin:0 0 8px;letter-spacing:-.4px}h3{font-size:15px;margin:0 0 8px}p{line-height:1.65;margin:5px 0 15px}.muted{color:var(--muted)}.top-actions{display:flex;align-items:center;gap:20px}.demo{color:#77825a;font-size:12px;white-space:nowrap}.notice{font-size:11px;color:#7a8274;border-bottom:1px solid var(--line);padding:0 0 17px;margin-bottom:24px}.hero{border-radius:18px;padding:29px 32px;background:#e6edd8;display:flex;gap:30px;justify-content:space-between;overflow:hidden;margin-bottom:23px;position:relative}.hero h2{font-size:24px;max-width:450px;margin:12px 0}.hero p{max-width:470px;color:#64765d;font-size:13px}.tag{display:inline-block;border-radius:6px;padding:5px 9px;background:#fff9;font-size:10px;font-weight:600;letter-spacing:.6px}.hero-art{min-width:180px;position:relative;display:flex;align-items:center;justify-content:center}.plant{width:135px;height:135px;border:1px solid #b8c6a4;border-radius:50%;display:grid;place-items:center;font-size:75px;background:#eff4e355;transform:rotate(-10deg)}.hero-art .floating{position:absolute;right:-4px;bottom:7px;background:white;padding:10px 15px;border-radius:10px;box-shadow:0 5px 15px #486b3110;font-size:11px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:26px}.metric{padding:20px;border:1px solid var(--line);background:white;border-radius:13px}.metric .num{font:700 31px Manrope,sans-serif;margin:12px 0 6px}.metric small{color:var(--muted);font-size:11px}.label{display:flex;justify-content:space-between;color:#758074;font-size:12px}.layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr);gap:22px}.panel{background:white;border:1px solid var(--line);border-radius:15px;padding:23px;margin-bottom:22px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.link{background:transparent;border:0;padding:5px 0;color:var(--green);font-size:12px}.student{display:flex;align-items:center;gap:13px;padding:16px 0;border-top:1px solid #edf0e8;cursor:pointer}.student:first-child{border-top:0}.student-info{flex:1}.student-info strong{display:block;font-size:13px}.student-info small{display:block;color:var(--muted);font-size:11px;margin-top:5px}.badge{border-radius:20px;background:#edf4e6;color:#5b7650;padding:5px 9px;font-size:10px}.badge.amber{background:#faf0da;color:#9c7638}.balance{text-align:right;font-weight:700;font-size:18px;min-width:50px}.balance small{display:block;font-weight:400;font-size:10px;color:var(--muted)}.activity{display:flex;gap:12px;border-top:1px solid #edf0e8;padding:16px 0}.activity:first-child{border:0}.activity .icon{background:#ecf3e6;width:31px;height:31px;border-radius:9px;display:grid;place-items:center;color:var(--green);flex-shrink:0}.activity .icon.warn{background:#fff1dd;color:#ab8143}.activity div:nth-child(2){flex:1}.activity strong{font-size:12px}.activity p{font-size:11px;line-height:1.5;margin:5px 0;color:var(--muted)}.points{font-weight:700;color:var(--green);white-space:nowrap;font-size:12px}.callout{background:#f7f7ef;border-radius:11px;padding:18px;margin-top:14px;font-size:12px}.progress{height:7px;background:#edf0e8;border-radius:10px;overflow:hidden;margin:13px 0 8px}.progress i{display:block;height:100%;background:#85a76a;border-radius:10px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.card{background:white;border:1px solid var(--line);border-radius:15px;padding:23px}.card h3{margin-top:15px}.card .row{margin-top:18px}.row{display:flex;gap:10px;align-items:center;justify-content:space-between}.filters{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}.filters input{flex:1;min-width:170px}.filters select{width:auto}input,select,textarea{width:100%;padding:12px;border:1px solid #dce3d8;border-radius:9px;background:#fff;color:var(--ink);outline-color:#8aa377}textarea{min-height:85px;resize:vertical}label{display:block;font-size:12px;margin:15px 0 7px}dialog{border:0;border-radius:18px;padding:27px;width:min(560px,94vw);max-height:90vh;color:var(--ink);box-shadow:0 25px 90px #182e3540}dialog::backdrop{background:#16382f66;backdrop-filter:blur(3px)}dialog .close{float:right;border:0;font-size:20px;padding:0 7px}dialog h2{padding-right:30px}dialog .actions{display:flex;justify-content:flex-end;gap:10px;margin-top:23px}dialog .split{display:grid;grid-template-columns:1fr 1fr;gap:12px}.choices{display:flex;gap:8px;margin-top:14px}.choices button{flex:1}.choices button.selected{border:1px solid var(--green);background:#e9f2e4}.form-note{font-size:11px;color:var(--muted);margin-top:8px}.empty{text-align:center;padding:30px;color:var(--muted)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:#244d40;color:white;border-radius:10px;padding:13px 22px;z-index:99;display:none}.bars{display:flex;align-items:flex-end;gap:14px;height:160px;padding:15px 0 0}.bar-col{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;gap:8px;font-size:10px;color:var(--muted)}.bar-col i{width:65%;background:#9cba80;border-radius:5px 5px 0 0;min-height:2px}.bar-col b{font-weight:500}.reward-icon{font-size:27px;background:#f0f3e5;padding:12px;border-radius:12px;display:inline-block}.setting-row{padding:15px 0;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:15px;align-items:center}.setting-row p{margin:4px 0;font-size:12px;color:var(--muted)}footer{display:flex;justify-content:space-between;color:#929a8d;font-size:10px;padding:20px 0}a:focus-visible,button:focus-visible{outline:3px solid #c4d89f;outline-offset:3px}@media(min-width:1450px){main{padding:40px 60px}.hero{padding:35px 40px}}@media(max-width:1100px){aside{width:200px;padding:30px 18px}main{margin-left:200px;padding:28px 24px}.grid{grid-template-columns:repeat(2,1fr)}.layout{grid-template-columns:1fr}.metrics{gap:10px}.hero-art{min-width:140px}.top-actions .demo{display:none}}@media(max-width:700px){aside{width:auto;top:auto;right:0;height:69px;padding:5px 7px;z-index:10;border-right:0;border-top:1px solid var(--line)}aside .brand,aside .school,aside>small,.aside-bottom{display:none}nav{display:flex;gap:0;margin:0;justify-content:space-around}nav a{flex-direction:column;gap:3px;align-items:center;font-size:9px;padding:7px 5px}nav a b{font-size:19px;text-align:center}main{margin:0;padding:24px 17px 85px}h1{font-size:23px;max-width:240px}header{gap:8px;align-items:flex-start}.top-actions{padding-top:20px}.top-actions button{font-size:12px;padding:10px}.eyebrow{font-size:9px}.notice{font-size:10px;line-height:1.6}.hero{padding:24px;gap:0}.hero h2{font-size:22px}.hero-art{display:none}.metrics{grid-template-columns:repeat(2,1fr);gap:11px}.metric{padding:17px}.metric .num{font-size:27px}.grid{grid-template-columns:1fr}.panel{padding:20px}.badge{font-size:9px}.row{flex-wrap:wrap}footer span{display:none}.choices button{font-size:11px;padding:10px 5px}dialog{padding:22px}.split{gap:8px}}
@media print{aside,header,.notice,footer,.filters,button{display:none!important}main{margin:0;padding:0}.panel,.card{break-inside:avoid}.layout{display:block}body{background:white}}

body.teacher [data-admin]{display:none!important}body.logged-out aside,body.logged-out header,body.logged-out .notice,body.logged-out footer{display:none}body.logged-out main{margin:0;max-width:none;padding:0}.login-shell{max-width:450px;margin:9vh auto;padding:20px}.login-shell .brand{justify-content:center;margin-bottom:35px}.login-shell h1{max-width:none}.login-shell .panel{padding:30px}.error{color:#a44e41;font-size:12px;line-height:1.6}.waiting{opacity:.6;pointer-events:none}@media print{.top-actions,.notice,.demo{display:none!important}}
