@font-face{font-family:Zen Kaku Gothic New;src:url(/fonts/zen_kaku_gothic_new_regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Zen Kaku Gothic New;src:url(/fonts/zen_kaku_gothic_new_bold.woff2) format("woff2");font-weight:700;font-display:swap}:root{--sophie-accent: #3d4a63;--sophie-accent-dark: #2a3142;--sophie-action-bg: var(--sophie-accent);--sophie-link: #1765a9;--sophie-page: #f7f6f2;--sophie-surface: #f7f6f2;--sophie-card: #ffffff;--sophie-cream: #efeee6;--sophie-sand: #dcd7cb;--sophie-bubble: #ecedee;--sophie-muted: #667184;--sophie-muted-strong: #5e697e;--sophie-gold: #b39b80;--sophie-danger-bg: #fae7e7;--sophie-danger: #c90d0d;--sophie-danger-action-bg: var(--sophie-danger);--sophie-danger-action-border: var(--sophie-danger);--sophie-danger-border: #f0c9c9;--bg-color: var(--sophie-card);--bg-secondary: var(--sophie-cream);--bg-page: var(--sophie-page);--text-color: var(--sophie-accent-dark);--text-secondary: var(--sophie-muted);--border-color: var(--sophie-sand);--message-guest-bg: var(--sophie-action-bg);--message-guest-text: #ffffff;--message-system-bg: var(--sophie-bubble);--message-system-text: var(--sophie-accent-dark);--message-date-bg: rgb(220 215 203 / .4);--error-bg: var(--sophie-danger-bg);--error-text: var(--sophie-danger);--error-border: var(--sophie-danger-border);--toast-bg: var(--sophie-accent-dark);--toast-text: #ffffff;--shadow: 0 18px 42px rgb(61 74 99 / .14);--font-primary: system-ui, sans-serif}html:lang(ja){--font-primary: "Zen Kaku Gothic New", system-ui, sans-serif}[data-theme=dark]{--sophie-accent: #f7f6f2;--sophie-action-bg: #5f789d;--sophie-accent-dark: #cfd7e6;--sophie-link: #8fc7ff;--sophie-page: #242833;--sophie-surface: #303645;--sophie-card: #202532;--sophie-cream: #303645;--sophie-sand: #485062;--sophie-bubble: #394051;--sophie-muted: #afb5bf;--sophie-muted-strong: #d4dae4;--sophie-danger-bg: #d6828f;--sophie-danger: #5e1724;--sophie-danger-action-bg: #b3261e;--sophie-danger-action-border: #ffb4b4;--sophie-danger-border: #ffb4b4;--text-color: #f7f6f2;--message-system-text: #f7f6f2;--message-date-bg: rgb(32 37 50 / .84);--toast-bg: #202532;--toast-text: #f7f6f2}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100vh;height:100dvh;overflow:hidden;font-family:var(--font-primary);font-size:14px;line-height:1.5;color:var(--text-color);background:var(--sophie-page);-webkit-font-smoothing:antialiased}button,input,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}::placeholder{color:var(--sophie-muted)}#app{height:100%;display:flex;align-items:stretch;justify-content:center;padding:0;background:radial-gradient(circle at 12% 0,rgb(255 255 255 / .38),transparent 24rem),var(--sophie-page)}.chat-container{display:flex;flex-direction:column;width:100%;max-width:640px;height:100%;max-height:100vh;max-height:100dvh;overflow:hidden;background:var(--sophie-surface)}@media(min-width:640px){#app{align-items:center;padding:22px}.chat-container{width:min(100%,clamp(640px,calc(100vw - 518px),1120px));max-width:none;height:min(874px,calc(100dvh - 44px));border:1px solid rgb(61 74 99 / .12);border-radius:38px;box-shadow:var(--shadow)}}.chat-header{flex-shrink:0;display:grid;grid-template-columns:44px minmax(0,1fr) 126px;align-items:center;gap:8px;padding:max(52px,calc(18px + env(safe-area-inset-top))) max(14px,env(safe-area-inset-right)) 8px max(14px,env(safe-area-inset-left));color:var(--sophie-accent);background:var(--sophie-surface)}.chat-header-side{display:flex;align-items:center;min-width:0}.chat-header-side-left{justify-content:flex-start}.chat-header-side-right{justify-content:flex-end;gap:6px}.chat-title-wrap{min-width:0;text-align:center}.chat-title{overflow:hidden;margin:0;color:var(--sophie-accent);font-size:15.5px;font-weight:700;letter-spacing:0;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.chat-subtitle{margin-top:1px;overflow:hidden;color:var(--sophie-muted);font-size:11px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.chat-back-button,.chat-new-chat-button,.chat-menu-button{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0;color:var(--sophie-accent);background:var(--sophie-card);border:1px solid var(--sophie-sand);border-radius:50%;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s,transform .15s}.chat-new-chat-button,.chat-menu-button,.lang-selector{display:inline-flex}.chat-back-button:hover:not(:disabled){background:var(--sophie-cream);border-color:var(--sophie-gold)}.chat-back-button:active:not(:disabled){transform:scale(.96)}.chat-back-button:focus-visible,.chat-new-chat-button:focus-visible,.chat-menu-button:focus-visible,.lang-button:focus-visible,.lang-option:focus-visible,.confirm-dialog-button:focus-visible,.chat-dropdown-item:focus-visible,.thread-card:focus-visible,.send-button:focus-visible,.mic-button:focus-visible,.new-chat-button:focus-visible,.history-load-more:focus-visible,.history-retry-button:focus-visible,.message-input:focus-visible{outline:2px solid var(--sophie-link);outline-offset:2px}.chat-back-button:disabled,.chat-new-chat-button:disabled,.chat-menu-button:disabled{cursor:not-allowed;opacity:.45}.status-banner{flex-shrink:0;display:flex;align-items:center;gap:10px;margin:2px max(14px,env(safe-area-inset-right)) 8px max(14px,env(safe-area-inset-left));padding:10px 14px;color:var(--sophie-accent);background:var(--sophie-card);border:1px solid var(--sophie-sand);border-radius:16px;box-shadow:0 1px 4px #3d4a631a}.status-banner-avatar{flex-shrink:0;width:26px;height:26px;object-fit:cover;object-position:center 42%;background:var(--sophie-cream);border-radius:50%}.status-banner-label{min-width:0;overflow:hidden;font-size:13.5px;font-weight:700;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.lang-dropdown{position:absolute;top:100%;right:0;z-index:100;min-width:136px;margin-top:6px;overflow:hidden;background:var(--sophie-card);border:1px solid var(--sophie-sand);border-radius:12px;box-shadow:var(--shadow)}.lang-selector{position:relative;flex-shrink:0}.lang-button{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;color:var(--sophie-accent);background:var(--sophie-card);border:1px solid var(--sophie-sand);border-radius:50%;cursor:pointer}.lang-label{display:none}.lang-option{display:block;width:100%;padding:9px 14px;color:var(--text-color);font-size:13px;text-align:left;background:none;border:none;cursor:pointer}.lang-option:hover,.lang-option.active{background:var(--sophie-cream)}.lang-option.active{color:var(--sophie-accent);font-weight:700}.message-list-container{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.message-list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:4px;padding:0 max(14px,env(safe-area-inset-right)) 8px max(14px,env(safe-area-inset-left));scrollbar-width:none}.message-list::-webkit-scrollbar{width:0;height:0}.message-date-divider{align-self:center;margin:10px 0 2px;padding:3px 12px;color:var(--sophie-muted-strong);background:var(--message-date-bg);border-radius:10px;font-size:11px;line-height:1.3}.message{display:flex;gap:8px;max-width:100%;margin-top:10px;animation:messageSlideIn .2s ease-out}@keyframes messageSlideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.message-bubble{display:flex;flex-direction:column;max-width:min(82%,320px);gap:3px}.message-avatar{flex-shrink:0;width:32px;height:32px;align-self:flex-end;color:var(--sophie-accent-dark);border-radius:50%}.message-avatar img{display:block;width:32px;height:32px;object-fit:cover;object-position:center 42%;background:var(--sophie-cream);border-radius:50%}.message-sender{margin-left:4px;color:var(--sophie-muted);font-size:11.5px;font-weight:400;line-height:1.25}.message-content{overflow-wrap:anywhere;padding:11px 15px;color:var(--message-system-text);background:var(--message-system-bg);border-radius:18px 18px 18px 5px;font-size:14.5px;line-height:1.65;word-break:normal}.message-content a{color:inherit;text-decoration:underline}.message-content p{margin:0;white-space:pre-wrap}.message-content p+p{margin-top:.5em}.message-content ul,.message-content ol{margin:.4em 0;padding-left:1.4em}.message-content li{margin:.15em 0}.message-content h1,.message-content h2,.message-content h3{margin:.5em 0 .25em;font-size:inherit;font-weight:700}.message-content h1{font-size:1.1em}.message-content>:first-child{margin-top:0}.message-content table{width:100%;margin:.4em 0;border-collapse:collapse;font-size:.9em}.message-content th,.message-content td{padding:4px 8px;text-align:left;border:1px solid rgb(142 150 165 / .35)}.message-content code,.message-content pre{background:#8e96a529;border-radius:6px}.message-content code{padding:1px 4px;font-size:.9em}.message-content pre{overflow-x:auto;margin:.4em 0;padding:8px}.message-content pre code{padding:0;background:none}.message-content blockquote{margin:.4em 0;padding-left:10px;color:inherit;border-left:3px solid rgb(142 150 165 / .45);opacity:.85}.message-timestamp{margin-left:4px;color:var(--sophie-muted);font-size:10.5px;line-height:1.25}.message-guest{justify-content:flex-end}.message-guest .message-bubble{align-items:flex-end}.message-guest .message-content{color:var(--message-guest-text);background:var(--message-guest-bg);border-bottom-right-radius:5px;border-bottom-left-radius:18px}.message-guest .message-timestamp{margin-right:4px;margin-left:0;text-align:right}.message-system{align-self:center;justify-content:center;max-width:92%}.message-system .message-bubble{align-items:center;max-width:100%}.message-system .message-content{color:var(--message-system-text);text-align:center;background:var(--message-system-bg);border-radius:14px;font-size:12.5px}.message-system .message-timestamp{display:none}.privacy-notice{display:block;margin-top:6px;font-size:11px}.loading-row{display:flex;align-items:flex-end;gap:8px;margin-top:10px}.loading-indicator{display:flex;align-items:center;gap:5px;padding:13px 16px;background:var(--message-system-bg);border-radius:18px 18px 18px 5px}.loading-dot{width:7px;height:7px;background:var(--sophie-muted);border-radius:50%;animation:loadingBounce 1.2s infinite ease-in-out}.loading-dot:nth-child(2){animation-delay:.2s}.loading-dot:nth-child(3){animation-delay:.4s}@keyframes loadingBounce{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-2px)}}.error-banner{flex-shrink:0;margin:4px max(14px,env(safe-area-inset-right)) max(4px,env(safe-area-inset-bottom)) max(14px,env(safe-area-inset-left));padding:10px 14px;color:var(--error-text);text-align:center;background:var(--error-bg);border:1px solid var(--error-border);border-radius:12px;font-size:12.5px}.input-area{flex-shrink:0;padding:8px 0 max(18px,env(safe-area-inset-bottom));background:var(--sophie-surface)}.input-top-row{display:flex;justify-content:flex-start;padding:0 max(14px,env(safe-area-inset-right)) 6px max(14px,env(safe-area-inset-left))}.new-chat-button{max-width:100%;padding:4px 12px;overflow:hidden;color:var(--sophie-accent);font-size:12px;font-weight:500;text-overflow:ellipsis;white-space:nowrap;background:var(--sophie-card);border:1px solid var(--sophie-sand);border-radius:999px;cursor:pointer}.input-form{display:flex;align-items:flex-end;gap:8px;margin:0 max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left));padding:6px 6px 6px 8px;background:var(--sophie-card);border:1px solid var(--sophie-sand);border-radius:999px}.input-form.disabled{opacity:.6}.message-input{flex:1;min-width:0;max-height:110px;padding:8px 4px;color:var(--sophie-accent);font-size:16px;line-height:1.4;background:transparent;border:none;outline:none;resize:none}.message-input:disabled{cursor:not-allowed}.mic-button,.send-button{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid transparent;border-radius:50%;cursor:pointer;transition:background-color .15s,color .15s,transform .15s,opacity .15s}.mic-button{color:var(--sophie-accent);background:var(--sophie-cream)}.mic-button.active{color:#fff;background:var(--sophie-danger-action-bg);border-color:var(--sophie-danger-action-border);animation:micPulse 1.5s ease-in-out infinite}@keyframes micPulse{0%,to{opacity:1}50%{opacity:.7}}.send-button{color:#fff;background-color:var(--sophie-action-bg)}.send-button:hover:not(:disabled),.mic-button:hover:not(:disabled){transform:scale(1.04)}.send-button:disabled,.mic-button:disabled{cursor:not-allowed;opacity:.45}.toast{position:fixed;top:calc(16px + env(safe-area-inset-top));left:50%;z-index:200;max-width:min(360px,calc(100vw - 32px));padding:10px 18px;color:var(--toast-text);background:var(--toast-bg);border-radius:999px;box-shadow:var(--shadow);transform:translate(-50%);animation:toastSlideIn .25s ease-out}@keyframes toastSlideIn{0%{opacity:0;transform:translate(-50%) translateY(-10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.error-page{display:flex;align-items:center;justify-content:center;height:100%;padding:32px;text-align:center}.error-page-message{color:var(--sophie-muted-strong);font-size:16px}.confirm-dialog-backdrop{position:fixed;inset:0;z-index:10;display:flex;align-items:flex-end;justify-content:center;padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));overflow-y:auto;background:#2a314266}.confirm-dialog{display:flex;flex-direction:column;gap:12px;width:min(100%,360px);padding:20px;max-height:calc(100dvh - max(16px,env(safe-area-inset-top)) - max(16px,env(safe-area-inset-bottom)));overflow-y:auto;color:var(--text-color);background:var(--sophie-card);border-radius:20px;box-shadow:var(--shadow)}.confirm-dialog-title{font-size:16px;font-weight:700}.confirm-dialog-body{color:var(--sophie-muted-strong);font-size:14px}.confirm-dialog-buttons{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:4px}.confirm-dialog-button{padding:9px 16px;font-size:14px;font-weight:700;border:1px solid transparent;border-radius:999px;cursor:pointer}.confirm-dialog-button--cancel{color:var(--sophie-accent);background:var(--sophie-cream)}.confirm-dialog-button--confirm{color:#fff;background-color:var(--sophie-action-bg)}.confirm-dialog-button--danger{color:#fff;background:var(--sophie-danger-action-bg);border-color:var(--sophie-danger-action-border)}@media(max-width:360px){.confirm-dialog-buttons{flex-direction:column}}.chat-dropdown-menu{position:fixed;z-index:11;min-width:190px;padding:6px;color:var(--text-color);background:var(--sophie-card);border:1px solid var(--sophie-sand);border-radius:14px;box-shadow:var(--shadow)}.chat-dropdown-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;color:var(--text-color);text-align:left;background:transparent;border:none;border-radius:10px;cursor:pointer}.chat-dropdown-item:hover:not(:disabled){background:var(--sophie-cream)}.chat-dropdown-item:disabled{cursor:not-allowed;opacity:.5}.chat-dropdown-item-icon{display:inline-flex;color:var(--sophie-muted-strong)}.history-container{display:flex;flex-direction:column;height:100%;background:var(--sophie-surface)}.history-header{grid-template-columns:minmax(0,1fr) auto}.history-header .chat-title{text-align:left}.history-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:12px max(12px,env(safe-area-inset-right)) max(18px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left))}.history-loading,.history-empty,.history-error{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:24px;color:var(--sophie-muted-strong);text-align:center}.history-spinner{width:26px;height:26px;border:3px solid var(--sophie-sand);border-top-color:var(--sophie-accent);border-radius:50%;animation:historySpin .8s linear infinite}@keyframes historySpin{to{transform:rotate(360deg)}}.thread-card,.history-load-more,.history-retry-button,.history-append-error{width:100%;border:1px solid var(--sophie-sand);border-radius:16px;background:var(--sophie-card)}.thread-card{display:flex;gap:12px;padding:12px;color:var(--text-color);text-align:left;cursor:pointer}.thread-card:hover,.history-load-more:hover:not(:disabled),.history-retry-button:hover:not(:disabled){background:var(--sophie-cream)}.thread-card-avatar{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:36px;height:36px;color:#fff;background-color:var(--sophie-action-bg);border-radius:50%}.thread-card-body{min-width:0;flex:1}.thread-card-meta{display:flex;gap:8px;align-items:center;justify-content:space-between}.thread-card-sender{overflow:hidden;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.thread-card-time{flex-shrink:0;color:var(--sophie-muted);font-size:12px}.thread-card-preview{margin-top:4px;overflow:hidden;color:var(--sophie-muted-strong);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.history-load-more,.history-retry-button{padding:11px 14px;color:var(--sophie-accent);font-weight:700;cursor:pointer}.history-load-more:disabled,.history-retry-button:disabled{cursor:not-allowed;opacity:.5}.history-append-error{display:flex;flex-direction:column;gap:8px;padding:12px;color:var(--error-text);background:var(--error-bg)}.history-append-error-message{margin:0}@media(max-width:360px){.chat-header{grid-template-columns:40px minmax(0,1fr) 126px;gap:4px}.history-header{grid-template-columns:minmax(0,1fr) auto}.chat-title{font-size:14px}.chat-subtitle{font-size:10.5px}.message-content{font-size:14px}}
