/* style.css — G3 聊天界面 */

:root {
  --bg: #050508; --surface: #0a0a0f; --surface2: #0e0e14;
  --text: #c8c8cc; --text-dim: #6a6a72; --text-bright: #e8e8ec;
  --accent: #8b0000; --accent-glow: rgba(139,0,0,0.4);
  --border: #1a1a20; --gold: #b87c4f; --danger: #5c2e2e;
  --font-main: system-ui, -apple-system, sans-serif;
  --safe-bottom: env(safe-area-inset-bottom, 16px);
}
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font-main);-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}
#app{height:100%;display:flex;flex-direction:column;max-width:480px;margin:0 auto;position:relative}

/* splash */
#splash{position:fixed;inset:0;z-index:100;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center}
#splash-text{font-size:24px;font-weight:300;letter-spacing:6px;color:var(--text-bright);text-align:center;line-height:2}
#splash-sub{margin-top:24px;font-size:13px;color:var(--text-dim);letter-spacing:3px;animation:pulse 3s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.4}50%{opacity:1}}

/* header */
#header{padding:10px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;background:var(--surface);z-index:10}
#day-label{font-size:11px;color:var(--text-dim);letter-spacing:2px}
#day-counter{font-size:22px;font-weight:200;color:var(--text-bright)}
#header-right{display:flex;gap:8px;align-items:center}
#token-btn,#reset-btn{background:none;border:1px solid var(--border);color:var(--text-dim);font-size:11px;padding:3px 8px;border-radius:10px;cursor:pointer}
#token-btn{color:var(--gold)}#reset-btn:hover{border-color:var(--accent);color:var(--accent)}
#progress-bar{height:1px;background:var(--border)}
#progress-fill{height:100%;background:var(--accent);transition:width .6s}

/* main layout */
#main{display:flex;flex-direction:column;height:100%}
#main.hidden{display:none!important}

