*{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;color:#111;background:#fff}.container{max-width:420px;margin:0 auto;padding:24px 16px}h1{font-size:1.25rem;margin:0 0 12px}input{display:block;width:100%;padding:10px;margin:6px 0;border:1px solid #ccc;border-radius:6px;font-size:1rem}input.code{letter-spacing:.4em;text-align:center}button{display:block;width:100%;padding:12px;margin-top:10px;border:0;border-radius:8px;background:#111;color:#fff;font-weight:600;font-size:1rem}button:disabled{opacity:.6}button.ghost{background:transparent;color:#111;border:1px solid #111}.muted{color:#777}a{color:inherit}nav.tabs .container{display:flex;gap:16px;padding-bottom:0}nav.tabs a{font-weight:600;text-decoration:none}.day{font-weight:700;margin:16px 0 6px;font-size:.8rem;color:#555;letter-spacing:.03em}.cls{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:8px;border:1px solid #ddd;border-radius:8px;padding:10px;margin:6px 0;text-decoration:none}.cls.on{border:2px solid #111}.tag{display:inline-block;background:#e8f5e9;color:#1b5e20;border-radius:10px;padding:1px 8px;font-size:.8rem}.warn{flex-basis:100%;background:#fff4e5;color:#8a4b00;border-radius:8px;padding:10px;margin-top:8px}.warn p{margin:0 0 4px}.pair{display:flex;gap:8px}.pair button{margin-top:6px}button.small{width:auto;padding:4px 10px;margin:0;font-size:.9rem}.cls>p{margin:0}fieldset.pick{border:0;margin:0;padding:0}fieldset.pick legend{padding:0;margin-bottom:4px}label.cls{cursor:pointer}label.cls input[type=radio]{position:absolute;opacity:0;width:1px;height:1px;margin:0}label.cls:has(input:focus-visible){outline:2px solid #111;outline-offset:2px}.done{text-align:center;padding-top:48px}.done-mark{font-size:4rem;line-height:1;margin-bottom:12px}.done h2{font-size:1.5rem;margin:0 0 8px}.poster{max-width:640px;text-align:center}.poster-title{font-size:2.4rem;font-weight:800;letter-spacing:.04em;margin:8px 0 16px}.poster-qr svg{display:block;width:100%;max-width:420px;height:auto;margin:0 auto}.poster-scan{font-size:1.5rem;font-weight:600;margin:16px 0 6px}.poster-how{font-size:1.15rem;color:#444;margin:0 0 16px}.poster-url{font-size:.85rem;color:#777;margin:0;word-break:break-all}@page{size:A4;margin:15mm}@media print{.no-print,nav.tabs{display:none!important}.poster-page .poster{max-width:none;padding:0;page-break-inside:avoid;break-inside:avoid}.poster-title{font-size:34pt;margin:6mm 0 10mm}.poster-qr svg{width:140mm;max-width:140mm}.poster-scan{font-size:20pt;margin:10mm 0 3mm}.poster-how{font-size:14pt;margin:0 0 10mm}.poster-url{font-size:9pt}}