:root{--bg:#f5f7fb;--card:#fff;--ink:#1f2937;--muted:#6b7280;--line:#e5e7eb;--brand:#2563eb;--brand-ink:#fff;--accent:#f59e0b;--soft:#eef2ff;--ok:#16a34a;--warn:#d97706;--radius:12px;--fs-base:15px;--fs-h1:22px;--btn-h:44px;--face:34px;--fs-chip:14px}*{box-sizing:border-box}body,html{padding:0;margin:0}body{font-family:Yu Gothic,Hiragino Kaku Gothic ProN,system-ui,sans-serif;color:var(--ink);background:var(--bg);line-height:1.6}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}.header{background:var(--card);border-bottom:1px solid var(--line);padding:10px 16px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}.header .brand{font-weight:700;color:var(--brand);font-size:18px}.header nav{display:flex;gap:4px;flex-wrap:wrap}.header nav a{padding:6px 12px;border-radius:8px;color:var(--ink);font-size:14px;white-space:nowrap}.header nav a:hover{background:var(--soft);text-decoration:none}.header nav a.active{background:var(--soft);color:var(--brand);font-weight:700}.header form{margin:0}.header .logout{font:inherit;font-size:13px;color:var(--muted);background:transparent;border:1px solid var(--line);border-radius:8px;padding:6px 12px;cursor:pointer;white-space:nowrap}.header .logout:hover{color:var(--ink);border-color:var(--muted)}.header .spacer{flex:1 1}.header .who{color:var(--muted);font-size:14px}.container{max-width:980px;margin:0 auto;padding:20px 16px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin-bottom:18px}h1{font-size:22px;margin:6px 0 14px}h2{font-size:18px;margin:4px 0 12px}.muted{color:var(--muted)}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.btn{display:inline-block;background:var(--brand);color:var(--brand-ink);border:none;border-radius:10px;padding:10px 16px;font-size:15px;cursor:pointer}.btn:hover{opacity:.92;text-decoration:none}.btn:disabled,.btn[disabled]{opacity:.4;cursor:not-allowed}.btn.small{padding:6px 12px;font-size:13px}.nowrap{white-space:nowrap}.btn.secondary{background:var(--soft);color:var(--brand)}.btn.ghost{background:transparent;color:var(--brand);border:1px solid var(--line)}.btn.big{padding:14px 22px;font-size:18px;border-radius:12px}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);font-size:14px}th{color:var(--muted);font-weight:600}input,select,textarea{font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;max-width:100%}textarea{resize:vertical;width:100%;max-width:100%;min-height:72px}label{font-size:14px;color:var(--muted)}.faces{display:flex;gap:10px;flex-wrap:wrap}.face{border:2px solid var(--line);border-radius:14px;background:#fff;padding:10px 12px;min-width:78px;text-align:center;cursor:pointer}.face .emoji{font-size:34px;line-height:1}.face .num{font-weight:700}.face .lbl{font-size:12px;color:var(--muted)}.face.selected{border-color:var(--brand);background:var(--soft)}.chips{display:flex;gap:8px;flex-wrap:wrap}.chip{border:1px solid var(--line);border-radius:999px;padding:8px 14px;background:#fff;cursor:pointer;font-size:14px}.chip.selected{border-color:var(--brand)}.chip.selected,.pill{background:var(--soft);color:var(--brand)}.pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px}.notice{background:#fffbeb;border:1px solid #fde68a;color:#92400e;padding:10px 12px;border-radius:8px}.big-ui .face{min-width:96px}.big-ui .face .emoji{font-size:44px}.big-ui .chip{font-size:16px;padding:10px 18px}.band-low .chip,.band-low .notice,.band-low .today,.band-low h1,.band-low h2,.band-low label,.band-low p,.band-low td{word-break:keep-all;overflow-wrap:anywhere}.student-ui{font-size:var(--fs-base)}.student-ui h1{font-size:var(--fs-h1)}.student-ui h2{font-size:calc(var(--fs-base) * 1.15)}.student-ui .card{border-width:2px;box-shadow:0 4px 0 var(--line)}.student-ui .btn{display:inline-flex;align-items:center;justify-content:center;text-align:center;line-height:1.2;min-height:var(--btn-h);font-size:var(--fs-base);border-radius:calc(var(--radius) * .9);padding:0 calc(var(--fs-base) * 1.2);font-weight:700;box-shadow:0 4px 0 rgba(0,0,0,.12)}.student-ui .btn:active{transform:translateY(2px);box-shadow:0 2px 0 rgba(0,0,0,.12)}.student-ui .btn.big{min-height:calc(var(--btn-h) * 1.15);font-size:calc(var(--fs-base) * 1.15)}.student-ui input,.student-ui select,.student-ui textarea{font-size:var(--fs-base);border-width:2px;border-radius:calc(var(--radius) * .7);min-height:var(--btn-h)}.student-ui label{font-size:calc(var(--fs-base) * .9);color:var(--ink);font-weight:600}.student-ui .faces{gap:12px}.student-ui .face{border-width:3px;border-radius:var(--radius);min-width:calc(var(--face) * 2);padding:10px 8px;transition:transform .08s}.student-ui .face:hover{transform:scale(1.04)}.student-ui .face .emoji{font-size:var(--face)}.student-ui .face .lbl{font-size:calc(var(--fs-base) * .8);color:var(--ink)}.student-ui .face.selected{border-color:var(--brand);background:var(--soft);transform:scale(1.06);box-shadow:0 0 0 4px var(--soft)}.student-ui .chip{font-size:var(--fs-chip);padding:10px 16px;border-width:2px}.student-ui .chip.selected{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}.student-ui table td,.student-ui table th{font-size:var(--fs-base);padding:10px}.student-ui .header .brand{color:var(--brand)}.student-ui .header nav{gap:14px}.student-ui .header nav a{display:inline-flex;align-items:center;white-space:nowrap;padding:8px 18px;border-radius:999px;background:var(--soft);border:2px solid transparent;color:var(--ink);font-size:calc(var(--fs-base) * .9);font-weight:700;line-height:1.2}.student-ui .header nav a:hover{text-decoration:none;border-color:var(--brand);background:var(--soft)}.student-ui .header nav a.active{background:var(--brand);color:var(--brand-ink)}.student-ui .header .logout{font-size:calc(var(--fs-base) * .75);padding:6px 12px;min-height:0}.student-ui .btn.small{min-height:calc(var(--btn-h) * .7);font-size:calc(var(--fs-base) * .85);padding:0 calc(var(--fs-base) * .9);box-shadow:0 3px 0 rgba(0,0,0,.1)}.student-ui td.score .emoji{font-size:calc(var(--fs-base) * 1.5)}.student-ui td.score .num{font-size:calc(var(--fs-base) * .7)}.student-ui .header .who{font-size:calc(var(--fs-base) * .8)}.student-ui .today{display:inline-flex;align-items:center;gap:8px;background:var(--soft);border-radius:999px;padding:6px 14px;font-weight:700}.done-overlay{position:fixed;inset:0;background:hsla(0,0%,100%,.92);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:50;animation:fadein .2s}.done-overlay .big-emoji{font-size:84px;animation:pop .5s}.done-overlay h1{color:var(--brand);font-size:calc(var(--fs-h1) * 1.2);margin:8px 0 0}.done-overlay .star{position:absolute;font-size:28px;animation:rise 1.2s ease-out forwards}@keyframes pop{0%{transform:scale(.3)}70%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes fadein{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{transform:translateY(40px);opacity:1}to{transform:translateY(-120px) rotate(20deg);opacity:0}}.login-wrap{display:flex;justify-content:center;padding:24px 0 40px}.login-card{width:100%;max-width:520px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:36px 32px;text-align:center;box-shadow:0 10px 30px rgba(30,58,95,.08)}.login-logo{font-size:56px;line-height:1;margin-bottom:8px}.login-title{font-size:30px;margin:0;letter-spacing:.04em;color:var(--brand)}.login-sub{margin:4px 0 26px;color:var(--muted);font-size:15px}.google-btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;width:100%;max-width:360px;min-height:56px;padding:0 20px;background:#fff;color:#1f2937;font-size:18px;font-weight:700;border:2px solid #dadce0;border-radius:14px;box-shadow:0 2px 6px rgba(0,0,0,.08);text-decoration:none;transition:box-shadow .12s,transform .08s}.google-btn:hover{box-shadow:0 4px 12px rgba(0,0,0,.14);text-decoration:none}.google-btn:active{transform:translateY(1px)}.login-help{margin:18px auto 0;max-width:400px;font-size:14px;color:var(--muted);line-height:1.7;text-align:left}.login-help.kids{margin-top:10px;padding:10px 14px;background:var(--soft);border-radius:12px;color:var(--ink);font-size:15px;text-align:center}.login-error{margin:0 auto 18px;max-width:420px;padding:12px 14px;background:#fef2f2;border:1px solid #fecaca;color:#991b1b;border-radius:12px;text-align:left;font-size:14px;line-height:1.6}.login-error strong{display:block;margin-bottom:2px}.login-faq{margin:18px auto 0;max-width:420px;text-align:left;font-size:13px;color:var(--muted)}.login-faq summary{cursor:pointer;color:var(--brand)}.login-faq ul{padding-left:18px;margin:8px 0 0;line-height:1.7}@media (max-width:480px){.login-card{padding:28px 18px;border-radius:0;border-left:0;border-right:0}.login-title{font-size:26px}}.login-error .kids{margin-top:6px;padding-top:6px;border-top:1px dashed #fecaca}@media (max-width:640px){.container{padding:14px 10px}.header{padding:8px 10px;gap:8px}.header .brand{order:1}.header .spacer{order:2}.header .who{order:3;font-size:12px}.header form{order:4}.header nav{order:5;width:100%}table.cards thead{display:none}table.cards,table.cards tbody,table.cards td,table.cards tr{display:block;width:100%}table.cards tr{border:2px solid var(--line);border-radius:var(--radius);padding:10px 12px;margin-bottom:10px}table.cards td{border:0;padding:3px 0;display:flex;gap:10px;align-items:center}table.cards td:before{content:attr(data-label);color:var(--muted);min-width:6.5em;font-size:.85em}table.cards td.act:before{content:none}table.cards td.act{margin-top:6px}.card{overflow-x:auto}table:not(.cards) td,table:not(.cards) th{white-space:nowrap}}