/* AI 실시간 스토리 화면 (예전 「임계점」 단독 화면 재현) — body.aiLive 일 때만 적용 */
body.aiLive .storyCard{background:none;border:0;box-shadow:none;overflow:visible;border-radius:0}
body.aiLive #visual,body.aiLive .storyBody,body.aiLive #continuity,body.aiLive #timerBox,body.aiLive #diceBox,
body.aiLive #outcomePanel,body.aiLive #choiceBox,body.aiLive #customArea,body.aiLive #aiRoutePanel,body.aiLive #variantText{display:none!important}
#liveView{padding:4px 2px 0}
body.aiLive.liveIntro .storyModuleMeters{display:none}
@media (max-width:760px){#liveView{padding:4px 12px 0}}

/* 상태 막대 모듈 (meters) — 다른 스토리에서도 쓸 수 있도록 범위 없이 둔다 */
.storyModuleMeters{position:sticky;top:58px;z-index:20;display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;margin:0 2px 14px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#050d15f2}
.storyModuleMeters[hidden]{display:none}
.storyModuleMeters .meterHead{display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}
.storyModuleMeters .meterHead span{color:var(--text);font-weight:700}
.storyModuleMeters .meterTrack{height:8px;margin-top:5px;border-radius:6px;background:#ffffff14;overflow:hidden}
.storyModuleMeters .meterTrack i{display:block;height:100%;border-radius:6px;transition:width .6s ease,background .6s}
.storyModuleMeters .meterPill{font-size:12px;color:var(--muted)}
.storyModuleMeters .meterPill b{color:var(--text);margin:0 2px}
.storyModuleMeters .meterFlash{animation:meterFlash .9s}
@keyframes meterFlash{0%{box-shadow:0 0 0 0 #70ddff66;border-radius:8px}100%{box-shadow:0 0 0 10px #70ddff00;border-radius:8px}}
@media (max-width:760px){.storyModuleMeters{margin:0 12px 14px}}
@media (max-width:520px){.storyModuleMeters{position:static;gap:6px 10px;padding:10px}}
.notebookList{margin:0;padding-left:20px}
.notebookList li{margin:0 0 10px;line-height:1.6;font-size:14px}
.notebookList li small{display:block;color:#9eb6c6;font-family:ui-monospace,monospace;font-size:11px}

/* 카드와 글 */
body.aiLive #liveView .card{border-radius:14px;padding:20px;margin:0 0 14px;background:var(--panel);box-shadow:none}
.liveEyebrow{font-family:ui-monospace,monospace;font-size:11px;letter-spacing:.14em;color:var(--cyan);text-transform:uppercase}
.liveCenter{text-align:center;margin:8px 0 14px}
.liveHero h1{font-size:40px;margin:6px 0 10px;letter-spacing:.06em}
.liveLead{color:var(--muted);line-height:1.8;margin:0}
.liveBrief .liveEyebrow{color:var(--gold)}
.liveBrief p,.liveRules li{line-height:1.85;color:#d7e6ef;margin:8px 0 0}
.liveRules ul{margin:6px 0 0;padding-left:18px}
.livePrimary{display:block;width:100%;padding:15px;border:1px solid #70ddff88;border-radius:12px;background:linear-gradient(180deg,#0f3a4f,#0a2635);color:#fff;font:inherit;font-weight:700;cursor:pointer}
.livePrimary:hover{border-color:var(--cyan)}
.livePrimary:disabled{opacity:.5;cursor:default}
.liveGhost{background:transparent;border:1px solid #ffffff2a;color:#cfe3ee;border-radius:9px;padding:9px 12px;font:inherit;cursor:pointer}
.liveWide{display:block;width:100%;margin-top:12px;padding:12px}

/* 역할 선택 */
.liveRoleList{display:grid;gap:12px}
.liveRole{display:block;width:100%;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:18px;color:var(--text);font:inherit;cursor:pointer;transition:.15s}
.liveRole:hover{border-color:var(--cyan);transform:translateY(-1px)}
.liveRole .liveEyebrow{color:var(--gold)}
.liveRole b{display:block;font-size:19px;margin:6px 0 4px}
.liveRole span{display:block;color:var(--muted);font-size:14px;line-height:1.6}
.liveRole em{display:block;margin-top:10px;font-style:normal;color:#cfe3ee;font-size:14px;line-height:1.7}

/* 장면 */
.liveMeta{font-family:ui-monospace,monospace;font-size:11px;color:var(--muted);letter-spacing:.08em}
.liveScene h2,.liveEnding h2{font-size:24px;margin:8px 0 12px}
.liveProse{font-family:Georgia,"Nanum Myeongjo","Noto Serif KR",serif;font-size:17px;line-height:1.95;color:#eaf4fa;white-space:pre-line}
.livePrev{border-left:2px solid var(--violet);padding:4px 0 4px 14px;margin:6px 0 18px}
.livePrev .liveEyebrow{color:var(--violet)}
.livePrev .liveProse{font-size:15px;color:#cdbff5}
.liveEvent{margin:10px 0;padding:10px 12px;border:1px dashed #ffd27b66;border-radius:9px;color:var(--warn);font-size:13px;line-height:1.6}
.liveChoices{display:grid;gap:9px;margin:0 0 14px}
.liveChoice{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;padding:15px 14px;border:1px solid #ffffff20;border-radius:12px;background:#081521;color:#fff;font:inherit;cursor:pointer;line-height:1.55;transition:.15s}
.liveChoice:hover{border-color:#70ddff88;background:#0b1d2c}
.liveChoice:disabled{opacity:.45;cursor:default}
.liveTag{flex:0 0 auto;font-family:ui-monospace,monospace;font-size:11px;padding:3px 7px;border-radius:6px;border:1px solid #ffffff2a;color:var(--muted)}
.liveTag[data-t="명령"]{color:#9fd3ff;border-color:#9fd3ff55}.liveTag[data-t="확인"]{color:var(--good);border-color:#7fe4a955}
.liveTag[data-t="설득"]{color:var(--violet);border-color:#b69aff55}.liveTag[data-t="지연"]{color:var(--warn);border-color:#ffd27b55}
.liveTag[data-t="불복"]{color:var(--bad);border-color:#ff8ca055}.liveTag[data-t="행동"]{color:var(--gold);border-color:#d6b36a55}
.liveLoading{display:flex;gap:14px;align-items:center;padding:16px;border:1px solid #b69aff44;border-radius:12px;background:#0d1221;margin-bottom:14px;line-height:1.6}
.liveSpinner{width:22px;height:22px;border-radius:50%;border:3px solid #b69aff33;border-top-color:var(--violet);animation:liveSpin 1s linear infinite;flex:0 0 auto}
@keyframes liveSpin{to{transform:rotate(360deg)}}
.liveError{padding:14px;border:1px solid #ff8ca066;border-radius:12px;color:#ffc2cc;background:#1a0b10;margin-bottom:14px;line-height:1.6}
.liveFree{margin-top:4px}.liveFree label{display:block;margin-bottom:8px}
.liveFreeRow{display:flex;gap:8px}
.liveFreeRow input{flex:1;min-width:0;padding:13px;border-radius:10px;border:1px solid #344c60;background:#071521;color:#e6f3ff;font:inherit}
.liveFreeRow .livePrimary{width:auto;padding:13px 18px}

/* 결말 */
.liveEnding>.liveEyebrow{color:var(--gold)}
.liveEpilogue{margin:18px 0 0;padding-top:14px;border-top:1px solid var(--line);color:var(--muted);line-height:1.8;font-size:14px}
.liveStats{display:flex;gap:16px;flex-wrap:wrap;margin-top:14px;font-size:13px;color:var(--muted)}
.liveStats b{color:var(--text)}
.liveEndActions{display:grid;gap:10px}
@media (max-width:520px){.liveHero h1{font-size:32px}.liveProse{font-size:16px}}

.liveCaret{display:inline-block;width:.55em;height:1.05em;margin-left:2px;vertical-align:-2px;background:var(--cyan);opacity:.75;animation:liveBlink 1s steps(2) infinite}
@keyframes liveBlink{50%{opacity:0}}
