.admin-wrap[data-v-8c3c600e]{max-width:980px;margin:0 auto;padding:16px}.card-grid[data-v-8c3c600e]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin-bottom:24px}.stat[data-v-8c3c600e]{background:var(--bg-2);border:1px solid var(--line-2);border-radius:10px;padding:14px 16px}.stat-lbl[data-v-8c3c600e]{font-size:.72em;color:var(--text-mute);text-transform:uppercase;letter-spacing:.5px}.stat-val[data-v-8c3c600e]{font-size:1.8em;color:var(--text-dim);margin-top:4px}.block[data-v-8c3c600e]{margin-bottom:26px}.block h2[data-v-8c3c600e]{font-size:1em;color:var(--text-dim);margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid var(--line)}table.data[data-v-8c3c600e]{width:100%;border-collapse:collapse;font-size:.88em}table.data th[data-v-8c3c600e]{text-align:left;color:var(--text-mute);font-weight:500;padding:6px 10px;border-bottom:1px solid var(--line)}table.data td[data-v-8c3c600e]{padding:6px 10px;color:var(--text-soft);border-bottom:1px solid var(--line)}.recent[data-v-8c3c600e]{list-style:none}.recent-item[data-v-8c3c600e]{display:flex;gap:12px;padding:8px 0;border-bottom:1px solid var(--line)}.recent-item img[data-v-8c3c600e]{width:64px;height:64px;object-fit:cover;border-radius:6px;flex-shrink:0}.recent-meta[data-v-8c3c600e]{flex:1;min-width:0}.recent-line[data-v-8c3c600e]{font-size:.85em;color:var(--text-dim)}.recent-line b[data-v-8c3c600e]{color:var(--text)}.recent-prompt[data-v-8c3c600e]{font-size:.78em;color:var(--text-mute);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hint[data-v-8c3c600e]{color:var(--text-mute);font-size:.82em;margin-bottom:10px}.token-revealed[data-v-8c3c600e]{background:#1a1a08;border:1px solid #806020;border-radius:8px;padding:12px;margin-bottom:14px}.reveal-header[data-v-8c3c600e]{color:var(--gold);font-size:.9em;margin-bottom:8px}.reveal-raw[data-v-8c3c600e]{display:block;background:#0a0610;border:1px solid var(--line-2);border-radius:6px;padding:10px 12px;color:var(--text-dim);font-family:monospace;font-size:.85em;word-break:break-all;margin-bottom:8px}.reveal-actions[data-v-8c3c600e]{display:flex;gap:8px}.reveal-actions button[data-v-8c3c600e]{background:var(--bg-3);border:1px solid var(--line-2);color:var(--text-dim);padding:5px 12px;border-radius:6px;cursor:pointer;font-size:.82em}.token-create[data-v-8c3c600e]{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.token-create input[data-v-8c3c600e]{background:var(--bg-3);border:1px solid var(--line-2);color:var(--text-dim);padding:6px 10px;border-radius:6px;font-size:.85em;min-width:180px}.scope-cb[data-v-8c3c600e]{color:var(--text-soft);font-size:.85em;cursor:pointer}.scope-cb input[data-v-8c3c600e]{margin-right:4px}.btn-primary[data-v-8c3c600e]{background:#2a1808;border:1px solid #806020;color:var(--gold);padding:6px 14px;border-radius:6px;cursor:pointer;font-size:.85em}.btn-danger[data-v-8c3c600e]{background:none;border:1px solid #6a3030;color:#ff9090;padding:3px 10px;border-radius:5px;cursor:pointer;font-size:.78em}.btn-danger[data-v-8c3c600e]:hover{background:#2a0808}.diary-wrap[data-v-b1e906ac]{max-width:720px;margin:0 auto;padding:16px}.sub-note[data-v-b1e906ac]{color:var(--text-mute);font-size:.78em}.err[data-v-b1e906ac]{color:#ff9090}.entry[data-v-b1e906ac]{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:18px 22px;margin-bottom:16px;transition:border-color .2s}.entry[data-v-b1e906ac]:hover{border-color:var(--accent-2)}.entry-meta[data-v-b1e906ac]{display:flex;gap:8px;align-items:center;font-size:.82em;color:var(--text-mute);margin-bottom:10px}.entry-date[data-v-b1e906ac]{color:var(--text-soft);font-weight:500}.entry-vis[data-v-b1e906ac]{font-size:1em}.entry-mood[data-v-b1e906ac]{color:var(--text-mute);font-style:italic}.entry-body[data-v-b1e906ac]{color:var(--text-dim);line-height:1.7;font-size:.96em;white-space:pre-wrap;word-break:break-word}.loading[data-v-ba4483e6]{text-align:center;padding:60px;color:var(--text-faint)}:root{--bg: #0a0812;--bg-1: #080610;--bg-2: #120d22;--bg-3: #140d24;--bg-4: #1a1030;--line: #1e1230;--line-2: #2a1840;--accent: #8a50d0;--accent-2: #4a2090;--text: #e8e0f0;--text-dim: #c0a8e0;--text-soft: #9080c0;--text-mute: #7060a0;--text-faint: #6050a0;--gold: #f0c030;--green: #60d0a0;--blue: #60c0f0}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--text);font-family:Segoe UI,sans-serif;min-height:100vh}button{font:inherit}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}a{color:var(--text-dim)}header.app{text-align:center;padding:14px 16px;background:linear-gradient(135deg,#150d25,var(--bg));border-bottom:1px solid var(--line-2);position:sticky;top:0;z-index:100}header.app h1{font-size:1.5em;margin-bottom:2px}header.app .sub{color:var(--text-mute);font-size:.75em;display:flex;gap:10px;justify-content:center;align-items:center;flex-wrap:wrap}header.app .sub button{background:#1a1020;border:1px solid #6a30a0;color:var(--text-dim);padding:4px 10px;border-radius:8px;font-size:.95em;cursor:pointer}header.app .sub button:hover{background:#2a1040}header.app .sub button.active{background:#3a1860;border-color:var(--accent);color:#e0c0ff}.bar{padding:8px 14px;background:var(--bg-1);border-bottom:1px solid var(--line);position:sticky;top:62px;z-index:99;display:flex;gap:6px;flex-wrap:wrap;align-items:center}.bar select,.bar button{background:var(--bg-3);border:1px solid #3a2060;color:var(--text-dim);padding:5px 10px;border-radius:8px;font-size:.82em;cursor:pointer}.bar label{color:var(--text-mute);font-size:.8em}.bar .sep{width:1px;height:20px;background:var(--line-2)}.btn-ref{background:#1a1020;border-color:#6a30a0!important;color:#c090e0!important}.btn-ref.active{background:#3a1860!important;border-color:var(--accent)!important;color:#e0c0ff!important}.btn-new-char{background:#0a2018!important;border:1px solid #208060!important;color:var(--green)!important}.btn-new-char:hover{background:#103028!important}.btn-diary{background:#2a1808!important;border:1px solid #806020!important;color:var(--gold)!important}.btn-diary:hover{background:#4a3010!important}.tab-bar{padding:6px 14px 0;background:var(--bg-1);border-bottom:1px solid var(--line);position:sticky;top:108px;z-index:98;display:flex;gap:2px;overflow-x:auto}.tab-bar button{background:none;border:none;border-bottom:2px solid transparent;color:var(--text-faint);padding:6px 12px 8px;cursor:pointer;font-size:.82em;white-space:nowrap;border-radius:6px 6px 0 0}.tab-bar button:hover{color:var(--text-soft);background:#100820}.tab-bar button.active{color:#e0c0ff;border-bottom-color:var(--accent);background:var(--bg-3)}.tab-bar .count{background:var(--line-2);border-radius:10px;padding:1px 6px;font-size:.75em;margin-left:4px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;padding:14px}.card{background:var(--bg-2);border-radius:10px;overflow:hidden;border:1px solid var(--line);transition:transform .2s,box-shadow .2s,border-color .2s;cursor:pointer;position:relative}.card:hover{transform:translateY(-3px);box-shadow:0 6px 20px #6040a033;border-color:var(--accent-2)}.card img{width:100%;aspect-ratio:2/3;object-fit:cover;display:block}.card .foot{padding:5px 7px 6px;font-size:.65em;color:var(--text-faint);background:linear-gradient(transparent,#080510cc);margin-top:-16px;position:relative;display:flex;justify-content:space-between;align-items:center}.card .foot .char{color:var(--text-soft)}.card .foot .badge{background:var(--line-2);border-radius:4px;padding:1px 4px;font-size:.85em}.card .foot .badge-ref{color:var(--gold)}.card .foot .badge-priv{color:var(--text-mute)}.card.selected{border-color:var(--accent)!important;box-shadow:0 0 0 2px #8a50d055}.card-check{display:none;position:absolute;top:6px;left:6px;width:22px;height:22px;background:#ffffff30;border:2px solid var(--accent);border-radius:50%;align-items:center;justify-content:center;font-size:12px;z-index:2;color:#fff}.card.batch-mode{cursor:pointer}.card.batch-mode .card-check{display:flex}.card-check.checked{background:var(--accent);border-color:var(--accent)}.lb{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000f0;z-index:1000;display:flex;align-items:center;justify-content:center;flex-direction:column}.lb-img{max-width:86vw;max-height:58vh;border-radius:10px;box-shadow:0 0 50px #5030a055}.lb-banner{max-width:660px;width:92vw;background:#1a0d30;border:1px solid var(--accent-2);border-radius:10px 10px 0 0;padding:8px 16px;font-size:.8em;color:#c090e0;text-align:center}.lb-content{max-width:660px;width:92vw;background:var(--bg-2);border:1px solid var(--line-2);border-top:none;border-radius:0 0 10px 10px;padding:12px 16px}.lb-meta .row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:7px}.lb-meta .item{background:var(--bg-4);border-radius:6px;padding:4px 10px;min-width:80px;flex:1}.lb-meta .item .lbl{font-size:.68em;color:#403070}.lb-meta .item .val{color:#c0a8f0;font-size:.85em}.lb-prompt{background:var(--bg-4);border-radius:6px;padding:7px 11px;color:var(--text-soft);line-height:1.5;margin-top:5px;max-height:70px;overflow-y:auto;font-size:.87em}.lb-prompt-lbl{font-size:.7em;color:#403070;margin-bottom:3px}.lb-style-row{margin-top:8px;display:flex;gap:8px;align-items:center;justify-content:center}.lb-style-row span{color:var(--text-mute);font-size:.82em}.lb-style-row select{background:var(--bg-4);border:1px solid #3a2060;color:var(--text-dim);padding:4px 8px;border-radius:6px;font-size:.85em}.lb-style-row .btn-save{background:#2a1808;border:1px solid #806020;color:var(--gold);padding:4px 12px;border-radius:6px;cursor:pointer;font-size:.82em}.lb-actions{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap;justify-content:center}.lb-actions button{background:#221838;border:1px solid #5a3090;color:#c8a8e8;padding:6px 14px;border-radius:8px;cursor:pointer;font-size:.82em}.lb-actions button:hover:not(:disabled){background:var(--accent-2)}.lb-actions button:disabled{opacity:.4;cursor:not-allowed}.btn-promote{background:#1a1a08!important;border-color:#806020!important;color:var(--gold)!important}.btn-promote:hover:not(:disabled){background:#3a3010!important}.btn-move{background:#0a1828!important;border-color:#206090!important;color:var(--blue)!important}.btn-move:hover:not(:disabled){background:#102040!important}.btn-vis{background:#0a1a18!important;border-color:#208060!important;color:var(--green)!important}.btn-vis:hover:not(:disabled){background:#103028!important}.lb-nav{margin-top:8px;display:flex;gap:8px;align-items:center;justify-content:center}.lb-nav button{background:#221838;border:1px solid #5a3090;color:#c8a8e8;padding:5px 14px;border-radius:8px;cursor:pointer;font-size:.85em}.lb-nav .ctr{color:var(--text-faint);font-size:.82em}.lb-close{position:absolute;top:10px;right:14px;background:none;border:none;color:var(--text-faint);font-size:2em;cursor:pointer}.lb-close:hover{color:#fff}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:2000;display:flex;align-items:center;justify-content:center}.modal-box{background:var(--bg-3);border:1px solid var(--accent-2);border-radius:12px;padding:20px 24px;max-width:360px;width:90vw}.modal-box h3{margin-bottom:12px;font-size:1em;color:var(--gold)}.modal-box.move h3{color:var(--blue)}.modal-box p{color:var(--text-soft);font-size:.85em;margin-bottom:14px;line-height:1.5}.modal-box select,.modal-box input{width:100%;background:var(--bg-4);border:1px solid #3a2060;color:var(--text-dim);padding:8px 10px;border-radius:8px;font-size:.9em;margin-bottom:14px}.modal-box .btn-row{display:flex;gap:8px;justify-content:flex-end}.modal-box button{padding:6px 16px;border-radius:8px;cursor:pointer;font-size:.85em;border:1px solid}.modal-box .btn-cancel{background:none;border-color:#3a2060;color:var(--text-mute)}.modal-box .btn-cancel:hover{background:var(--line)}.modal-box .btn-confirm{background:#2a1808;border-color:#806020;color:var(--gold)}.modal-box .btn-confirm:hover{background:#4a3010}.modal-box.move .btn-confirm{background:#0a1828;border-color:#206090;color:var(--blue)}.batch-bar{display:none;position:sticky;bottom:0;left:0;right:0;background:var(--bg-3);border-top:1px solid var(--accent-2);padding:10px 14px;z-index:200;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap}.batch-bar.open{display:flex}.batch-bar .info{color:#c090e0;font-size:.88em}.batch-bar .actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.batch-bar button{padding:7px 14px;border-radius:8px;cursor:pointer;font-size:.85em;border:1px solid}.btn-batch-cancel{background:none;border-color:#3a2060;color:var(--text-mute)}.btn-batch-cancel:hover{background:var(--line)}.btn-batch-move{background:#0a1828;border-color:#206090;color:var(--blue)}.btn-batch-move:hover{background:#102040}.btn-select-all{background:#1a1020;border-color:#6a30a0;color:#c090e0}.btn-select-all:hover{background:#2a1040}.toast-host{position:fixed;bottom:28px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:6px;z-index:3000;pointer-events:none}.toast{background:var(--bg-4);border:1px solid #6040a0;color:#c8b0f0;padding:10px 24px;border-radius:10px;font-size:.88em;white-space:nowrap;animation:toast-in .18s ease-out}.toast.error{border-color:#8a3030;color:#ff9090}.toast.success{border-color:#208060;color:var(--green)}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.login-card{background:var(--bg-2);border:1px solid var(--line-2);border-radius:14px;padding:30px 36px;max-width:380px;width:100%}.login-card h2{color:var(--text-dim);margin-bottom:6px;font-size:1.4em}.login-card .sub{color:var(--text-mute);font-size:.85em;margin-bottom:20px}.login-card label{display:block;color:var(--text-mute);font-size:.78em;margin-bottom:6px}.login-card input{width:100%;background:var(--bg-4);border:1px solid #3a2060;color:var(--text-dim);padding:10px 12px;border-radius:8px;font-size:.95em;margin-bottom:14px}.login-card .btn{width:100%;background:#2a1808;border:1px solid #806020;color:var(--gold);padding:9px 14px;border-radius:8px;cursor:pointer;font-size:.9em}.login-card .btn:hover{background:#4a3010}.login-card .err{color:#ff9090;font-size:.82em;margin-bottom:12px;min-height:1em}.login-card .skip{display:block;text-align:center;color:var(--text-mute);font-size:.8em;margin-top:14px;text-decoration:none}.login-card .skip:hover{color:var(--text-soft)}.loading{text-align:center;padding:60px;color:var(--text-faint);font-size:1em}footer{text-align:center;padding:12px;color:#3a2a5a;font-size:.72em}
