:root{font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:#1d2939;background:#f5f7fb}*{box-sizing:border-box}body{margin:0}.shell{width:min(1120px,calc(100% - 32px));margin:auto}.top{background:#fff;border-bottom:1px solid #dfe5ef}.topinner{display:flex;align-items:center;justify-content:space-between;min-height:70px;gap:12px}.brand{font-weight:850;font-size:20px;color:#175cd3;text-decoration:none}.brand span{color:#273c56}nav{display:flex;align-items:center;gap:14px;font-size:13px}nav form{margin:0}.link{background:transparent;border:0;color:#175cd3;cursor:pointer}main{padding-top:20px}h1{font-size:26px}h2{font-size:19px;margin-top:0}.card{padding:24px;background:#fff;border:1px solid #e0e7ef;border-radius:16px;margin-bottom:20px;box-shadow:0 3px 14px #182d4b08}.narrow{max-width:560px;margin-left:auto;margin-right:auto}.columns{display:grid;grid-template-columns:300px minmax(0,1fr);gap:20px}.stack{display:grid;gap:14px}.stack label{display:grid;gap:6px;font-weight:600;font-size:13px}input{width:100%;padding:12px;border:1px solid #b8c4d5;border-radius:9px;font:inherit;font-weight:400}input:focus{outline:2px solid #a8c7fc;border-color:#175cd3}button{font:inherit;cursor:pointer;padding:11px 15px;border-radius:9px;border:1px solid transparent;min-height:42px;font-weight:700}button:disabled{opacity:.5;cursor:not-allowed}.primary{background:#175cd3;color:white}.secondary{background:#eff4ff;border-color:#c6d6fd;color:#175cd3}.small{font-size:13px}.actions{display:flex;gap:10px;flex-wrap:wrap}.notice{padding:14px;border-radius:10px;background:#fff6df;border:1px solid #efd28b}.studentlist{margin-top:20px}.studentitem{display:flex;align-items:center;justify-content:space-between;padding:12px;gap:10px;border-radius:9px;color:inherit;text-decoration:none;border:1px solid #e4e9f0;margin-bottom:7px}.studentitem.active{border:2px solid #175cd3;background:#eff4ff}.studentitem small{display:block;color:#667085;margin-top:4px}.balance{display:flex;justify-content:space-between;gap:20px;align-items:center;flex-wrap:wrap}.balance small{color:#667085}.balance h2{margin:6px 0}.bigmoney{font-size:clamp(28px,5vw,42px);color:#175cd3;font-weight:850}.denoms{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:20px 0}.denom{border:1px solid #ccdaee;background:#fbfcff;padding:14px 5px;color:#344054}.denom:hover{border-color:#175cd3}.denom small{display:block;font-weight:400;margin-top:6px;color:#667085}.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th,td{border-bottom:1px solid #e5eaf1;padding:11px 7px;text-align:left;white-space:nowrap}th{color:#667085}.right{text-align:right}.positive{color:#078350;font-weight:700}.negative{color:#be3041;font-weight:700}.footer{color:#667085;font-size:12px;padding:18px 0 35px}.muted{color:#667085}@media(max-width:750px){.columns{grid-template-columns:1fr}.denoms{grid-template-columns:repeat(2,minmax(0,1fr))}.card{padding:17px}nav span{display:none}}

/* Won Wallet visual currency learning panel */
.wallet-visual h3{margin:0 0 6px;font-size:20px}.wallet-caption{color:#667085;font-size:13px;line-height:1.5}.wallet-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:15px 0}.wallet-money{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:1px solid #dbe5f2;border-radius:14px;padding:12px 8px;text-align:center;background:#fbfcff}.wallet-money strong{font-size:14px}.wallet-money span{font-size:21px;color:#175cd3;font-weight:800}.wallet-empty{opacity:.46}.wallet-image{width:100%;height:90px;display:flex;align-items:center;justify-content:center}.wallet-image img{max-width:100%;max-height:90px;object-fit:contain;border-radius:4px}.wallet-remainder{background:#fff8e8;border-radius:8px;padding:12px;font-size:14px}.denom{min-height:86px}.denom:focus-visible{outline:3px solid #175cd3;outline-offset:2px}@media(max-width:700px){.wallet-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.wallet-image{height:72px}.wallet-image img{max-height:72px}}


/* Student login splash: images are optional; styled bills/coins always animate. */
.won-intro{position:fixed;inset:0;z-index:9999;background:linear-gradient(155deg,#eef6ff,#fff5df);display:grid;place-items:center;padding:16px;transition:opacity .34s ease}
.won-intro.is-finished{opacity:0;pointer-events:none}
.intro-scenery{position:relative;width:min(650px,100%);height:min(610px,90vh);min-height:410px;border-radius:28px;text-align:center;background:rgba(255,255,255,.95);box-shadow:0 25px 70px #25396327;overflow:hidden;padding:28px 18px}
.intro-hi{font-size:clamp(19px,4vw,28px);font-weight:750;margin:5px 0 8px}.intro-scenery h2{font-size:clamp(25px,5vw,34px);color:#195cc4;margin:0 0 10px}.intro-total{font-size:18px;margin:0}.intro-total strong{color:#195cc4;font-size:23px}
.intro-fall{position:absolute;inset:130px 0 65px;pointer-events:none;overflow:hidden}
.intro-pile{position:absolute;bottom:95px;left:0;right:0;font-size:80px;filter:drop-shadow(0 5px 5px #aaa7);pointer-events:none}
.intro-message{position:absolute;bottom:66px;left:12px;right:12px;font-size:14px;color:#475467}
.intro-skip{position:absolute;bottom:15px;right:20px;background:#175cd3;color:white;border:0;border-radius:30px;font-size:14px;padding:11px 19px;z-index:3}
.falling-won{position:absolute;top:0;width:110px;height:55px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:linear-gradient(135deg,#d4efd7,#8fbfa4);border:2px solid #669d79;box-shadow:0 6px 15px #293e4b22;font-size:16px;font-weight:800;color:#245e41;opacity:0;animation:won-land var(--duration,1.4s) cubic-bezier(.27,.72,.45,1.04) var(--delay,0s) forwards;will-change:transform,opacity}
.money-fallback{position:relative;z-index:1;white-space:nowrap}
.falling-won img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;border-radius:5px;opacity:0}
.falling-won img.loaded{opacity:1}
.falling-coin{width:69px;height:69px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff4cf,#b9bec9 70%,#888);border:4px ridge #acb4ba;color:#394557;font-size:12px}
.falling-coin img{border-radius:50%}
@keyframes won-land{0%{transform:translateY(-170px) rotate(-45deg) scale(.8);opacity:0}12%{opacity:1}78%{transform:translateY(var(--landing)) rotate(var(--angle)) scale(1);opacity:1}88%{transform:translateY(calc(var(--landing) - 25px)) rotate(var(--angle)) scale(1);opacity:1}100%{transform:translateY(var(--landing)) rotate(var(--angle)) scale(1);opacity:1}}
@media(max-width:520px){.falling-won{width:75px;height:43px;font-size:12px}.falling-coin{width:52px;height:52px;font-size:10px}.intro-pile{bottom:105px;font-size:66px}.intro-message{bottom:73px}}
@media(prefers-reduced-motion:reduce){.falling-won{animation:none}}
