:root {
  --bg: #0a0908;
  --bg2: #12100e;
  --paper: #efe6d6;
  --gold: #c4a46a;
  --gold2: #e8d5a3;
  --mute: #9a8f7e;
  --line: rgba(196,164,106,.28);
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { background: var(--bg); color: var(--paper); }
body {
  font-family: "Noto Serif KR", "Noto Sans KR", serif;
  font-weight: 400; letter-spacing: .02em; line-height: 2.05;
}
a { color: var(--gold); text-decoration: none; }
.wrap { width: min(740px, calc(100% - 48px)); margin: 0 auto; }
.kicker { letter-spacing: .42em; font-size: 11px; color: var(--gold); text-transform: uppercase; }
nav.top {
  position: sticky; top: 0; z-index: 10;
  backdrop-filter: blur(16px);
  background: rgba(10,9,8,.86);
  border-bottom: 1px solid var(--line);
}
nav.top .bar {
  width: min(740px, calc(100% - 48px));
  margin: 0 auto; display: flex; justify-content: space-between;
  gap: 16px; padding: 14px 0; font-size: 12px; letter-spacing: .16em;
  font-family: "Noto Sans KR", sans-serif;
}
nav.top a { color: var(--mute); }
nav.top a:hover { color: var(--gold2); }
header.ch {
  padding: 72px 0 36px; border-bottom: 1px solid var(--line); margin-bottom: 40px;
}
header.ch h1 {
  font-family: "Cormorant Garamond", "Noto Serif KR", serif;
  font-weight: 500; font-size: clamp(36px, 6vw, 56px);
  letter-spacing: .14em; margin: 12px 0 10px;
}
.meta { color: var(--mute); font-size: 13px; letter-spacing: .12em; font-family: "Noto Sans KR", sans-serif; }
article.prose p { margin: 0 0 1.35em; font-size: 17.5px; color: #e8dcc8; }
article.prose p.break { text-align: center; letter-spacing: .4em; color: var(--gold); margin: 2.2em 0; }
.scene-chat-trigger { display:block; margin:-12px 0 24px auto; border:0; background:transparent; color:var(--gold); cursor:pointer; font:11px/1.4 "Noto Sans KR",sans-serif; letter-spacing:.08em; opacity:.62; }
.scene-chat-trigger:hover { opacity:1; color:var(--gold2); }
.scene-chat-panel { position:fixed; inset:0; z-index:140; display:grid; place-items:center; margin:0; padding:18px; background:rgba(0,0,0,.82); backdrop-filter:blur(8px); font-family:"Noto Sans KR",sans-serif; }
.scene-chat-panel[hidden] { display:none; }
.scene-chat-window { width:min(1000px,calc(100vw - 36px)); height:min(820px,calc(100vh - 36px)); display:flex; flex-direction:column; overflow:hidden; padding:20px; border:1px solid var(--line); border-radius:14px; background:#100e0c; box-shadow:0 24px 80px rgba(0,0,0,.62); }
.scene-chat-window > header, .scene-chat-window > footer, .scene-chat-options, .scene-chat-compose, .scene-admin-panel > header, .scene-admin-auth, .scene-admin-actions { display:flex; align-items:center; gap:10px; }
.scene-chat-window > header { justify-content:space-between; margin-bottom:10px; }
.scene-chat-window > header strong { display:block; color:var(--gold2); font-size:15px; }
.scene-chat-window > header span { display:block; color:var(--mute); font-size:11px; margin-top:3px; }
.scene-chat-panel button, .scene-chat-panel select, .scene-chat-panel textarea, .scene-admin-panel button, .scene-admin-panel input, .scene-admin-panel textarea { border:1px solid var(--line); border-radius:8px; background:#090807; color:var(--paper); padding:9px 10px; font:12px/1.4 "Noto Sans KR",sans-serif; }
.scene-chat-panel button, .scene-admin-panel button { cursor:pointer; color:var(--gold2); }
.scene-chat-window > header button { border:0; font-size:20px; background:transparent; }
.scene-chat-context { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:11px; }
.scene-chat-context span { padding:5px 8px; border-radius:999px; background:rgba(196,164,106,.08); color:var(--mute); font-size:10px; }
.scene-chat-context b { color:var(--gold2); }
.scene-temperature-lock { display:inline-flex; align-items:center; gap:6px; margin-left:auto; padding:5px 9px; border:1px solid rgba(196,164,106,.28); border-radius:999px; color:var(--gold2); font-size:10px; cursor:pointer; }
.scene-temperature-lock input { accent-color:var(--gold); }
.scene-chat-options { align-items:flex-end; flex-wrap:wrap; }
.scene-chat-options label { flex:1 1 190px; color:var(--mute); font-size:10px; }
.scene-chat-options select { display:block; width:100%; margin-top:4px; }
.scene-chat-presets { display:flex; flex-wrap:wrap; gap:7px; margin:12px 0; }
.scene-chat-presets .scene-preset { border-radius:999px; padding:7px 11px; color:var(--mute); }
.scene-chat-presets .scene-preset.active { border-color:var(--gold); background:var(--gold); color:#17120a; }
.scene-chat-presets .scene-preset.crazy { border-color:rgba(212,95,76,.55); color:#ef9a8d; }
.scene-chat-presets .scene-preset.crazy.active { background:#a83e31; border-color:#d45f4c; color:white; }
.scene-chat-messages { flex:1; min-height:240px; overflow:auto; padding:12px; border:1px solid rgba(196,164,106,.16); border-radius:9px; background:#090807; }
.scene-chat-empty { color:var(--mute); font-size:12px; text-align:center; padding:46px 10px; }
.scene-message { max-width:88%; margin:0 0 12px; padding:10px 12px; border-radius:10px; background:#17130f; }
.scene-message.user { margin-left:auto; background:#292014; }
.scene-message strong { color:var(--gold); font-size:10px; }
.scene-message p { margin:4px 0 0!important; color:#e8dcc8!important; font-size:13px!important; line-height:1.8!important; }
.scene-chat-thinking { min-width:210px; animation:scene-thinking-in .24s ease-out both; }
.scene-typing { display:flex; align-items:center; gap:5px; min-height:27px; }
.scene-typing span { width:7px; height:7px; border-radius:50%; background:var(--gold); animation:scene-typing-dot 1.05s infinite ease-in-out; }
.scene-typing span:nth-child(2) { animation-delay:.14s; }
.scene-typing span:nth-child(3) { animation-delay:.28s; }
.scene-typing em { margin-left:5px; color:var(--mute); font-size:10px; font-style:normal; animation:scene-thinking-pulse 1.4s infinite ease-in-out; }
.scene-chat-panel.generating [data-temperature-lock], .scene-chat-panel.generating [data-heroine], .scene-chat-panel.generating [data-chat-model], .scene-chat-panel.generating .scene-preset { pointer-events:none; opacity:.52; }
@keyframes scene-typing-dot { 0%,60%,100% { transform:translateY(0); opacity:.3; } 30% { transform:translateY(-5px); opacity:1; } }
@keyframes scene-thinking-pulse { 0%,100% { opacity:.42; } 50% { opacity:.9; } }
@keyframes scene-thinking-in { from { transform:translateY(7px); opacity:0; } to { transform:translateY(0); opacity:1; } }
@media (prefers-reduced-motion:reduce) { .scene-chat-thinking, .scene-typing span, .scene-typing em { animation:none; } .scene-typing span { opacity:.75; } }
.scene-chat-compose { margin-top:10px; align-items:stretch; }
.scene-chat-compose textarea { flex:1; min-height:76px; resize:vertical; }
.scene-chat-compose button { min-width:64px; }
.scene-chat-compose .cancel { color:#ef9a8d; }
.scene-chat-window > footer { justify-content:flex-end; flex-wrap:wrap; margin-top:9px; }
.scene-chat-window > footer span { flex:1 1 250px; color:var(--mute); font-size:10px; }
body.scene-chat-open { overflow:hidden; }
.scene-admin-modal { position:fixed; inset:0; z-index:150; display:none; place-items:center; padding:18px; background:rgba(0,0,0,.86); backdrop-filter:blur(8px); }
.scene-admin-modal.open { display:grid; }
.scene-admin-panel { width:min(1040px,calc(100vw - 36px)); max-height:calc(100vh - 36px); overflow:auto; padding:24px; border:1px solid var(--line); border-radius:14px; background:#100e0c; }
.scene-admin-panel > header { justify-content:space-between; }
.scene-admin-panel h2 { font-size:24px; line-height:1.3; }
.scene-admin-panel > header button { border:0; background:transparent; font-size:24px; }
.scene-admin-help, .scene-admin-status { color:var(--mute); font:12px/1.6 "Noto Sans KR",sans-serif; margin:8px 0 14px; }
.scene-admin-auth input { flex:1; }
.scene-admin-rows { display:grid; gap:12px; margin:16px 0; }
.scene-admin-row { display:grid; grid-template-columns:150px 190px 110px 1fr auto; align-items:end; gap:9px; padding:12px; border:1px solid var(--line); border-radius:9px; }
.scene-admin-row label { color:var(--mute); font:10px/1.4 "Noto Sans KR",sans-serif; }
.scene-admin-row input:not([type="checkbox"]), .scene-admin-row textarea { display:block; width:100%; margin-top:5px; }
.scene-admin-row textarea { min-height:90px; resize:vertical; }
.scene-admin-row .adult-check { align-self:center; }
.scene-admin-actions { justify-content:flex-end; }
.scene-admin-actions .primary { background:var(--gold); color:#17120a; }
.scene-admin-status.error { color:#ef9a8d; }
footer.nav {
  display: flex; justify-content: space-between; gap: 12px;
  padding: 48px 0 80px; border-top: 1px solid var(--line); margin-top: 56px;
  font-family: "Noto Sans KR", sans-serif; font-size: 13px; letter-spacing: .14em;
}
.toc { list-style: none; padding: 12px 0 80px; }
.toc li { border-bottom: 1px solid var(--line); }
.toc a {
  display: grid; grid-template-columns: 52px 1fr; gap: 14px;
  padding: 16px 0; color: #e6dcc8;
}
.toc span { color: var(--gold); font-family: "Cormorant Garamond", serif; font-size: 20px; }
.toc small { display: block; color: var(--mute); font-size: 12px; margin-top: 4px; font-family: "Noto Sans KR", sans-serif; }
.chars { color: var(--gold); font-variant-numeric: tabular-nums; letter-spacing: .08em; }
h2.part {
  font-family: "Cormorant Garamond", serif; font-weight: 500;
  letter-spacing: .2em; color: var(--gold2); margin: 36px 0 8px; font-size: 22px;
}

.novel-tools { display:flex; justify-content:flex-end; margin:-20px 0 24px; }
.button, .edit-episode, .icon-button {
  border:1px solid var(--line); background:#17130f; color:var(--gold2); cursor:pointer;
  font:500 13px/1 "Noto Sans KR",sans-serif; letter-spacing:.06em; border-radius:8px;
}
.button { padding:12px 16px; }
.button:hover, .edit-episode:hover, .icon-button:hover { border-color:var(--gold); background:#211a12; }
.button.primary { background:var(--gold); color:#17120a; border-color:var(--gold); }
.button.ghost { background:transparent; color:var(--mute); }
.button:disabled, .edit-episode:disabled { opacity:.5; cursor:wait; }
.toc li { position:relative; padding-right:64px; }
.edit-episode { position:absolute; right:0; top:50%; transform:translateY(-50%); padding:8px 10px; }
body.editor-open { overflow:hidden; }
.editor-modal { position:fixed; inset:0; z-index:100; display:none; place-items:center; padding:12px; background:rgba(0,0,0,.82); backdrop-filter:blur(8px); }
.editor-modal.open { display:grid; }
.editor-panel { width:calc(100vw - 24px); max-width:none; height:calc(100vh - 24px); height:calc(100dvh - 24px); max-height:none; overflow:auto; background:#100e0c; border:1px solid var(--line); border-radius:14px; box-shadow:0 24px 80px rgba(0,0,0,.6); padding:28px 34px; }
.editor-head, .editor-actions, .revision-head, .proofread-row, .paragraph-tools, .generation-head, .generation-controls { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.editor-head { margin-bottom:22px; }
.editor-head h2 { font-size:28px; line-height:1.2; }
.icon-button { width:38px; height:38px; font-size:24px; }
.editor-fields { display:grid; grid-template-columns:160px minmax(0,1fr); gap:15px; }
.editor-fields label { color:var(--mute); font:12px/1.4 "Noto Sans KR",sans-serif; letter-spacing:.08em; }
.editor-fields label.wide { grid-column:1/-1; }
.editor-fields input, .editor-fields textarea, .proofread-row select, .revision textarea, .generation textarea, .generation input {
  width:100%; margin-top:7px; border:1px solid var(--line); border-radius:8px; background:#090807; color:var(--paper); padding:11px 12px; font:14px/1.7 "Noto Sans KR",sans-serif; outline:none;
}
.editor-fields input:focus, .editor-fields textarea:focus, .proofread-row select:focus, .generation textarea:focus, .generation input:focus { border-color:var(--gold); }
.editor-fields textarea { min-height:62vh; resize:vertical; font-family:"Noto Serif KR",serif; font-size:18px; line-height:2; padding:20px 24px; }
.editor-fields .body-field { font-size:13px; }
.proofread-row { justify-content:flex-start; margin-top:16px; }
.proofread-row select { max-width:560px; margin:0; }
.paragraph-tools { justify-content:flex-start; flex-wrap:wrap; margin-top:12px; padding:12px 14px; border:1px solid var(--line); border-radius:9px; background:#0b0a08; }
.paragraph-tools label, .paragraph-tools span { color:var(--mute); font:12px "Noto Sans KR",sans-serif; }
.paragraph-tools input { width:100px; margin-left:8px; border:1px solid var(--line); border-radius:7px; background:#090807; color:var(--paper); padding:8px 9px; outline:none; }
.paragraph-tools input:focus { border-color:var(--gold); }
.revision { margin-top:18px; padding:16px; border:1px solid var(--line); border-radius:10px; background:#0b0a08; }
.revision-head span { color:var(--mute); font:12px "Noto Sans KR",sans-serif; }
.revision textarea { min-height:240px; resize:vertical; margin:12px 0; }
.generation { margin-top:18px; padding:18px; border:1px solid var(--line); border-radius:10px; background:#0b0a08; }
.generation-head span, .generation-hint { color:var(--mute); font:12px "Noto Sans KR",sans-serif; }
.model-optimization { display:inline-flex; margin-top:12px; padding:7px 10px; border:1px solid rgba(196,164,106,.32); border-radius:999px; color:var(--gold2); background:rgba(196,164,106,.07); font:12px "Noto Sans KR",sans-serif; }
.preset-group { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-top:14px; }
.preset-group > span { min-width:68px; color:var(--mute); font:12px "Noto Sans KR",sans-serif; }
.preset-button { border:1px solid var(--line); border-radius:999px; background:#15120e; color:var(--mute); padding:9px 13px; cursor:pointer; font:500 12px/1.2 "Noto Sans KR",sans-serif; }
.preset-button:hover { border-color:var(--gold); color:var(--gold2); }
.preset-button.active { border-color:var(--gold); background:var(--gold); color:#17120a; box-shadow:0 0 0 2px rgba(196,164,106,.16); }
.preset-button small { display:block; margin-top:3px; font-size:10px; opacity:.75; }
.preset-button.crazy.active { border-color:#d45f4c; background:#a83e31; color:#fff1e8; box-shadow:0 0 0 2px rgba(212,95,76,.2); }
.preset-admin-toggle { margin-top:12px; border:0; background:transparent; color:var(--gold); cursor:pointer; font:12px "Noto Sans KR",sans-serif; }
.preset-admin { margin-top:12px; padding:16px; border:1px solid var(--line); border-radius:10px; background:#12100e; }
.preset-admin-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:14px; }
.preset-admin-grid label, .preset-admin-actions label { color:var(--mute); font:12px/1.4 "Noto Sans KR",sans-serif; }
.preset-admin-grid textarea { min-height:110px; font-size:13px; line-height:1.65; resize:vertical; }
.preset-admin-actions { display:flex; align-items:flex-end; flex-wrap:wrap; gap:10px; margin-top:14px; }
.preset-admin-actions label { flex:1 1 240px; }
.preset-admin-actions input { width:100%; margin-top:7px; border:1px solid var(--line); border-radius:8px; background:#090807; color:var(--paper); padding:11px 12px; outline:none; }
.generation > label { display:block; margin-top:14px; color:var(--mute); font:12px/1.4 "Noto Sans KR",sans-serif; letter-spacing:.08em; }
.generation > label textarea { min-height:130px; resize:vertical; font-size:15px; }
.generation-controls { justify-content:flex-start; flex-wrap:wrap; margin-top:12px; }
.generation-controls label { color:var(--mute); font:12px "Noto Sans KR",sans-serif; }
.generation-controls input { width:150px; margin:0 0 0 8px; padding:9px 10px; }
.generation-result { margin-top:18px; padding-top:18px; border-top:1px solid var(--line); }
.generation-result textarea { min-height:300px; resize:vertical; margin:12px 0; font-family:"Noto Serif KR",serif; font-size:17px; line-height:1.9; }
.generation-cancel { color:#e58c7e; border-color:rgba(229,140,126,.45); }
.editor-status { min-height:26px; margin:14px 0 8px; color:var(--gold2); font:13px "Noto Sans KR",sans-serif; }
.editor-status.error { color:#e58c7e; }
.editor-actions { justify-content:flex-end; border-top:1px solid var(--line); padding-top:18px; }
@media (max-width:640px) {
  .editor-modal { padding:0; }
  .editor-panel { max-height:100vh; min-height:100vh; border-radius:0; padding:18px; }
  .editor-fields { grid-template-columns:1fr; }
  .editor-fields label.wide { grid-column:auto; }
  .proofread-row { align-items:stretch; flex-direction:column; }
  .paragraph-tools { align-items:stretch; flex-direction:column; }
  .generation-head { align-items:flex-start; flex-direction:column; }
  .preset-group > span { width:100%; }
  .preset-admin-grid { grid-template-columns:1fr; }
  .toc li { padding-right:52px; }
  .editor-fields textarea { min-height:60vh; padding:15px; font-size:16px; }
  .scene-chat-panel { padding:0; }
  .scene-chat-window { width:100vw; height:100vh; max-height:100vh; padding:14px; border-radius:0; }
  .scene-chat-messages { min-height:180px; }
  .scene-chat-options, .scene-chat-compose { align-items:stretch; flex-direction:column; }
  .scene-chat-compose button { min-height:42px; }
  .scene-admin-modal { padding:0; }
  .scene-admin-panel { width:100vw; min-height:100vh; max-height:100vh; border-radius:0; padding:16px; }
  .scene-admin-row { grid-template-columns:1fr; }
}
