:root{font-family:"Yu Gothic UI","Hiragino Sans",system-ui,sans-serif;color:#433025;background:#f6eee3;font-synthesis:none;line-height:1.65;--accent:#6d4430;--muted:#796458}
*{box-sizing:border-box}body{margin:0;min-height:100svh}button,textarea,select{font:inherit}button{cursor:pointer;background:var(--accent);color:#fff;border:0;border-radius:10px;padding:10px 17px;min-height:44px;font-weight:600}button:disabled{cursor:default;opacity:.55}button:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #bf794a;outline-offset:3px}.quiet{color:var(--accent);background:transparent;padding:8px 10px}button:hover:not(:disabled){filter:brightness(.92)}[hidden]{display:none!important}
header{height:80px;padding:12px clamp(16px,4vw,64px);display:flex;align-items:center;justify-content:space-between;background:#fcf8f1;border-bottom:1px solid #dfd0bf}.brand{color:inherit;text-decoration:none;display:flex;align-items:center;gap:12px;font-size:22px;font-weight:700;line-height:1.25}.brand img{border-radius:9px}.brand small{display:block;font-weight:400;font-size:12px;letter-spacing:.05em;color:var(--muted);margin-top:4px}
main{display:grid;grid-template-columns:minmax(380px,1.2fr) minmax(300px,1fr);height:calc(100svh - 80px);max-width:1600px;margin:auto}.conversation{padding:28px clamp(20px,4vw,64px) 14px;display:flex;flex-direction:column;min-height:0;overflow:hidden}.intro{flex-shrink:0}.eyebrow{font-size:11px;letter-spacing:.12em;color:var(--muted);margin:0 0 8px}h1{font-size:clamp(22px,2.5vw,32px);line-height:1.35;margin:0;font-weight:650;letter-spacing:-.02em}.intro>p:last-child{font-size:14px;color:var(--muted);margin:9px 0 17px}.loading{flex-shrink:0;padding:14px 16px;background:#fffaf3;border-left:3px solid #9b6742;border-radius:0 10px 10px 0;font-size:13px}.loading p{margin:6px 0}.loading strong{font-size:14px}.loading progress{display:block;width:100%;height:6px;margin:10px 0;accent-color:var(--accent)}#precision-choice{display:flex;gap:8px;align-items:center;flex-wrap:wrap}select{padding:8px;border:1px solid #c8ae96;border-radius:8px;background:#fff}#messages{overflow:auto;flex:1;min-height:110px;padding:14px 0;overscroll-behavior:contain}.empty{margin:16px 0;color:var(--muted);font-size:14px}.message{margin:0 0 18px;padding:14px 16px;background:#fffcf7;border-radius:12px}.message.user{background:#eadac8;margin-left:32px}.message .who{display:block;font-size:12px;font-weight:650;color:var(--muted);margin-bottom:5px}.message .text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px;margin:0}.message footer{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px;color:var(--muted);margin-top:7px}.message footer button{font-size:12px;min-height:44px}.message.error{border-left:3px solid #a3422c}.message.incomplete .who::after{content:" · 途中で停止"}#composer{display:flex;gap:10px;align-items:stretch;padding-top:12px;border-top:1px solid #dbcab7;flex-shrink:0}textarea{resize:none;border:1px solid #c6af99;border-radius:10px;padding:12px;background:#fffdf9;flex:1;min-width:0;color:#433025;font-size:16px;line-height:1.6}textarea::placeholder{color:#897666}#composer button{align-self:center}.log-actions{display:flex;flex-wrap:wrap;align-items:center;gap:0 8px;font-size:11px;flex-shrink:0}.log-actions p{flex:1 1 200px;color:var(--muted);margin:9px 0}.log-actions button{font-size:12px}
.character{position:relative;overflow:hidden;background:#8a7057 url('./assets/room.png') center/cover no-repeat}.character canvas{display:block;width:100%;height:100%}.character-name{position:absolute;bottom:24px;left:24px;background:#fcf6e9;color:#4a3223;padding:7px 16px;border-radius:8px;font-size:14px}.character>p{position:absolute;top:20px;left:16px;right:16px;background:#fff7eb;padding:12px;font-size:13px}dialog{max-width:560px;width:calc(100% - 32px);border:1px solid #d9c3ac;border-radius:14px;background:#fffaf2;color:#433025;padding:25px;max-height:85svh;overflow:auto}dialog::backdrop{background:#24170c80}dialog>button{float:right}dialog h2{font-size:22px;clear:both}dialog p{font-size:14px}a{color:#70412b}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@media(max-width:760px){header{height:64px;padding:8px 16px}.brand{font-size:19px}.brand img{width:34px;height:34px}header>.quiet{font-size:12px;padding:8px}main{height:calc(100svh - 64px);display:flex;flex-direction:column}.character{order:-1;height:clamp(120px,20svh,180px);flex-shrink:0;background-position:center 60%}.character-name{bottom:12px;left:16px;font-size:12px;padding:5px 12px}.conversation{flex:1;padding:14px 16px max(8px,env(safe-area-inset-bottom));min-height:0}.eyebrow{display:none}h1{font-size:21px}.intro>p:last-child{margin:5px 0 9px;font-size:12px}.loading{padding:9px 12px;font-size:12px}.loading strong{font-size:13px}#messages{padding:10px 0;min-height:70px}.message{padding:11px 13px;margin-bottom:12px}.message.user{margin-left:24px}#composer{gap:8px;padding-top:8px}#composer button{padding:10px 13px}.log-actions p{font-size:10px;flex-basis:100%;margin-bottom:0}.log-actions .quiet{padding:4px 8px;min-height:36px}#precision-choice{gap:5px}#precision-choice label{width:100%}}
@media(max-height:650px) and (max-width:760px){.character{height:120px}.intro>p:last-child{display:none}.loading p{margin:3px 0}.loading{padding:7px 10px}.log-actions p{display:none}}
#saved-list details{border-top:1px solid #ddcbb8;padding:12px 0}#saved-list summary{cursor:pointer;font-size:14px;overflow-wrap:anywhere}#saved-list pre{white-space:pre-wrap;overflow-wrap:anywhere;font-family:inherit;font-size:14px;line-height:1.7;margin:12px 0}.message footer .quiet{font-size:12px}
.voice-actions{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:12px;flex-shrink:0}.voice-actions label{display:flex;gap:6px;align-items:center}.voice-actions p{font-size:11px;color:var(--muted);margin:0;flex-basis:100%}.reply-audio{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}.reply-audio audio{width:100%;max-width:420px;height:40px}.reply-audio a{font-size:12px}.message footer{flex-wrap:wrap}
.voice-actions label{min-height:44px;cursor:pointer;padding:6px 2px}.voice-actions input{width:18px;height:18px}

.offline-panel{margin-top:6px}.offline-panel summary{cursor:pointer;min-height:32px;padding:4px 0;color:var(--accent)}.offline-panel p{font-size:12px;overflow-wrap:anywhere}.offline-panel[open]{max-height:200px;overflow:auto}.offline-panel button{font-size:12px}.loading{max-height:42%;overflow:auto}::selection{background:#dec5a8;color:#433025}textarea{caret-color:var(--accent)}a{text-underline-offset:3px}
@media(max-width:760px){.conversation{overflow:auto}.loading{max-height:38%}.offline-panel summary{min-height:36px}.log-actions .quiet{min-height:44px}.character{height:clamp(100px,17svh,150px)}#messages{min-height:110px}}

.log-actions p,.log-actions,.voice-actions p,.message footer{font-size:12px}.loading{border-left:0;border:1px solid #dfd0bf;border-radius:10px}.message.error{border:1px solid #a3422c}textarea::placeholder{color:#796458}


.memory-option{display:flex;gap:7px;align-items:center;min-height:44px;font-size:13px}.memory-option input{width:18px;height:18px}.diagnostic-panel{font-size:12px}.diagnostic-panel summary{min-height:36px;cursor:pointer;padding:5px 0}.diagnostic-panel pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;font-family:inherit}.voice-actions .voice-engine{color:#433025;font-size:12px;font-weight:600}.loading{max-height:48%}

