/* 야행록 · 화면 */
:root, [data-theme="meok"] { --bg:#12110e; --p1:#1b1915; --p2:#232019; --p3:#2c2820; --ln:#2e2a22; --ink:#ede5d1; --mu:#9b927c; --dim:#6e6655; --gold:#d8b45e; --gold-ink:#1b160b; --red:#d24e33; --red-soft:#d24e331f; --gold-soft:#d8b45e1c; --shade:#00000080; }
[data-theme="hanji"] { --bg:#e9e0cc; --p1:#f6f0e2; --p2:#ebe2cf; --p3:#ddd1b6; --ln:#d2c4a5; --ink:#2a2318; --mu:#6c5f48; --dim:#9a8c70; --gold:#94651c; --gold-ink:#fff8e8; --red:#b23a22; --red-soft:#b23a2218; --gold-soft:#94651c18; --shade:#3b2c1040; }
[data-theme="jjok"] { --bg:#0e131e; --p1:#151c2a; --p2:#1c2536; --p3:#253047; --ln:#243047; --ink:#e3e7f0; --mu:#8f9ab3; --dim:#626d86; --gold:#e0bf6e; --gold-ink:#141109; --red:#d8604a; --red-soft:#d8604a1f; --gold-soft:#e0bf6e1a; --shade:#00000080; }
[data-theme="celadon"] { --bg:#dfe8e2; --p1:#f1f6f2; --p2:#dbe6de; --p3:#c9d9ce; --ln:#bfd0c4; --ink:#1c2a24; --mu:#4f6a5e; --dim:#80968b; --gold:#2c7a66; --gold-ink:#f2fbf7; --red:#b4432f; --red-soft:#b4432f18; --gold-soft:#2c7a6618; --shade:#1c2a2440; }
[data-theme="maple"] { --bg:#1a110d; --p1:#231711; --p2:#2d1e16; --p3:#39271c; --ln:#3a291f; --ink:#f0e2d1; --mu:#b39a84; --dim:#85705e; --gold:#e48a45; --gold-ink:#1d0f06; --red:#d4472d; --red-soft:#d4472d22; --gold-soft:#e48a451c; --shade:#00000080; }
:root { --hp:#d24e33; --gi:#d8ae45; --sin:#7d8ce0; --po:#86ab5c; --cheong:#52b0ba; --brush:"Song Myung", serif; --sans:"Pretendard", system-ui, -apple-system, sans-serif; --fs:14px; }
* { box-sizing:border-box; margin:0; padding:0; }
html, body { height:100%; }
body { background:var(--bg); color:var(--ink); font:var(--fs)/1.55 var(--sans); letter-spacing:-.01em; -webkit-font-smoothing:antialiased; }
button { font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
input, textarea, select { font:inherit; color:var(--ink); background:var(--p2); border:1px solid var(--ln); border-radius:10px; padding:8px 11px; }
textarea { width:100%; resize:vertical; }
:focus-visible { outline:2px solid var(--gold); outline-offset:2px; }
.brush { font-family:var(--brush); font-weight:400; }
.mu { color:var(--mu); } .dim { color:var(--dim); } .gold { color:var(--gold); } .red { color:var(--red); }
.small { font-size:12.5px; } .tiny { font-size:11.5px; }
.hide { display:none !important; }
@media (prefers-reduced-motion: reduce) { * { animation:none !important; transition:none !important; } }

/* 틀 */
.app { height:100vh; height:100dvh; display:flex; flex-direction:column; overflow:hidden; }
.top { height:54px; flex:none; display:flex; align-items:center; gap:14px; padding:0 18px; border-bottom:1px solid var(--ln); background:var(--bg); }
.logo { font-family:var(--brush); font-size:24px; letter-spacing:.1em; line-height:1; }
.clock { margin-left:auto; display:flex; align-items:center; gap:12px; font-size:12.5px; color:var(--mu); white-space:nowrap; }
.clock .when { display:flex; align-items:baseline; gap:6px; color:var(--ink); }
.clock .when b { font-family:var(--brush); font-weight:400; font-size:18px; color:var(--gold); }
.clock .sep { width:1px; height:14px; background:var(--ln); }
.iconbtn { width:34px; height:34px; border-radius:10px; border:1px solid var(--ln); background:var(--p1); display:inline-flex; align-items:center; justify-content:center; }
.iconbtn svg { width:17px; height:17px; stroke:var(--ink); fill:none; stroke-width:1.7; }
.body { flex:1; min-height:0; display:flex; gap:14px; padding:14px 14px 14px 0; }
.rail { width:82px; flex:none; display:flex; flex-direction:column; gap:4px; padding:0 9px; }
.rail button { position:relative; display:flex; flex-direction:column; align-items:center; gap:3px; padding:12px 0 10px; border-radius:14px; color:var(--mu); font-size:12px; }
.rail button svg { width:26px; height:26px; stroke:currentColor; fill:none; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
.rail button.on { background:var(--p2); color:var(--ink); }
.rail button.on svg { stroke:var(--gold); }
.badge { position:absolute; top:6px; right:12px; min-width:16px; height:16px; border-radius:8px; background:var(--red); color:#fff; font-size:10.5px; display:flex; align-items:center; justify-content:center; padding:0 4px; }
.prof { position:relative; flex:none; width:276px; transition:width .25s ease; }
.prof .inner { width:276px; height:100%; overflow-y:auto; overflow-x:hidden; display:flex; flex-direction:column; gap:12px; transition:opacity .2s; scrollbar-width:none; }
.prof.closed { width:0; } .prof.closed .inner { opacity:0; pointer-events:none; }
.bookmark { position:absolute; top:14px; right:-26px; width:26px; padding:10px 0 8px; border-radius:0 12px 12px 0; background:var(--p2); border:1px solid var(--ln); border-left:0; display:flex; flex-direction:column; align-items:center; gap:4px; z-index:3; }
.bookmark i { display:block; width:7px; height:14px; border-radius:3px; background:#ffffff14; position:relative; overflow:hidden; }
.bookmark i b { position:absolute; left:0; right:0; bottom:0; }
.bookmark:after { content:""; width:6px; height:6px; border-left:1.6px solid var(--mu); border-bottom:1.6px solid var(--mu); transform:rotate(45deg); margin-top:3px; }
.prof.closed .bookmark:after { transform:rotate(-135deg); }
.center { flex:1; min-width:0; display:flex; flex-direction:column; gap:12px; overflow-y:auto; padding:0 4px 20px 16px; }
.chat { width:340px; flex:none; background:var(--p1); border-radius:14px; display:flex; flex-direction:column; overflow:hidden; }
.pnav, .pstat, .drawer-handle, .mobonly { display:none; }

/* 판 */
.card { background:var(--p1); border-radius:14px; padding:14px; }
.card h3, .sect-h { font-size:15px; font-weight:700; }
.sect-h { font-size:12.5px; color:var(--mu); font-weight:600; margin:6px 2px -2px; }
.row { display:flex; align-items:center; gap:10px; }
.row.sp { justify-content:space-between; }
.wrap { flex-wrap:wrap; }
.grid2 { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:8px; }
.grid3 { display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:8px; }
.btn { min-height:34px; padding:0 13px; border-radius:10px; border:1px solid var(--ln); background:var(--p2); color:var(--ink); font-weight:600; font-size:13px; display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
.btn:hover { border-color:var(--mu); }
.btn.go { background:var(--gold); color:var(--gold-ink); border-color:var(--gold); }
.btn.redb { background:var(--red); border-color:var(--red); color:#fff; }
.btn.ghost { background:none; }
.btn.sm { min-height:28px; padding:0 10px; font-size:12px; border-radius:8px; }
.btn:disabled { opacity:.45; cursor:not-allowed; }
.acts { display:flex; gap:6px; flex-wrap:wrap; }
.tag { display:inline-flex; align-items:center; font-size:12px; border-radius:7px; padding:2px 8px; background:var(--p3); color:var(--mu); white-space:nowrap; }
.tag.cold { background:#7d8ce026; color:#a9b4ef; } .tag.warn { background:var(--red-soft); color:var(--red); } .tag.good { background:var(--gold-soft); color:var(--gold); }
.prog { height:5px; border-radius:3px; background:var(--p3); overflow:hidden; }
.prog b { display:block; height:100%; background:var(--gold); }
.ic { width:38px; height:38px; flex:none; border-radius:10px; border:1.5px dashed var(--ln); display:inline-flex; align-items:center; justify-content:center; font-family:var(--brush); font-size:16px; color:var(--mu); background:var(--p2); }
.ic.sm { width:30px; height:30px; font-size:13px; border-radius:8px; }
.empty { color:var(--mu); font-size:13px; padding:10px 2px; }

/* 호패 판 */
.idcard { background:var(--p1); border-radius:14px; padding:14px; display:grid; grid-template-columns:62px 1fr; gap:12px; align-items:center; cursor:pointer; }
.face { width:62px; height:76px; border-radius:10px; border:1.5px dashed var(--ln); background:var(--p2); display:flex; align-items:center; justify-content:center; color:var(--dim); font-size:11px; }
.name { font-family:var(--brush); font-size:23px; line-height:1.1; }
.name small { font-family:var(--sans); font-size:11.5px; color:var(--gold); display:block; margin-bottom:2px; }
.here { display:flex; align-items:baseline; gap:6px; margin-top:5px; font-size:13px; }
.here .brush { color:var(--gold); }
.bars { display:flex; flex-direction:column; gap:9px; }
.bar { display:grid; grid-template-columns:44px 1fr 28px; gap:10px; align-items:center; font-size:12.5px; }
.bar i { height:8px; border-radius:4px; background:var(--p3); overflow:hidden; }
.bar i b { display:block; height:100%; border-radius:4px; transition:width .4s; }
.bar em { font-style:normal; text-align:right; color:var(--mu); font-variant-numeric:tabular-nums; }
.bar.low span, .bar.low em { color:var(--red); }
.lives { display:flex; align-items:center; gap:4px; font-size:12px; color:var(--mu); }
.lives i { width:16px; height:4px; border-radius:2px; background:var(--gold); }
.lives i.cut { background:var(--p3); }

/* 할 일 */
.item { display:grid; grid-template-columns:40px 1fr auto; gap:12px; align-items:center; background:var(--p1); border-radius:14px; padding:12px 14px; }
.item .ico { width:40px; height:40px; border-radius:12px; background:var(--p3); display:flex; align-items:center; justify-content:center; font-family:var(--brush); font-size:19px; color:var(--gold); }
.item b { font-weight:600; font-size:14.5px; }
.item small { display:block; font-size:12.5px; color:var(--mu); }
.item.urgent { background:linear-gradient(90deg,var(--red-soft),var(--p1) 75%); }
.item.urgent .ico { background:var(--red-soft); color:var(--red); }
.night { display:flex; gap:12px; align-items:flex-start; }
.night .brush { font-size:26px; line-height:1; color:var(--gold); }
.slot { background:var(--p1); border-radius:14px; padding:12px 14px; display:flex; flex-direction:column; gap:6px; }
.slot b { font-size:13.5px; font-weight:600; }

/* 도성 판 */
.board { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; background:var(--p1); border-radius:16px; padding:10px; }
.cell { position:relative; aspect-ratio:1.18; border-radius:10px; background:var(--p2); border:1px solid var(--ln); padding:7px 8px; display:flex; flex-direction:column; justify-content:space-between; text-align:left; overflow:hidden; transition:background .15s; }
.cell .cn { font-size:12.5px; font-weight:600; line-height:1.2; }
.cell .cp { font-size:10.5px; color:var(--mu); line-height:1.3; }
.cell .marks { display:flex; gap:3px; flex-wrap:wrap; align-items:center; }
.cell .mk { font-size:10px; border-radius:5px; padding:0 4px; line-height:15px; background:var(--p3); color:var(--mu); }
.cell .mk.sos { background:var(--red); color:#fff; } .cell .mk.bong { background:var(--red-soft); color:var(--red); } .cell .mk.pp { background:var(--gold-soft); color:var(--gold); }
.cell .g { position:absolute; right:6px; top:6px; display:flex; gap:2px; }
.cell .g i { width:4px; height:4px; border-radius:2px; background:var(--red); opacity:.75; }
.cell.out { background:repeating-linear-gradient(135deg,transparent 0 6px,var(--p3) 6px 7px); border-style:dashed; color:var(--dim); }
.cell.out .cn { font-weight:500; color:var(--dim); }
.cell.adj { border-color:var(--gold); cursor:pointer; }
.cell.adj:hover { background:var(--p3); }
.cell.sel { box-shadow:0 0 0 2px var(--ink) inset; }
.cell.me { background:var(--gold-soft); border-color:var(--gold); }
.cell .token { position:absolute; right:7px; bottom:7px; width:24px; height:24px; border-radius:50%; background:var(--gold); color:var(--gold-ink); font-family:var(--brush); font-size:13px; display:flex; align-items:center; justify-content:center; box-shadow:0 0 0 3px var(--gold-soft); }
.cell .homeic { font-size:10px; color:var(--gold); }
.board.dusk .cell:not(.me):not(.out) { filter:brightness(.82); }
.board.night .cell:not(.me):not(.out) { filter:brightness(.62) saturate(.8); }
.legend { display:flex; gap:12px; flex-wrap:wrap; font-size:11.5px; color:var(--mu); padding:2px 4px; }
.place { border-top:1px solid var(--ln); padding-top:12px; margin-top:12px; }
.place:first-child { border-top:0; margin-top:0; padding-top:0; }
.person { display:grid; grid-template-columns:36px 1fr; gap:10px; align-items:center; background:var(--p2); border-radius:12px; padding:10px; }
.person .av { width:36px; height:36px; border-radius:50%; border:1.5px dashed var(--ln); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--dim); }
.shop { display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:6px; }
.shop .si { display:flex; align-items:center; gap:8px; background:var(--p2); border-radius:10px; padding:7px 9px; font-size:13px; }
.shop .si .p { margin-left:auto; color:var(--gold); font-variant-numeric:tabular-nums; }

/* 봇짐 */
.inv { display:grid; grid-template-columns:repeat(auto-fill,minmax(205px,1fr)); gap:6px; }
.inv .it { display:flex; align-items:center; gap:9px; background:var(--p1); border-radius:12px; padding:8px 10px; text-align:left; }
.inv .it .nm { font-size:13px; font-weight:600; line-height:1.25; }
.inv .it .sub { font-size:11.5px; color:var(--mu); }
.inv .it .n { margin-left:auto; color:var(--mu); font-size:12.5px; font-variant-numeric:tabular-nums; }
.inv .it.sel { box-shadow:0 0 0 1.5px var(--gold) inset; }
.recipe { display:grid; grid-template-columns:38px 1fr auto; gap:10px; align-items:center; background:var(--p1); border-radius:12px; padding:8px 10px; }
.recipe.no { opacity:.55; }
.chips { display:flex; gap:4px; flex-wrap:wrap; }
.chips button { font-size:12.5px; padding:4px 10px; border-radius:999px; background:var(--p2); color:var(--mu); }
.chips button.on { background:var(--ink); color:var(--bg); }

/* 대화 */
.ctabs { display:flex; padding:6px 6px 0; gap:0; border-bottom:1px solid var(--ln); overflow-x:auto; scrollbar-width:none; }
.ctabs button { padding:8px 9px; font-size:13px; color:var(--mu); border-bottom:2px solid transparent; white-space:nowrap; }
.ctabs button.on { color:var(--ink); border-color:var(--gold); }
.people { display:flex; gap:6px; padding:9px 12px; border-bottom:1px solid var(--ln); align-items:center; font-size:12px; color:var(--mu); min-height:44px; }
.people .dot { width:28px; height:28px; border-radius:50%; background:var(--p3); position:relative; display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--ink); }
.people .dot:after { content:""; position:absolute; right:-1px; bottom:-1px; width:8px; height:8px; border-radius:50%; background:#62c060; border:2px solid var(--p1); }
.msgs { flex:1; overflow-y:auto; padding:10px 14px; display:flex; flex-direction:column; gap:6px; font-size:13.5px; }
.msgs .m b { font-weight:600; margin-right:6px; }
.msgs .t { font-size:11px; color:var(--dim); margin-right:6px; font-variant-numeric:tabular-nums; }
.sys { font-size:12.5px; padding:5px 9px; border-radius:8px; }
.sys.pa { background:var(--gold-soft); color:var(--gold); } .sys.bong { background:var(--red-soft); color:var(--red); } .sys.bell { color:var(--mu); padding-left:0; }
.sys.pa:before { content:"파발 · "; opacity:.8; } .sys.bong:before { content:"봉화 · "; opacity:.85; }
.say { margin:10px; display:flex; gap:6px; }
.say input { flex:1; min-width:0; }

/* 겹창 */
.ov { position:fixed; inset:0; z-index:50; background:var(--shade); backdrop-filter:blur(3px); display:flex; align-items:center; justify-content:center; padding:16px; }
.modal { background:var(--p1); border:1px solid var(--ln); border-radius:18px; width:min(560px,100%); max-height:calc(100dvh - 32px); overflow-y:auto; padding:20px; box-shadow:0 30px 60px #0008; }
.modal.wide { width:min(820px,100%); }
.modal h2 { font-size:19px; font-weight:700; }
.modal .x { float:right; }
.toasts { position:fixed; left:50%; bottom:24px; transform:translateX(-50%); z-index:80; display:flex; flex-direction:column; gap:6px; align-items:center; pointer-events:none; width:min(520px,calc(100% - 24px)); }
.toast { background:var(--ink); color:var(--bg); padding:10px 16px; border-radius:12px; font-size:13.5px; box-shadow:0 10px 30px #0006; animation:tin .25s ease; text-align:center; }
@keyframes tin { from { opacity:0; transform:translateY(8px); } }
.fightm .monster { display:grid; grid-template-columns:96px 1fr; gap:14px; align-items:center; }
.fightm .mpic { width:96px; height:96px; border-radius:14px; border:1.5px dashed var(--ln); display:flex; align-items:center; justify-content:center; color:var(--dim); font-size:12px; }
.fightm .log { background:var(--p2); border-radius:12px; padding:10px 12px; font-size:13.5px; min-height:64px; margin:12px 0; }
.bellov { position:fixed; inset:0; z-index:90; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:10px; background:radial-gradient(ellipse at 50% 45%, var(--p1), var(--bg) 70%); animation:bellin .5s ease; text-align:center; padding:20px; }
@keyframes bellin { from { opacity:0; } }
.bellov .b { font-family:var(--brush); font-size:64px; letter-spacing:.2em; }
.bellov .ring { width:200px; height:200px; border-radius:50%; border:1px solid var(--ln); position:absolute; box-shadow:0 0 0 30px var(--gold-soft); animation:ring 2.4s ease-out infinite; }
@keyframes ring { from { transform:scale(.6); opacity:1; } to { transform:scale(1.6); opacity:0; } }
.celebrate { position:fixed; inset:0; z-index:85; display:flex; align-items:center; justify-content:center; background:var(--shade); }
.celebrate .box { background:var(--p1); border:1px solid var(--gold); border-radius:20px; padding:28px 34px; text-align:center; animation:pop .4s cubic-bezier(.2,1.4,.4,1); }
@keyframes pop { from { transform:scale(.7); opacity:0; } }
.celebrate .box .brush { font-size:44px; color:var(--gold); }

/* 호적 */
.hj { position:fixed; inset:0; z-index:60; background:radial-gradient(ellipse at 50% 30%, #2a2419, #0d0c09 75%); display:flex; align-items:center; justify-content:center; padding:16px; overflow:auto; }
.book { --hp1:#f1e8d3; width:min(760px,100%); min-height:min(620px,calc(100dvh - 32px)); background:var(--hp1); color:#2a2116; border-radius:6px 14px 14px 6px; box-shadow:0 40px 80px #000c, inset 14px 0 30px -14px #6b552f66; position:relative; padding:34px 40px 28px 52px; display:flex; flex-direction:column; perspective:1600px;
  background-image:repeating-linear-gradient(90deg, transparent 0 59px, #b7a27a26 59px 60px); }
.book:before { content:""; position:absolute; left:18px; top:0; bottom:0; width:2px; background:repeating-linear-gradient(180deg,#8a7146 0 10px,transparent 10px 40px); opacity:.5; }
.book h1 { font-family:var(--brush); font-weight:400; font-size:34px; letter-spacing:.06em; }
.book .pg { font-size:12px; color:#8a7a5c; letter-spacing:.1em; }
.book .lead { color:#6b5c41; font-size:14px; margin-top:4px; }
.book label { display:block; font-size:12.5px; color:#6b5c41; margin:12px 0 4px; font-weight:600; }
.book input, .book textarea, .book select { background:#faf5e8; border:1px solid #cbb994; color:#2a2116; width:100%; }
.book .opts { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px; margin-top:8px; }
.book .opt { text-align:left; background:#faf5e8; border:1px solid #cbb994; border-radius:12px; padding:10px 12px; color:#2a2116; }
.book .opt b { display:block; font-size:14px; }
.book .opt span { font-size:12px; color:#7a6a4c; line-height:1.4; display:block; }
.book .opt.on { background:#2a2116; color:#f6eedb; border-color:#2a2116; }
.book .opt.on span { color:#cbb994; }
.book .navb { margin-top:auto; padding-top:20px; display:flex; justify-content:space-between; align-items:center; }
.book .btn { background:#e5d9bd; border-color:#cbb994; color:#2a2116; }
.book .btn.go { background:#2a2116; color:#f6eedb; border-color:#2a2116; }
.book .page { animation:turn .45s ease; transform-origin:left center; }
@keyframes turn { from { opacity:0; transform:rotateY(-14deg) translateX(20px); } }
.cards { display:flex; gap:14px; justify-content:center; margin:22px 0 8px; flex-wrap:wrap; }
.fate { width:150px; height:210px; border-radius:12px; perspective:800px; cursor:pointer; }
.fate .in { position:relative; width:100%; height:100%; transition:transform .6s; transform-style:preserve-3d; }
.fate.flip .in { transform:rotateY(180deg); }
.fate .f, .fate .bk { position:absolute; inset:0; backface-visibility:hidden; border-radius:12px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; }
.fate .bk { background:#2a2116; color:#cbb994; font-family:var(--brush); font-size:28px; border:3px double #cbb994; }
.fate .f { background:#faf5e8; border:2px solid #cbb994; transform:rotateY(180deg); }
.fate .f b { font-family:var(--brush); font-size:34px; font-weight:400; }
.fate.pick .f { border-color:#9a2b1a; box-shadow:0 0 0 3px #9a2b1a55; }
.stampzone { display:flex; justify-content:center; margin:18px 0; min-height:150px; align-items:center; }
.stamp { width:120px; height:120px; border:5px solid #b3301c; color:#b3301c; font-family:var(--brush); font-size:30px; line-height:1.1; display:flex; align-items:center; justify-content:center; text-align:center; border-radius:8px; transform:rotate(-6deg); opacity:0; }
.stamp.on { animation:stamp .5s cubic-bezier(.3,1.6,.5,1) forwards; }
@keyframes stamp { 0% { opacity:0; transform:scale(2.4) rotate(-6deg); filter:blur(4px); } 60% { opacity:1; transform:scale(.94) rotate(-6deg); filter:blur(0); } 100% { opacity:.92; transform:scale(1) rotate(-6deg); } }
.hopae { margin:6px auto 0; width:260px; background:linear-gradient(170deg,#c9a776,#a8844f); border-radius:14px 14px 10px 10px; padding:22px 18px 18px; color:#2a1d0c; text-align:center; position:relative; box-shadow:0 14px 30px #0005; }
.hopae:before { content:""; position:absolute; top:9px; left:50%; width:10px; height:10px; margin-left:-5px; border-radius:50%; background:#f1e8d3; }
.hopae .vn { font-family:var(--brush); font-size:38px; line-height:1.15; }
.summary { display:grid; grid-template-columns:110px 1fr; gap:6px 12px; font-size:13.5px; margin-top:14px; }
.summary dt { color:#7a6a4c; } .summary dd { color:#2a2116; }
.death { position:fixed; inset:0; z-index:70; background:#0b0a08f2; display:flex; align-items:center; justify-content:center; padding:16px; }
.death .stone { width:min(460px,100%); background:#1a1915; border:1px solid #3a3528; border-radius:18px; padding:26px; text-align:center; color:#ede5d1; }

/* 폰 */
@media (max-width: 900px) {
  .body { padding:0; gap:0; flex-direction:column; }
  .rail, .chat .people, .prof .bookmark { display:none; }
  .top { height:50px; padding:0 12px; gap:8px; }
  .logo { font-size:21px; }
  .clock .full { display:none; }
  .prof { width:auto; position:static; }
  .prof .inner { display:none; }
  .prof.open .inner { opacity:1 !important; pointer-events:auto !important; display:flex; position:fixed; inset:50px 0 66px 0; z-index:40; width:auto; background:var(--bg); padding:12px; overflow-y:auto; opacity:1; pointer-events:auto; }
  .pstat { display:block; padding:8px 12px 0; flex:none; }
  .pstat .pc { background:var(--p1); border-radius:14px; padding:8px 12px; display:flex; flex-direction:column; gap:6px; }
  .mini { display:grid; grid-template-columns:repeat(5,1fr); gap:6px; }
  .mini div { font-size:10.5px; color:var(--mu); }
  .mini div.low { color:var(--red); }
  .mini i { display:block; height:5px; border-radius:3px; background:var(--p3); overflow:hidden; margin-top:3px; }
  .mini i b { display:block; height:100%; }
  .center { padding:10px 12px 150px; flex:1; }
  .chat { position:fixed; left:0; right:0; bottom:66px; width:auto; height:74px; border-radius:16px 16px 0 0; z-index:30; transition:height .25s ease; box-shadow:0 -8px 24px #0006; }
  .chat.open { height:min(70dvh,560px); }
  .drawer-handle { display:block; padding:6px 0 0; }
  .drawer-handle i { display:block; width:36px; height:4px; border-radius:2px; background:var(--dim); margin:0 auto; }
  .chat:not(.open) .ctabs, .chat:not(.open) .say { display:none; }
  .chat:not(.open) .msgs { overflow:hidden; justify-content:flex-end; padding-top:4px; }
  .chat:not(.open) .msgs > * { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; flex:none; }
  .mobonly { display:inline-flex; align-self:flex-end; }
  .pnav { display:grid; grid-template-columns:repeat(5,1fr); position:fixed; left:0; right:0; bottom:0; height:66px; background:var(--p1); border-top:1px solid var(--ln); padding-top:7px; z-index:35; }
  .pnav button { position:relative; display:flex; flex-direction:column; align-items:center; gap:2px; color:var(--mu); font-size:11px; }
  .pnav button svg { width:23px; height:23px; stroke:currentColor; fill:none; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; }
  .pnav button.on { color:var(--ink); } .pnav button.on svg { stroke:var(--gold); }
  .pnav .badge { top:-3px; right:calc(50% - 22px); }
  .board { gap:4px; padding:6px; }
  .cell { padding:4px 5px; aspect-ratio:.82; border-radius:8px; }
  .cell .cn { font-size:10.5px; } .cell .cp { display:none; }
  .cell .token { width:18px; height:18px; font-size:10px; right:4px; bottom:4px; }
  .item { grid-template-columns:34px 1fr auto; gap:10px; padding:10px 12px; }
  .item .ico { width:34px; height:34px; font-size:16px; }
  .book { padding:24px 20px 20px 34px; }
  .book h1 { font-size:28px; }
  .fate { width:96px; height:140px; } .fate .f b { font-size:24px; }
}
