:root{accent-color:#c8a165;--bg: #0e0f13;--bg-raised: #171922;--bg-input: #1e212c;--line: #2a2e3c;--line-soft: #21242f;--fg: #e6e8ef;--fg-dim: #9aa1b4;--fg-faint: #6b7285;--gold: #c8a165;--gold-dim: #8d7043;--red: #e0574f;--red-bg: #2b1614;--amber: #d99b3c;--amber-bg: #2a2013;--green: #5aa86e;--radius: 12px;--tap: 44px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--fg);font-family:Pretendard,-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans KR,system-ui,sans-serif;font-size:15px;line-height:1.65;overscroll-behavior-y:none}button{font:inherit;color:inherit;cursor:pointer}input,textarea,select{font:inherit;color:var(--fg);background:var(--bg-input);border:1px solid var(--line);border-radius:10px;padding:10px 12px;width:100%}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--gold-dim)}textarea{resize:vertical;line-height:1.6}.app{display:flex;flex-direction:column;height:100%;max-width:720px;margin:0 auto}.topbar{display:flex;align-items:center;gap:10px;padding:max(10px,env(safe-area-inset-top)) 14px 10px;border-bottom:1px solid var(--line-soft);background:var(--bg);position:sticky;top:0;z-index:20;min-height:52px}.topbar h1{font-size:16px;font-weight:600;margin:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .sub{font-size:12px;color:var(--fg-faint);font-weight:400}.iconbtn{background:none;border:none;padding:8px;min-width:var(--tap);min-height:var(--tap);display:grid;place-items:center;border-radius:10px;color:var(--fg-dim)}.iconbtn:active{background:var(--bg-raised)}.scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:14px}.scroll.tight{padding:0}.card{background:var(--bg-raised);border:1px solid var(--line-soft);border-radius:var(--radius);padding:14px;margin-bottom:10px}.card.tap:active{border-color:var(--gold-dim)}.btn{white-space:nowrap;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--tap);padding:0 16px;border-radius:10px;border:1px solid var(--line);background:var(--bg-raised);font-weight:500}.btn:active{background:var(--bg-input)}.btn.primary{background:var(--gold);border-color:var(--gold);color:#17130a;font-weight:600}.btn.primary:disabled{background:var(--gold-dim);border-color:var(--gold-dim);color:#2a2418;opacity:.6}.btn.ghost{background:none}.btn.danger{color:var(--red);border-color:#4a2320}.btn.wide{width:100%}.btn:disabled{opacity:.5;cursor:default}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.spacer{flex:1}.label{display:block;font-size:12px;color:var(--fg-dim);margin:14px 0 6px;font-weight:500}.label:first-child{margin-top:0}.hint{font-size:12px;color:var(--fg-faint);line-height:1.55;margin-top:6px}.section-title{font-size:12px;letter-spacing:.06em;color:var(--fg-faint);text-transform:uppercase;margin:22px 0 8px;font-weight:600}.empty{text-align:center;color:var(--fg-faint);padding:48px 20px;font-size:14px;line-height:1.8}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:4px 9px;border-radius:999px;background:var(--bg-input);border:1px solid var(--line);color:var(--fg-dim);white-space:nowrap}.chip b{color:var(--fg);font-weight:600}.chip.bad{background:var(--red-bg);border-color:#4a2320;color:#f0a29b}.chip.bad b{color:#ffb9b2}.chip.warn{background:var(--amber-bg);border-color:#4a3a1c;color:#e8c184}.chip.due{background:#1d2416;border-color:#33421f;color:#a9cf85}.turn{border-bottom:1px solid var(--line-soft);padding:16px 14px 14px}.turn .who{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint);margin-bottom:6px;display:flex;align-items:center;gap:8px}.turn.player{background:#12141b}.turn.player .body{color:var(--fg-dim);white-space:pre-wrap}.narrative{white-space:pre-wrap;line-height:1.85;font-size:15.5px}.narrative.streaming:after{content:"▋";color:var(--gold);animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:0}}.footerchips{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line-soft)}.composer{border-top:1px solid var(--line-soft);padding:10px 12px max(10px,env(safe-area-inset-bottom));background:var(--bg);position:sticky;bottom:0}.composer textarea{min-height:56px;max-height:180px}.tagrow{display:flex;gap:6px;overflow-x:auto;padding-bottom:8px;scrollbar-width:none}.tagrow::-webkit-scrollbar{display:none}.tag{flex:0 0 auto;font-size:12px;padding:5px 11px;border-radius:999px;background:var(--bg-input);border:1px solid var(--line);color:var(--fg-dim)}.tag:active{border-color:var(--gold-dim);color:var(--gold)}.banner{padding:9px 12px;border-radius:10px;font-size:13px;margin-bottom:10px;line-height:1.5}.banner.err{background:var(--red-bg);border:1px solid #4a2320;color:#f0a29b}.banner.info{background:#131a24;border:1px solid #22303f;color:#9cc0dd}.banner.retry{background:var(--amber-bg);border:1px solid #4a3a1c;color:#e8c184}.sheet-back{position:fixed;inset:0;background:#0000008c;z-index:40}.sheet{position:fixed;left:0;right:0;bottom:0;max-height:82vh;background:var(--bg-raised);border-radius:16px 16px 0 0;border-top:1px solid var(--line);z-index:41;display:flex;flex-direction:column;max-width:720px;margin:0 auto}.sheet header{display:flex;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line-soft);font-weight:600;font-size:15px}.sheet .body{overflow-y:auto;padding:14px;padding-bottom:max(14px,env(safe-area-inset-bottom))}.ledger-row{display:grid;grid-template-columns:76px 1fr;gap:10px;padding:7px 0;border-bottom:1px solid var(--line-soft);font-size:13.5px}.ledger-row:last-child{border-bottom:none}.ledger-row .k{color:var(--fg-faint);font-size:12px;padding-top:2px}.ledger-row .v{word-break:break-word;line-height:1.6}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;white-space:pre-wrap;word-break:break-word;line-height:1.6}.filetree{max-height:46vh;overflow-y:auto;border:1px solid var(--line-soft);border-radius:10px}.fileitem{display:flex;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--line-soft);font-size:13px}.fileitem:last-child{border-bottom:none}.fileitem input[type=checkbox]{width:20px;height:20px;flex:0 0 auto;accent-color:var(--gold)}.fileitem .path{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg-dim)}.fileitem.on .path{color:var(--fg)}.fileitem select{width:auto;padding:4px 6px;font-size:11px;border-radius:7px}.stat{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--line-soft);font-size:13.5px}.bar{height:4px;border-radius:2px;background:var(--line);overflow:hidden;margin-top:5px}.bar>i{display:block;height:100%;background:var(--red)}.bar.warn>i{background:var(--amber)}input[type=range]{accent-color:var(--gold);padding:0;background:none;border:none;height:34px}input[type=checkbox]{accent-color:var(--gold)}.uploadzone{border:1px dashed var(--line);border-radius:var(--radius);padding:18px 14px;text-align:center;color:var(--fg-dim);font-size:13px;line-height:1.7}.uploadzone:active{border-color:var(--gold-dim)}.srctabs{display:flex;gap:6px;margin-bottom:12px}.srctabs button{flex:1;min-height:38px;border-radius:9px;border:1px solid var(--line);background:var(--bg-raised);font-size:13px;color:var(--fg-dim)}.srctabs button.on{border-color:var(--gold);color:var(--gold);background:#1d1a14}.pickrow{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line-soft);min-height:var(--tap)}.pickrow:last-child{border-bottom:none}.pickrow input[type=checkbox],.pickrow input[type=radio]{width:20px;height:20px;flex:0 0 auto;margin:0}.pickrow.sub{padding-left:24px;background:#14161d}.pickrow.sub2{padding-left:44px}.subtree{border-top:1px solid var(--line-soft);max-height:44vh;overflow-y:auto}.grouplabel{font-size:11px;color:var(--gold-dim);letter-spacing:.05em;margin:12px 0 4px 2px;font-weight:600}.charrow{background:var(--bg-raised);border:1px solid var(--line-soft);border-radius:var(--radius);margin-bottom:6px;overflow:hidden}.charrow.on{border-color:var(--gold-dim);background:#1a1811}.charrow .pickrow{border-bottom:none}.anchor{padding:10px 14px 12px 44px;font-size:13px;line-height:1.65;color:var(--fg-dim);border-top:1px dashed var(--line-soft)}.totalbar{position:sticky;bottom:0;display:flex;align-items:center;gap:8px;padding:12px 14px;margin:16px -14px 0;background:var(--bg-raised);border-top:1px solid var(--line);font-size:14px}.qualifier{font-size:11px;color:var(--gold-dim);font-weight:500;margin-left:6px;padding:1px 6px;border:1px solid var(--line);border-radius:999px;white-space:nowrap}.sysblock{border:1px solid var(--line);border-left-width:3px;border-radius:10px;padding:10px 12px;margin:12px 0;font-size:13.5px;line-height:1.6}.sysblock.judgment{background:#12171f;border-color:#2a3646;border-left-color:#4a8fd4}.judgehead{font-weight:600;color:#9cc0dd;margin-bottom:6px;font-size:13px}.judgeline{color:var(--fg-dim);padding-left:10px;border-left:1px solid #22303f;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;word-break:break-word}.judgeline.outcome{color:var(--fg);font-weight:600;border-left-color:#4a8fd4}.sysblock.result{background:#12171f;border-color:#2a3646;border-left-color:#4a8fd4;color:#9cc0dd;font-weight:600;font-size:13px}.sysblock.card-block{background:#16181f;border-left-width:3px}.cardhead{font-weight:700;font-size:12px;letter-spacing:.03em;margin-bottom:8px}.cardline{display:grid;grid-template-columns:48px 1fr;gap:8px;padding:3px 0}.cardline.solo{display:block;font-weight:600;color:var(--fg);padding-bottom:6px}.cardline .k{color:var(--fg-faint);font-size:12px}.cardline .v{color:var(--fg-dim);word-break:break-word}.sysblock.audit{background:#14161d;border-left-color:var(--fg-faint);padding:0}.audithead{display:flex;align-items:center;padding:10px 12px;color:var(--fg-dim);font-size:13px;cursor:pointer}.sysblock.audit .mono{padding:0 12px 12px}.sysblock.inner{background:#1a151f;border-color:#3a2d47;border-left-color:#9a6dd7;font-style:italic;color:#c9b3e0}.innerlabel{font-style:normal;font-size:11px;color:#9a6dd7;margin-right:8px;font-weight:600}.drawertabs{display:flex;gap:6px;flex:1}.drawertabs button{flex:1;min-height:34px;border-radius:8px;border:1px solid var(--line);background:var(--bg-input);color:var(--fg-dim);font-size:13px}.drawertabs button.on{border-color:var(--gold);color:var(--gold);background:#1d1a14}.catHead{display:flex;align-items:center;gap:8px;padding:11px 12px;font-weight:600;font-size:13.5px;border-bottom:1px solid var(--line-soft)}.statrow{display:grid;grid-template-columns:68px 1fr 34px;gap:8px;align-items:center;padding:6px 0}.statname{font-size:13px;color:var(--fg-dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.statbar{position:relative;height:6px;border-radius:3px;background:var(--line);overflow:visible}.statbar>i{display:block;height:100%;border-radius:3px}.statbar>u{position:absolute;top:-3px;width:1px;height:12px;background:var(--fg-faint)}.statrow .tier{font-size:12px;text-align:right;color:var(--fg-faint);font-weight:600}.statrow .tier.up{color:var(--gold)}.statnote{font-size:12px;color:var(--fg-faint);line-height:1.6;padding:2px 0 8px 76px}.chip.item{background:var(--bg-input)}.gauge{display:flex;gap:3px}.gauge>span{flex:1;height:6px;border-radius:2px;background:var(--line)}.gauge>span.on{background:var(--gold)}.npccard{opacity:.72}.npccard.active{opacity:1;border-color:var(--gold-dim)}.npchead{display:flex;align-items:center;gap:8px;padding:11px 12px 6px}.ladder{display:flex;gap:3px;margin-top:6px}.ladder>span{flex:1;height:4px;border-radius:2px;background:var(--line)}.ladder>span.past{background:var(--gold-dim)}.ladder>span.at{background:var(--gold);height:7px;margin-top:-1.5px}.prose{line-height:1.85;font-size:15.5px}.prose .para{margin:0 0 12px;white-space:pre-wrap}.prose .para:last-child{margin-bottom:0}.prose b{color:var(--fg);font-weight:700}.prose i{color:var(--fg-dim)}.prose code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.88em;background:var(--bg-input);padding:1px 5px;border-radius:5px}.speech{border-left:3px solid var(--line);padding:4px 0 4px 12px;margin:12px 0}.speech .speaker{display:block;font-size:12px;font-weight:700;letter-spacing:.02em;margin-bottom:2px}.speech .line{display:block;color:var(--fg)}.speech.anon{border-left-style:dashed;border-left-color:var(--red)}.abilrow{display:flex;align-items:center;gap:7px;padding:8px 0;border-bottom:1px solid var(--line-soft);font-size:13.5px}.abilrow:last-child{border-bottom:none}.abilrow .star{color:var(--gold);font-size:11px}.abilname{flex:1;color:var(--fg)}.abiltext{font-size:12.5px;color:var(--fg-dim);line-height:1.7;padding:2px 0 10px 4px;white-space:pre-wrap;border-bottom:1px solid var(--line-soft)}.banner{display:flex;align-items:flex-start;gap:8px}.banner .bannerbody{flex:1;min-width:0}.bannerclose{flex:0 0 auto;background:none;border:none;padding:0 2px;margin:-2px -2px 0 0;font-size:13px;line-height:1;opacity:.6;min-width:24px;min-height:24px}.bannerclose:active{opacity:1}.moneycard{display:flex;align-items:baseline;gap:10px}.moneylabel{font-size:12px;color:var(--fg-faint);letter-spacing:.04em}.moneyval{margin-left:auto;font-size:17px;color:var(--gold);font-variant-numeric:tabular-nums}.eqcard{padding:10px 10px 8px}.eqhead{display:flex;align-items:baseline;justify-content:space-between;font-size:12px;color:var(--fg-faint);letter-spacing:.04em;padding:0 2px 6px}.eqgrid{display:grid;grid-template-columns:1fr 74px 1fr;gap:4px;align-items:center}.eqcol{display:flex;flex-direction:column;gap:3px;min-width:0}.eqbody{display:flex;align-items:center;justify-content:center;color:var(--line)}.bodysvg{width:100%;height:auto;max-height:210px;opacity:.55}.eqslot{display:flex;flex-direction:column;gap:1px;background:var(--bg-input);border:1px solid var(--line-soft);border-radius:8px;padding:4px 7px;min-height:34px;text-align:left;min-width:0}.eqslot.r{text-align:right;align-items:flex-end}.eqslot.on{border-color:var(--gold-dim);background:#1b1a17}.eqslot.open{border-color:var(--gold)}.eqname{font-size:10px;color:var(--fg-faint);letter-spacing:.03em;line-height:1.2}.eqval{font-size:12px;color:var(--fg-faint);line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.eqslot.on .eqval{color:var(--fg)}.eqdetail{margin-top:8px;padding:7px 10px;background:var(--bg-input);border-radius:8px;font-size:13px;line-height:1.5}.invgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px}.invcell{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;aspect-ratio:1;background:var(--bg-input);border:1px solid var(--line);border-radius:10px;padding:4px;overflow:hidden}.invcell.on{box-shadow:inset 0 0 0 1px currentColor}.invgrade{font-size:15px;line-height:1}.invname{font-size:10.5px;line-height:1.2;text-align:center;color:var(--fg-dim);max-height:2.4em;overflow:hidden}.invcount{position:absolute;right:3px;bottom:2px;font-size:10px;color:var(--gold);font-variant-numeric:tabular-nums}.statbar>s{position:absolute;left:0;top:0;bottom:0;border-right:1px dashed var(--gold-dim);background:#c8a16517;border-radius:inherit}.tierpot{font-size:11px;color:var(--gold-dim);margin-left:3px;font-variant-numeric:tabular-nums}.chip.pot{border-color:var(--gold-dim);color:var(--gold-dim)}.clockrow{padding:8px 0;border-bottom:1px solid var(--line-soft)}.clockrow:last-child{border-bottom:none;padding-bottom:0}.clockrow.done{opacity:.55}.gmzone{background:#14131a;border-top:1px solid var(--line);padding:8px 12px 12px}.gmlabel{font-size:10.5px;letter-spacing:.06em;color:var(--gold-dim);text-transform:uppercase;margin-bottom:4px}.npcline{font-size:13px;line-height:1.5;color:var(--fg-dim)}.npcline.dim{color:var(--fg-faint);margin-top:2px}.chip.lock{border-color:#4a3a1c;color:var(--amber)}.secretrow{display:flex;gap:8px;padding:5px 0;border-bottom:1px solid var(--line-soft);font-size:12.5px;line-height:1.5}.secretrow:last-child{border-bottom:none}.secretrow .k{flex:0 0 auto;max-width:42%;color:var(--fg-dim);word-break:break-all}.secretrow .v{flex:1;min-width:0;color:var(--fg-faint)}.secretrow.locked .k{color:var(--amber)}.speech.pc{border-left-width:3px;background:linear-gradient(90deg,rgba(224,87,79,.07),transparent 60%)}.eqslot.covered{border-style:dashed;border-color:var(--line)}.eqslot.covered .eqval{font-style:italic;color:var(--fg-faint)}.eqname .eqmore{margin-left:4px;color:var(--gold);font-weight:700}.eqname .eqbag{margin-left:3px;font-size:9px}.eqdetailhead{font-size:11px;letter-spacing:.05em;color:var(--fg-faint);margin-bottom:6px}.eqdetailrow{padding:6px 0;border-bottom:1px solid var(--line-soft);font-size:13px;line-height:1.5}.eqdetailrow:last-child{border-bottom:none;padding-bottom:0}.eqstorage{margin-top:8px;padding-top:8px;border-top:1px solid var(--line-soft)}.chip.bag{border-color:var(--gold-dim);color:var(--gold)}.invcount.inline{position:static;margin-left:4px}.moneycard.col{display:block}.freshness{display:flex;align-items:center;gap:10px;margin-top:10px;padding:10px 12px;background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius)}.freshness.stale{border-color:#4a3a1c;background:var(--amber-bg)}.freshhead{font-size:13px;display:flex;align-items:baseline;gap:6px}.freshness.stale .freshhead{color:var(--amber)}.freshcount{font-size:11px;color:var(--fg-faint)}.eqslot.locked{border-style:dashed;border-color:#4a3a1c}.eqslot.locked .eqval{color:var(--amber);font-style:italic}.eqslot.granted{border-color:var(--gold-dim)}.eqname .eqauto{margin-left:3px;color:var(--gold-dim)}.eqextra{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:3px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}.eqextra .eqslot{text-align:left;align-items:flex-start}.chip.lockchip{border-color:#4a3a1c;color:var(--amber)}.chip.grantchip{border-color:var(--gold-dim);color:var(--gold)}.chip.auto{border-style:dashed;border-color:var(--line);color:var(--fg-faint)}.lore{margin-top:6px;padding:7px 9px;background:var(--bg-input);border-radius:8px;font-size:12.5px;line-height:1.55}.lorehead{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:5px}.lorehead:empty{display:none;margin:0}.loreline{display:flex;gap:7px;padding:2px 0}.loreline .k{flex:0 0 30px;color:var(--fg-faint);font-size:11px;padding-top:1px}.loreline .v{flex:1;min-width:0;color:var(--fg)}.loreline .v.dim{color:var(--fg-dim)}.chip.kind{border-color:var(--line);color:var(--fg-dim)}.chip.consume{border-color:#4a3a1c;color:var(--amber)}.invtag{position:absolute;left:4px;top:3px;font-size:9px;color:var(--fg-faint)}.invtag.on{color:var(--gold)}