/* ── 会话列表 ── */
#list-view{flex:1;overflow-y:auto;padding:8px 10px}
#list-intro{text-align:center;padding:14px 0;color:var(--text-dim);font-size:12px;letter-spacing:2px}
.char-card{display:flex;align-items:center;padding:14px 12px;margin-bottom:8px;background:var(--surface);border-radius:14px;cursor:pointer;transition:all .2s;gap:10px}
.char-card:hover{background:var(--surface2)}
.cc-avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.cc-info{flex:1;min-width:0}
.cc-name{font-size:15px;font-weight:500;letter-spacing:1px}
.cc-label{font-size:10px;color:var(--text-dim);margin-left:6px;letter-spacing:2px}
.cc-state{font-size:11px;color:var(--text-dim);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-right{text-align:right;flex-shrink:0}
.cc-msgs{font-size:11px;color:var(--gold);margin-bottom:2px}
.cc-arrow{font-size:14px;color:var(--text-dim)}
.cc-lock{font-size:14px;color:#444}
.char-card.locked{opacity:.6;cursor:default;pointer-events:none}
.char-card.locked:hover{background:var(--surface)}

/* ── 聊天窗口 ── */
#chat-view{display:flex;flex-direction:column;height:100%}
#chat-top{display:flex;align-items:center;padding:8px 10px;background:var(--surface);border-bottom:1px solid var(--border);gap:8px}
#back-btn{background:none;border:none;color:var(--text-dim);font-size:18px;cursor:pointer;padding:4px 8px}
#chat-char-name{font-size:15px;font-weight:500;flex:1}
#chat-msg-left{font-size:10px;color:var(--gold);letter-spacing:1px}
#chat-input{padding:8px 10px calc(8px + var(--safe-bottom));background:var(--surface);border-top:1px solid var(--border)}
#msg-limit-warn{text-align:center;font-size:11px;color:var(--danger);padding:6px 0}
.no-events{text-align:center;color:var(--text-dim);font-size:12px;padding:8px 0}
#end-day-btn{background:none;border:1px solid var(--gold);color:var(--gold);font-size:10px;padding:2px 8px;border-radius:8px;cursor:pointer}

/* chat area */
#chat-area{flex:1;overflow-y:auto;padding:12px 10px;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}
#chat-area::-webkit-scrollbar{width:2px}
#chat-area::-webkit-scrollbar-thumb{background:var(--border);border-radius:1px}
.day-intro{text-align:center;padding:20px 0;color:var(--text-dim);font-size:12px;letter-spacing:2px}

/* bubbles */
.bubble-row{display:flex;align-items:flex-start;margin-bottom:16px;animation:bubIn .3s ease-out}
.bubble-row.user{justify-content:flex-end}
@keyframes bubIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.bub-avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0;margin-right:8px}
.bub-wrap{max-width:80%}
.bub-name{font-size:11px;margin-bottom:2px;padding-left:4px;letter-spacing:1px}
.bub-msg{background:var(--surface);border:1px solid var(--border);border-radius:4px 14px 14px 14px;padding:10px 14px;font-size:14px;line-height:1.7;color:var(--text);letter-spacing:.5px}
.user-bub .bub-msg{background:rgba(139,0,0,0.08);border-color:rgba(139,0,0,0.2);border-radius:14px 4px 14px 14px}

/* options */
#input-area{padding:8px 10px calc(8px + var(--safe-bottom));background:var(--surface);border-top:1px solid var(--border)}
#options-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.opt-btn{padding:7px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:14px;color:var(--text);font-size:13px;cursor:pointer;letter-spacing:.5px;transition:all .2s;font-family:var(--font-main);text-align:left;max-width:90%}
.opt-btn:hover,.opt-btn:active{border-color:var(--accent);background:rgba(139,0,0,.06)}
.opt-btn:disabled{opacity:.3;pointer-events:none}

#custom-row{display:flex;gap:6px}
#custom-input{flex:1;padding:8px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:14px;color:var(--text);font-size:13px;font-family:var(--font-main);outline:none}
#custom-input:focus{border-color:var(--accent)}
#custom-send{padding:8px 14px;background:transparent;border:1px solid var(--accent);color:var(--accent);border-radius:14px;font-size:14px;cursor:pointer;font-family:var(--font-main)}

/* trait inside reply */
.trait-changes{margin-top:8px;display:flex;flex-wrap:wrap;gap:4px}
.trait-tag{font-size:10px;padding:1px 6px;border-radius:8px;letter-spacing:1px}
.trait-tag.dark{background:rgba(139,0,0,.12);color:#ff6b6b}
.trait-tag.light{background:rgba(184,124,79,.12);color:#d4a574}
.char-state{margin-top:6px;font-size:11px;color:var(--text-dim);font-style:italic;padding:4px 0;border-top:1px solid rgba(255,255,255,.03)}
.trait-panel{margin-top:8px;padding:8px;background:rgba(255,255,255,.01);border-radius:8px;font-size:11px}
.trait-panel .tp-section{margin-bottom:6px}
.trait-panel .tp-title{font-size:8px;letter-spacing:2px;color:var(--text-dim);margin-bottom:4px}
.trait-panel .tp-row{display:flex;align-items:center;gap:6px;padding:2px 0}
.trait-panel .tp-icon{font-size:12px;width:18px;text-align:center}
.trait-panel .tp-delta{font-weight:600}
.trait-panel .tp-delta.dark{color:#ff6b6b}.trait-panel .tp-delta.light{color:#d4a574}
.trait-panel .tp-current{color:var(--text-dim);font-size:10px;margin-left:auto}

/* next day */
#next-day-wrap{display:none;padding:8px 10px calc(8px + var(--safe-bottom));justify-content:center;text-align:center;background:var(--surface);border-top:1px solid var(--border)}
#next-day-wrap.visible{display:block}
#next-day-btn{width:100%;padding:14px;background:transparent;border:1px solid var(--accent);color:var(--accent);font-size:15px;letter-spacing:4px;border-radius:12px;cursor:pointer;font-family:var(--font-main)}
#next-day-warning{font-size:10px;color:var(--text-dim);margin-top:6px;letter-spacing:2px}

/* death panel */
.death-panel{position:fixed;inset:0;z-index:50;background:rgba(5,5,8,.97);overflow-y:auto;padding:32px 20px}
.death-panel .dp-header{text-align:center;margin-bottom:24px}
.death-panel .dp-emoji{font-size:44px;margin-bottom:6px}
.death-panel .dp-name{font-size:26px;font-weight:200;letter-spacing:4px;margin-bottom:4px}
.death-panel .dp-label{font-size:11px;color:var(--text-dim);letter-spacing:2px}
.death-panel .dp-section{margin-bottom:18px;padding:14px;background:var(--surface);border-radius:10px;border:1px solid var(--border)}
.death-panel .dp-section h3{font-size:10px;letter-spacing:3px;color:var(--text-dim);margin-bottom:8px}
.death-panel .dp-section p{font-size:13px;line-height:1.8}
.death-panel .dp-action-item{padding:10px 0;border-bottom:1px solid var(--border);font-size:13px;line-height:1.7}
.death-panel .dp-action-item:last-child{border-bottom:none}
.death-panel .dp-target{font-size:10px;color:var(--danger);letter-spacing:2px;margin-bottom:3px}
.death-panel .dp-pivotal{background:rgba(139,0,0,.06);border:1px solid rgba(139,0,0,.15);border-radius:10px;padding:12px;margin-top:10px}
.death-panel .dp-pivotal h3{font-size:9px;letter-spacing:3px;color:var(--accent);margin-bottom:6px}
.death-panel .dp-pivotal p{font-size:12px;color:var(--text-dim);line-height:1.7;font-style:italic}
.death-panel .dp-next{width:100%;padding:12px;margin-top:16px;background:transparent;border:1px solid var(--border);color:var(--text-dim);font-size:14px;letter-spacing:3px;border-radius:12px;cursor:pointer;font-family:var(--font-main)}

#final-screen{position:fixed;inset:0;z-index:60;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px}
#final-screen h2{font-size:20px;font-weight:200;letter-spacing:6px;color:var(--text-bright);margin-bottom:14px}
#final-screen p{font-size:13px;color:var(--text-dim);line-height:2;margin-bottom:28px}
#final-screen button{padding:12px 28px;background:transparent;border:1px solid var(--accent);color:var(--accent);font-size:14px;letter-spacing:3px;border-radius:12px;cursor:pointer;font-family:var(--font-main)}

/* animations */
@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-3px)}50%{transform:translateX(3px)}75%{transform:translateX(-2px)}}
@keyframes tremor{0%,100%{transform:translate(0,0)}25%{transform:translate(-1px,1px)}50%{transform:translate(1px,-.5px)}75%{transform:translate(-.5px,-1px)}}
.hidden{display:none!important}
