:root{--paper:#f3eee3;--paper-2:#e9e2d2;--panel:#fbf8f1;--ink:#23201b;--ink-2:#5d564b;--line:#d6ccb8;--accent:#9c2f22;--accent-ink:#fff8f0;--good:#2f6b4f;--bad:#a3392b;--story:#6a4c8c;--bar:#b9ac92;--bar-fill:#3d5a73;--focus:#c8771e;--f-정파:#3d5a73;--f-사파:#6b4a3a;--f-신교:#8e1f2a;--f-민초:#6b6b4f;--f-고아:#6b5f73;--f-관:#4f5f6b;--f-새외:#3f6b66;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#16140f;--paper-2:#1e1b15;--panel:#211e18;--ink:#ece4d4;--ink-2:#a89f8e;--line:#3a352b;--accent:#d0533f;--accent-ink:#1b0f0b;--good:#6fb48f;--bad:#e07a68;--story:#b49ad6;--bar:#3a352b;--bar-fill:#8fb0cc;--focus:#f0a04b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--paper:#16140f;--paper-2:#1e1b15;--panel:#211e18;--ink:#ece4d4;--ink-2:#a89f8e;--line:#3a352b;--accent:#d0533f;--accent-ink:#1b0f0b;--good:#6fb48f;--bad:#e07a68;--story:#b49ad6;--bar:#3a352b;--bar-fill:#8fb0cc;--focus:#f0a04b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--paper);color:var(--ink);-webkit-text-size-adjust:100%;font-family:Pretendard,Apple SD Gothic Neo,Malgun Gothic,system-ui,sans-serif;font-size:1rem;line-height:1.6}h1,h2,h3{margin:0 0 .5em;font-family:Nanum Myeongjo,Batang,serif;font-weight:700;line-height:1.3}h2{font-size:1.15rem}h3{font-size:1rem}.dim{color:var(--ink-2)}.small{font-size:.875rem}.warn,.error{color:var(--bad)}button{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:6px;min-height:44px;padding:.5em .9em}button:hover:not(:disabled){border-color:var(--ink-2)}button:disabled{opacity:.45;cursor:default}button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:700}button.big{padding:.7em 2.2em;font-size:1.2rem}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}input[type=text],input:not([type]){font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:6px;min-height:44px;padding:.5em .7em}.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px}.chip,.tag{border:1px solid var(--line);white-space:nowrap;border-radius:999px;margin-left:.3em;padding:0 .6em;font-size:.8rem;display:inline-block}.chip{margin:0 .35em .35em 0}.chip.bad,.tag.bad{color:var(--bad);border-color:var(--bad)}.title{text-align:center;max-width:520px;margin:0 auto;padding:12dvh 16px 48px}.title h1{letter-spacing:.12em;font-size:2.6rem}.tagline{color:var(--ink-2);margin-bottom:2rem}.title-actions{flex-direction:column;gap:10px;display:flex}.title-actions button{flex-direction:column;align-items:center;gap:2px;padding:.8em;display:flex}.title-actions small{color:inherit;opacity:.75;font-size:.8rem}.seed-start{text-align:left;color:var(--ink-2);margin-top:1.5rem}.seed-start summary{cursor:pointer;align-items:center;min-height:44px;display:flex}.seed-start form{gap:8px;display:flex}.seed-start input{flex:1;min-width:0}.dev-only{border:1px dashed var(--line);padding:4px 10px}.dev-only select{width:100%;min-height:44px}.fineprint{color:var(--ink-2);text-align:center;margin-top:2rem;font-size:.8rem}.play{max-width:1100px;margin:0 auto;padding:0 16px 24px}.topbar{z-index:5;background:var(--paper);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;margin-bottom:16px;padding:10px 0;display:flex;position:sticky;top:0}.when strong{font-family:Nanum Myeongjo,serif;font-size:1.35rem}.controls,.menu{flex-wrap:wrap;gap:6px;display:flex}.bottom-menu{display:none}.controls button,.menu button{padding:.35em .7em;font-size:.9rem}.columns{grid-template-columns:minmax(0,340px) minmax(0,1fr);align-items:start;gap:16px;display:grid}.columns>*,.side>*,.main>*,.panel,.dialog,.end>*,.birth>*{min-width:0;max-width:100%}img,canvas,svg{max-width:100%}input,select,textarea{min-width:0;max-width:100%}.chips{flex-wrap:wrap;gap:6px;display:flex}.log-empty{color:var(--ink-2);margin:4px 0 0;font-size:.9rem}.side{flex-direction:column;gap:16px;display:flex}.origin{flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin-bottom:8px;display:flex}.faction{color:var(--paper);background:var(--ink);border-radius:4px;padding:0 .5em;font-weight:700}.f-정파{background:var(--f-정파)}.f-사파{background:var(--f-사파)}.f-신교{background:var(--f-신교)}.f-민초{background:var(--f-민초)}.f-고아{background:var(--f-고아)}.f-관{background:var(--f-관)}.f-새외{background:var(--f-새외)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .faction{color:#fff}}:root[data-theme=dark] .faction{color:#fff}.realm{align-items:baseline;gap:10px;margin-bottom:10px;display:flex}.realm .label{color:var(--ink-2);font-size:.9rem}.realm strong{font-family:Nanum Myeongjo,serif;font-size:1.2rem}.stats{gap:4px;margin:0 0 10px;display:grid}.stat{grid-template-columns:2.6em 1fr;align-items:center;gap:8px;display:grid}.stat dt{color:var(--ink-2);font-size:.9rem}.stat dd{align-items:center;gap:6px;margin:0;display:flex}.bar{background:var(--bar);border-radius:4px;flex:1;height:8px;overflow:hidden}.bar>span{background:var(--bar-fill);height:100%;display:block}.num{text-align:right;font-variant-numeric:tabular-nums;width:2em}.trained{color:var(--good);width:2.4em;font-size:.75rem}.rivals h3{margin-top:10px}.rivals ul,.rivals-end{margin:0;padding:0;list-style:none}.rivals li,.rivals-end li{padding:2px 0}.gone{opacity:.55;text-decoration:line-through;text-decoration-thickness:1px}.nemesis{color:var(--bad);margin:8px 0 0}.alloc h3{justify-content:space-between;display:flex}.alloc h3 .dim{font-family:inherit;font-size:.8rem;font-weight:400}.alloc-row{grid-template-rows:auto auto;grid-template-columns:2.6em 1fr 3em;align-items:center;gap:0 8px;margin-bottom:6px;display:grid}.alloc-row input{width:100%;accent-color:var(--accent);min-height:44px}.alloc-row .pct{text-align:right;font-variant-numeric:tabular-nums}.alloc-row .hint{grid-column:2/4;margin-top:-4px;font-size:.78rem}.log{min-height:60dvh}.log.short{min-height:0}.log ol{margin:0;padding:0;list-style:none}.log li{border-bottom:1px dashed var(--line);grid-template-columns:6.2em 1fr;gap:8px;padding:6px 0;display:grid}.log li:last-child{border-bottom:0}.at{color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.9rem}.tone-good span:last-child{color:var(--good)}.tone-bad span:last-child{color:var(--bad)}.tone-story span:last-child{color:var(--ink)}.tone-plain span:last-child{color:var(--ink-2)}.overlay{z-index:20;background:#14100a8c;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.dialog{background:var(--panel);border:1px solid var(--line);border-radius:12px;width:min(560px,100%);max-height:calc(100dvh - 32px);padding:22px;overflow-y:auto;box-shadow:0 10px 40px #0000004d}.ev-text{white-space:pre-line}.choices{flex-direction:column;gap:8px;margin-top:16px;display:flex}.choices button{text-align:left;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;padding:.7em 1em;display:flex}.choice-label{font-weight:700}.odds{color:var(--ink-2);flex-wrap:wrap;gap:2px 10px;font-size:.85rem;display:flex}.odds em{color:var(--accent);font-style:normal}.bracket,.bouts{gap:4px;margin:12px 0;padding-left:0;list-style:none;display:grid}.bouts li{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.rounds{letter-spacing:.2em}.r-win{color:var(--good)}.r-lose{color:var(--bad)}.bouts .win strong{color:var(--good)}.bouts .lose strong{color:var(--bad)}.deltas{min-height:1.5em}.end{flex-direction:column;gap:16px;max-width:640px;margin:0 auto;padding:32px 16px 48px;display:flex}.end-head{text-align:center;padding:12px 0}.end-head h1{font-size:2rem}.cause{font-size:1.05rem}.facts{gap:2px;margin:0 0 8px;padding:0;list-style:none;display:grid}.facts .dim{min-width:6.5em;display:inline-block}.moments{gap:4px;margin:8px 0 0;padding-left:0;font-size:.95rem;list-style:none;display:grid}.reveal{border-color:var(--story)}.reveal h2{color:var(--story)}.yesno{gap:8px;margin-bottom:8px;display:flex}.yesno button{flex:1}.form-link{color:var(--accent);font-weight:700}.end-actions{flex-direction:column;align-items:center;gap:10px;margin-top:8px;display:flex}@media (width<=760px){.columns{grid-template-columns:1fr}.main{order:-1}.log{min-height:40dvh;max-height:55dvh;overflow-y:auto}.log.short{min-height:0}.topbar{gap:4px 6px;padding:6px 0}.when strong{font-size:1.1rem}.controls{grid-template-columns:repeat(auto-fit,minmax(4.6em,1fr));width:100%;display:grid}.controls button{white-space:nowrap;min-width:0;min-height:44px;padding:.35em .2em;font-size:.85rem}.top-menu{display:none}.bottom-menu{padding-bottom:env(safe-area-inset-bottom,0px);justify-content:center;margin-top:16px;display:flex}.log li{grid-template-columns:5.4em 1fr;font-size:.95rem}.title h1{font-size:2.1rem}}.birth{max-width:560px;margin:0 auto;padding:32px 16px 48px}.birth-head{text-align:center;margin-bottom:16px}.birth-cards{grid-template-columns:minmax(0,1fr);gap:12px;margin:0;padding:0;list-style:none;display:grid}.birth-card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px}.birth-card h2{margin:0 0 .25em;font-size:1.4rem}.birth-card p{margin:0}.birth-card.new{border-color:var(--ink-2);animation:.45s ease-out both flip}.birth-k{color:var(--ink-2);letter-spacing:.1em;font-size:.8rem}.birth-gender{font-family:Nanum Myeongjo,serif;font-size:1.2rem}.birth-stats{margin-top:8px}.bar>.grow{animation:.7s ease-out both grow}.birth-name{flex-direction:column;gap:4px;margin-top:4px;display:flex}.birth-name input{width:100%;min-width:0;max-width:14em;min-height:44px;font-family:Nanum Myeongjo,serif;font-size:1.3rem}.rarity{color:var(--accent);margin-top:10px;font-weight:700}.birth-actions{flex-direction:column;align-items:center;gap:8px;margin-top:20px;display:flex}@keyframes flip{0%{opacity:0;transform:rotateX(70deg)translateY(-6px)}to{opacity:1;transform:none}}@keyframes grow{0%{width:0}}@media (prefers-reduced-motion:reduce){.birth-card.new,.bar>.grow,.deal{animation:none}}.player-name{margin-bottom:4px;font-size:1.3rem}.end-name{margin:0;font-family:Nanum Myeongjo,serif;font-size:1.3rem}.chapter h2{font-size:1.5rem}.ch-next{color:var(--story);margin-top:12px}.rival-list{gap:8px;display:grid}.rival-grid{grid-template-columns:repeat(auto-fill,minmax(min(220px,100%),1fr));gap:10px;margin:12px 0;display:grid}.rival-card{border:1px solid var(--line);background:var(--paper-2);border-radius:8px;padding:10px 12px}.rival-card header{flex-wrap:wrap;align-items:baseline;gap:4px 8px;display:flex}.rival-name{font-family:Nanum Myeongjo,serif;font-size:1.05rem}.rival-card p{margin:2px 0 0;font-size:.9rem}.rival-trait{font-style:italic}.rival-card details{margin-top:4px;font-size:.85rem}.rival-card summary{cursor:pointer;color:var(--ink-2);align-items:center;min-height:32px;display:flex}.rival-history{margin:0;padding-left:1.2em}.gone-card{opacity:.6}.gone-card .rival-name{text-decoration:line-through;text-decoration-thickness:1px}.reveal-dialog{width:min(760px,100%)}.deal{animation:.4s ease-out both deal}@keyframes deal{0%{opacity:0;transform:translateY(14px)scale(.96)}to{opacity:1;transform:none}}.news-h{margin-top:14px}.title-badge{color:var(--accent);margin-right:.35em;font-size:.8em;font-weight:700}.pixel-box{line-height:0}.pixel-box canvas{image-rendering:pixelated;image-rendering:crisp-edges;display:block}.pixel-box.fit{justify-content:center;width:100%;display:flex;overflow:hidden}.portrait canvas{border-radius:6px}.status .portrait,.end-head .portrait{justify-content:center;margin-bottom:8px;display:flex}.cut-thumb{border-radius:6px;justify-content:center;margin-bottom:8px;display:flex;overflow:hidden}.birth-cut,.scene{border-radius:8px;margin-bottom:12px}.rival-card .portrait{float:left;margin:0 10px 4px 0}.rival-card:after{content:"";clear:both;display:block}.duel{text-align:center;margin:8px 0 12px}.duel-cap{margin:0 0 6px}.duel-floor{background:var(--paper-2);border-bottom:3px solid var(--line);border-radius:8px;justify-content:center;align-items:flex-end;gap:24px;padding:8px;display:flex}.duel-skip{min-height:36px;margin-top:6px;font-size:.85rem}.error-screen .error-report{resize:vertical;width:100%;margin-top:1rem;font:.75rem/1.4 ui-monospace,monospace}.first-time{max-width:30rem;color:var(--ink-2);text-align:left;margin:0 auto 1.5rem;padding:0;font-size:.92rem;list-style:none}.first-time li{text-indent:-1.1em;margin:.25em 0;padding-left:1.1em}.first-time li:before{content:"· "}.help-list{margin:0 0 1rem;padding-left:1.1em}.help-list li{margin:.45em 0}.help .primary{width:100%}
