:root{color-scheme:dark;--pink:#dfb0b3;--muted:#96909e}
.situation-dialog{width:min(760px,95vw);max-height:90dvh;overflow:auto;border:1px solid #ffffff25;border-radius:20px;padding:24px;background:#1b1c25;color:#eee8eb}.situation-dialog::backdrop{background:#080911bb;backdrop-filter:blur(5px)}.library-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.library-top h2{font-size:20px;margin:0;font-weight:500}.library-note,.set-meta{color:var(--muted);font-size:12px;line-height:1.8}.situation-form{display:grid;grid-template-columns:1fr 1fr;align-items:start;padding:18px;margin-top:18px;gap:14px}.situation-form .preset-row,.situation-form .library-note,.situation-form .set-primary{grid-column:1/-1}.preset-row{display:flex;gap:6px;flex-wrap:wrap}.set-field{display:flex;flex-direction:column;gap:8px;font-size:12px;color:#c8b9c5}.set-field input{width:100%;min-width:0;background:#171920;color:#eee8eb;border:1px solid #ffffff25;border-radius:8px;padding:11px;font:inherit}.set-field input:focus{outline:1px solid var(--pink)}.set-primary{border:0;border-radius:10px;background:var(--pink);color:#31232d;padding:11px 15px;font:inherit;font-size:12px;cursor:pointer;width:auto}.situation-form button{width:auto}.set-primary:disabled{opacity:.45;cursor:default}.library-error{font-size:12px;line-height:1.8;color:#e6a3ab}.library-error:empty{display:none}.situation-list{display:grid;gap:16px}.base-set{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;padding:15px;border:1px solid #ffffff15;border-radius:12px}.situation-card{padding:18px;border:1px solid #ffffff1c;border-radius:15px;background:#22242e}.situation-card h4{margin:0;font-size:16px;font-weight:500}.set-thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.set-thumbs figure{margin:0}.set-thumbs img{width:100%;display:block;border-radius:8px}.set-thumbs figcaption{font-size:10px;color:var(--muted);margin-top:7px}.set-thumbs:has(figure:only-child){grid-template-columns:minmax(0,300px)}.set-state{font-size:12px;color:var(--pink)}.set-actions{display:flex;gap:8px;flex-wrap:wrap}.scene-transition{text-align:center;padding:15px;border:1px dashed #dfb0b329;border-radius:10px;color:#ba9ba8;font-size:11px;line-height:1.9}.archive-box{margin-top:25px}.archive-entry{display:block;width:100%;margin:8px 0;padding:12px;text-align:left;background:#24242d;border:1px solid #ffffff18;color:#c8bbc7;border-radius:8px;font-size:12px}@media(max-width:500px){.situation-dialog{padding:17px}.situation-form{grid-template-columns:1fr}.set-thumbs{grid-template-columns:repeat(2,1fr)}header{gap:7px}.character-create{padding:7px 8px;font-size:10px}.identity{min-width:40px}.identity small{max-width:105px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reset{padding:7px 9px}}
.pack-dialog{width:min(680px,94vw);max-height:88dvh;overflow:auto;background:#1b1c25;color:#eee8eb;border:1px solid #ffffff25;border-radius:20px;padding:24px}.pack-dialog::backdrop{background:#080911bb;backdrop-filter:blur(5px)}.pack-dialog h2{font-size:20px;font-weight:500;margin:0 0 10px}.pack-description,.pack-progress{font-size:12px;line-height:1.8;color:var(--muted)}.pack-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:20px 0}.pack-item{margin:0;overflow:hidden;border-radius:12px;background:#262834}.pack-item img{display:block;width:100%;aspect-ratio:1;object-fit:cover}.pack-item figcaption{font-size:11px;padding:12px;color:#d9c6d1}.pack-placeholder{display:grid;place-items:center;aspect-ratio:1;color:var(--muted);font-size:12px}.pack-progress{color:var(--pink)}
.character-create{border:1px solid #d8acb64d;border-radius:20px;padding:8px 12px;background:#332731;color:var(--pink);font-size:11px}.character-create:disabled{opacity:.5;cursor:wait}.image-status{color:var(--pink)!important}.image-status:empty{display:none}.illustrated .message-body{width:100%;max-width:100%}.comic-panel{max-width:480px;border-radius:16px;overflow:hidden;background:#333849;border:1px solid #ffffff17}.comic-character{display:block;width:100%;aspect-ratio:1.3;object-fit:cover;object-position:center 25%}.comic-balloon{position:relative;margin:-24px 18px 18px;padding:17px 20px 19px;border-radius:23px;background:#fffaf7;color:#322c36;box-shadow:0 5px 22px #12131c30;z-index:1}.comic-balloon:before{content:"";position:absolute;top:-14px;left:54%;border-left:13px solid transparent;border-right:6px solid transparent;border-bottom:18px solid #fffaf7;transform:rotate(12deg)}.comic-speaker{display:block;font-size:10px;color:#a77c85;margin-bottom:8px;letter-spacing:1px}.comic-speech{font-size:15px;line-height:1.85;white-space:pre-wrap;overflow-wrap:anywhere}.has-character .art{height:100px}.has-character .art img{object-position:center 29%;filter:brightness(.65)}@media(max-width:760px){.comic-character{aspect-ratio:1.15}.comic-balloon{margin:-18px 12px 12px;padding:14px 16px}.comic-speech{font-size:14px}.illustrated{gap:7px}.illustrated .avatar{width:23px;height:23px;font-size:11px}.has-character .art{height:82px}}
.waiting{opacity:.55;background:#1a1b22;cursor:wait}.waiting textarea{cursor:wait}.typing{display:flex;align-items:center;gap:12px;color:#b4a6b8;font-size:12px;flex-wrap:wrap}.typing-dots{letter-spacing:4px;color:var(--pink);animation:waiting-pulse 1.3s ease-in-out infinite}.retry{border:1px solid #dfb0b340;border-radius:15px;padding:7px 12px;background:transparent;color:var(--pink);font-size:11px}.retry:disabled{opacity:.4;cursor:default}@keyframes waiting-pulse{50%{opacity:.3}}@media(prefers-reduced-motion:reduce){.typing-dots{animation:none}}
[hidden]{display:none!important}#reconnect{font-size:10px;color:var(--pink);background:transparent;border:0;text-decoration:underline}.chip:disabled{opacity:.4;cursor:default}.reset:disabled{opacity:.4;cursor:default}
*{box-sizing:border-box}body{margin:0;background:#111218;color:#eee8eb;font:14px "Malgun Gothic",sans-serif}button,textarea{font:inherit}button{cursor:pointer}button:focus-visible{outline:2px solid var(--pink);outline-offset:3px}
.app{display:grid;grid-template-columns:250px 1fr;height:100dvh;max-width:1450px;margin:auto}.sidebar{padding:32px 23px;background:#16171e;border-right:1px solid #ffffff0c;display:flex;flex-direction:column;gap:30px}.brand{font:27px Georgia,serif;letter-spacing:1px}.brand i{color:var(--pink)}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--muted)}.selected{background:#27242f;border:1px solid #d9b0b520;border-radius:12px;padding:16px;line-height:1.9}.selected small{display:block;color:var(--muted);font-size:11px}.intro{font-size:12px;line-height:2;color:var(--muted)}.intro strong{display:block;color:#d5c7ce;font-weight:400;margin-bottom:9px}.sidebar-bottom{margin-top:auto;font-size:10px;color:var(--muted);line-height:2}
.chat{min-height:0;min-width:0;display:flex;flex-direction:column;background:#14161d}header{display:flex;align-items:center;gap:12px;padding:16px 28px;border-bottom:1px solid #ffffff0c;flex:none}.avatar{width:36px;height:36px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(130deg,#75606c,#303d4f);font:17px "Batang",serif;flex:none}.identity{flex:1}.identity strong{font-weight:500}.identity small{display:block;font-size:10px;color:var(--muted);margin-top:5px}.reset{background:transparent;border:1px solid #ffffff16;border-radius:20px;padding:8px 12px;color:var(--muted);font-size:11px}
.feed{flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#403746 transparent;overscroll-behavior:contain}.thread{max-width:730px;margin:auto;padding:24px 28px}.chapter{text-align:center;font-size:10px;letter-spacing:1px;color:var(--muted);margin-bottom:22px}.opening{max-width:490px;margin:0 auto 26px}.art{height:180px;border-radius:12px;overflow:hidden;position:relative}.art img{width:100%;height:100%;object-fit:cover;object-position:center 44%}.art:after{content:"";position:absolute;inset:35% 0 0;background:linear-gradient(transparent,#14161dd9)}.art-label{position:absolute;left:18px;bottom:16px;z-index:1;font:21px "Batang",serif}.opening p{text-align:center;color:var(--muted);font-size:12px;line-height:1.9}
.message{display:flex;gap:10px;margin:23px 0}.message .avatar{width:29px;height:29px;font-size:13px;border-radius:10px}.message-body{max-width:86%;min-width:0}.sender{font-size:11px;color:#c3afb9;margin-bottom:9px}.bubble{padding:13px 17px;border-radius:3px 16px 16px;background:#252630;line-height:1.85;overflow-wrap:anywhere;white-space:pre-wrap}.direction{font-size:12px;line-height:1.9;color:#a29aaa;font-style:italic;margin:0 0 10px;overflow-wrap:anywhere}.user{justify-content:flex-end}.user .sender{text-align:right}.user .bubble{background:#51414f;border-radius:16px 3px 16px 16px}
.scene-card{margin:24px 0 24px 39px;border:1px solid #d4aabb25;border-radius:12px;overflow:hidden;background:#282834}.scene-card .art{height:140px;border-radius:0}.scene-copy{padding:14px 17px}.scene-copy small{font-size:9px;letter-spacing:1px;color:var(--pink)}.scene-copy p{font-size:12px;line-height:1.8;color:#bfb2c1;margin-bottom:0}
.composer{flex:none;background:#181920;border-top:1px solid #ffffff0d;padding:12px 28px max(12px,env(safe-area-inset-bottom))}.compose-inner{max-width:674px;margin:auto}.suggestions{display:flex;align-items:center;gap:7px;overflow-x:auto;padding:2px 2px 11px;scrollbar-width:thin}.suggestions>span{white-space:nowrap;color:#847b8c;font-size:10px}.chip{white-space:nowrap;border:1px solid #ffffff18;border-radius:20px;background:transparent;color:#b4a6b8;padding:7px 11px;font-size:11px}.chip:hover{border-color:#d3a9b26b;background:#282430}form{display:flex;align-items:flex-end;gap:10px;padding:12px 12px 12px 16px;border:1px solid #ffffff26;background:#23252e;border-radius:16px}form:focus-within{border-color:#d1a2b57a}textarea{width:100%;height:46px;resize:none;min-width:0;background:transparent;border:0;color:#eee6ed;line-height:1.6;font-size:13px;padding:0}textarea:focus{outline:none}textarea::placeholder{color:#887f92}.send{flex:none;width:34px;height:34px;border:0;border-radius:11px;background:var(--pink);color:#382b38;font-size:20px}.send:disabled{opacity:.3;cursor:default}.footnote{text-align:center;font-size:9px;color:#89808f;margin:9px 0 0}.status{text-align:center;color:var(--pink);font-size:10px}.status:empty{display:none}
@media(max-width:760px){.app{display:block}.sidebar{display:none}.chat{height:100dvh}header{padding:12px 17px}.thread{padding:18px 17px}.composer{padding:10px 14px max(10px,env(safe-area-inset-bottom))}.art{height:145px}.opening p{font-size:11px}.bubble{font-size:13px}.scene-card{margin-left:0}}
@media(min-width:1100px){.art{height:205px}}
