:root{--ink:#f6efe3;--ink-dim:#f6efe3b8;--glass:#1c221fad;--glass-strong:#181d1bdb;--glass-line:#fff4de29;--accent:#e8c27a;--bg:#1c2622;--safe-bottom:env(safe-area-inset-bottom,0px);--safe-top:env(safe-area-inset-top,0px);color:var(--ink);-webkit-tap-highlight-color:transparent;font-family:Pretendard,Apple SD Gothic Neo,Malgun Gothic,Noto Sans KR,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{background:var(--bg);overscroll-behavior:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;margin:0;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}input{font:inherit;-webkit-user-select:text;user-select:text}.stage{touch-action:none;transition:filter .5s;position:fixed;inset:0}.stage.is-blurred{filter:blur(6px)brightness(.7)}.stage canvas{touch-action:none}.fade{opacity:0;pointer-events:none;z-index:90;background:#0e1311;transition:opacity .28s;position:fixed;inset:0}.fade.is-on{opacity:1}.loading{z-index:100;background:var(--bg);flex-direction:column;justify-content:center;align-items:center;transition:opacity .45s;display:flex;position:fixed;inset:0}.loading.is-leaving{opacity:0}.loading-icon{color:#a8987a;margin-bottom:18px}.loading-title{letter-spacing:.08em;color:#f3e6c9;margin:0;font-size:30px;font-weight:800}.loading-sub{color:var(--ink-dim);margin:12px 0 28px;font-size:14px}.loading-dots{gap:6px;display:flex}.loading-dots span{background:#a8987a;border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite dot}.loading-dots span:nth-child(2){animation-delay:.15s}.loading-dots span:nth-child(3){animation-delay:.3s}@keyframes dot{0%,80%,to{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.entry{z-index:80;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0;overflow-y:auto}.entry-card{background:var(--glass-strong);border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(14px);border-radius:24px;width:min(400px,100%);padding:28px 22px 22px;animation:.45s ease-out rise;box-shadow:0 20px 60px #00000059}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}.entry-eyebrow{letter-spacing:.06em;color:var(--accent);margin:0;font-size:12px}.entry-title{letter-spacing:.04em;margin:6px 0 4px;font-size:28px;font-weight:800}.entry-desc{color:var(--ink-dim);margin:0 0 22px;font-size:14px}.entry-label{color:var(--ink-dim);margin:0 0 8px;font-size:13px;font-weight:700;display:block}.entry-input-row{gap:8px;display:flex}.entry-input{border:1px solid var(--glass-line);min-width:0;height:48px;color:var(--ink);background:#ffffff12;border-radius:14px;outline:none;flex:1;padding:0 14px;font-size:16px}.entry-input:focus{border-color:var(--accent)}.entry-input::placeholder{color:#f6efe373}.entry-dice{border:1px solid var(--glass-line);background:#ffffff12;border-radius:14px;flex:none;place-items:center;width:48px;height:48px;display:grid}.entry-hint{color:#f6efe38c;margin:8px 2px 20px;font-size:12px}.entry-hint-error{color:#ff9a8a}.entry-avatars{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:22px;display:grid}.entry-avatar{border:2px solid var(--glass-line);background:#ffffff0d;border-radius:18px;flex-direction:column;align-items:center;gap:4px;padding:12px 8px 10px;font-size:14px;font-weight:700;transition:border-color .15s,background .15s,transform .15s;display:flex}.entry-avatar.is-selected{border-color:var(--accent);background:#e8c27a24;transform:translateY(-2px)}.entry-submit{background:var(--accent);color:#2a2216;border:0;border-radius:16px;width:100%;height:52px;font-size:16px;font-weight:800}.entry-submit:disabled{color:var(--ink-dim);cursor:default;background:#ffffff1f}.hud{pointer-events:none;z-index:20;position:fixed;inset:0}.hud>*{pointer-events:auto}.topbar{left:12px;right:12px;top:calc(12px + var(--safe-top));pointer-events:none;justify-content:space-between;gap:8px;display:flex;position:absolute}.topbar>*{pointer-events:auto}.pill{border:1px solid var(--glass-line);background:var(--glass);-webkit-backdrop-filter:blur(12px);white-space:nowrap;border-radius:999px;align-items:center;gap:10px;height:46px;padding:0 18px;font-size:14px;display:flex}.pill strong{font-size:15px;font-weight:800}.pill-divider{background:var(--glass-line);width:1px;height:16px}.pill-icon{justify-content:center;width:46px;padding:0}.topbar-right{flex:none;gap:6px;display:flex}.sound-wrap{position:relative}.sound-button.is-open{color:var(--accent);border-color:var(--accent)}.sound-menu{border:1px solid var(--glass-line);background:var(--glass-strong);-webkit-backdrop-filter:blur(14px);border-radius:18px;width:232px;padding:12px;animation:.18s ease-out rise;position:absolute;top:54px;right:0;box-shadow:0 12px 36px #00000059}.sound-menu-title{color:var(--ink-dim);margin:0 2px 8px;font-size:12px;font-weight:700}.sound-options{grid-template-columns:1fr 1fr;gap:6px;display:grid}.sound-option{border:1px solid var(--glass-line);background:#ffffff0d;border-radius:12px;align-items:center;gap:6px;height:40px;padding:0 10px;font-size:13.5px;font-weight:600;display:flex}.sound-option.is-selected{border-color:var(--accent);color:var(--accent);background:#e8c27a24}.sound-mute{width:100%;height:38px;color:var(--ink-dim);background:#ffffff14;border:0;border-radius:12px;justify-content:center;align-items:center;gap:6px;margin-top:10px;font-size:13px;font-weight:600;display:flex}.sound-mute.is-on{color:#ffb3a7;background:#ff9a8a29}.pill-icon.is-muted{color:#f6efe380}.topbar-left{flex-wrap:wrap;align-items:flex-start;gap:6px;min-width:0;display:flex}.pill-room{height:34px;color:var(--ink-dim);gap:7px;padding:0 12px;font-size:12.5px}.room-dot{background:#7bd389;border-radius:50%;width:7px;height:7px;box-shadow:0 0 6px #7bd389}.hint{top:calc(70px + var(--safe-top));text-align:center;color:#fff;text-shadow:0 1px 6px #0009;width:max-content;max-width:calc(100vw - 32px);margin:0;padding:0 16px;font-size:13px;animation:.4s ease-out fadein;position:absolute;left:50%;transform:translate(-50%)}.actionbar{left:12px;right:12px;bottom:calc(12px + var(--safe-bottom));border:1px solid var(--glass-line);background:var(--glass);-webkit-backdrop-filter:blur(12px);border-radius:28px;grid-template-columns:repeat(4,1fr);max-width:520px;margin:0 auto;padding:6px;display:grid;position:absolute}.actionbar-5{grid-template-columns:repeat(5,1fr)}.actionbar-5 .action{font-size:12px}.action{white-space:nowrap;background:0 0;border:0;border-radius:22px;flex-direction:column;align-items:center;gap:4px;padding:10px 2px 8px;font-size:12.5px;font-weight:600;transition:background .15s;display:flex}.action:active,.action.is-active{color:var(--accent);background:#ffffff1a}.emote-fab{right:16px;bottom:calc(100px + var(--safe-bottom));border:1px solid var(--glass-line);background:var(--glass);-webkit-backdrop-filter:blur(12px);border-radius:50%;place-items:center;width:52px;height:52px;display:grid;position:absolute}.emote-fab.is-active{color:var(--accent);border-color:var(--accent)}.emote-sheet{right:16px;bottom:calc(162px + var(--safe-bottom));flex-direction:column;gap:6px;animation:.15s ease-out fadein;display:flex;position:absolute}.emote-item{border:1px solid var(--glass-line);background:var(--glass-strong);border-radius:999px;align-items:center;gap:8px;height:44px;padding:0 16px 0 12px;font-size:14px;font-weight:600;display:flex}.emote-emoji{font-size:20px}.sheet{left:12px;right:12px;bottom:calc(96px + var(--safe-bottom));border:1px solid var(--glass-line);background:var(--glass-strong);-webkit-backdrop-filter:blur(14px);border-radius:22px;max-width:520px;margin:0 auto;padding:16px;animation:.2s ease-out rise;position:absolute}.sheet-header{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.sheet-header h2{margin:0;font-size:16px}.sheet-close{background:#ffffff14;border:0;border-radius:50%;place-items:center;width:36px;height:36px;display:grid}.spot-list{grid-template-columns:1fr 1fr;gap:8px;margin:0;padding:0;list-style:none;display:grid}.spot{text-align:left;border:1px solid var(--glass-line);background:#ffffff0d;border-radius:14px;flex-direction:column;align-items:flex-start;gap:4px;width:100%;height:100%;padding:12px;display:flex}.spot strong{font-size:14px}.spot span{color:var(--ink-dim);font-size:12px}.spot:active{background:#e8c27a29}.toast{left:50%;bottom:calc(110px + var(--safe-bottom));background:var(--glass-strong);border:1px solid var(--glass-line);white-space:nowrap;border-radius:999px;padding:10px 18px;font-size:14px;animation:.2s ease-out fadein;position:absolute;transform:translate(-50%)}.nametag{color:#2e2a24;white-space:nowrap;background:#faf4e6eb;border-radius:999px;align-items:center;gap:6px;padding:3px 12px 3px 4px;font-size:13px;font-weight:700;display:flex;box-shadow:0 2px 8px #0003}.nametag-other{background:#faf4e6c7;padding:3px 11px;font-size:12px;font-weight:600}.nametag-me{color:#fff;background:#6b7f5e;border-radius:50%;place-items:center;width:20px;height:20px;font-size:11px;display:grid}.btn{white-space:nowrap;border:1px solid #0000;border-radius:14px;justify-content:center;align-items:center;gap:6px;height:48px;padding:0 18px;font-size:15px;font-weight:700;display:inline-flex}.btn-primary{background:var(--accent);color:#2a2216}.btn-secondary{border-color:var(--glass-line);background:#ffffff1a}.btn-ghost{border-color:var(--glass-line);background:#ffffff0f}.btn-small{border-radius:11px;height:36px;padding:0 12px;font-size:13px}.btn:active{filter:brightness(.92)}.sheet-tall{flex-direction:column;max-height:min(62vh,560px);display:flex}.sheet-sub{color:var(--ink-dim);margin:3px 0 0;font-size:12px}.sheet-link{color:var(--accent);background:0 0;border:0;padding:6px 0;font-size:14px;font-weight:600}.sheet-note{text-align:center;color:#f6efe380;margin:10px 0 0;font-size:12px}.sheet-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:14px;display:grid}.book-tabs{background:#ffffff0f;border-radius:14px;grid-template-columns:repeat(3,1fr);gap:4px;margin-bottom:10px;padding:4px;display:grid}.book-tab{height:36px;color:var(--ink-dim);background:0 0;border:0;border-radius:10px;justify-content:center;align-items:center;gap:5px;font-size:13.5px;font-weight:700;display:flex}.book-tab span{opacity:.7;font-size:11px;font-weight:600}.book-tab.is-active{color:var(--accent);background:#e8c27a33}.book-list{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;flex-direction:column;gap:6px;margin:0 -4px;padding:0 4px;list-style:none;display:flex;overflow-y:auto}.book-row{text-align:left;background:#ffffff0a;border:1px solid #0000;border-radius:14px;align-items:center;gap:12px;width:100%;padding:8px 10px 8px 6px;display:flex}.book-row:active{background:#e8c27a29;border-color:#e8c27a66}.book-rank{text-align:center;width:26px;color:var(--accent);flex:none;font-size:17px;font-weight:800}.book-thumb{object-fit:cover;background:#3a3530;border-radius:4px;flex:none;width:40px;height:56px;box-shadow:0 2px 8px #00000059}.book-meta{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.book-meta strong{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:14px;line-height:1.35;display:-webkit-box;overflow:hidden}.book-meta span{color:var(--ink-dim);font-size:12px}.book-row-action{color:var(--accent);flex:none}.book-detail{align-items:flex-start;gap:16px;display:flex}.book-detail-cover{border-radius:6px;flex:none;width:104px;box-shadow:0 6px 20px #00000073}.book-detail-meta{min-width:0;padding-top:4px}.book-detail-meta h2{word-break:keep-all;margin:8px 0 6px;font-size:18px;line-height:1.4}.book-detail-meta p{color:var(--ink-dim);margin:0;font-size:14px}.book-badge{color:var(--accent);background:#e8c27a2e;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:800;display:inline-block}.reading-vignette{background:radial-gradient(at 50% 45%,#0000 45%,#0a08068c 100%);animation:.6s ease-out fadein;position:absolute;inset:0;pointer-events:none!important}.reading-bar{left:12px;right:12px;bottom:calc(12px + var(--safe-bottom));border:1px solid var(--glass-line);background:var(--glass-strong);-webkit-backdrop-filter:blur(14px);border-radius:22px;grid-template-columns:auto 1fr;align-items:center;gap:12px;max-width:520px;margin:0 auto;padding:12px;animation:.3s ease-out rise;display:grid;position:absolute}.reading-cover{object-fit:cover;border-radius:4px;flex:none;width:48px;height:68px;box-shadow:0 3px 10px #0006}.reading-meta{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.reading-status{color:var(--accent);font-size:11px;font-weight:700}.reading-meta strong{white-space:nowrap;text-overflow:ellipsis;font-size:14px;overflow:hidden}.reading-meta span:last-child{color:var(--ink-dim);font-size:12px}.reading-actions{grid-column:1/-1;grid-template-columns:1fr 1fr 1.3fr;gap:6px;display:grid}.reading-actions .btn{height:42px}.photo-layer{position:absolute;inset:0;pointer-events:none!important}.photo-layer>*{pointer-events:auto}.photo-frame{border:2px solid #ffffffe6;border-radius:4px;animation:.3s ease-out fadein;position:absolute;box-shadow:0 0 0 100vmax #0a0c0b80;pointer-events:none!important}.photo-caption-preview{text-align:center;color:#fff;text-shadow:0 1px 4px #0009;font-size:13px;font-weight:700;position:absolute;bottom:-30px;left:0;right:0}.photo-count{color:#fff;text-shadow:0 4px 24px #00000073;place-items:center;font-size:96px;font-weight:800;animation:.65s ease-out pop;display:grid;position:absolute;inset:0}@keyframes pop{0%{opacity:0;transform:scale(1.4)}30%{opacity:1}}.photo-flash{background:#fff;animation:.35s ease-out forwards flash;position:absolute;inset:0;pointer-events:none!important}@keyframes flash{0%{opacity:.9}to{opacity:0}}.photo-close{right:16px;top:calc(16px + var(--safe-top));border:1px solid var(--glass-line);background:var(--glass);-webkit-backdrop-filter:blur(12px);border-radius:50%;place-items:center;width:46px;height:46px;display:grid;position:absolute}.photo-close:disabled{opacity:.4}.photo-controls{left:12px;right:12px;bottom:calc(14px + var(--safe-bottom));flex-direction:column;align-items:center;gap:12px;display:flex;position:absolute}.photo-poses{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.photo-pose{border:1px solid var(--glass-line);background:var(--glass);-webkit-backdrop-filter:blur(12px);border-radius:999px;align-items:center;gap:4px;height:36px;padding:0 12px 0 9px;font-size:13px;font-weight:600;display:flex}.photo-pose.is-selected{border-color:var(--accent);color:var(--accent);background:#282218cc}.photo-outfit{margin-right:6px}.photo-outfit.is-selected{color:#f6d2cf;border-color:#eab3b0}.photo-shutter{background:var(--accent);color:#2a2216;border:4px solid #ffffffe6;border-radius:50%;place-items:center;width:72px;height:72px;display:grid;box-shadow:0 6px 20px #00000059}.photo-shutter:active{transform:scale(.94)}.photo-shutter:disabled{filter:grayscale(.6)brightness(.85)}.photo-preview{padding:calc(72px + var(--safe-top)) 16px calc(24px + var(--safe-bottom));background:#0e1210e0;flex-direction:column;justify-content:center;align-items:center;gap:16px;animation:.25s ease-out fadein;display:flex;position:absolute;inset:0}.photo-preview-img{object-fit:contain;-webkit-user-select:auto;user-select:auto;-webkit-touch-callout:default;border-radius:6px;max-width:min(100%,420px);min-height:0;max-height:calc(100% - 90px);box-shadow:0 16px 50px #00000080}.photo-preview-actions{grid-template-columns:1fr 1.4fr;gap:8px;width:min(100%,420px);display:grid}.geulpan-thumb{border-radius:8px;width:100%;display:block;box-shadow:0 4px 14px #00000059}.geulpan-lines{border-left:3px solid var(--accent);word-break:keep-all;flex-direction:column;gap:3px;margin:12px 0 14px;padding:0 0 0 12px;font-size:14px;line-height:1.5;display:flex}.geulpan-entry{width:100%}@keyframes fadein{0%{opacity:0}}@media (width>=720px){.action{font-size:13px}}
