:root{color:#14261d;font-synthesis:none;background:#f6f4ec;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 100% 0,#d9efe2 0,#0000 38%),#f6f4ec;min-width:320px;margin:0}button,input{font:inherit}.app-shell{max-width:720px;min-height:100dvh;padding-bottom:calc(86px + env(safe-area-inset-bottom));background:#f6f4ece0;margin:auto}.topbar{z-index:4;padding:calc(16px + env(safe-area-inset-top)) 22px 14px;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f6f4ece8;border-bottom:1px solid #dfe3dc;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.topbar span,.section-heading span,.hero>span,.brand-panel>p{letter-spacing:.18em;color:#567266;font-size:10px;font-weight:900}.brand-inline{align-items:center;gap:7px;display:flex}.brand-inline img{border-radius:7px;width:22px;height:22px}.topbar h1{margin:3px 0 0;font-size:22px}.avatar{color:#f8d84a;background:#075f46;border-radius:15px;place-items:center;width:43px;height:43px;font-weight:900;display:grid}.avatar.large{border-radius:24px;width:76px;height:76px;margin:auto;font-size:28px}.stack{gap:16px;padding:20px;display:grid}.hero{color:#fff;background:linear-gradient(135deg,#075f46,#0a7a58);border-radius:28px;padding:25px;position:relative;overflow:hidden;box-shadow:0 18px 45px #075f4633}.hero:after{content:"";border:24px solid #f8d84a33;border-radius:50%;width:150px;height:150px;position:absolute;top:-70px;right:-55px}.hero h2{max-width:85%;margin:10px 0 8px;font-size:28px;line-height:1.1}.hero p{color:#d9eee5;margin:0}.accent-line{background:#f8d84a;border-radius:5px;width:54px;height:5px;margin-top:20px}.quick-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.action,.course,.menu{text-align:left;background:#fff;border:0}.action{border-radius:22px;min-height:145px;padding:19px;box-shadow:0 8px 26px #183a2920}.action b,.action span{display:block}.action b{font-size:18px}.action span{color:#64746c;margin-top:9px;font-size:13px;line-height:1.4}.action.attendance{background:#f8d84a}.action:disabled{opacity:.75;color:#26352e}.card,.course,.menu,.profile-card,.empty{background:#fff;border:1px solid #e0e3dc;border-radius:22px;padding:20px;box-shadow:0 7px 25px #203c2d12}.card h3{margin:0 0 14px}.card article+article{border-top:1px solid #eceee8;padding-top:12px}.card article p{color:#67756e;margin:5px 0}.row{justify-content:space-between;display:flex}.link{color:#087f5b;background:0 0;border:0;font-weight:800}.metrics{gap:40px;display:flex}.metrics b{font-size:30px}.metrics small{color:#6b7a72;font-size:11px;display:block}.section-heading{padding:10px 4px}.section-heading h2{margin:10px 0;font-size:28px;line-height:1.15}.course{align-items:center;gap:14px;width:100%;display:flex}.course-icon{color:#087f5b;background:#e2f3e9;border-radius:15px;place-items:center;width:46px;height:46px;display:grid}.course b,.course small{display:block}.course small{color:#738078;margin-top:5px;font-size:11px}.course i{color:#839089;margin-left:auto;font-size:28px}.profile-card{text-align:center;color:#fff;background:#075f46}.profile-card h2{margin:13px 0 4px}.profile-card p{color:#cae4d9}.details dl{grid-template-columns:1fr 1.4fr;gap:12px;margin:0;display:grid}.details dt{color:#78847e}.details dd{text-align:right;margin:0;font-weight:700}.menu{justify-content:space-between;width:100%;font-weight:700;display:flex}.danger-text{color:#a02b2b}.bottom-nav{z-index:5;width:min(720px,100%);padding:9px 8px calc(9px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid #dde2dc;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%);box-shadow:0 -10px 35px #1d392825}.bottom-nav button{color:#7a8780;background:0 0;border:0;flex:1;min-width:0;font-size:10px;font-weight:800}.bottom-nav button span{margin:auto auto 4px;font-size:22px;display:block}.bottom-nav button.active{color:#075f46}.frame-page,.lab{background:#f6f4ec;min-height:100dvh}.frame-header{padding:calc(10px + env(safe-area-inset-top)) 14px 10px;background:#fff;border-bottom:1px solid #dfe3dc;grid-template-columns:46px 1fr 46px;align-items:center;display:grid}.frame-header button,.frame-header a{color:#075f46;background:#e3f2e9;border:0;border-radius:14px;place-items:center;height:40px;font-size:27px;text-decoration:none;display:grid}.frame-header h1{text-align:center;margin:0;font-size:18px}.frame-page iframe{width:100%;height:calc(100dvh - 65px - env(safe-area-inset-top));border:0;display:block}.frame-fallback{text-align:center;background:#fffde9;border-radius:10px;margin:0;padding:8px;font-size:12px;position:fixed;bottom:10px;left:20px;right:20px}.capability>div{justify-content:space-between;align-items:center;display:flex}.pill{color:#7c5b1a;background:#f4e4c5;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800}.pill.good{color:#086447;background:#dff2e6}.secondary{color:#075f46;background:#fff;border:1px solid #0a7556;border-radius:12px;padding:10px 14px;font-weight:800;text-decoration:none;display:inline-block}.notice{color:#604d0a;background:#fff9d9;border-radius:14px;padding:13px}.notice.danger{color:#8f2222;background:#fff0f0}.toast{z-index:10;color:#fff;background:#7e2424;border:0;border-radius:14px;width:min(90%,540px);padding:14px;position:fixed;bottom:100px;left:50%;transform:translate(-50%)}.auth-page{align-content:center;gap:20px;min-height:100dvh;padding:24px;display:grid}.brand-panel{color:#fff;background:linear-gradient(140deg,#064c39,#087b58);border-radius:30px;padding:28px;box-shadow:0 24px 50px #075f4630}.brand-mark{object-fit:cover;border-radius:18px;width:68px;height:68px;display:block;box-shadow:0 12px 28px #001b4d66}.brand-panel h1{font-size:34px;line-height:1.05}.brand-panel span{color:#cee7dc}.auth-card{background:#fff;border-radius:26px;gap:15px;padding:25px;display:grid;box-shadow:0 18px 50px #213b2c18}.auth-card h2{margin:0}.auth-brand{color:#0b2e59;letter-spacing:.08em;align-items:center;gap:10px;font-weight:900;display:flex}.auth-brand img{border-radius:12px;width:42px;height:42px}.auth-back{color:#075f46;background:#e3f2e9;border:0;border-radius:14px;width:42px;height:42px;font-size:28px}.text-action{color:#075f46;background:0 0;border:0;font-weight:800}.auth-card label{color:#52645a;gap:6px;font-size:13px;font-weight:700;display:grid}.auth-card input{border:1px solid #cfd7d1;border-radius:13px;height:48px;padding:0 14px;font-size:16px}.primary{color:#fff;background:#075f46;border:0;border-radius:14px;height:50px;font-weight:900}.privacy{color:#7c8982;margin:0;font-size:11px;line-height:1.5}.skeleton-page,.page-loading{gap:14px;padding:30px;display:grid}.skeleton-page div,.page-loading i{background:linear-gradient(90deg,#e4e7e1,#f3f4f0,#e4e7e1) 0 0/200% 100%;border-radius:22px;height:100px;animation:1.2s infinite shimmer}.page-loading i{height:70px}@keyframes shimmer{to{background-position:-200% 0}}@media (width>=680px){.auth-page{grid-template-columns:1fr 1fr;max-width:1000px;margin:auto}.quick-grid{grid-template-columns:1.2fr 1fr}}
