:root{--bg:#f7f6f2;--surface:#fff;--text:#2c2c2a;--text-muted:#6b6a65;--border:#e3e1d9;--accent:#1d9e75;--accent-text:#fff;--danger-bg:#fcebeb;--danger-text:#791f1f;--success-bg:#e1f5ee;--success-text:#085041;--warning-bg:#faeeda;--warning-text:#633806;--warning-border:#ef9f27;--radius:12px;--radius-sm:8px;font-family:system-ui,-apple-system,Apple SD Gothic Neo,Malgun Gothic,sans-serif;line-height:1.6}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}h1,h2{margin:0;font-weight:600}h1{font-size:1.5rem}h2{font-size:1.1rem}p{margin:0}.page{max-width:720px;margin:0 auto;padding:24px 16px 48px}.page--narrow{max-width:440px}.page--wide{max-width:1200px}.stack>*+*{margin-top:20px}.stack-sm>*+*{margin-top:10px}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.row>.input{flex:1;min-width:0}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.muted{color:var(--text-muted)}.help{color:var(--text-muted);font-size:.875rem}.code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8rem}.link{color:var(--accent);font-size:.9rem}.field label{margin-bottom:4px;font-weight:600;display:block}.field .help{margin-bottom:6px}.input{width:100%;font:inherit;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);padding:10px 12px}.input:focus{outline:2px solid var(--accent);outline-offset:-1px}.input--code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem}textarea.input{resize:vertical}.btn{font:inherit;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer;justify-content:center;align-items:center;padding:9px 16px;font-size:.95rem;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--text-muted)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn--ghost{background:0 0}.steps{border:1px solid var(--border);border-radius:var(--radius-sm);margin:0;padding:0;list-style:none}.step{justify-content:space-between;padding:8px 12px;font-size:.9rem;display:flex}.step+.step{border-top:1px solid var(--border)}.step__status{color:var(--text-muted)}.step[data-status=running] .step__status{color:var(--accent)}.step[data-status=done] .step__status{color:var(--success-text);font-weight:600}.step[data-status=failed] .step__status{color:var(--danger-text);font-weight:600}.alert{border-radius:var(--radius-sm);padding:14px 16px}.alert>*+*{margin-top:6px}.alert--error{background:var(--danger-bg);color:var(--danger-text)}.alert--success{background:var(--success-bg);color:var(--success-text)}.list{margin:0;padding:0;list-style:none}.list__item{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.list__item+.list__item{border-top:1px solid var(--border)}.wall{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px;display:grid}.qr{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;width:220px;padding:8px}.qr--large{width:min(100%,80vh);margin-left:auto;margin-right:auto}.qr__canvas{width:100%;height:auto;image-rendering:pixelated;display:block}.field-error{color:var(--danger-text);margin-top:6px;font-size:.875rem}.field-error:empty{display:none}.welcome__teacher{text-align:center;font-size:.9rem}.card--notice{border-color:var(--warning-border)}.alert--warning{background:var(--warning-bg);color:var(--warning-text)}.table{border-collapse:collapse;width:100%;font-size:.92rem}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:8px 6px}.table th{color:var(--text-muted);font-size:.85rem;font-weight:600}.table tr.is-inactive td{color:var(--text-muted)}.badge{background:var(--bg);color:var(--text-muted);white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:.8rem;display:inline-block}.badge--ok{background:var(--success-bg);color:var(--success-text)}.btn--sm{padding:5px 10px;font-size:.85rem}.btn--block{width:100%}.row--end{justify-content:flex-end}.input--sm{max-width:160px;padding:6px 8px}.input--big{padding:12px 14px;font-size:1.25rem}.input--pin{letter-spacing:.3em;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.check{align-items:center;gap:6px;margin-top:6px;font-size:.9rem;font-weight:400;display:flex}.plain-list{margin:6px 0 0;padding-left:18px;font-size:.9rem}.progress{width:100%;height:10px;accent-color:var(--accent)}@media (width<=560px){.table td:nth-child(3),.table th:nth-child(3){display:none}}.print-sheet{display:none}@media print{@page{size:A4;margin:10mm}body.is-printing>:not(.print-sheet){display:none!important}body.is-printing{background:#fff}body.is-printing .print-sheet{grid-template-columns:1fr 1fr;grid-auto-rows:66mm;gap:0;display:grid}.pin-card{break-inside:avoid;color:#000;border:1px dashed #999;align-items:center;gap:4mm;padding:5mm 6mm;display:flex}.pin-card__body{flex:1;min-width:0}.pin-card__class{color:#555;font-size:10pt}.pin-card__who{margin-top:1mm;font-size:15pt;font-weight:700}.pin-card__label{color:#555;margin-top:4mm;font-size:9pt}.pin-card__pin{letter-spacing:1mm;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:22pt;font-weight:700}.pin-card__help{color:#555;margin-top:3mm;font-size:8pt;line-height:1.4}.pin-card__qr{width:32mm;height:32mm;image-rendering:pixelated}}.released{margin-top:12px;font-size:.9rem}.released summary{cursor:pointer;color:var(--text-muted)}.released>*+*{margin-top:6px}
