:root{--paper:#f4f0e8;--ink:#292d27;--muted:#77796d;--line:#dcdace;--accent:#88553e;--soft:#ebe6dc;--green:#687660;font-family:system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.48}input,textarea,select{width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:#faf8f2;color:var(--ink)}textarea{resize:vertical;line-height:1.7}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #a97955;outline-offset:3px}button{transition:background .18s,opacity .18s}h1,h2,p{margin:0}.eyebrow{font-size:10px;font-weight:650;letter-spacing:.17em;color:var(--muted)}.primary,.secondary{border:0;border-radius:7px;padding:13px 19px;font-weight:550}.primary{color:#fffaf0;background:var(--ink)}.primary:hover{background:#474c40}.secondary{background:#dfdfd1;color:var(--ink)}.quiet,.text-button{border:0;background:transparent;color:var(--ink);padding:10px 12px;border-radius:6px}.quiet:hover,.text-button:hover{background:var(--soft)}.text-button{font-size:12px;color:var(--muted);padding:5px}.error{font-size:13px;color:#9a4137;min-height:20px;line-height:1.6}.notice{font-size:12px;line-height:1.6;color:var(--muted)}[hidden]{display:none!important}.access{min-height:100dvh;display:grid;grid-template-columns:1fr 1fr;max-width:1200px;margin:auto;align-items:center;padding:60px;gap:100px}.access-card h1{font-family:Georgia,"Songti SC",serif;font-weight:400;font-size:clamp(36px,5vw,66px);line-height:1.3;letter-spacing:-.03em;margin:24px 0}.access-card>p{color:var(--muted);font-size:14px;line-height:1.8}.access-card form{display:grid;gap:12px;margin:34px 0 22px}.access-card label{font-size:12px}.access-card small{font-size:11px;color:var(--muted)}.access-card .primary{display:flex;justify-content:space-between}.access-art{height:550px;background:#ddd4c0;position:relative;overflow:hidden;border-radius:180px 180px 8px 8px}.access-art .sun{width:220px;height:220px;background:#bc8c61;position:absolute;top:70px;left:30px;border-radius:50%;opacity:.7}.spine{position:absolute;bottom:0;border:1px solid #837662;border-radius:4px}.s1{height:230px;width:80px;left:45px;background:#8c9a7c;transform:rotate(-13deg);transform-origin:bottom}.s2{height:280px;width:65px;left:160px;background:#b48168}.s3{height:220px;width:90px;left:230px;background:#eee2c5;transform:rotate(8deg);transform-origin:bottom}.access-art>span{position:absolute;top:290px;left:40px;font:16px/1.7 Georgia,serif;letter-spacing:.15em}.topbar{height:80px;display:flex;justify-content:space-between;align-items:center;padding:0 5vw;border-bottom:1px solid var(--line);max-width:1600px;margin:auto}.brand{display:flex;align-items:center;gap:12px;font-weight:600;letter-spacing:.12em}.brand-mark{width:35px;height:35px;display:grid;place-items:center;border:1px solid #7c806e;border-radius:50%;font-family:serif;font-size:20px;font-weight:400}.brand-sub{margin-left:12px;color:var(--muted);font-size:11px;font-weight:400;letter-spacing:.06em}.header-actions{display:flex;gap:8px;font-size:12px}.workspace{max-width:1440px;margin:auto;display:grid;grid-template-columns:46% 54%;min-height:calc(100dvh - 80px)}.stage{padding:30px 50px 24px 5vw;border-right:1px solid var(--line);display:flex;flex-direction:column;justify-content:center}.scene-caption{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.scene-number{font-size:11px;color:var(--muted)}.portrait{position:relative;max-width:440px;width:100%;align-self:center;overflow:hidden;border-radius:150px 150px 9px 9px}.portrait svg{display:block;width:100%;max-height:48dvh}.portrait-label{position:absolute;bottom:14px;left:16px;right:16px;background:#f7f3e8e8;padding:10px 12px;display:flex;gap:8px;align-items:center;border-radius:6px;font-size:11px}.portrait-label span:last-child{margin-left:auto;color:var(--muted)}.state-dot{width:6px;height:6px;flex-shrink:0;border-radius:50%;background:#7d896f}.portrait[data-state=thinking] .state-dot{animation:breathe 1s ease-in-out infinite}.portrait[data-state=speaking] .state-dot{background:#a26747}.portrait .eyes{transform-box:fill-box;transform-origin:center;animation:blink 6s infinite}#character-head{transform-box:fill-box;transform-origin:center 85%;transition:transform .3s}#mouth{transform-box:fill-box;transform-origin:center;transition:transform 70ms linear}.portrait[data-emotion=happy] .brows{transform:translateY(-2px)}.portrait[data-emotion=sad] #character-head{transform:rotate(-3deg)}.portrait.action-nod #character-head{animation:nod .65s ease}.portrait.action-tilt #character-head{animation:tilt 1.2s ease}.portrait.action-wave #character-body{animation:wave .8s ease}.character-intro{display:flex;gap:24px;align-items:center;margin-top:24px}.character-intro h1{font-family:Georgia,"Songti SC",serif;font-size:36px;font-weight:400;margin-top:7px;white-space:nowrap}.character-intro p{font-size:12px;line-height:1.9;color:var(--muted);max-height:92px;overflow:auto}.voice-note{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-top:23px;padding-top:15px;border-top:1px solid var(--line)}.conversation{min-width:0;padding:36px 5vw 24px 40px;display:flex;flex-direction:column;height:calc(100dvh - 80px);min-height:580px}.conversation-heading{display:flex;justify-content:space-between;align-items:center}.conversation-heading h2{font-family:Georgia,"Songti SC",serif;font-size:24px;line-height:1.5;font-weight:400;margin-top:9px}.conversation-heading button{font-size:12px;white-space:nowrap}.messages{flex:1;overflow:auto;min-height:120px;padding:28px 3px 10px;scroll-behavior:smooth}.message{margin-bottom:24px;max-width:94%;font-size:14px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere}.message .speaker{display:block;font-size:10px;font-weight:600;letter-spacing:.08em;color:var(--muted);margin-bottom:5px}.message.user{margin-left:auto;width:fit-content;max-width:87%;background:#e7e8dd;border-radius:10px 10px 2px 10px;padding:10px 15px}.message.user .speaker{display:none}.message.assistant{padding-left:15px;border-left:2px solid #c2c8b5}.message.incomplete{opacity:.65}.options{display:flex;flex-wrap:wrap;gap:8px;padding:6px 0 13px}.options button{border:1px solid var(--line);border-radius:20px;background:transparent;color:#666a5a;padding:9px 13px;font-size:12px;text-align:left}.options button:hover{background:#e8e9de;border-color:#aeb69c}.notice:not(:empty){margin-bottom:9px}.composer{position:relative}.composer textarea{display:block;background:#faf8f2;border-radius:10px;resize:none;padding:15px 65px 15px 16px;min-height:85px;max-height:160px;font-size:14px}.send{position:absolute;right:13px;bottom:13px;border:0;border-radius:50%;height:38px;width:38px;background:var(--ink);color:#fffaf0;font-size:23px}.conversation-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:9px;font-size:10px;color:var(--muted)}.metrics{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;padding:12px;background:#e9e9df;border-radius:7px;font-size:11px;color:var(--muted)}.metrics b{font-weight:500;color:var(--ink);margin-left:6px}.metrics small{flex-basis:100%;font-size:10px}dialog{border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:28px;border-radius:14px;max-width:850px;width:calc(100% - 32px);max-height:90dvh}dialog::backdrop{background:#20241e77;backdrop-filter:blur(3px)}.dialog-heading{display:flex;justify-content:space-between;gap:20px;align-items:center}.dialog-heading h2{font-size:23px;font-family:Georgia,"Songti SC",serif;font-weight:400;margin-top:8px}.brief-section{padding:20px;margin:22px 0;background:#e7e8dc;border-radius:9px}.brief-section label,.form-grid label{display:block;font-size:12px;color:#636854}.brief-section textarea{margin:9px 0}.brief-section .notice{margin:9px 0 0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid input,.form-grid textarea,.form-grid select{display:block;margin-top:8px;font-size:13px}.revision-row{display:flex;align-items:center;gap:15px;margin-top:20px;color:var(--muted);font-size:11px}.revision-row span{margin-right:auto}.import-label{cursor:pointer}.dialog-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid var(--line);padding-top:18px;margin-top:12px}.dialog-footer p{font-size:11px;line-height:1.7;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}@keyframes blink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.1)}}@keyframes breathe{50%{opacity:.2}}@keyframes nod{50%{transform:translateY(6px) rotate(3deg)}}@keyframes tilt{50%{transform:rotate(-7deg)}}@keyframes wave{50%{transform:rotate(2deg)}}
@media(min-width:1500px){.stage{padding-left:45px}.conversation{padding-right:45px}}
@media(max-width:760px){.access{grid-template-columns:1fr;padding:35px;max-width:450px;gap:25px}.access-art{display:none}.access-card h1{font-size:45px}.topbar{height:62px;padding:0 18px}.brand-sub{display:none}.header-actions{gap:0}.quiet{padding:9px}.workspace{display:flex;flex-direction:column;min-height:calc(100dvh - 62px)}.stage{padding:15px 20px 12px;border-right:0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:136px 1fr;gap:0 18px;align-items:center;position:relative}.scene-caption{display:none}.portrait{grid-row:1/3;border-radius:55px 55px 5px 5px;width:136px}.portrait svg{max-height:168px}.portrait-label{bottom:6px;left:6px;right:6px;padding:6px;font-size:9px;gap:5px}.portrait-label span:last-child{display:none}.character-intro{display:block;margin:0}.character-intro h1{font-size:29px;margin:5px 0 7px}.character-intro p{font-size:11px;line-height:1.7;max-height:65px}.character-intro .eyebrow{font-size:8px}.voice-note{border:0;padding:0;margin-top:10px;font-size:9px;display:block}.voice-note span:last-child{display:block;margin-top:4px}.conversation{padding:20px 20px 16px;height:auto;min-height:400px;flex:1}.conversation-heading h2{font-size:20px;margin-top:4px}.messages{min-height:140px;max-height:38dvh;padding-top:23px}.message{font-size:14px;margin-bottom:20px}.conversation-heading .eyebrow{font-size:9px}.options{gap:6px}.options button{font-size:11px;padding:8px 10px}.conversation-footer{font-size:9px}.composer textarea{min-height:78px}.dialog-heading h2{font-size:20px}.form-grid{grid-template-columns:1fr}dialog{padding:20px}.brief-section{padding:15px}.dialog-footer{align-items:flex-start}.dialog-footer .primary{white-space:nowrap}.revision-row{flex-wrap:wrap}.revision-row span{flex-basis:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Explicit geometry avoids intrinsic native-dialog sizing in embedded WebViews. */
dialog#editor{position:fixed;inset:16px 16px auto;top:calc(var(--editor-top,0px) + 16px);margin:0 auto;width:calc(100% - 32px);height:calc(var(--editor-height,100%) - 32px);max-width:850px;max-height:900px;min-height:0;padding:0;overflow:hidden}
#character-form{height:100%;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:28px;-webkit-overflow-scrolling:touch}
@media(max-width:760px){#character-form{padding:20px}}
