:root{--ink:#f4e9d4;--blood:#a70820;--blood-dark:#47000a;--mist:#141018;--paper:#21171c;--line:#6b2631;--warn:#d31b37}*{box-sizing:border-box}body{margin:0;min-height:100svh;background:radial-gradient(ellipse at 50% 0%,#3b1725 0,transparent 52%),radial-gradient(circle at 12% 19%,#4c111d 0 2px,transparent 3px),radial-gradient(circle at 78% 41%,#4c111d 0 1px,transparent 2px),repeating-linear-gradient(115deg,rgba(255,255,255,.018) 0 1px,transparent 1px 8px),#0b090d;color:var(--ink);font-family:system-ui,"Noto Sans JP",sans-serif}.shell{width:min(680px,100%);margin:auto;padding:28px 18px 48px}.site-header{margin-bottom:22px}.eyebrow{font-weight:900;letter-spacing:.2em;margin:0 0 7px;color:#e85061;font-size:.75rem;text-shadow:0 0 12px #a70820}h1{font-size:clamp(2.2rem,9vw,3.8rem);line-height:.92;margin:0;letter-spacing:-.09em;color:#f7e7d1;text-shadow:3px 3px 0 #57000b,0 0 20px #8c1224}.header-rule{height:2px;width:min(220px,58%);margin:17px 0 0;background:linear-gradient(90deg,#c21b32,transparent);box-shadow:0 0 12px #a70820}.card{position:relative;overflow:hidden;background:linear-gradient(135deg,rgba(55,25,31,.96),rgba(19,14,18,.98));border:2px solid var(--line);box-shadow:8px 8px 0 #050305,0 0 25px rgba(167,8,32,.38);padding:clamp(20px,5vw,32px);border-radius:3px}.card:before{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 4px,rgba(255,255,255,.018) 5px 6px)}.card>*{position:relative}.card h2{margin-top:0;font-size:1.55rem;color:#ffe7d7}.card p,.hint{line-height:1.75}.button,button{appearance:none;background:linear-gradient(#ba1932,#790714);color:#fff4e5;border:1px solid #f07b84;border-radius:2px;padding:13px 16px;font:inherit;font-weight:900;letter-spacing:.04em;cursor:pointer;box-shadow:3px 3px 0 #070406;width:100%;margin:8px 0;text-shadow:1px 1px #38000a}.button:active,button:active{transform:translate(2px,2px);box-shadow:1px 1px 0 #070406}button.secondary{background:linear-gradient(#40333a,#21171d);border-color:#96717a;color:#f4e9d4}button.danger{background:linear-gradient(#e32942,#930411)}input{width:100%;padding:13px;background:#100c10;color:#fff3e2;border:1px solid #a83a49;border-radius:2px;font:inherit}input::placeholder{color:#9b7980}.qr{display:block;margin:20px auto;width:min(260px,100%);padding:8px;background:#f6ead6;border:4px solid #670716;box-shadow:0 0 16px #ab1128}.ticket{word-break:break-all;background:#100b0e;border-left:4px solid var(--blood);padding:10px;font:700 .75rem ui-monospace,monospace;color:#e9c7be}.status{padding:12px;background:#3d111c;border:1px solid #9c2638;font-weight:900;border-radius:2px}.timer{font-size:2.7rem;font-weight:900;letter-spacing:-.06em;text-align:center;margin:12px 0;color:#ffcfbd;text-shadow:0 0 16px #b10c24}.progress{display:flex;gap:7px;flex-wrap:wrap;margin:17px 0}.chip{padding:7px 10px;border:1px solid #6d4b52;border-radius:2px;background:#191216;color:#a98e91;font-weight:800}.chip.done{background:#64101d;border-color:#e65b68;color:#fff1dc}.locked{opacity:.45}.hint{background:#29121b;border-left:5px solid var(--blood);padding:14px}.rank{padding:0;list-style:none}.rank li{display:flex;justify-content:space-between;border-bottom:1px solid #60333b;padding:10px 2px}.video{width:100%;border:2px solid #8d1b2e;border-radius:2px;background:#000;margin:8px 0}.scan-video{width:100%;border-radius:2px;border:2px solid #922037;background:#050305;aspect-ratio:4/3;object-fit:cover}.message{font-weight:900;color:#ff8b98}.center{text-align:center}.big{font-size:1.25rem;font-weight:900}.hidden{display:none}small{color:#c4a5a6}

/* 投影端末: 待機中は完全な黒画面。発見時だけ screen.js が動画を差し込む。 */
body.projection{background:#000;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}body.projection img,body.projection video{-webkit-user-drag:none;user-drag:none}body.projection .shell{width:100%;max-width:none;min-height:100svh;padding:0;display:grid;place-items:center}body.projection .card{width:100%;min-height:100svh;background:#000;border:0;border-radius:0;box-shadow:none;padding:0;display:grid;place-items:center}body.projection .card:before{display:none}body.projection .after-image,body.projection .timeout-image{width:100vw;height:100svh;object-fit:contain;background:#000}body.projection .video{width:100vw;height:100svh;max-width:100vw;max-height:100svh;margin:0;border:0;border-radius:0;object-fit:contain;background:#000}

body.projection .reset-screen{position:relative;width:100vw;height:100svh;background:#fff;color:#080808;overflow:hidden;font-family:system-ui,"Noto Sans JP",sans-serif}body.projection .reset-screen img{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:contain;background:#fff}body.projection .reset-copy{position:absolute;top:5%;left:3%;right:3%;font-weight:900;font-size:clamp(1.8rem,5vw,5rem);line-height:1.55;text-align:center;color:#fff;-webkit-text-stroke:2px #000;paint-order:stroke fill;z-index:1}body.projection #room-ready{position:absolute;bottom:3%;left:50%;transform:translateX(-50%);width:clamp(76px,9vw,155px);height:clamp(76px,9vw,155px);border-radius:50%;border:0;background:#f10c12;box-shadow:none;margin:0;padding:0;cursor:pointer;z-index:2}body.projection #room-ready:active{transform:translateX(-50%) scale(.94)}

.help-lamp{padding:10px 14px;border:2px solid #ff334c;border-radius:99px;background:#63000e;color:#fff;font-weight:900;text-align:center;animation:helpFlash .8s steps(2,end) infinite}@keyframes helpFlash{50%{background:#ff1a31;box-shadow:0 0 24px #ff1a31}}

.build-badge{position:fixed;right:8px;bottom:6px;z-index:99;padding:3px 6px;background:rgba(0,0,0,.72);border:1px solid #63313a;border-radius:2px;color:#cda4aa;font:700 10px ui-monospace,monospace;letter-spacing:.03em}
.admin-page .shell{width:min(720px,100%)}.admin-page .card{border-color:#7e303b}.admin-page .card h2{letter-spacing:.03em}.admin-page .status{border-left:5px solid #d5273d}.admin-page .progress{padding:12px;background:rgba(7,4,6,.4);border:1px solid #51232b}.admin-page .chip{min-width:calc(33.333% - 5px);text-align:center}.admin-page .help-lamp{letter-spacing:.08em}.compact-qr{width:min(210px,70vw);max-width:210px;padding:6px}