:root{color-scheme:light;--hanji: #ead8b0;--paper: #f3e6c8;--ink: #2b1a12;--muted: #6b5138;--cinnabar: #9c1c1c;--cinnabar-deep: #6f1414;--gold: #c4a35a;--lapis: #1d4a78;--malachite: #2a5f48;--line: rgba(43, 26, 18, .22);--shadow: 0 16px 36px rgba(43, 26, 18, .16);--field: #fbf3e1;--tile: #fbf6ea;--tile-picked: #fff6d9;--strike: #8a6a1f;--veil: rgba(43, 26, 18, .45);--grain: #5c3d24;--grid: rgba(42, 34, 22, .7);--dancheong-shadow: #d8c49a;--seal-wash: rgba(158, 42, 43, .05);--seal-ring: rgba(158, 42, 43, .35);--panel-edge: rgba(156, 28, 28, .28);--glow: rgba(156, 28, 28, .16);--glow-gold: rgba(196, 163, 90, .18);--sky-top: #e4c894;--sky-bottom: #dcc49a}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0;background:var(--hanji);color:var(--ink)}body{font-family:"Noto Serif KR",Batang,serif;color:var(--ink);background:radial-gradient(ellipse at 50% -8%,var(--glow),transparent 48%),radial-gradient(ellipse at 80% 120%,var(--glow-gold),transparent 42%),linear-gradient(180deg,var(--sky-top) 0%,var(--hanji) 38%,var(--sky-bottom) 100%)}button,input,select{font:inherit}button,input{-moz-appearance:none;appearance:none;-webkit-appearance:none}.app-shell{position:relative;isolation:isolate;max-width:1120px;margin:0 auto;padding:22px 20px 72px}.night-ground,.night-fill{display:none}.hanji,.lattice,.dancheong{pointer-events:none}.hanji{position:fixed;top:0;right:0;bottom:0;left:0;opacity:.22;background-image:radial-gradient(var(--grain) .6px,transparent .6px);background-size:3px 3px}.lattice{position:fixed;top:0;right:0;bottom:0;left:0;opacity:.07;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:42px 42px}.dancheong{position:fixed;top:0;left:0;right:0;height:12px;z-index:3;background:repeating-linear-gradient(90deg,var(--cinnabar) 0 26px,var(--gold) 26px 38px,var(--lapis) 38px 64px,var(--malachite) 64px 76px);box-shadow:0 2px 0 var(--dancheong-shadow)}.topbar{display:flex;align-items:center;flex-wrap:wrap;gap:16px;margin:18px 0 28px}.brand{display:flex;align-items:center;gap:14px;color:inherit;text-decoration:none}.seal{width:52px;height:52px;display:grid;place-items:center;padding:0;border:3px solid var(--cinnabar);color:var(--cinnabar);font-family:Song Myung,serif;font-size:28px;font-weight:400;line-height:1;letter-spacing:0;transform:rotate(-7deg);background:var(--seal-wash);box-shadow:inset 0 0 0 1px var(--seal-ring);cursor:default}.seal.on{background:#9e2a2b24}.brand h1{margin:0;font-family:Song Myung,"Noto Serif KR",serif;font-size:36px;font-weight:400;letter-spacing:0;line-height:1.55;overflow:visible;padding:.08em 0;white-space:nowrap}.mark{margin:0;color:var(--cinnabar);letter-spacing:.18em;font-size:12px;font-weight:700;line-height:1.4}.eyebrow{margin:0;color:var(--cinnabar);letter-spacing:.04em;font-size:12px;font-weight:700;line-height:1.6}.top-actions{margin-left:auto;display:flex;align-items:center;gap:12px}.account-chip{display:flex;align-items:center;gap:8px;font-size:14px}.account-chip img{width:28px;height:28px;border:1px solid var(--ink);object-fit:cover}.auth-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin:18px 0 0}.discord-login{display:inline-block;padding:8px 14px;border:1px solid var(--ink);color:var(--ink);text-decoration:none;background:var(--paper)}.discord-login:hover{background:var(--tile-picked)}.text-link{color:var(--ink);text-decoration:underline;text-underline-offset:3px}.login-failed .hero h2{max-width:18em}.account-card{margin-top:16px}.account-card p{margin:0 0 8px}.guild-list{display:flex;flex-wrap:wrap;gap:8px 12px;margin:0 0 12px;padding:0;list-style:none;max-height:160px;overflow:auto}.guild-list li{display:flex;align-items:center;gap:6px;font-size:14px}.guild-list img,.guild-dot{width:20px;height:20px;border:1px solid var(--ink);flex:none}.guild-dot{background:var(--paper)}a.leave{display:inline-flex;align-items:center;text-decoration:none;font:inherit}.leave{width:auto;margin:0;padding:5px 12px;background:transparent;color:var(--ink);border:1px solid var(--ink);font-size:13px;letter-spacing:.04em;white-space:nowrap}.panel{background:var(--paper);border:2px solid var(--ink);outline:1px solid var(--panel-edge);outline-offset:5px;padding:22px;box-shadow:var(--shadow);color:var(--ink)}.panel h3,.panel h2{margin:0 0 16px;font-family:Song Myung,"Noto Serif KR",serif;font-weight:400;letter-spacing:0;line-height:1.55;overflow:visible;padding:.08em 0}.panel-head,.row{display:flex;gap:12px;justify-content:space-between;align-items:center}.panel-head h3{margin:0;padding:2px 0;flex:0 0 auto}.row label{flex:1}.lobby-settings{align-items:flex-end;flex-wrap:wrap;gap:16px;margin-bottom:14px}.lobby-settings label{margin-bottom:0}.lobby-settings .check{flex:0 0 auto;margin:0 0 12px;white-space:nowrap}label{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;color:var(--muted);font-size:13px}input,select{width:100%;border:1px solid var(--ink);background:var(--field);color:var(--ink);border-radius:0;padding:12px 14px}.name-lock{display:flex;align-items:center;gap:10px;min-height:46px;padding:8px 14px;border:1px solid var(--ink);background:var(--field);color:var(--ink)}.name-lock img{width:28px;height:28px;border:1px solid var(--ink);object-fit:cover;flex:none}.name-lock b{font-size:16px;font-weight:700;line-height:1.3}input[type=checkbox]{-moz-appearance:auto;appearance:auto;-webkit-appearance:checkbox;width:18px;height:18px;margin:0;padding:0;accent-color:var(--cinnabar)}label.check{flex-direction:row;align-items:center;gap:10px;margin:0 0 18px;color:var(--ink);font-size:14px;line-height:1.5}button{width:100%;border:1px solid var(--cinnabar-deep);background:var(--cinnabar-deep);color:var(--hanji);font-weight:700;border-radius:0;padding:13px 16px;cursor:pointer;letter-spacing:.04em}button+button,button.ghost{margin-top:10px}button:disabled{opacity:.5;cursor:not-allowed}button.ghost,button.leave{background:transparent;color:var(--ink);border:1px solid var(--ink)}.home,.lobby,.game,.result{display:grid;gap:22px}.home{grid-template-columns:1.1fr .9fr}.gate{display:grid;gap:28px;max-width:760px}.banner-shelf{display:grid;gap:18px}.game-banner{position:relative;display:block;overflow:hidden;min-height:168px;padding:28px 32px;color:inherit;text-decoration:none;background:var(--paper);border:2px solid var(--ink);outline:1px solid var(--panel-edge);outline-offset:5px}.game-banner:hover{background:var(--tile-picked)}.game-banner-body h3{margin:8px 0 10px;font-family:Song Myung,"Noto Serif KR",serif;font-size:40px;font-weight:400}.game-banner-body p{margin:0 0 16px;color:var(--muted);line-height:1.7}.banner-go{display:inline-block;padding:6px 12px;border:1px solid var(--cinnabar-deep);background:var(--cinnabar-deep);color:var(--hanji);font-size:14px;font-weight:700}.hero h2{font-family:Song Myung,"Noto Serif KR",serif;font-size:32px;font-weight:400;line-height:1.6;letter-spacing:0;margin:12px 0 18px;overflow:visible;padding:.08em 0}.rules{margin:0;padding-left:18px;color:var(--muted);line-height:1.85}.home-forms{display:grid;gap:22px}.code-input,.code-big{font-family:"Noto Serif KR",Batang,serif;letter-spacing:.2em;line-height:1.4;text-align:center}.code-card{text-align:center}.code-big{font-size:64px;background:transparent;color:var(--ink);border:0;padding:0;margin-top:0;width:100%;cursor:pointer;user-select:all;-webkit-user-select:all}.code-card .ghost{display:block;width:auto;min-width:160px;margin:12px auto 0}.code-card span{display:block;margin-top:10px;line-height:1.6}.lineup,.scores,.ranking,.history{list-style:none;margin:0 0 18px;padding:0}.lineup li,.scores li,.ranking li,.history li{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px dashed var(--line)}.lineup li{border-left:4px solid var(--c, var(--cinnabar));padding-left:12px}.lineup em,.dim{color:var(--muted);font-style:normal;font-size:12px}.wait{color:var(--muted)}.game{grid-template-columns:220px 1fr 280px;align-items:start}.scores li{justify-content:space-between;border-left:4px solid var(--c, var(--cinnabar));padding-left:10px}.scores li.at-bat{animation:at-bat-pulse 1.6s ease-in-out infinite}.scores li.at-bat b:after{content:" 차례";color:var(--cinnabar);font-size:11px}.turn-copy{margin:0;color:var(--muted);line-height:1.6}.turn-copy.your-turn{color:var(--cinnabar);animation:turn-ink 1.4s ease-in-out infinite}.diamond{display:grid;gap:18px;width:100%;justify-items:center}.diamond>button,.diamond>.definition{width:min(520px,100%)}.slots{display:flex;gap:12px}.last-record{display:grid;gap:10px;justify-items:center;width:min(520px,100%);padding:12px 0 4px}.last-slots{display:flex;gap:12px}.last-record.appear{animation:none}.last-base{width:72px;height:72px;display:grid;place-items:center;border:1px solid var(--ink);background:var(--cinnabar-deep);color:var(--hanji);font-size:28px;font-weight:700;animation:record-stamp .24s cubic-bezier(.2,.8,.2,1) both}.last-counts{display:flex;gap:14px;margin:0;min-height:1.5em;font-weight:700}.last-counts .count{animation:count-tap .22s cubic-bezier(.2,.8,.2,1) both}.last-counts .count.wait{animation:none;visibility:hidden}.base,.tile{width:72px;height:72px;border-radius:0;background:var(--paper);background-color:var(--paper);color:var(--ink);border:1px solid var(--ink);font-size:28px;font-weight:700;margin-top:0}.base.filled{background:var(--cinnabar-deep);color:var(--hanji);border-color:var(--cinnabar-deep);animation:stamp-in .28s cubic-bezier(.2,.8,.2,1)}.base.filled.reveal{animation:stamp-in .3s cubic-bezier(.2,.8,.2,1),ink-glow .7s ease}.base:not(.filled){background:transparent;color:var(--muted)}.palette{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;width:min(520px,100%)}.tile{width:auto;height:52px;font-size:20px;background:var(--tile);color:var(--ink);border:1px solid var(--ink);transition:transform .14s ease,opacity .22s ease,background-color .18s ease,outline-color .18s ease}.tile:not(:disabled):hover{transform:translateY(-2px)}.tile:not(:disabled):active{transform:scale(.94)}.tile.picked{outline:3px solid var(--gold);background:var(--tile-picked);animation:pick-flash .22s ease}.tile.erase{grid-column:7;font-size:14px;font-weight:600;white-space:nowrap;padding:0 2px}.tile.used{opacity:.35}.tile.dead{opacity:.28;text-decoration:line-through;text-decoration-thickness:2px;color:var(--muted);cursor:not-allowed;animation:fade-dead .4s ease}.definition.rise{animation:rise-in .4s ease}.definition small{display:block;margin-top:10px;color:var(--muted)}.definition form{display:grid;gap:10px;margin-top:16px}.answer{font-size:22px;font-family:"Noto Serif KR",Batang,serif;line-height:1.5}.answer p{margin:0}.answer.solved{animation:rise-in .28s ease}.answer .solver{margin-bottom:6px;font-size:16px;color:var(--cinnabar);animation:count-tap .28s cubic-bezier(.2,.8,.2,1) both}.answer .caret{display:inline-block;width:2px;height:1em;margin-left:2px;background:var(--cinnabar);vertical-align:-2px;animation:caret-blink .7s step-end infinite}@keyframes caret-blink{50%{opacity:0}}.miss{color:var(--cinnabar)}.miss.shake{animation:shake-x .38s ease}.history li.fresh{animation:rise-in .32s ease}.history li{display:grid;grid-template-columns:72px 1fr;grid-template-rows:auto auto;gap:4px 10px}.who{font-weight:700;color:var(--c, var(--cinnabar))}.guess{font-size:18px;letter-spacing:.08em;line-height:1.4}.count{font-size:12px}.count.strike{color:var(--strike)}.count.ball{color:var(--lapis)}.count.out{color:var(--cinnabar)}.ranking li.winner{background:#c4a35a38;padding:10px}.ranking span:first-child{width:24px}.ranking strong{margin-left:auto}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);background:var(--ink);color:var(--hanji);padding:12px 18px;font-weight:700;border:1px solid var(--gold)}@media(max-width:900px){.home,.game{grid-template-columns:1fr}.brand h1{font-size:28px}.game-banner{padding:22px 20px}.game-banner-body h3{font-size:32px}}@media(prefers-color-scheme:dark){:root{color-scheme:only dark;--hanji: #14110e;--paper: #14110e;--ink: #d8c9a6;--muted: #9a8864;--cinnabar: #c45c4a;--cinnabar-deep: #6f1414;--gold: #c4a35a;--lapis: #1d4a78;--malachite: #2a5f48;--line: #7a6844;--shadow: none;--field: #14110e;--tile: #14110e;--tile-picked: #3a2e18;--strike: #c4a35a;--veil: rgba(20, 17, 14, .78);--grain: #c4a35a;--grid: #7a6844;--dancheong-shadow: #14110e;--seal-wash: #14110e;--seal-ring: #7a6844;--panel-edge: #8a3a32;--glow: transparent;--glow-gold: transparent;--sky-top: #14110e;--sky-bottom: #14110e;--gold-fill: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Crect width='8' height='8' fill='%23c4a35a'/%3E%3C/svg%3E");--black-fill: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8'%3E%3Crect width='8' height='8' fill='%2314110e'/%3E%3C/svg%3E");--dancheong-fill: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='76' height='12'%3E%3Crect width='26' height='12' fill='%239c1c1c'/%3E%3Crect x='26' width='12' height='12' fill='%23c4a35a'/%3E%3Crect x='38' width='26' height='12' fill='%231d4a78'/%3E%3Crect x='64' width='12' height='12' fill='%232a5f48'/%3E%3C/svg%3E")}*,*:before,*:after{color-scheme:only dark;forced-color-adjust:none}html,body,#root,.app-shell{background:#14110e!important;background-image:none!important;color:#d8c9a6}body{background:#14110e!important}.night-ground{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;width:100%;height:100%;object-fit:cover;pointer-events:none}.topbar,.home,.lobby,.game,.result,.admin{position:relative;z-index:1}.hanji,.lattice{display:none}.panel,.confirm-card,input,select,.tile,.base{background-color:#14110e;background-image:url(/night-black.png);background-size:8px 8px;background-repeat:repeat;color:#d8c9a6;border:1px solid #7a6844}input,select{border-width:1px}input::placeholder,select::placeholder{color:#8f7e5c;opacity:1}.create-box{position:relative;isolation:isolate;background-color:#14110e;background-image:url(/night-black.png);background-size:8px 8px;background-repeat:repeat;border:1px solid #7a6844;outline:1px solid #8a3a32;outline-offset:5px}.create-box>.night-fill{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;z-index:0;pointer-events:none}.create-box>*:not(.night-fill){position:relative;z-index:1}.create-box input,.create-box .name-lock{background-color:#14110e;background-image:url(/night-black.png);background-size:8px 8px;background-repeat:repeat;border:1px solid #7a6844;color:#d8c9a6;-webkit-appearance:none;-moz-appearance:none;appearance:none}.create-box button{position:relative;isolation:isolate;overflow:hidden}.create-box button .night-fill{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;z-index:-1;pointer-events:none}.create-box button[type=submit]{background-color:#6f1414;background-image:url(/night-cinnabar.png);background-size:8px 8px;background-repeat:repeat;color:#e8dcc0;border:1px solid #8a3a32}.panel{outline-color:#8a3a32}button{background-color:#6f1414;background-image:url(/night-cinnabar.png);background-size:8px 8px;color:#e8dcc0;border-color:#8a3a32}button.ghost,button.leave,a.leave,.admin-host,.dash-card{background-color:#14110e;background-image:url(/night-black.png);background-size:8px 8px;color:#d8c9a6;border-color:#7a6844}.create-box button.ghost{background-color:#14110e;background-image:url(/night-black.png);color:#d8c9a6;border:1px solid #7a6844}.seal{background:#14110e;color:#d8c9a6;border-color:#7a6844;box-shadow:inset 0 0 0 1px #8a3a32}.mark,.eyebrow,.watch-flag,.miss,.count.out,.scores li.at-bat b:after{color:#c45c4a}.dancheong{background-color:#14110e;background-image:var(--dancheong-fill);background-size:76px 12px;background-repeat:repeat-x;box-shadow:none;z-index:3}.base.filled,.last-base,.tile.picked{background-color:#3a2e18;background-image:none;color:#e8dcc0;border-color:#7a6844}.toast{background-color:#6f1414;background-image:url(/night-cinnabar.png);color:#e8dcc0;border-color:#8a3a32}.ranking li.winner{background:#14110e;outline:1px solid #7a6844}}.admin-nav{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px}.admin-nav button{width:auto;margin:0;padding:8px 14px}.admin-nav button.on{background:var(--cinnabar-deep);color:var(--hanji);border-color:var(--cinnabar-deep)}.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-bottom:18px}.dash-card{width:100%;margin:0;padding:18px 16px;text-align:left;background:var(--paper);color:var(--ink);border:1px solid var(--ink)}.dash-card b{display:block;font-family:Song Myung,"Noto Serif KR",serif;font-size:32px;font-weight:400;line-height:1.2}.dash-card span{display:block;margin-top:6px;color:var(--muted);font-size:13px;letter-spacing:0;font-weight:400}.dash-card.warn b{color:var(--cinnabar)}.black-form{margin-bottom:22px}.flag-mark{margin-left:8px;color:var(--cinnabar);font-family:"Noto Serif KR",serif;font-size:13px;font-style:normal}.guild-inline{width:22px;height:22px;margin-right:8px;border:1px solid var(--ink);vertical-align:-4px}.admin-users{margin-bottom:36px}.admin-users .guild-list{max-height:280px}.admin .panel-head{margin-bottom:18px}.admin .panel-head h2{margin:0;font-family:Song Myung,"Noto Serif KR",serif;font-size:28px;font-weight:400;line-height:1.55;letter-spacing:0}.admin .panel-head button{width:auto;margin:0}.admin-list{display:grid;gap:18px}.admin-word{margin:0 0 10px}.lineup li strong{margin-left:auto}.watch-flag{margin:0 0 10px;color:var(--cinnabar);font-weight:700;letter-spacing:.08em}.confirm-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:24px;background:var(--veil)}.confirm-card{width:min(420px,100%)}.admin-host{width:100%;display:flex;justify-content:space-between;align-items:center;margin:0;padding:8px 0;background:transparent;color:var(--ink);border:0;font-family:Song Myung,"Noto Serif KR",serif;font-size:22px;font-weight:400;line-height:1.5}.admin-host .admin-code{letter-spacing:.12em}.admin-host span{font-family:"Noto Serif KR",serif;font-size:13px;color:var(--muted);text-align:right;max-width:55%}.admin-detail{margin-top:12px;padding-top:12px;border-top:1px dashed var(--line)}.admin-rounds{display:grid;gap:6px;margin-top:16px}.admin-round{padding:4px 0;border-top:1px dashed var(--line)}.admin-round-head{width:100%;display:flex;justify-content:space-between;align-items:center;margin:0;padding:8px 0;background:transparent;color:var(--ink);border:0;cursor:pointer;font-family:Song Myung,"Noto Serif KR",serif;font-size:18px;font-weight:400;line-height:1.5}.admin-round-head span{font-family:"Noto Serif KR",serif;font-size:13px;color:var(--muted)}.admin-log-panel{margin-top:24px}.admin-log-title{margin:18px 0 8px;font-family:Song Myung,"Noto Serif KR",serif;font-size:20px;font-weight:400}.admin-log-panel .admin-log-title{margin-top:0}.admin-log{max-height:420px;overflow:auto;margin:12px 0 0;padding:0;list-style:none;display:grid;gap:8px}.admin-log li{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline;padding:6px 0;border-bottom:1px dashed var(--line);font-size:14px;line-height:1.5}.admin-log time,.admin-log em{color:var(--muted);font-style:normal;font-size:12px;white-space:nowrap}.admin-log em{font-family:ui-monospace,"Noto Serif KR",serif;letter-spacing:.04em}@media(prefers-color-scheme:dark){.admin-log li{border-bottom-color:#3a3228}}@keyframes stamp-in{0%{transform:scale(.92) rotate(-2deg)}70%{transform:scale(1.04) rotate(.5deg)}to{transform:scale(1) rotate(0)}}@keyframes rise-in{0%{transform:translateY(6px)}to{transform:none}}@keyframes count-punch{0%{transform:scale(.94)}70%{transform:scale(1.06)}to{transform:scale(1)}}@keyframes record-stamp{0%{transform:scale(.68) rotate(-7deg);opacity:0}62%{transform:scale(1.1) rotate(1deg);opacity:1}to{transform:scale(1) rotate(0);opacity:1}}@keyframes count-tap{0%{transform:scale(.55);opacity:0}68%{transform:scale(1.12);opacity:1}to{transform:scale(1);opacity:1}}@keyframes pick-flash{0%{transform:scale(.92)}to{transform:scale(1)}}@keyframes ink-glow{0%{box-shadow:0 0 #9c1c1c66}to{box-shadow:0 0 0 14px transparent}}@keyframes shake-x{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}@keyframes fade-dead{0%{opacity:1;text-decoration-color:transparent}to{opacity:.28}}@keyframes at-bat-pulse{0%,to{background:transparent}50%{background:#9c1c1c1a}}@keyframes turn-ink{0%,to{opacity:1}50%{opacity:.72}}@media(prefers-reduced-motion:reduce){.last-record.appear,.last-base,.last-counts .count,.last-counts .count.wait,.base.filled,.base.filled.reveal,.tile.picked,.tile.dead,.definition.rise,.miss.shake,.history li.fresh,.scores li.at-bat,.turn-copy.your-turn,.answer.solved,.answer .solver,.answer .caret{animation:none}.tile:not(:disabled):hover,.tile:not(:disabled):active{transform:none}}
