:root{--paper:#f4eee2;--surface:#fffdf8;--card:#fffaf0;--ink:#2b2620;--ink-soft:#6c6355;--line:#e2d8c5;--shu:#b8392d;--shu-soft:#f7e1db;--on-shu:#fff;--ai:#2d4c7c;--ai-soft:#e2e9f4;--gold:#b88a1c;--gold-soft:#fbf0cf;--online:#3a8a5c;--shadow:0 1px 2px #3c281414, 0 6px 16px #3c281412;--shadow-lift:0 2px 4px #3c28141f, 0 12px 24px #3c281424;--serif:"Hiragino Mincho ProN", "Yu Mincho", YuMincho, "Noto Serif JP", "Noto Serif CJK JP", serif;--sans:system-ui, -apple-system, "Hiragino Sans", "Noto Sans JP", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--paper:#1c1a17;--surface:#25221e;--card:#2e2a25;--ink:#eee6d8;--ink-soft:#a99f8f;--line:#3d3832;--shu:#e46a5b;--shu-soft:#45251f;--on-shu:#1c1a17;--ai:#86a6dc;--ai-soft:#233047;--gold:#e0b955;--gold-soft:#3c321a;--online:#5cc887;--shadow:0 1px 2px #0000004d, 0 6px 16px #00000040;--shadow-lift:0 2px 4px #00000059, 0 12px 24px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-tap-highlight-color:transparent;margin:0;line-height:1.6}a{color:var(--shu)}.page{max-width:640px;margin:0 auto;padding:16px 16px 48px}h1,h2{font-family:var(--serif);letter-spacing:.04em;font-weight:600}h1{margin:.25rem 0 1rem;font-size:1.5rem}h2{margin:0 0 .75rem;font-size:1.05rem}.site-header{justify-content:space-between;align-items:center;max-width:640px;margin:0 auto;padding:12px 16px 0;display:flex}.logo{font-family:var(--serif);color:var(--ink);letter-spacing:.08em;font-weight:600;text-decoration:none}.logo:before{content:"";border:2px solid var(--shu);vertical-align:-1px;border-radius:2px;width:10px;height:14px;margin-right:8px;display:inline-block}.ad-slot{border:1px dashed var(--line);border-radius:10px;flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:16px;padding:10px 12px;font-size:.9rem;display:flex}.ad-label{letter-spacing:.1em;border:1px solid var(--line);color:var(--ink-soft);border-radius:3px;padding:0 6px;font-size:.7rem;font-weight:700}.ad-body{flex-wrap:wrap;align-items:flex-start;gap:12px 20px;width:100%;display:flex}.ad-banner-box{flex:none;max-width:100%;position:relative}.ad-banner{max-width:100%;height:auto;display:block}.ad-pixel{position:absolute;top:0;left:0}.ad-items{flex:1;min-width:220px}.ad-heading{color:var(--ink-soft);margin:0 0 4px;font-size:.8rem}.ad-list{flex-direction:column;gap:6px;margin:0;padding-left:1.2em;display:flex}.ad-via{color:var(--ink-soft);margin-left:4px;font-size:.8rem}.site-footer{border-top:1px solid var(--line);max-width:640px;color:var(--ink-soft);flex-wrap:wrap;justify-content:center;gap:8px 20px;margin:0 auto;padding:24px 16px 32px;font-size:.85rem;display:flex}.site-footer a{color:var(--ink-soft)}.site-footer a:hover{color:var(--shu)}.footer-note{text-align:center;word-break:auto-phrase;flex-basis:100%;margin:8px 0 0;font-size:.75rem;line-height:1.7}.header-code{color:var(--ink-soft);letter-spacing:.08em;font-size:.85rem}.panel{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;margin-bottom:16px;padding:18px 16px}.field{gap:4px;margin-bottom:12px;font-size:.9rem;display:grid}input{font:inherit;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:10px;width:100%;min-width:0;padding:10px 12px;font-size:1rem}input:focus-visible,button:focus-visible{outline:2px solid var(--shu);outline-offset:2px}button{font:inherit;border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;touch-action:manipulation;border-radius:10px;padding:10px 16px}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--shu);border-color:var(--shu);width:100%;color:var(--on-shu);letter-spacing:.06em;margin:14px 0 0;padding:13px 16px;font-weight:700;display:block;box-shadow:0 2px #00000026}button.primary:not(:disabled):active{box-shadow:none;transform:translateY(1px)}.page>button.primary{margin-bottom:16px}button.link{color:var(--shu);background:0 0;border:none;padding:0 4px;font-size:.9rem;text-decoration:underline}.row{gap:8px;display:flex}.row button{flex:none}.note{color:var(--ink-soft);margin:10px 0 0;font-size:.875rem}.center{text-align:center}.muted{color:var(--ink-soft)}.small{font-size:.8rem}.error{color:var(--shu)}.tag{border:1px solid var(--line);white-space:nowrap;color:var(--ink-soft);border-radius:999px;margin-left:6px;padding:0 7px;font-size:.72rem;line-height:1.6;display:inline-block}.tag.accent{border-color:var(--shu);color:var(--shu)}.tag.done{border-color:var(--online);color:var(--online)}.dot{background:var(--line);border-radius:50%;flex:none;width:8px;height:8px;margin-right:8px;display:inline-block}.dot.online{background:var(--online)}.banner,.toast{z-index:2;text-align:center;background:var(--gold-soft);color:var(--ink);padding:8px 16px;font-size:.9rem;position:sticky;top:0}.toast{background:var(--shu-soft);justify-content:center;gap:8px;display:flex}.message{text-align:center;padding-top:48px}.karuta{--frame:var(--ai);background:var(--card);border:3px solid var(--frame);box-shadow:inset 0 0 0 3px var(--card), inset 0 0 0 4px color-mix(in srgb, var(--frame) 55%, transparent), var(--shadow);font-family:var(--serif);color:var(--ink);border-radius:8px;position:relative}.karuta.reading{--frame:var(--shu)}.vertical{writing-mode:vertical-rl;letter-spacing:.08em;line-height:1.5}rt{letter-spacing:0;color:var(--ink-soft);font-size:.5em;font-weight:400}.vertical .tcy{text-combine-upright:all;letter-spacing:0}.vertical .upright{text-orientation:upright}.hero{text-align:center;margin:24px 0 28px}.hero-cards{justify-content:center;align-items:center;gap:10px;margin-bottom:20px;display:flex}.hero-card{justify-content:center;align-items:center;width:76px;height:108px;font-size:1.05rem;font-weight:600;display:flex}.hero-card.reading{transform:rotate(-6deg)}.hero-card.taking{transform:rotate(5deg)translateY(4px)}.hero-plus{color:var(--ink-soft);font-size:1.2rem}.hero-title{letter-spacing:.12em;margin:0;font-size:2.1rem}.hero-sub{font-family:var(--serif);color:var(--shu);border-top:1px solid var(--shu);border-bottom:1px solid var(--shu);letter-spacing:.3em;margin:6px 0 12px;padding:0 12px;font-size:.85rem;display:inline-block}.lead{color:var(--ink-soft);max-width:28em;margin:0 auto;font-size:.95rem}.rules ol{margin:0;padding-left:1.4rem;font-size:.95rem}.rules li+li{margin-top:6px}.legal{font-size:.95rem;line-height:1.8}.legal h1{margin-bottom:.25rem}.legal h2{margin:1.5rem 0 .5rem}.legal p,.legal ol,.legal ul{margin:0 0 .5rem}.legal ol,.legal ul{padding-left:1.6em}.legal li+li{margin-top:4px}.room-code{font-family:var(--serif);letter-spacing:.25em;text-align:center;margin:0 0 14px;padding-left:.25em;font-size:2.2rem;font-weight:600}.players,.names,.hand,.entries,.sets{margin:0;padding:0;list-style:none}.names li{border:1px solid var(--line);border-radius:999px;margin:0 6px 6px 0;padding:2px 10px;display:inline-block}.players>li{border-bottom:1px solid var(--line);padding:10px 0}.players>li:first-child{padding-top:0}.players>li:last-child{border-bottom:none;padding-bottom:0}.player-name{flex-wrap:wrap;align-items:center;font-weight:600;display:inline-flex}.player-row{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.player-row .player-name{flex:auto}.player-row>.tag{margin-left:0}.score{gap:3px;display:inline-flex}.pip{border:1.5px solid var(--line);border-radius:2px;width:10px;height:14px}.pip.on{border-color:var(--shu);background:var(--shu)}.sets{gap:4px;margin:8px 0 0 16px;display:grid}.sets li{font-family:var(--serif);border-left:3px solid var(--gold);padding-left:12px;font-size:.9rem}.game-status{justify-content:space-between;align-items:baseline;margin:4px 0 8px;display:flex}.round{font-family:var(--serif);letter-spacing:.08em;font-size:1.1rem;font-weight:600}.decks{color:var(--ink-soft);font-size:.8rem}.countdown{align-items:center;gap:10px;margin-bottom:16px;display:flex}.countdown-track{background:var(--line);border-radius:999px;flex:1;height:8px;position:relative;overflow:hidden}.countdown-bar{background:var(--ai);transform-origin:0;transition:transform .25s linear;position:absolute;inset:0}.countdown-text{text-align:right;font-variant-numeric:tabular-nums;flex:none;min-width:5.5em;font-size:.85rem;font-weight:700}.countdown.urgent .countdown-text{color:var(--shu)}.countdown.urgent .countdown-bar{background:var(--shu);animation:1s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.55}}.reading-card{text-align:center;margin-bottom:18px;padding:26px 18px 16px}.card-label{background:var(--shu);color:var(--on-shu);font-family:var(--sans);letter-spacing:.2em;border-radius:999px;padding:0 10px;font-size:.7rem;position:absolute;top:-1px;left:50%;transform:translate(-50%,-50%)}.reading-card .upper{letter-spacing:.06em;overflow-wrap:anywhere;margin:0;font-size:clamp(1.6rem,7vw,2.2rem);font-weight:600;line-height:1.7}.reading-card .original{color:var(--ink-soft);overflow-wrap:anywhere;margin:10px 0 0;font-size:.78rem}.kana{font-size:.7rem}.joined-title{font-family:var(--serif);overflow-wrap:anywhere;line-height:2}.joined-title .lower-part{color:var(--ai)}.preview{text-align:center;border-bottom:1px dashed var(--line);min-height:2.6em;margin:0 0 14px;padding:10px 8px;font-size:1.25rem;font-weight:600;line-height:1.5}.preview .muted{font-family:var(--sans);font-size:.85rem;font-weight:400}.dev-filter{align-items:center;gap:8px;margin-bottom:16px;font-size:.9rem;display:flex}.dev-filter input{width:auto}.dev-list{gap:16px;margin:0;padding:0;list-style:none;display:grid}.dev-card{grid-template-columns:minmax(0,1fr) 96px;align-items:start;gap:10px;display:grid}.hand{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 10px;display:grid}.hand-card{justify-content:center;align-items:flex-start;width:100%;height:168px;padding:14px 6px;font-size:1rem;font-weight:600;transition:transform .15s,box-shadow .15s;display:flex;overflow:hidden}.hand-card .vertical{max-height:100%}.hand-card.selected{--frame:var(--shu);box-shadow:inset 0 0 0 3px var(--card), inset 0 0 0 4px color-mix(in srgb, var(--frame) 55%, transparent), var(--shadow-lift);transform:translateY(-6px)}.stamp{border:2px solid var(--shu);width:24px;height:24px;color:var(--shu);text-align:center;background:var(--card);border-radius:50%;font-size:.75rem;line-height:20px;position:absolute;bottom:4px;right:4px;transform:rotate(-12deg)}.entries{gap:10px;display:grid}.entry{text-align:left;border:1px solid var(--line);border-left:4px solid var(--ai);background:var(--card);border-radius:10px;grid-template-columns:auto 1fr;align-items:center;gap:4px 12px;width:100%;padding:12px 14px;display:grid}button.entry:not(:disabled):hover{border-color:var(--shu);border-left-color:var(--shu)}.entry-number{font-family:var(--serif);color:var(--ink-soft);grid-row:span 2;font-size:1.1rem}.entry-title{font-size:1.1rem;font-weight:600;line-height:1.45}.entry .tag{justify-self:start;margin-left:0}.entry.selected{background:var(--shu-soft);border-color:var(--shu);border-left-color:var(--shu)}.entry.mine{opacity:.65;border-left-color:var(--line)}.entry .votes{text-align:center;min-width:2.2em;font-family:var(--serif);grid-row:span 2;font-size:1.6rem;font-weight:600;line-height:1}.entry .votes small{margin-left:1px;font-size:.7rem}.entry .meta{font-size:.8rem}.entry.winner{background:var(--gold-soft);border-color:var(--gold);border-left-color:var(--gold)}.entry.winner .votes{color:var(--gold)}.result-heading{text-align:center;font-size:1.2rem}.flip{animation:.5s ease-out both flip-in}@keyframes flip-in{0%{opacity:0;transform:perspective(600px)rotateX(80deg)}to{opacity:1;transform:none}}.finished{text-align:center;border:2px solid var(--gold)}.finished-label{letter-spacing:.3em;color:var(--gold);margin:0;font-size:.8rem}.winner-text{font-family:var(--serif);margin:4px 0 0;font-size:1.5rem;font-weight:600}.finished.won{background:linear-gradient(var(--gold-soft), var(--surface))}@media (prefers-reduced-motion:reduce){.flip,.countdown.urgent .countdown-bar{animation:none}.hand-card,.countdown-bar{transition:none}}@media (width>=560px){.hand{grid-template-columns:repeat(6,minmax(0,1fr))}.hand-card{height:190px}}
