.site-footer[data-v-1b64a662]{text-align:center;letter-spacing:.05em;color:var(--muted);border-top:1px solid var(--line);background:var(--paper);flex-wrap:wrap;justify-content:center;gap:4px 16px;padding:14px 16px;font-size:13px;display:flex}.site-footer a[data-v-1b64a662]{color:inherit}.site-header[data-v-9b26723a]{border-bottom:1px solid var(--line);background:#fffdf8d9}.site-header-inner[data-v-9b26723a]{align-items:center;gap:14px;max-width:1120px;margin:0 auto;padding:12px 20px;display:flex}.brand[data-v-9b26723a]{color:var(--ink);align-items:center;gap:10px;text-decoration:none;display:inline-flex}.brand[data-v-9b26723a]:hover{color:var(--ink)}.brand-seal[data-v-9b26723a]{width:32px;height:32px;font-size:18px}.brand-name[data-v-9b26723a]{font-family:var(--font-serif);letter-spacing:.08em;font-size:20px;font-weight:700}.brand-sub[data-v-9b26723a]{border-left:1px solid var(--line-strong);color:var(--muted);padding-left:14px;font-size:14px}@media (max-width:480px){.brand-sub[data-v-9b26723a]{display:none}}.site-notices[data-v-138a495f]{flex-direction:column;display:flex}.site-notice[data-v-138a495f]{text-align:center;border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 16px;margin:0;padding:10px 16px;font-size:18px;display:flex}.site-notice .button[data-v-138a495f]{min-height:48px;font-size:18px}.site-notice.blocking[data-v-138a495f]{color:var(--danger);background:var(--danger-soft)}.site-notice.soft[data-v-138a495f]{color:var(--ochre-deep);background:var(--ochre-soft)}.site-notice.update[data-v-138a495f]{color:var(--jade-deep);background:var(--jade-soft)}.app[data-v-720fc706]{flex-direction:column;min-height:100vh;display:flex}.app-main[data-v-720fc706]{flex:1}.app.fill[data-v-720fc706]{height:100vh;height:100dvh}.app.fill .app-main[data-v-720fc706]{flex-direction:column;min-height:0;display:flex}.app.fill .app-main[data-v-720fc706]>*{flex:1;min-height:0}.home[data-v-bf9e589c]{max-width:980px;padding-top:48px}.hero[data-v-bf9e589c]{text-align:center;margin-bottom:36px}.eyebrow[data-v-bf9e589c]{letter-spacing:.2em;color:var(--seal);margin:0 0 8px;font-size:15px}h1[data-v-bf9e589c]{letter-spacing:.12em;margin:0 0 14px;font-size:46px}.intro[data-v-bf9e589c]{max-width:620px;color:var(--ink-soft);margin:0 auto 22px;font-size:17px}.steps[data-v-bf9e589c]{flex-wrap:wrap;justify-content:center;gap:10px 14px;margin:0;padding:0;list-style:none;display:flex}.steps li[data-v-bf9e589c]{border:1px solid var(--line);background:var(--card);color:var(--ink-soft);border-radius:999px;align-items:center;gap:8px;padding:6px 14px 6px 6px;font-size:15px;display:inline-flex}.step-no[data-v-bf9e589c]{background:var(--seal);color:#fff8f0;width:28px;height:28px;font-family:var(--font-serif);border-radius:50%;justify-content:center;align-items:center;font-size:15px;display:inline-flex}.entries[data-v-bf9e589c]{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:20px;margin-bottom:24px;display:grid}@media (max-width:760px){.entries[data-v-bf9e589c]{grid-template-columns:minmax(0,1fr)}h1[data-v-bf9e589c]{font-size:36px}}.entry[data-v-bf9e589c]{flex-direction:column;gap:12px;display:flex}.entry h2[data-v-bf9e589c]{margin:0;font-size:24px}.student[data-v-bf9e589c]{border-top:5px solid var(--seal);font-size:18px}.student label[data-v-bf9e589c]{color:var(--ink-soft);font-weight:600}.row[data-v-bf9e589c]{flex-wrap:wrap;gap:12px;display:flex}.row input[data-v-bf9e589c]{min-width:200px;min-height:64px;font-family:var(--font-number);letter-spacing:.3em;color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--radius-m);background:#fff;flex:1;padding:8px 16px;font-size:34px}.row input[data-v-bf9e589c]:focus{border-color:var(--seal);box-shadow:0 0 0 4px var(--seal-soft);outline:none}.big[data-v-bf9e589c]{min-height:64px;font:inherit;border:1px solid var(--line-strong);border-radius:var(--radius-m);cursor:pointer;padding:0 30px;font-size:20px;font-weight:600}.big.primary[data-v-bf9e589c]{color:#fff8f0;border-color:var(--seal);background:var(--seal)}.big.primary[data-v-bf9e589c]:hover{background:var(--seal-deep)}.teacher[data-v-bf9e589c]{justify-content:flex-start}.entry-links[data-v-bf9e589c]{flex-wrap:wrap;gap:10px;margin-top:auto;display:flex}.entry-links .button[data-v-bf9e589c]{min-height:48px;padding:0 22px;font-size:16px}.status[data-v-bf9e589c]{color:var(--muted);justify-content:center;align-items:center;gap:8px;margin:0;font-size:14px;display:flex}.status[data-v-bf9e589c]:before{content:"";background:var(--line-strong);border-radius:50%;width:8px;height:8px}.status-ok[data-v-bf9e589c]{color:var(--jade)}.status-ok[data-v-bf9e589c]:before{background:var(--jade)}.status-failed[data-v-bf9e589c]{color:var(--danger)}.status-failed[data-v-bf9e589c]:before{background:var(--danger)}:root{--paper:#f6f1e7;--paper-deep:#ede5d6;--card:#fffdf8;--ink:#2b2622;--ink-soft:#4a423b;--muted:#7a6f63;--line:#e3d8c4;--line-strong:#cdbfa8;--seal:#b23a26;--seal-deep:#93301f;--seal-soft:#f5e1d9;--jade:#2f6a52;--jade-deep:#1f4d3a;--jade-soft:#e1ede5;--ochre-deep:#5e3d0b;--ochre-soft:#f7ebcf;--danger:#b3261e;--danger-soft:#fae4e0;--font-sans:system-ui, -apple-system, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-serif:"Songti SC", "STZhongsong", "STSong", "Noto Serif SC", "Noto Serif CJK SC", "Source Han Serif SC", "SimSun", serif;--font-number:"Bahnschrift", "DIN Alternate", "Roboto Condensed", var(--font-sans);--radius-s:8px;--radius-m:12px;--radius-l:18px;--shadow-card:0 1px 2px #2b26220f, 0 10px 28px #2b262212;--shadow-pop:0 18px 48px #2b262238;--color-text:var(--ink);--color-muted:var(--muted);--color-border:var(--line);--color-bg:var(--card);--color-primary:var(--seal);--color-primary-text:#fff8f0;--color-ok:var(--jade);--color-error:var(--danger);--color-ok-bg:var(--jade-soft);--color-warning-bg:var(--ochre-soft);font-family:var(--font-sans);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.7}*,:before,:after{box-sizing:border-box}body{background:var(--paper);margin:0}h1,h2,h3{font-family:var(--font-serif);letter-spacing:.02em;color:var(--ink);font-weight:700;line-height:1.35}a{color:var(--seal);text-underline-offset:3px}a:hover{color:var(--seal-deep)}::selection{background:var(--seal-soft)}:focus-visible{outline-offset:2px;outline:3px solid #b23a2659}.page{max-width:1120px;margin:0 auto;padding:32px 20px 56px}.panel{border:1px solid var(--line);border-radius:var(--radius-l);background:var(--card);box-shadow:var(--shadow-card);padding:24px}.section-title{align-items:center;gap:10px;margin:0 0 16px;font-size:22px;display:flex}.section-title:before{content:"";background:var(--seal);border-radius:3px;flex:none;width:6px;height:22px}.seal-mark{border:2px solid var(--seal);color:var(--seal);font-family:var(--font-serif);border-radius:6px;flex:none;justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex}.badge{border:1px solid var(--line);background:var(--paper-deep);color:var(--ink-soft);border-radius:999px;align-items:center;padding:1px 10px;font-size:13px;font-weight:400;line-height:1.7;display:inline-flex}.badge.seal{background:var(--seal-soft);color:var(--seal-deep);border-color:#b23a2640}.badge.jade{background:var(--jade-soft);color:var(--jade-deep);border-color:#2f6a5240}.form{flex-direction:column;gap:18px;display:flex}.field{flex-direction:column;gap:6px;display:flex}.field>label{color:var(--ink-soft);font-weight:600}.field input,.input{min-height:44px;font:inherit;color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--radius-s);background:var(--card);padding:10px 12px;transition:border-color .15s,box-shadow .15s}.field input:focus,.input:focus{border-color:var(--seal);box-shadow:0 0 0 3px var(--seal-soft);outline:none}.field-hint,.hint{color:var(--muted);margin:0;font-size:14px}.check{align-items:center;gap:8px;display:flex}.check input{width:18px;height:18px;accent-color:var(--seal)}select{min-height:40px;font:inherit;color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--radius-s);background:var(--card);padding:6px 10px}.button{min-height:40px;font:inherit;color:var(--ink);text-align:center;border:1px solid var(--line-strong);background:var(--card);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:6px 16px;font-size:15px;line-height:1.3;text-decoration:none;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.button:hover{color:var(--ink);background:var(--paper-deep)}.button.primary{color:#fff8f0;border-color:var(--seal);background:var(--seal)}.button.primary:hover{border-color:var(--seal-deep);background:var(--seal-deep)}.button.danger{color:var(--danger);border-color:#b3261e73}.button.danger:hover{background:var(--danger-soft)}.button:disabled{opacity:.55;cursor:default}.error{color:var(--danger);margin:0}.notice{color:var(--jade-deep);border-radius:var(--radius-s);background:var(--jade-soft);border:1px solid #2f6a5233;margin:0;padding:10px 14px}.warning{color:var(--ochre-deep);border-radius:var(--radius-s);background:var(--ochre-soft);border:1px solid #8a5a1238;margin:0;padding:10px 14px}.muted{color:var(--muted)}.loading{color:var(--muted);justify-content:center;align-items:center;gap:10px;margin:0;padding:40px 16px;display:flex}.loading:before{content:"";border:3px solid var(--line);border-top-color:var(--seal);border-radius:50%;flex:none;width:18px;height:18px;animation:.8s linear infinite act-spin}@keyframes act-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.loading:before{animation:none}}.empty-state{text-align:center;color:var(--muted);border:2px dashed var(--line-strong);border-radius:var(--radius-l);background:#fffdf899;margin:0;padding:32px 16px}dialog{color:var(--ink);border:1px solid var(--line);border-radius:var(--radius-l);background:var(--card);box-shadow:var(--shadow-pop)}dialog::backdrop{background:#2b26228c}.table{border:1px solid var(--line);border-radius:var(--radius-m);border-spacing:0;border-collapse:separate;background:var(--card);width:100%;margin-bottom:16px;overflow:hidden}.table th,.table td{text-align:left;vertical-align:middle;border-bottom:1px solid var(--line);padding:10px 14px}.table th{color:var(--ink-soft);white-space:nowrap;background:var(--paper-deep);font-size:14px;font-weight:600}.table tbody tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:#fbf7ee}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}
