:root{--bg:#fbf7ef;--ink:#2b2b2b;--sub:#8a8a8a;--accent:#3b8fd9;--muted:#e2e2e2;--done:#5cbf7a;color:var(--ink);background:var(--bg);font-family:system-ui,Hiragino Sans,Noto Sans JP,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0}.button{background:var(--accent);color:#fff;font:inherit;cursor:pointer;border:none;border-radius:999px;padding:12px 24px;font-weight:700;text-decoration:none;display:inline-block}.button:disabled{opacity:.4;cursor:default}.button-sub{background:var(--muted);color:var(--ink)}.home{justify-items:center;gap:24px;padding:64px 16px;display:grid}.join{gap:8px;display:flex}.join input{border:2px solid var(--muted);width:8em;font:inherit;text-transform:uppercase;border-radius:12px;padding:12px}.screen{flex-direction:column;justify-content:center;align-items:center;gap:2vh;height:100vh;display:flex;position:relative;overflow:hidden}.screen-title{margin:0;font-size:5vh}.join-card{background:#fff;border-radius:2vh;justify-items:center;gap:1vh;padding:2vh;display:grid;position:absolute;bottom:3vh;box-shadow:0 .5vh 2vh #0000001f}.join-qr{width:26vh;height:26vh;display:block}.join-card-A{left:3vh}.join-card-B{right:3vh}.join-card-active{outline:.6vh solid var(--accent)}.join-card p{margin:0}.join-team{font-size:2.8vh;font-weight:700}.join-room{color:var(--sub);letter-spacing:.1em;font-size:2vh}.dish{aspect-ratio:1;width:min(78vh,90vw);position:relative}.dish canvas{width:100%;height:100%;position:absolute;inset:0}.dish-mouse{cursor:none}.sponge{aspect-ratio:1;opacity:.85;pointer-events:none;border:3px solid #00000040;border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.sponge-chip{border-radius:50%;width:20px;height:20px}.hud{font-variant-numeric:tabular-nums;letter-spacing:.1em;font-size:4vh;position:absolute;top:3vh}.hud-left{left:3vw}.hud-right{right:3vw}.result{text-align:center;font-size:4vh}.result p{margin:0}.result-time{font-variant-numeric:tabular-nums;font-size:14vh;font-weight:700}.result-winner{font-size:8vh;font-weight:700}.scoreboard{gap:2vh;margin:4vh 0 0;padding:0;list-style:none;display:grid}.score{background:#fff;border-radius:2vh;justify-content:space-between;align-items:baseline;gap:4vh;padding:2vh 4vh;display:flex}.score-won{outline:.6vh solid var(--accent)}.score-team{font-weight:700}.score-time{font-variant-numeric:tabular-nums;font-size:8vh;font-weight:700}.result-actions{justify-content:center;gap:16px;margin-top:4vh;display:flex}.director-team{background:var(--ink);color:#fff;border-radius:999px;align-self:flex-start;margin:0;padding:4px 12px;font-size:14px;font-weight:700}.director-results{font-variant-numeric:tabular-nums;gap:8px;margin:0;padding:0;font-size:20px;list-style:none;display:grid}.team-picker{gap:12px;width:100%;display:grid}.director{flex-direction:column;align-items:center;gap:16px;max-width:480px;min-height:100vh;margin:0 auto;padding:24px 16px;display:flex}.director-title{align-self:flex-start;margin:0;font-size:18px}.director-wait{color:var(--sub);margin-top:40vh}.director-timer{color:var(--sub);font-variant-numeric:tabular-nums;letter-spacing:.2em;margin:24px 0 0;font-size:22px}.director-dish{align-items:center;gap:8px;width:100%;display:flex}.dish-preview{aspect-ratio:1;flex:1;min-width:0}.arrow{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:8px;font-size:32px}.director-number{align-items:center;gap:8px;margin:0;font-size:32px;display:flex}.badge{background:var(--accent);color:#fff;border-radius:999px;padding:2px 8px;font-size:12px}.badge-done{background:var(--done)}.dots{gap:12px;margin:8px 0 0;padding:0;list-style:none;display:flex}.dot{border:2px solid var(--muted);cursor:pointer;background:0 0;border-radius:50%;width:16px;height:16px;padding:0}.dot-done{border-color:var(--done);background:var(--done)}.dot-view{outline:2px solid var(--accent);outline-offset:2px}.button-small{padding:6px 12px;font-size:13px}.home-actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.camera-status{background:var(--ink);color:#fff;border-radius:8px;margin:0;padding:8px 16px;position:absolute;bottom:10vh}.calibrate{grid-template-columns:1fr 380px;gap:24px;min-height:100vh;padding:24px;display:grid}.calibrate-view{min-width:0}.stage{aspect-ratio:16/9;background:#222;border-radius:12px;position:relative;overflow:hidden}.stage video,.stage-overlay{object-fit:fill;width:100%;height:100%;position:absolute;inset:0}.stage-overlay{image-rendering:pixelated}.stage-mirror video,.stage-mirror .stage-overlay{transform:scaleX(-1)}.stage-picking{cursor:crosshair;outline:4px solid var(--accent)}.stage-status{color:#fff;place-items:center;margin:0;display:grid;position:absolute;inset:0}.calibrate-hint{color:var(--sub)}.calibrate-panel{flex-direction:column;gap:12px;display:flex}.calibrate-panel h1{margin:0;font-size:20px}.calibrate-actions{gap:8px;display:flex}.field{gap:4px;font-size:14px;display:grid}.field select{font:inherit;padding:8px}.check{align-items:center;gap:8px;font-size:14px;display:flex}.ranges{gap:12px;margin:0;padding:0;list-style:none;display:grid}.range{background:#fff;border-radius:12px;gap:4px;padding:12px;display:grid}.range-head{align-items:center;gap:8px;font-size:14px;display:flex}.range-head .button{margin-left:auto}.range-found{color:var(--done);font-size:12px}.range-lost{color:var(--sub);font-size:12px}.slider{grid-template-columns:6em 1fr 3em;align-items:center;gap:8px;font-size:12px;display:grid}.slider output{text-align:right;font-variant-numeric:tabular-nums}@media (width<=900px){.calibrate{grid-template-columns:1fr;padding:16px}}.setup-wait{text-align:center;font-size:4vh}.setup-wait p{margin:0}.setup-count{font-variant-numeric:tabular-nums;font-size:20vh;font-weight:700}.director-countdown{font-variant-numeric:tabular-nums;margin:0;font-size:40px;font-weight:700}.setup-list{gap:8px;width:100%;margin:0;padding:0;list-style:none;display:grid}.setup-item{background:#fff;border-radius:12px;grid-template-columns:auto 84px 1fr auto;align-items:center;gap:10px;padding:8px 10px;transition:background .1s;display:grid}.setup-number{text-align:center;min-width:1em;font-size:20px;font-weight:700}.setup-preview{aspect-ratio:1;width:84px}.rotate-buttons{gap:6px;display:flex}.rotate{background:var(--muted);width:46px;height:46px;color:var(--ink);cursor:pointer;border:none;border-radius:10px;font-size:24px}.rotate:active{background:var(--accent);color:#fff}.director-hint{color:var(--sub);margin:0;font-size:14px}.range-solo{outline:3px solid var(--accent)}.range p{margin:0}.range-actions{flex-wrap:wrap;gap:6px;display:flex}.hover-readout{flex-wrap:wrap;align-items:center;gap:8px;min-height:2em;margin:0;font-size:14px;display:flex}.hover-empty{color:var(--sub)}.hover-values{font-variant-numeric:tabular-nums}.calibrate-fps{color:var(--sub);font-size:12px}.setup-item-target{background:#dbeaf8}.part-block{color:#fff;width:100%;min-height:46px;font:inherit;text-shadow:0 1px 2px #0009;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border:3px solid #00000026;border-radius:10px;padding:6px 8px;font-size:18px;font-weight:700}.part-block-static{text-align:center;cursor:default;width:auto;min-width:160px;margin:0}.part-block-selected{border-color:var(--ink);box-shadow:0 0 0 3px #fff, 0 0 0 6px var(--ink)}.part-block-dragging{z-index:10;cursor:grabbing;position:relative;box-shadow:0 8px 20px #0000004d}.screen-part{align-items:center;gap:1.5vh;margin:0;font-size:5vh;font-weight:700;display:flex;position:absolute;top:3vh;left:50%;transform:translate(-50%)}.screen-part-chip{border-radius:50%;width:4.5vh;height:4.5vh}
