.login-page{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:25px;background:radial-gradient(ellipse at 50% 25%,#f9faff,#e9edf4)}.login-card{background:#fff;border:1px solid #e0e6ef;border-radius:22px;padding:38px 39px 28px;width:100%;max-width:430px;box-shadow:0 16px 60px #2330470b}.login-card .brand{padding:0;margin-bottom:40px}.eyebrow{display:block;font-size:10px;letter-spacing:1.4px;font-weight:600;color:#93a0b9}.eyebrow span{padding:0 9px;color:#bdc8da}.login-card h1{font-size:29px;letter-spacing:-1.1px;font-weight:650;line-height:1.35;margin:13px 0 9px}.login-subtitle{font-size:13px;color:#8a96aa;margin:0 0 30px}.person-switch{border:0;padding:0;margin:0 0 26px;display:flex;gap:10px}.person-switch label{position:relative;border:1px solid #e5eaf2;border-radius:12px;flex:1;display:flex;align-items:center;gap:9px;padding:12px 10px;cursor:pointer}.person-switch label.selected{border-color:#92a9ee;background:#f3f6ff;box-shadow:0 0 0 1px #92a9ee}.person-switch input{position:absolute;opacity:0;width:1px;height:1px}.person-switch label:has(input:focus-visible){outline:3px solid #94adff;outline-offset:3px}.login-avatar{display:grid;place-items:center;flex-shrink:0;width:32px;height:32px;background:#e6edfd;border-radius:11px;color:#657fb9;font-weight:600}.login-avatar.wife{background:#eee3f4;color:#9878a6}.person-switch strong{display:block;font-size:12px;font-weight:600}.person-switch small{display:block;font-size:10px;color:#8b98b0;margin-top:4px}.key-label{display:block;font-size:11px;font-weight:500;color:#7b889e;margin-bottom:9px}.key-input{border:1px solid #e0e6f0;border-radius:10px;display:flex;gap:10px;align-items:center;padding:0 13px;color:#a6b2c5}.key-input input{border:0;outline:0;min-width:0;flex:1;height:43px;background:transparent}.key-input input:focus-visible{outline:none}.key-input:focus-within{border-color:#8fa7ec;box-shadow:0 0 0 3px #496ddd18}.login-submit{background:var(--accent);color:#fff;width:100%;display:flex;align-items:center;justify-content:center;gap:16px;padding:14px;border-radius:10px;font-size:12px;font-weight:550;margin-top:18px}.login-submit:disabled{opacity:.55}.login-error{font-size:11px;line-height:1.7;color:#ae6256}.login-note{display:flex;align-items:center;justify-content:center;gap:7px;font-size:10px;color:#9aa7bc;margin:27px 0 0;line-height:1.7}.login-footer{font-size:10px;color:#9ca8ba;margin-top:24px}.login-footer span{margin:0 7px}@media(max-width:600px){.login-page{padding:20px}.login-card{padding:32px 27px 26px;border-radius:20px}.login-card h1{font-size:27px}.key-input input{font-size:16px}}.app-shell{display:flex;position:relative;max-width:1250px;height:calc(100dvh - 64px);min-height:400px;margin:32px auto;background:var(--paper);border:1px solid #dfe5ee;border-radius:18px;box-shadow:0 14px 60px #2330470c;overflow:hidden}.sidebar{width:280px;flex-shrink:0;border-right:1px solid var(--line);display:flex;flex-direction:column;padding:30px 17px 0;background:#fcfdff}.sidebar-section-label{font-size:10px;letter-spacing:1.4px;font-weight:700;color:#8b96a9;margin:44px 13px 16px;display:flex;align-items:center;justify-content:space-between}.sidebar-section-label>span{font-size:10px;background:#edf0f6;border-radius:5px;padding:3px 6px;letter-spacing:0}.conversation-selected{display:flex;align-items:center;gap:12px;background:#edf2ff;border:1px solid #e2eafe;border-radius:12px;padding:15px 13px}.partner-avatar{display:grid;place-items:center;position:relative;width:42px;height:42px;flex-shrink:0;border-radius:15px;background:#eadff1;color:#856191;font-weight:600;font-size:18px}.online-dot,.away-dot{position:absolute;bottom:-1px;right:-1px;width:11px;height:11px;border:2px solid white;background:#53b68e;border-radius:50%}.away-dot{background:#b1bbc9}.conversation-selected strong{font-size:14px;font-weight:650}.conversation-selected p{font-size:11px;color:#7a87a0;margin:5px 0 0}.conversation-dot{margin-left:auto;background:var(--accent);height:6px;width:6px;border-radius:50%}.sidebar-note{margin:auto 16px 45px;padding-top:35px;max-width:205px}.language-symbols{display:flex;align-items:center;gap:12px;color:#adb7c8}.language-symbols span{font-size:21px;color:#7b8db4;font-weight:500}.sidebar-note h2{font-weight:600;font-size:13px;line-height:1.6;margin:15px 0 7px}.sidebar-note p{font-size:12px;line-height:1.8;color:#8a96aa;margin:0}.sidebar-profile{display:flex;align-items:center;gap:11px;padding:21px 10px;border-top:1px solid var(--line)}.self-avatar{display:grid;place-items:center;width:35px;height:35px;background:#e5ebfa;color:#5873b8;border-radius:50%;font-size:13px;font-weight:600}.sidebar-profile strong{font-size:12px;display:block}.sidebar-profile small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.sidebar-profile .icon-button{margin-left:auto}.chat-panel{position:relative;flex:1;min-width:0;display:flex;flex-direction:column;background:var(--surface)}.chat-header{background:#fff;height:86px;flex-shrink:0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 30px}.header-person h1{font-size:15px;font-weight:650;margin:0 0 5px}.header-person>span{font-size:11px;color:var(--muted)}.header-person>span.connection-warning{color:#aa7b43}.header-language{margin-left:auto;display:flex;align-items:center;gap:7px;color:#8a97ab;font-size:10px;border:1px solid var(--line);padding:7px 10px;border-radius:8px}.header-language span>span{padding:0 5px;color:#a5b0c0}.chat-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:22px 32px 24px;scrollbar-width:thin;scrollbar-color:#d4dce9 transparent;overflow-anchor:auto}.empty-chat{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 15px 60px}.empty-symbol{position:relative;display:grid;place-items:center;width:73px;height:73px;border-radius:26px;background:#e7edfc;color:#6985ce;margin-bottom:25px}.empty-symbol>span{position:absolute;right:-7px;bottom:0;border:4px solid var(--surface);border-radius:14px;background:#e8ddef;color:#8a6897;width:32px;height:33px;font-size:14px;display:grid;place-items:center}.empty-chat h2{font-size:21px;letter-spacing:-.6px;font-weight:600;margin:0 0 12px}.empty-chat p{max-width:300px;font-size:13px;line-height:1.8;color:#8793a7;margin:0}.empty-label{display:flex;align-items:center;gap:5px;margin-top:33px;font-size:10px;color:#a2acbd}.connection-error{font-size:11px;color:#ae6256;margin:0 0 10px;line-height:1.6}.connection-error{padding:0 30px;margin:8px 0 0}.load-older{display:block;margin:0 auto 20px;color:#7c8ba5;font-size:11px;background:#fff;border:1px solid var(--line);border-radius:15px;padding:7px 13px}.jump-to-latest{position:absolute;bottom:116px;right:26px;background:#fff;box-shadow:0 3px 14px #23304718;border:1px solid var(--line);border-radius:50%;color:var(--accent)}@media(min-width:1600px){.app-shell{margin:60px auto;height:calc(100dvh - 120px)}}@media(max-width:1300px){.app-shell{margin:18px;height:calc(100dvh - 36px)}}@media(max-width:800px){.sidebar{width:228px;padding-left:12px;padding-right:12px}.chat-header{padding:0 20px}.chat-scroll{padding:20px}.header-language{display:none}.chat-header>.icon-button{margin-left:auto}.sidebar-note{margin-left:10px;margin-right:10px}}@media(max-width:600px){.app-shell{margin:0;border:0;border-radius:0;height:var(--chat-height, 100dvh);min-height:0;width:100%}.sidebar{display:none}.chat-header{height:76px;padding:calc(10px + env(safe-area-inset-top)) 19px 10px;min-height:76px;height:auto}.chat-header .partner-avatar{width:40px;height:40px;border-radius:14px}.chat-header .header-person h1{font-size:15px}.chat-scroll{padding:17px 15px 12px}.header-person>span{font-size:11px}.empty-chat{padding-bottom:40px}.empty-chat h2{font-size:20px;max-width:280px}.empty-chat p{font-size:13px;max-width:260px}.connection-error{padding:0 17px}.jump-to-latest{right:16px;bottom:112px}}@media(max-width:600px){html:has(.app-shell),body:has(.app-shell){overflow:hidden;height:100%;overscroll-behavior:none}body:has(.app-shell){position:fixed;inset:0;width:100%}.app-shell{position:fixed;top:var(--chat-top, 0px);left:0;right:0;bottom:auto;height:var(--chat-height, 100dvh)}:root[data-keyboard=open] .composer-region{padding-bottom:8px}}.day-divider{display:flex;align-items:center;justify-content:center;margin:10px 0 28px}.day-divider span{font-size:10px;letter-spacing:.3px;color:#8c98ab;background:#eaf0f6;padding:6px 13px;border-radius:20px}.message-row{display:flex;align-items:flex-end;gap:9px;margin:0 0 20px}.message-content{max-width:76%;min-width:0}.message-row.own{justify-content:flex-end}.bubble-avatar{width:25px;height:25px;border-radius:9px;background:#eadff1;color:#856191;display:grid;place-items:center;font-size:11px;flex-shrink:0;margin-bottom:22px}.message-bubble{padding:12px 16px;background:#fff;border:1px solid #e9edf4;border-radius:17px 17px 17px 5px;box-shadow:0 2px 3px #23304703;overflow:hidden}.message-bubble>p{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.7}.own .message-bubble{background:var(--accent);color:#fff;border-color:var(--accent);border-radius:17px 17px 5px}.original-toggle{display:flex;align-items:center;gap:5px;font-size:10px;color:#8f9cb0;padding:0;margin-top:9px}.original-toggle:hover{color:var(--accent)}.message-bubble .original-text{font-size:12px;line-height:1.8;margin-top:11px;padding-top:10px;border-top:1px solid var(--line);color:#7c899e}.message-meta{font-size:9px;color:#95a0b2;display:flex;align-items:center;gap:5px;margin:6px 4px 0;min-height:13px}.own .message-meta{justify-content:flex-end}.message-meta svg{color:#7c94d5}.pending .message-bubble{opacity:.75}.message-meta.failed,.message-meta.failed svg{color:#b25d58}.message-meta button{display:flex;align-items:center;gap:3px;font-size:10px;padding:0 0 0 6px;color:#a44c45;text-decoration:underline}.send-error{font-size:11px;color:#b25d58;max-width:290px;line-height:1.6}@media(max-width:800px){.message-content{max-width:85%}}@media(max-width:600px){.message-content{max-width:84%}.message-bubble{padding:10px 13px}.message-bubble>p{font-size:15px;line-height:1.65}.message-row{margin-bottom:17px;gap:7px}.bubble-avatar{width:23px;height:23px;font-size:10px}.message-meta{font-size:10px}.original-toggle{font-size:10px;margin-top:8px}.day-divider{margin-bottom:23px}}.image-attachment{display:block;max-width:320px;margin:-5px -9px 7px;border-radius:11px;overflow:hidden}.image-attachment:last-child{margin-bottom:-5px}.image-attachment img{max-width:100%;max-height:370px;display:block;object-fit:contain}.attachment-grid{display:flex;flex-direction:column;gap:10px}.attachment-grid:has(+p){margin-bottom:8px}.media-attachment{display:block;max-width:100%;width:320px;max-height:360px;border-radius:10px;background:#172032}.audio-attachment{max-width:100%;width:270px;height:45px}.file-attachment{display:flex;align-items:center;gap:11px;text-decoration:none;padding:3px 0;min-width:190px;max-width:310px}.file-symbol{display:grid;place-items:center;border-radius:9px;width:37px;height:41px;background:#eff3fa;color:#8b9abc;flex-shrink:0}.own .file-symbol{background:#ffffff20;color:#fff}.file-attachment>span:nth-child(2){min-width:0;flex:1}.file-attachment strong{font-size:12px;display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-weight:500}.file-attachment small{font-size:10px;opacity:.65;display:block;margin-top:5px}.file-attachment>svg{opacity:.7}@media(max-width:600px){.image-attachment{max-width:260px;margin:-4px -7px 5px}.image-attachment:last-child{margin-bottom:-4px}.audio-attachment{width:235px}.file-attachment{min-width:170px}}.message-tone{margin:5px 4px 0;color:#68788e;font-size:11px;line-height:1.5}.message-tone summary{cursor:pointer;width:fit-content;padding:6px 0;text-decoration:underline dotted;text-underline-offset:3px}.message-tone summary::marker{color:#a0acc0;font-size:9px}.tone-clue{padding:10px 12px;margin-top:2px;background:#edf1f7;border-radius:10px;max-width:300px;overflow-wrap:anywhere}.tone-clue p{margin:0}.tone-clue small{display:block;margin-top:6px;color:#7f8da1;font-size:10px}.composer-region{padding:15px 28px 16px;background:var(--surface);flex-shrink:0}.composer{display:flex;align-items:flex-end;padding:9px 10px 9px 9px;border:1px solid #e0e6f0;box-shadow:0 3px 12px #23304704;border-radius:15px;background:#fff;gap:10px}.attach-button{color:#9aa6ba;width:33px;height:33px;display:grid;place-items:center;flex-shrink:0}.attach-button:hover{color:var(--accent)}.composer textarea{border:0;resize:none;outline:none;min-width:0;flex:1;max-height:150px;min-height:33px;padding:7px 0;font-size:13px;line-height:20px;background:transparent;color:#233047}.composer textarea:focus-visible{outline:none}.composer:focus-within{border-color:#9fb2ee;box-shadow:0 0 0 2px #496ddd0a}.composer textarea::placeholder{color:#a0abbd}.send-button{width:33px;height:33px;flex-shrink:0;background:var(--accent);color:#fff;border-radius:10px;display:grid;place-items:center}.send-button:disabled{background:#e4eaf6;color:#a6b4d3}.send-button:not(:disabled):hover{background:#3a5ecb}.composer-footnote{display:flex;align-items:center;justify-content:center;gap:7px;font-size:9px;color:#98a3b5;padding-top:11px}.language-dot{width:4px;height:4px;background:#91a5d6;border-radius:50%}.footnote-separator{color:#c2cad7}.char-count{margin-left:auto}.composer-error{font-size:11px;color:#ae6256;margin:0 0 10px;line-height:1.6}.upload-tray{display:flex;gap:8px;overflow-x:auto;padding-bottom:10px}.upload-chip{display:flex;align-items:center;gap:8px;padding:10px;background:#fff;border:1px solid var(--line);border-radius:10px;max-width:230px;min-width:170px;color:#7d8ba3}.upload-chip>span{flex:1;min-width:0}.upload-chip strong{font-size:11px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.upload-chip small{font-size:9px;display:block;margin-top:3px}.upload-chip button{padding:3px;color:#a2acbd}.upload-error{border-color:#eac6bf;color:#ab6256}@media(max-width:800px){.composer-region{padding:13px 17px}}@media(max-width:600px){.composer-region{padding:10px 12px calc(10px + env(safe-area-inset-bottom))}.composer{gap:6px;padding:8px;border-radius:17px}.composer textarea{font-size:16px;line-height:22px;min-height:35px;padding:6px 0}.attach-button{height:35px;width:29px}.send-button{height:35px;width:35px;border-radius:12px}.composer-footnote{font-size:9px;padding-top:9px;gap:5px}}.translation-style{display:flex;align-items:center;justify-content:flex-end;gap:9px;margin:0 2px 9px;color:#7a879c;font-size:11px}.translation-style select{font:inherit;font-size:12px;color:#496ddd;background:#fff;border:1px solid #dfe6f5;border-radius:8px;padding:7px 25px 7px 10px;max-width:150px;min-height:32px}.translation-style label{font-weight:500}@media(max-width:600px){.translation-style select{font-size:16px;max-width:170px;min-height:36px}}.details-modal{width:430px;max-width:100%;background:#fff;border-radius:20px;padding:25px;box-shadow:0 20px 80px #17243c30;border:0;max-height:90dvh;overflow-y:auto}.details-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:23px}.details-heading h2{font-size:17px;font-weight:600;margin:0;letter-spacing:-.4px}.details-item{display:flex;align-items:flex-start;gap:14px;margin:23px 0}.details-item>svg{width:19px;flex-shrink:0;color:#8197c7;margin-top:2px}.details-item h3{font-size:12px;font-weight:600;margin:0 0 7px}.details-item p{font-size:12px;line-height:1.8;color:#8895aa;margin:0}.logout-button{display:flex;align-items:center;gap:8px;border-top:1px solid var(--line);padding:17px 0 0;margin-top:27px;width:100%;font-size:12px;color:#8c98ad}@media(max-width:600px){.details-modal{padding:23px;width:calc(100% - 24px);margin:auto 12px calc(12px + env(safe-area-inset-bottom))}}.details-modal::backdrop{background:#17243c55;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.notifications-panel{border-top:1px solid var(--line);margin-top:22px;padding-top:1px}.install-steps{padding:12px 14px;background:#f4f6fc;border-radius:10px;margin:12px 0}.install-steps strong{font-size:11px;font-weight:600}.install-steps p{font-size:11px;line-height:1.8;color:#7a879c;margin:7px 0 0}.install-steps svg{display:inline;vertical-align:middle;margin:0 3px}.notification-button{border:1px solid #dce4f7;background:#edf2ff;color:#496ddd;border-radius:9px;padding:11px 14px;width:100%;font-size:12px}.notification-button:disabled{opacity:.55}.notification-note,.notification-error{font-size:11px;line-height:1.7;color:#8793a7}.notification-error{color:#ae6256}:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif;color:#233047;background:#e9edf4;font-synthesis:none;-webkit-font-smoothing:antialiased;font-size:14px;--accent: #496ddd;--muted: #7a879c;--line: #e9edf3;--paper: #fff;--surface: #f5f7fb}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button,a,input,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default}button{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #94adff;outline-offset:3px}button{border:0;background:none}a{color:inherit}button svg{flex-shrink:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.brand{display:flex;gap:10px;align-items:center;padding:0 13px}.brand img{width:35px;height:35px}.brand>span{font-size:29px;line-height:1;font-weight:720;letter-spacing:-1.5px}.brand-japanese{font-size:10px;letter-spacing:1px;display:block;font-weight:500;color:#8a97ab;margin-top:5px}.icon-button{width:35px;height:35px;display:grid;place-items:center;border-radius:8px;color:#8a97ab;flex-shrink:0}.icon-button:hover{background:#eef2f9;color:var(--accent)}.app-loading{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;color:#8896b0;font-size:13px}.app-loading img{width:50px;height:50px}.app-loading button{background:#fff;border-radius:9px;padding:12px 20px}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:600px){body{background:var(--surface)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important}}
