@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600&family=IBM+Plex+Serif:wght@500;700&display=swap";@import"https://fonts.googleapis.com/css2?family=Material+Symbols+Rounded:opsz,wght,FILL,GRAD@20..48,400,1,0";:root{color-scheme:only light;font-family:IBM Plex Sans,system-ui,sans-serif;background-color:#f6f6f3;color:#1d1b16;font-size:17px;--brand-title-width: 19ch}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:#f6f6f3}#root{min-height:100vh}.page{max-width:960px;margin:0 auto;padding:40px 24px 72px;display:grid;gap:18px}.page.has-wheel{padding-bottom:320px}.hero{display:flex;flex-direction:column;gap:16px;padding:22px 24px;border-radius:24px;background:#f7f6f1;border:1px solid #e2e2db;box-shadow:0 10px 24px #1d1b1614}.hero.minimal{padding:16px 20px;align-items:flex-start;margin-bottom:40px}.room-header{flex-direction:column;align-items:stretch;gap:10px}.hero.compact{padding:18px 20px;gap:12px}.hero h1{margin:0;font-family:"IBM Plex Serif",serif;font-size:clamp(1.8rem,2.6vw,2.5rem)}.tag{display:inline-block;align-self:flex-start;padding:4px 10px;border-radius:999px;background:#1d1b16;color:#fff5e6;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase}.lead{margin:0;color:#5f564d}.panel{background:#fff;border:1px solid #e2e2db;border-radius:20px;padding:22px;box-shadow:0 10px 26px #1d1b1614;display:grid;gap:12px}.panel h2{margin:0;font-size:1.1rem}.panel.minimal{max-width:640px;margin:0 auto}.panel.flat{background:transparent;border:none;box-shadow:none;padding:0}.create-panel{padding:120px 0 360px;gap:18px;width:100%}.create-panel+.create-panel{margin-top:40px}.create-panel .url-row{margin-bottom:40px}.create-panel-max{max-width:480px;margin:0 auto}.title{margin:0;font-size:1.25rem}.room-title-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;width:100%;justify-content:flex-start}.room-title-row h1{width:auto;max-width:min(var(--brand-title-width),70vw);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-actions{display:flex;gap:10px;flex-wrap:wrap;margin-left:auto}.name-edit{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.name-edit input{width:min(var(--brand-title-width),70vw);font-size:clamp(2rem,3vw,2.8rem);font-family:"IBM Plex Serif",serif;font-weight:700}.section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.logo-link{text-decoration:none;color:inherit}.logo{display:inline-flex;align-items:center;gap:12px;font-weight:700;letter-spacing:.02em}.logo-only .logo-title{display:none}.logo-mark{width:40px;height:40px;border-radius:14px;color:#1d1b16;display:grid;place-items:center;box-shadow:0 8px 18px #1d1b162e}.logo-mark svg{width:100%;height:100%}.logo-title{font-family:"IBM Plex Serif",serif;font-size:1.4rem}.panel.inner{background:#f8f8f4}.grid-2{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.url-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.create-panel .url-row{flex-direction:column;align-items:stretch;width:100%}.create-panel .url-row button{width:100%}.clickable{cursor:pointer}.link-button{display:inline-flex;align-items:center;gap:6px;border:none;background:transparent;color:#3f362e;font-weight:600;cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:4px}.link-button:disabled{opacity:.6;cursor:default;text-decoration:none}.link-button .material-symbols-rounded{font-size:1.1rem}.room-new-link{display:inline-flex;align-items:center;justify-content:center;margin:40px auto 20px;padding:10px 16px;border-radius:12px;border:1px solid #d5d5cf;color:#6b6b66;background:#efefec;font-weight:600;text-decoration:none;transition:color .12s ease,background .12s ease,border .12s ease}.room-new-link.final{color:#fff5e6;background:#1d1b16;border-color:#1d1b16}.accordion{border-radius:14px;background:#fafaf7;border:1px solid #e2e2db;padding:8px 12px}.accordion summary{cursor:pointer;font-weight:600;color:#4f463d}.accordion[open] summary{margin-bottom:8px}.accordion-body{display:grid;gap:10px;color:#5f564d;font-size:.9rem}input,textarea{width:100%;padding:10px 12px;border-radius:12px;border:1px solid #e2e2db;background:#fdfdfb;font-family:inherit}textarea{min-height:160px;resize:vertical;line-height:1.5}button,.secondary{border:none;border-radius:999px;padding:10px 20px;background:#1d1b16;color:#fff5e6;font-weight:600;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.secondary{background:#efefea;color:#1d1b16}button:disabled{opacity:.6;cursor:not-allowed}.option{display:flex;align-items:center;gap:8px;margin-bottom:8px}.field{display:grid;gap:6px}.actions{display:flex;gap:12px;flex-wrap:wrap}.status-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));font-size:.9rem;color:#5f564d}.status-strip{display:flex;gap:16px;flex-wrap:wrap;font-size:.95rem;color:#5f564d}.status-item{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;background:#f6f6f3;border:1px solid #e2e2db}.status-label{font-size:.8rem;color:#6b6258}.status-value{font-weight:700;color:#1d1b16}.status-icon{font-size:1.1rem}.participants-scroll{overflow-x:auto;overflow-y:visible;position:relative;z-index:3}.participants-row{display:flex;gap:12px;align-items:center;padding-bottom:6px;position:relative;z-index:3}.participant-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:999px;background:#fff;border:1px solid #e2e2db;box-shadow:0 6px 16px #1d1b1614;font-weight:600;position:relative}.tooltip-layer{position:fixed;transform:translate(-50%,calc(-100% - 12px));background:#1d1b16;color:#fff5e6;padding:8px 10px;border-radius:10px;font-size:.75rem;white-space:pre-line;min-width:220px;max-width:min(80vw,360px);max-height:min(50vh,320px);text-align:left;box-shadow:0 12px 28px #1d1b1633;z-index:9999;pointer-events:none;overflow:auto;word-break:break-all;overflow-wrap:anywhere}.tooltip-layer:after{content:"";position:absolute;left:50%;bottom:-8px;transform:translate(-50%);width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:8px solid #1d1b16}.tooltip-layer.below{transform:translate(-50%,12px)}.tooltip-layer.below:after{top:-8px;bottom:auto;border-top:none;border-bottom:8px solid #1d1b16}.send-anim{position:fixed;transform:translate(-50%,-50%);animation:sendFlight .9s ease-out forwards;z-index:9998;pointer-events:none}.send-letter{width:26px;height:18px;border:2px solid #1d1b16;border-radius:4px;background:#fffdf7;position:relative;box-shadow:0 8px 16px #1d1b162e}.send-letter:before{content:"";position:absolute;left:2px;right:2px;top:3px;height:0;border-top:2px solid #1d1b16;transform:skewY(-8deg)}.send-letter:after{content:"";position:absolute;left:2px;right:2px;bottom:3px;height:0;border-top:2px solid #1d1b16;transform:skewY(8deg)}@keyframes sendFlight{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-180px) scale(.9)}}.qr-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1d1b1666;display:grid;place-items:center;z-index:9999}.qr-modal{background:#fff;border-radius:18px;padding:20px;border:1px solid #e2e2db;box-shadow:0 18px 40px #1d1b1638;display:grid;gap:16px;justify-items:center}.turnstile-host{position:fixed;left:12px;bottom:12px;z-index:9998;background:#fff;border-radius:12px;padding:6px;box-shadow:0 12px 28px #1d1b162e}.turnstile-hint{position:fixed;left:12px;bottom:72px;z-index:9998;background:#1d1b16;color:#fff5e6;padding:8px 12px;border-radius:12px;font-size:.8rem;box-shadow:0 12px 24px #1d1b1640}.register-panel{background:#fff;border:1px solid #e2e2db;box-shadow:0 10px 26px #1d1b1614}.register-panel h2{font-size:1.2rem}.register-panel .field span{font-size:1rem}.register-panel input{font-size:1.05rem;padding:12px 14px}.register-panel .full-button{font-size:1.05rem;padding:12px 20px}.janken-preview{display:flex;gap:8px;flex-wrap:nowrap;padding:10px 12px;border-radius:12px;background:#fdfdfb;border:1px solid #e2e2db;cursor:pointer;overflow:hidden}.hand-chip{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:28px;padding:0 8px;border-radius:999px;background:#1d1b16;color:#fff5e6;font-size:.85rem;font-weight:700}.hand-chip.ellipsis{background:#efefea;color:#7a6f63}.hand-chip.ghost{background:#efefea;color:#b1aaa0}.hand-chip.tiebreak-lose{background:#d9d5cd;color:#6a6258}.name-chip{display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;border-radius:999px;background:#efefea;color:#1d1b16;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.name-chip.placeholder{background:#efefea;color:#b2ada1;font-weight:500}.hand-chip.win{background:#2f7a4f;color:#f1fff6;box-shadow:0 6px 16px #2f7a4f4d}.rank-list{list-style:none;padding:0;margin:0 auto;display:grid;gap:8px;--rank-name-width: clamp(160px, 26vw, 260px);width:fit-content}.rank-list.rank-reveal li{opacity:0;transform:translateY(8px);animation:rank-reveal .35s ease forwards}@keyframes rank-reveal{to{opacity:1;transform:translateY(0)}}.rank-list li{display:grid;grid-template-columns:auto var(--rank-name-width) 1fr;align-items:center;column-gap:4px;row-gap:0;padding:10px 12px;border-radius:0;border:none;background:transparent}.rank-animated{position:relative;display:grid;grid-template-columns:auto var(--rank-name-width) 1fr;column-gap:4px;row-gap:0;width:fit-content;margin:0 auto;--rank-name-width: clamp(160px, 26vw, 260px)}.order-panel{padding:0 0 8px;gap:12px}.rank-index-column{display:grid;gap:0;align-content:start;grid-auto-rows:var(--rank-row-height)}.rank-index-row{display:flex;align-items:center;justify-content:center;height:var(--rank-row-height)}.rank-name-column{position:relative;width:var(--rank-name-width);min-width:var(--rank-name-width)}.rank-name-item{position:absolute;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:12px;padding:0 4px;border-radius:0;border:none;background:transparent;box-sizing:border-box;transition:transform 1.6s cubic-bezier(.22,1,.36,1);will-change:transform;box-shadow:none}.rank-name-slot{display:flex;justify-content:center;width:var(--rank-name-width)}.rank-name-slot .name-chip{width:100%;justify-content:center;padding-inline:14px}.rank-spacer,.rank-spacer-column{display:block;width:100%}.rank-index{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;background:#1d1b16;color:#fff5e6;font-weight:700;font-size:.9rem}.janken-history{--janken-name-width: 140px;--janken-row-height: 44px;--janken-group-gap: 0px;display:flex;gap:18px;width:max-content;min-width:max-content;padding-top:8px}.janken-history.compact{--janken-name-width: 118px;--janken-row-height: 38px;--janken-group-gap: 0px;gap:14px}.janken-history-wrap{width:100%;padding:0 8px;overflow-x:auto;overflow-y:hidden;scrollbar-gutter:stable}.janken-stage{display:grid;gap:var(--janken-group-gap);align-content:start}.janken-group{border-radius:16px;border:1px solid #e2e2db;background:#fff;box-shadow:0 8px 18px #1d1b1614;padding-inline:12px;padding-block:0;display:grid;gap:0;width:fit-content;min-width:max-content;box-sizing:border-box}.janken-group.grouping{background:#ebe6dc;border-color:#d7cfc0}.janken-group-body{display:grid;gap:0}.janken-group-row{display:grid;grid-template-columns:var(--janken-name-width) 1fr;gap:8px;align-items:center;min-height:var(--janken-row-height);height:var(--janken-row-height)}.janken-row-name{width:100%;justify-content:center;text-align:center}.janken-hand-list{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap}.janken-history.compact .hand-chip{height:24px;min-width:28px;font-size:.75rem}@media (max-width: 720px){.create-panel-max{max-width:100%}.janken-history-wrap,.janken-history-wrap.compact{padding:0 12px}}.janken-sample{display:grid;gap:12px;padding:6px 0 12px;width:100%;max-width:none;overflow-anchor:none}.log-textarea{font-size:.9rem;color:#2a231c}.log-textarea.compact{min-height:120px}.wheel-sample{display:grid;place-items:center;padding:10px 0}.wheel-inline{display:grid;place-items:center;padding:6px 0 12px}.plinko-dock{display:grid;gap:16px;justify-items:center;width:100%}.plinko-sample{display:grid;place-items:center;padding:6px 0 12px;width:100%}.plinko-board{width:min(520px,100%)}.plinko-board svg{width:100%;height:auto;display:block}.plinko-shell{fill:#f7f5ef;stroke:#e2e2db;stroke-width:2px}.plinko-start{fill:#ede9df;stroke:#dcd5c7;stroke-width:1px}.plinko-guide{fill:#f0ebe2;stroke:#d8d0c1;stroke-width:1px}.plinko-pin{fill:#1d1b16;opacity:.6}.plinko-baffle{stroke:#1d1b16;stroke-width:4px;stroke-linecap:round;opacity:.6}.plinko-wall{stroke:#1d1b16;stroke-width:3px;opacity:.35}.plinko-goal{fill:#1d1b16;opacity:.15}.plinko-ball-wrap{transform-box:fill-box;transform-origin:center}.plinko-ball{stroke:#1d1b16;stroke-width:1px}.plinko-ball.preview{stroke-width:2px;stroke:#1d1b16}.plinko-preview text{pointer-events:none}.plinko-label-layer{pointer-events:none}.plinko-label{fill:#1d1b16;font-weight:600;paint-order:stroke;stroke:#f8f6ef;stroke-width:4px}.verify-report{border-radius:16px;padding:14px 16px;background:#f7f5ef;border:1px solid #e2e2db;color:#4f463d;display:grid;gap:8px}.verify-report.ok{border-color:#428f6766;background:#428f6714;color:#2d5841}.verify-title{margin:0;font-weight:700}.verify-list{list-style:none;padding:0;margin:0;display:grid;gap:4px;font-size:.9rem}.verify-issues{border-top:1px solid rgba(79,70,61,.1);padding-top:8px}.verify-issues-title{margin:0 0 4px;font-weight:600}.icon-button{height:44px;border-radius:999px;padding:0 14px;font-size:.95rem;background:#1d1b16;color:#fff5e6;display:inline-flex;align-items:center;justify-content:center;gap:6px}.material-symbols-rounded{font-family:Material Symbols Rounded;font-variation-settings:"FILL" 1,"wght" 500,"GRAD" 0,"opsz" 24;line-height:1}.icon-button .material-symbols-rounded{font-size:1.2rem}.icon-label{font-size:.85rem;letter-spacing:.02em}.icon{font-size:1.1rem;display:inline-flex;align-items:center;justify-content:center;margin-right:0}.icon-button.icon-only{width:44px;padding:0}.publish-button{height:44px;padding:0 20px;font-size:1rem;border-radius:999px}.publish-button .material-symbols-rounded{color:#2f8f5b}.full-button{width:100%}.wheel-dock{width:100%;display:flex;justify-content:center}.wheel-dock.floating{position:fixed;left:0;right:0;bottom:16px;z-index:40;pointer-events:none}.wheel-dock.floating .wheel-stage{pointer-events:auto}.wheel-dock.revealed{position:relative;margin:14px 0 8px}.wheel-stage{position:relative;width:min(360px,86vw);aspect-ratio:1 / 1;display:grid;place-items:center}.wheel-pointer{position:absolute;top:-20px;width:0;height:0;border-left:12px solid transparent;border-right:12px solid transparent;border-bottom:18px solid #1d1b16;z-index:5;transform:rotate(180deg)}.wheel-plate{width:100%;height:100%;border-radius:50%;background:#fff;box-shadow:0 18px 42px #1d1b1626;border:1px solid #e2e2db;cursor:grab;touch-action:none}.wheel-idle{width:100%;height:100%;border-radius:50%}.wheel-idle.idle{animation:idle-spin 24s linear infinite}.wheel-rotator{width:100%;height:100%;border-radius:50%;transition:transform .1s ease-out}.wheel-rotator.spinning{cursor:default;transition:transform 3s cubic-bezier(.18,.7,.18,1)}.wheel-rotator.returning{transition:transform 1.4s cubic-bezier(.22,.8,.2,1)}.wheel-svg{width:100%;height:100%}.wheel-label{font-size:12px;fill:#1d1b16;font-weight:600}.wheel-result{position:absolute;bottom:-34px;left:50%;transform:translate(-50%);padding:10px 18px;border-radius:999px;background:#1d1b16;color:#fff5e6;text-align:center;box-shadow:0 12px 28px #1d1b162e}.wheel-result .result-label{margin:0;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;opacity:.7}.wheel-result .result-name{margin:0;font-size:1rem;font-weight:700}@keyframes idle-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.note{background:#f9f4eb;font-size:.9rem;color:#5f564d}.list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.list li{display:flex;justify-content:space-between;padding:10px 12px;border-radius:12px;background:#fafaf7;border:1px solid #e2e2db;font-size:.9rem}.log{list-style:none;margin:0;padding:0;display:grid;gap:12px}.log li{border-radius:14px;border:1px solid #e2e2db;background:#fafaf7;padding:12px 14px;display:grid;gap:8px;font-size:.85rem}.log-header{display:flex;justify-content:space-between;gap:8px;font-weight:600}.log-body{display:grid;gap:4px;color:#5f564d;word-break:break-all}.fab{position:fixed;right:20px;bottom:20px;display:grid;gap:10px;z-index:50}.fab-btn{width:48px;height:48px;border-radius:50%;border:none;background:#1d1b16;color:#fff5e6;font-size:1.1rem;cursor:pointer;box-shadow:0 12px 24px #1d1b1633}.fab-btn .material-symbols-rounded{font-size:1.3rem}.fab-panel{position:absolute;right:60px;bottom:0;width:min(360px,80vw);background:#fffdf8;border-radius:16px;padding:10px;box-shadow:0 20px 40px #2d231933;display:grid;gap:6px}.fab-panel.key-panel{max-height:min(70vh,520px)}.fab-panel.history-panel{max-height:min(60vh,420px)}.fab-panel h3,.fab-panel p{margin:0}.key-label{margin-top:2px}.key-block{padding:10px;border-radius:12px;background:#f6f6f3;border:1px solid #e2e2db;font-size:.75rem;word-break:break-all}.history-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.history-scroll{overflow:auto;max-height:min(50vh,320px);padding-right:4px}.history-list li{display:grid;gap:4px;font-size:.85rem;padding:10px;border-radius:12px;background:#fff8ef;border:1px solid #eadfce}.reason-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:8px;font-size:.9rem}.table-wrap{width:100%;overflow-x:auto}.reason-table{width:100%;border-collapse:collapse;font-size:.9rem}.reason-table th,.reason-table td{padding:8px 10px;border-bottom:1px solid #e2e2db;text-align:left}.name-with-icon{display:inline-flex;align-items:center;gap:6px}.winner-icon{font-size:1rem}.status{color:#b42318;font-weight:600}.meta{color:#6b6258;font-size:.9rem}.formula-line{font-family:IBM Plex Mono,monospace}.steps{margin:0;padding-left:18px;display:grid;gap:6px;color:#5f564d}.result .winner{font-size:1.4rem;font-weight:700}@media (max-width: 720px){.hero{padding:20px}.hero.compact{padding:18px}.url-row{flex-direction:column;align-items:stretch}.page{padding:28px 16px 60px}.panel{padding:18px}.actions button,.actions .secondary{width:100%}.fab{right:12px;bottom:12px}.fab-panel{right:54px}}
