:root{--bg:#14112b;--card:#ffffff0f;--card-solid:#1f1b3d;--text:#f6f4ff;--muted:#b3acd6;--line:#ffffff1f;--accent:#a66bff;--accent-2:#ff4f9a;--done:#3ddc97;--danger:#ff6b81;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;font-family:Fredoka,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 10% 0%, #a66bff59, transparent 45%), radial-gradient(circle at 90% 10%, #ff4f9a40, transparent 40%), radial-gradient(circle at 50% 100%, #4cc9f033, transparent 50%), var(--bg);background-attachment:fixed;min-height:100vh;margin:0}h1{margin:0 0 .75rem;font-size:1.8rem;font-weight:700}h2{margin:0 0 .75rem;font-size:1.3rem;font-weight:600}button,input,textarea{font:inherit}a{color:#8fd8ff}.topbar{z-index:10;-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line);background:#14112bbf;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex;position:sticky;top:0}.brand{background:linear-gradient(90deg,#ffbe0b,#ff4f9a,#a66bff);color:#0000;white-space:nowrap;-webkit-background-clip:text;background-clip:text;font-size:1.15rem;font-weight:700;text-decoration:none}.brand-icon{color:#ffbe0b}.topbar nav{gap:.25rem;display:flex}.topbar nav a{color:var(--muted);border-radius:999px;padding:.4rem .85rem;font-weight:500;text-decoration:none}.topbar nav a.active{background:linear-gradient(90deg, var(--accent), var(--accent-2));color:#fff}main{max-width:1100px;margin:0 auto;padding:1.5rem 1rem 3rem}.note{color:var(--muted)}.center{text-align:center}.error{color:var(--danger);font-weight:600}.card{background:var(--card);border:1px solid var(--line);border-radius:20px;margin-bottom:1.25rem;padding:1.25rem}form.card{flex-direction:column;gap:.75rem;max-width:360px;display:flex}.center-card{text-align:center;margin:0 auto}.lock{font-size:2rem}label{font-weight:600}input,textarea{border:2px solid var(--line);width:100%;color:var(--text);background:#00000040;border-radius:12px;outline:none;padding:.7rem .9rem}input:focus,textarea:focus{border-color:var(--accent)}#pin{text-align:center;letter-spacing:.4em;font-size:1.6rem}button{border:1px solid var(--line);color:var(--text);cursor:pointer;background:#ffffff14;border-radius:999px;padding:.55rem 1rem;font-weight:500;transition:transform .12s,background .2s}button:hover:not(:disabled){background:#ffffff24}button:active:not(:disabled){transform:scale(.96)}button:disabled{opacity:.55;cursor:default}button.primary{background:linear-gradient(90deg, var(--accent), var(--accent-2));color:#fff;border:none;padding:.7rem 1.2rem;font-weight:600;box-shadow:0 6px 20px #ff4f9a4d}button.danger{color:var(--danger)}.page-title{align-items:center;gap:.75rem;display:flex}.live{color:var(--done);background:#3ddc971f;border-radius:999px;padding:.2rem .6rem;font-size:.8rem;font-weight:600;animation:2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.5}}.stats{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-bottom:1.25rem;display:grid}.stat{background:linear-gradient(135deg, color-mix(in srgb, var(--c) 30%, transparent), #ffffff0a);border:1px solid color-mix(in srgb, var(--c) 45%, transparent);border-radius:18px;flex-direction:column;padding:1rem 1.1rem;display:flex}.stat-num{font-size:2rem;font-weight:700;line-height:1.1}.stat-label{color:var(--muted);font-weight:500}.table-wrap{background:var(--card);border:1px solid var(--line);border-radius:20px;overflow-x:auto}.grid{border-collapse:collapse;width:100%}.grid th,.grid td{border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;padding:.6rem .75rem}.grid tbody tr:last-child th,.grid tbody tr:last-child td{border-bottom:none}.grid tbody tr:hover{background:#ffffff0a}.grid thead th{color:var(--muted);font-weight:600}.grid .name-col{text-align:left;background:var(--card-solid);z-index:1;font-weight:600;position:sticky;left:0}.grid tr.finished .name-col{color:#ffbe0b}.ws-head{color:var(--c);background:color-mix(in srgb, var(--c) 18%, transparent);border-radius:999px;padding:.25rem .7rem;display:inline-block}.dot{border:2px dashed var(--line);border-radius:50%;place-items:center;width:1.9rem;height:1.9rem;font-weight:700;display:inline-grid}.dot.done{background:var(--c);color:#14112b;box-shadow:0 0 12px color-mix(in srgb, var(--c) 60%, transparent);border:none;animation:.35s pop}.mini-progress{color:var(--muted);align-items:center;gap:.5rem;font-weight:500;display:flex}.mini-bar{background:#ffffff1a;border-radius:999px;width:70px;height:8px;overflow:hidden}.mini-fill{background:linear-gradient(90deg,#4cc9f0,#3ddc97);border-radius:999px;height:100%;transition:width .4s}.student{max-width:480px;margin:0 auto}.hero{text-align:center;margin-bottom:1.25rem}.avatar{color:#fff;background:linear-gradient(135deg,#ffbe0b,#ff4f9a,#a66bff);border-radius:50%;place-items:center;width:84px;height:84px;margin:0 auto .75rem;font-size:2.4rem;font-weight:700;display:grid;box-shadow:0 8px 30px #a66bff73}.hero h1{margin-bottom:1rem;font-size:2.2rem}.progress{background:#ffffff1a;border-radius:999px;height:16px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#4cc9f0,#3ddc97,#ffbe0b);border-radius:999px;height:100%;transition:width .6s cubic-bezier(.34,1.56,.64,1)}.progress-label{color:var(--muted);margin:.5rem 0 0}.progress-label strong{color:var(--text);font-size:1.2rem}.celebrate{background:linear-gradient(135deg,#ffbe0b40,#ff4f9a40);border:1px solid #ffbe0b80;border-radius:20px;align-items:center;gap:.9rem;margin-bottom:1rem;padding:1rem 1.2rem;animation:.5s pop;display:flex}.celebrate div{flex-direction:column;display:flex}.celebrate strong{font-size:1.2rem}.celebrate-emoji{font-size:2.5rem;animation:1.2s ease-in-out infinite wiggle}.checklist{flex-direction:column;gap:.75rem;margin:1rem 0;padding:0;list-style:none;display:flex}.check{text-align:left;border:2px solid color-mix(in srgb, var(--c) 50%, transparent);background:color-mix(in srgb, var(--c) 10%, transparent);border-radius:20px;align-items:center;gap:.9rem;width:100%;padding:1.1rem 1.2rem;font-size:1.25rem;font-weight:600;display:flex}.check-name{flex:1}.check .box{border:3px solid var(--c);border-radius:12px;flex:none;place-items:center;width:2.2rem;height:2.2rem;font-weight:700;display:grid}.check.done{background:color-mix(in srgb, var(--c) 28%, transparent);border-color:var(--c);box-shadow:0 0 22px color-mix(in srgb, var(--c) 40%, transparent)}.check.done .box{background:var(--c);color:#14112b;animation:.35s pop}.check-tag{background:var(--c);color:#14112b;border-radius:999px;padding:.15rem .6rem;font-size:.85rem}.add-form{flex-direction:column;gap:.5rem;margin-bottom:1rem;display:flex}.add-form label{flex-direction:column;gap:.3rem;display:flex}.add-form button{align-self:flex-start}.hint{color:var(--muted);font-size:.9rem;font-weight:400}.admin-list{margin:0;padding:0;list-style:none}.admin-list li{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.7rem 0;display:flex}.row-buttons{flex-wrap:wrap;gap:.4rem;display:flex}.edit-name{flex-wrap:wrap;flex:1;align-items:center;gap:.5rem;display:flex}.edit-name input{flex:1;min-width:180px}.edit-name .error{width:100%;margin:0}.danger-card{border-color:#ff6b8166}button.danger-solid{background:var(--danger);color:#fff;border:none;padding:.7rem 1.2rem;font-weight:600}.item-name{flex-direction:column;flex:1;min-width:0;font-weight:600;display:flex}.link-text{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;font-weight:400;overflow:hidden}@keyframes pop{0%{transform:scale(.6)}60%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-12deg)}75%{transform:rotate(12deg)}}.confetti{pointer-events:none;z-index:100;border-radius:3px;width:10px;height:14px;animation:1.1s cubic-bezier(.2,.7,.4,1) forwards confetti;position:fixed}@keyframes confetti{to{transform:translate(var(--dx), calc(var(--dy) + 160px)) rotate(var(--rot));opacity:0}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
