/* Live bindings only — keep original Liquid Glass layout and iPhone SE responsive rules intact. */
[hidden],#linsumi-app[hidden],#auth-screen[hidden],.auth-result[hidden]{display:none!important}
.auth-screen{display:flex;position:relative;min-height:100dvh;height:100dvh;overflow-y:auto;align-items:center;justify-content:center;background:radial-gradient(ellipse 40% 40% at 10% 0%,#d7e6ff83,transparent),radial-gradient(ellipse 40% 40% at 90% 100%,#e0e3ff8c,transparent)}
.auth-screen .login-shell{height:auto;min-height:min(100dvh,740px);width:100%;max-width:480px;align-items:center;justify-content:center;padding:30px 20px 45px;overflow:visible}
.auth-screen .login-brand{margin-bottom:23px}
.auth-screen .login-panel{width:min(100%,400px);max-width:400px;padding:27px 25px}
.auth-screen .login-note{margin:19px 0 8px}
.auth-screen .auth-extra{width:100%;max-width:400px;font-size:12px;margin:5px 0;color:var(--muted)}
.auth-screen .auth-extra summary{cursor:pointer;text-align:center;color:var(--blue);padding:10px}
.auth-extra-form,.live-form{display:grid;gap:11px;padding:12px 0 5px}
.auth-extra-form label,.live-form label{display:grid;gap:5px;color:var(--muted);font-size:12px}
.auth-extra-form input,.live-form input,.live-form select{min-width:0;width:100%;height:42px;border:1px solid var(--outline);background:var(--card);color:var(--ink);border-radius:11px;padding:8px 11px;font-size:13px}
.auth-extra-form button,.live-form button,.live-action{border:1px solid #6f9efc50;background:var(--blue-soft);color:var(--blue);padding:10px 13px;border-radius:11px;font-size:12px;font-weight:650}
.auth-message{max-width:400px;margin:6px auto;text-align:center;color:#bd4b5e;font-size:12px;line-height:1.5}
.auth-fallback-link{color:var(--blue);font-weight:700}
.auth-result{width:100%;max-width:400px;background:var(--card);border:1px solid var(--outline);padding:12px;border-radius:14px}
.auth-result pre{white-space:pre-wrap;overflow-wrap:anywhere;user-select:text;font-size:12px;line-height:1.6}
.auth-result button{border-radius:10px;padding:10px;background:var(--blue);color:white}
#live-screen-frame{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#132039;z-index:2}
#live-screen-frame[hidden]{display:none}
#desktop-card .pc-dropdown-container{z-index:8}
#desktop-card .fullscreen-control{z-index:7}
#desktop-card .offline-mask{z-index:4}
#desktop-card .screen-state-label{position:absolute;z-index:4;top:50%;left:50%;transform:translate(-50%,-50%);max-width:80%;text-align:center;padding:9px 13px;border-radius:11px;background:#142e5cbd;color:#fff;backdrop-filter:blur(12px);font-size:11px;white-space:normal}
#desktop-card .screen-state-label:empty{display:none}
#desktop-card .screen-play-button{position:absolute;z-index:6;top:calc(50% + 35px);left:50%;transform:translate(-50%,-50%);height:38px;width:46px;border:1px solid #ffffff88;background:#3b73c2c2;backdrop-filter:blur(10px);border-radius:13px;color:white;font-size:19px;box-shadow:0 7px 26px #14274a55}
#desktop-card:has(#offline-mask:not([hidden])) .screen-play-button{opacity:.5}
#page-desktop .timeline-line{min-height:44px}
#page-desktop .timeline-line .activity-text{overflow-wrap:anywhere}
#page-desktop .timeline-line>.icon{width:13px;height:13px;stroke:var(--green)}
#page-chat .messages .chat-row .message-bubble{white-space:pre-wrap;overflow-wrap:anywhere}
#page-chat .conversation-tab{min-height:35px}
#page-chat .composer button:disabled{opacity:.5;cursor:wait}
.chat-live-state{position:fixed;z-index:20;top:12px;left:50%;transform:translateX(-50%);max-width:min(340px,calc(100vw - 30px));padding:9px 15px;color:#fff;background:#244b93e8;backdrop-filter:blur(14px);border:1px solid #ffffff55;border-radius:14px;font-size:11px;box-shadow:0 8px 20px #243f722e;text-align:center;cursor:pointer}
.job-actions-dialog{position:fixed;top:auto;bottom:calc(70px + env(safe-area-inset-bottom,0px));left:50%;transform:translateX(-50%);width:min(560px,calc(100vw - 24px));max-height:68dvh;margin:0;padding:16px;background:var(--card);color:var(--ink);border:1px solid var(--outline);border-radius:17px;box-shadow:0 25px 70px #17294450}
.job-actions-dialog::backdrop{background:#101f4380;backdrop-filter:blur(3px)}
.job-actions-dialog>p{font-size:13px;font-weight:700}
.job-event-timeline{overflow:auto;max-height:40dvh;display:grid;gap:6px}
.job-event{background:var(--bg);border:1px solid var(--outline);border-radius:9px;display:flex;flex-direction:column;gap:3px;padding:8px;font-size:11px}
.job-event span{color:var(--muted);overflow-wrap:anywhere}
.job-actions-dialog menu{display:flex;gap:7px;flex-wrap:wrap;padding:0;margin:12px 0 0}
.job-actions-dialog menu button{border:1px solid var(--outline);padding:9px 11px;border-radius:10px;background:var(--blue-soft);color:var(--ink);font-size:12px}
.setting-expand .setting-inline{display:flex;align-items:center;justify-content:space-between;gap:10px}
.setting-expand .setting-inline+ .setting-inline{margin-top:9px}
.setting-expand .live-action{margin-top:12px}
body[data-theme="dark"] .auth-screen{background:radial-gradient(ellipse at 0 0,#2b456b70,transparent 55%),#141e30}
body[data-theme="dark"] .auth-extra-form input,body[data-theme="dark"] .live-form input{background:#202e48}
@media(max-width:559px){
 .auth-screen .login-shell{min-height:100%;padding:14px 20px 22px}
 .auth-screen .login-panel{padding:25px 23px}
 .auth-screen .login-brand{margin-bottom:24px}
 #desktop-card .screen-state-label{font-size:10px}
 .job-actions-dialog{bottom:calc(70px + env(safe-area-inset-bottom,0px));}
 .chat-live-state{top:6px;font-size:10px}
}
@media(max-height:620px){
 .auth-screen{align-items:start}
 .auth-screen .login-shell{min-height:0}
}

.auth-screen.needs-setup .login-panel,.auth-screen.needs-setup .login-note{display:none}
.auth-screen.needs-setup .auth-extra:not([hidden]){background:var(--card);border:1px solid var(--outline);border-radius:17px;padding:12px 17px;box-shadow:0 10px 30px #203f7b17}
.auth-screen.needs-setup .auth-extra:not([hidden]) summary{text-align:left;font-weight:700;color:var(--ink);font-size:15px}
.history-library-row{display:flex;gap:6px;align-items:center;margin:6px 0;padding:3px 0;border-bottom:1px solid var(--outline)}
.history-library-open{min-width:0;flex:1;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:left;border:0;background:transparent;color:var(--ink);font-size:12px;font-weight:650}
.history-library-action{flex:none;padding:8px 9px;border-radius:9px;border:1px solid var(--outline);background:var(--blue-soft);color:var(--blue);font-size:11px}
.history-library-delete{background:transparent;color:#c34e60}

/* V4: screen viewing disabled, AI activity belongs inside each chat. */
#page-desktop,.bottom-tab[data-tab="desktop"]{display:none!important}
#page-logs .log-list{display:table-row-group}
#page-logs .log-card{background:var(--card);color:var(--ink);border:1px solid var(--outline);border-radius:16px;padding:12px 14px}
#page-logs .log-meta{display:flex;flex-wrap:wrap;gap:8px 12px;color:var(--muted);font-size:12px}
#page-logs .log-prompt{margin:8px 0;white-space:pre-wrap;overflow-wrap:anywhere}
#page-logs .log-tokens{display:flex;flex-wrap:wrap;gap:8px 14px;color:var(--muted);font-size:12px}
#page-logs .log-empty{color:var(--muted)}
#page-logs #log-more{margin-top:12px}
#page-chat .chat-topbar{display:flex;justify-content:space-between;align-items:center;gap:10px}
#page-chat .chat-topbar .pc-dropdown-container{position:relative;flex:none;max-width:53%;z-index:12}
#page-chat .chat-topbar #pc-button{max-width:100%;min-width:0;color:var(--ink);background:var(--card);border:1px solid var(--outline);padding:7px 10px;border-radius:12px}
#page-chat .chat-topbar #pc-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Progress belongs to the corresponding assistant response bubble. */
#page-chat .assistant .message-bubble:has(.chat-job-progress){min-width:min(320px,100%);max-width:100%}
#page-chat .assistant .chat-job-progress{margin-top:12px;padding-top:10px;border-top:1px solid var(--outline);font-size:11.5px;line-height:1.45;color:var(--ink);white-space:normal}
.chat-progress-heading{font-weight:700;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.chat-progress-heading:before{content:'✦';color:var(--blue)}
.chat-progress-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.chat-progress-step{position:relative;color:var(--muted);padding-left:18px;line-height:1.45;overflow-wrap:anywhere}
.chat-progress-step:before{content:'✓';position:absolute;left:0;color:var(--green);font-weight:bold}
.chat-progress-step.is-running:before{content:'•';color:var(--blue)}
#page-chat .composer .submit-icon.is-stop{background:linear-gradient(148deg,#fa7181,#dc435b 76%);box-shadow:0 5px 14px #d74b6832}
#page-chat .composer .submit-icon.is-stop .icon{height:18px;width:18px}
@media(max-width:559px){#page-chat .assistant .message-bubble:has(.chat-job-progress){min-width:min(285px,100%)}}
 
/* Log list: compact, horizontally scrollable table with numbered paging. */
#page-logs .log-toolbar{display:flex;justify-content:flex-end;margin:0 0 12px}
#page-logs .log-toolbar label{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12px}
#page-logs .log-toolbar select{background:var(--card);color:var(--ink);border:1px solid var(--outline);border-radius:10px;padding:8px 10px}
#page-logs .log-table-scroll{width:100%;overflow-x:auto;border:1px solid var(--outline);border-radius:16px;background:var(--card)}
#page-logs .log-table{border-collapse:collapse;table-layout:auto;width:100%;min-width:740px;font-size:12px;color:var(--ink)}
#page-logs .log-table th,#page-logs .log-table td{padding:13px 12px;text-align:left;border-bottom:1px solid var(--outline);vertical-align:middle}
#page-logs .log-table th{font-size:11px;color:var(--muted);background:var(--blue-soft);font-weight:700;white-space:nowrap}
#page-logs .log-table td:nth-child(3){max-width:310px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
#page-logs .log-table td:nth-child(n+5){white-space:nowrap;font-variant-numeric:tabular-nums}
#page-logs .log-table tr:last-child td{border-bottom:0}
#page-logs .log-pagination{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:14px;font-size:12px;color:var(--muted)}
#page-logs .log-pagination button{padding:9px 14px;border:1px solid var(--outline);border-radius:10px;background:var(--card);color:var(--ink);font-size:12px}
#page-logs .log-pagination button:disabled{opacity:.4;cursor:not-allowed}
#page-chat .chat-topbar .pc-dropdown-container{display:none!important}
.two-factor-settings{margin-top:18px;padding-top:16px;border-top:1px solid var(--outline);display:grid;gap:10px}
.two-factor-settings h3{margin:0;font-size:15px;color:var(--ink)}
.two-factor-settings p{margin:0;color:var(--muted);font-size:12px;line-height:1.6}
.two-factor-settings #two-factor-setup,.two-factor-settings #two-factor-backups{display:grid;gap:10px;min-width:0}
.two-factor-secret,.two-factor-backup-codes{display:block;max-width:100%;white-space:pre-wrap;word-break:break-all;padding:12px;border:1px solid var(--outline);background:var(--blue-soft);color:var(--ink);border-radius:11px;font-size:13px;user-select:text}
.two-factor-settings a{color:var(--blue);font-size:12px;overflow-wrap:anywhere}
.two-factor-settings button{width:100%}
.auth-screen #two-factor-login-form{margin-top:12px}



/* Voice input only changes the draft. Existing Send/Stop job handling is untouched. */
#page-chat .chat-layout{position:relative}
#page-chat .chat-mic-button{width:41px;height:41px;flex:none;display:grid;place-items:center;
 border:1px solid var(--outline);border-radius:14px;color:var(--blue);
 background:var(--blue-soft);padding:0;touch-action:manipulation}
#page-chat .chat-mic-button .icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
#page-chat .chat-mic-button.is-listening{background:#ffe8ec;color:#d82947;border-color:#f3a9b8;
 animation:linsumi-mic-pulse 1.4s ease-in-out infinite}
#page-chat .chat-mic-button:disabled{opacity:.5;animation:none;cursor:not-allowed}
#page-chat .chat-mic-status{position:absolute;right:64px;bottom:calc(80px + env(safe-area-inset-bottom,0px));
 z-index:5;border:1px solid var(--outline);border-radius:9999px;background:var(--card);
 color:var(--ink);font-size:12px;padding:6px 12px;box-shadow:0 5px 16px #101f4322;
 pointer-events:none}
@media(max-width:559px){
 #page-chat .chat-mic-status{bottom:calc(69px + env(safe-area-inset-bottom,0px));font-size:11px}
}
@media(prefers-reduced-motion:reduce){#page-chat .chat-mic-button.is-listening{animation:none}}
@keyframes linsumi-mic-pulse{50%{box-shadow:0 0 0 6px #e53d5b21}}

/* Safari speech status stays visible after silent recognition failures. */
#page-chat .chat-mic-status[data-state="error"]{border-color:#eeb1b9;color:var(--ink);max-width:min(340px,calc(100vw - 40px));white-space:normal;line-height:1.45}
#page-chat .chat-mic-status[data-state="starting"]{border-style:dashed}
#page-chat .chat-mic-status[data-state="complete"]{border-color:#64bb9a}
body[data-theme="neon"] #page-chat .chat-mic-status{background:#101f40;color:#dceaff;border-color:#526ce9}
body[data-theme="neon"] #page-chat .chat-mic-status[data-state="error"]{border-color:#e7749c;color:#ffdce5}

/* QR is created locally by React, never via external HTTP image service. */
.two-factor-qr-frame{display:flex;flex-direction:column;align-items:center;gap:9px;min-width:0;
 padding:18px 10px;border:1px solid var(--outline);border-radius:16px;background:var(--blue-soft)}
.two-factor-qr{width:min(252px,100%);display:flex;align-items:center;justify-content:center;
 padding:14px;border-radius:14px;background:#fff;color:#10172c;box-shadow:0 3px 16px #00000018}
.two-factor-qr svg{width:100%;height:auto;max-width:224px;aspect-ratio:1;display:block}
.two-factor-qr-frame small{color:var(--muted);font-size:12px;text-align:center}
.two-factor-manual{border:1px solid var(--outline);border-radius:12px;padding:11px 13px;min-width:0}
.two-factor-manual summary{cursor:pointer;color:var(--ink);font-size:13px;font-weight:600}
.two-factor-manual p{margin-top:10px}
.two-factor-manual .two-factor-secret{margin-top:9px}
.two-factor-manual button{margin-top:9px}
.two-factor-same-device{line-height:1.7!important}
@media(max-width:559px){.two-factor-qr-frame{padding:12px 8px}.two-factor-qr{width:min(252px,100%);padding:12px}}
body[data-theme="neon"] .two-factor-qr-frame{background:#0d1933}
body[data-theme="neon"] .two-factor-qr-frame small{color:#bad2f5}
body[data-theme="neon"] .two-factor-manual{border-color:#42638f}

/* Security: author display:grid rules must never override hidden enrollment state. */
.two-factor-settings #two-factor-setup[hidden],
.two-factor-settings #two-factor-backups[hidden]{display:none!important}

/* 2FA native React modal. QR is local: no external QR-image requests. */
.two-factor-modal{border:1px solid var(--outline);border-radius:22px;background:var(--card);
 color:var(--ink);padding:0;width:min(440px,calc(100vw - 24px));
 max-height:min(740px,calc(100dvh - 28px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));
 overflow:auto;box-shadow:0 24px 90px #0008;overscroll-behavior:contain}
.two-factor-modal::backdrop{background:rgba(3,8,24,.76);backdrop-filter:blur(5px)}
.two-factor-modal-content{padding:20px;display:flex;flex-direction:column;gap:14px;min-width:0}
.two-factor-modal-header{display:flex;align-items:center;justify-content:space-between;gap:10px}
.two-factor-modal-header h2{margin:0;font-size:20px;line-height:1.35;color:var(--ink)}
#two-factor-modal-close{border:1px solid var(--outline);border-radius:999px;background:var(--blue-soft);
 color:var(--ink);width:38px;height:38px;flex:0 0 38px;font-size:26px;line-height:1}
.two-factor-modal p{font-size:13px;line-height:1.6;color:var(--muted);margin:0}
.two-factor-modal .two-factor-qr-frame{padding:12px 8px;gap:10px}
.two-factor-modal .two-factor-manual{width:100%;background:var(--card)}
.two-factor-modal .two-factor-manual summary{font-size:13px;text-align:center}
.two-factor-modal .two-factor-manual button{width:100%}
.two-factor-modal .two-factor-same-device a{color:var(--blue);overflow-wrap:anywhere}
.two-factor-modal #two-factor-confirm-form{display:grid;gap:10px}
.two-factor-modal #two-factor-confirm-form input{width:100%;font-size:18px;text-align:center;
 letter-spacing:.25em;max-width:100%;min-height:46px}
.two-factor-modal #two-factor-confirm-form button{width:100%}
.two-factor-modal .two-factor-expiry{font-size:11px;color:var(--muted);line-height:1.5}
body[data-theme="neon"] .two-factor-modal{background:#101d37;color:#e2f3ff;border-color:#42638f}
body[data-theme="neon"] .two-factor-modal .two-factor-qr-frame{background:#0d1933}
body[data-theme="neon"] .two-factor-modal .two-factor-manual{background:#142242}
@media(max-width:559px){.two-factor-modal-content{padding:16px;gap:10px}
 .two-factor-modal .two-factor-qr{padding:10px;width:min(234px,100%)}
 .two-factor-modal .two-factor-qr svg{max-width:214px}}

/* Chat attachment entry point. Until authenticated upload/PC materialization exists,
   opening it explains the limitation rather than silently dropping selected files. */
#page-chat .chat-attach-button{flex:0 0 36px;width:36px;height:41px;padding:0;
 display:grid;place-items:center;background:transparent;border:0;border-radius:9999px;
 color:var(--muted);box-shadow:none;touch-action:manipulation;cursor:pointer}
#page-chat .chat-attach-button .icon{width:20px;height:20px;fill:none;stroke:currentColor;
 stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
#page-chat .chat-attach-button:active{color:var(--blue);background:var(--blue-soft)}
#page-chat .chat-attach-button:focus-visible,#page-chat .chat-mic-button:focus-visible{
 outline:2px solid var(--blue);outline-offset:2px}
/* Borderless voice icon in all themes, including while actively listening. */
#page-chat .chat-mic-button,#page-chat .chat-mic-button.is-listening{
 border:0!important;border-color:transparent!important;box-shadow:none;
 border-radius:9999px}
#page-chat .chat-mic-button:not(.is-listening){background:transparent}
#page-chat .chat-mic-button{flex:0 0 36px;width:36px}
body[data-theme="neon"] #page-chat .chat-attach-button{color:#8bcdf4}
body[data-theme="neon"] #page-chat .chat-mic-button:not(.is-listening){color:#59dcf3;background:transparent}
@media(max-width:559px){
 #page-chat .chat-attach-button,#page-chat .chat-mic-button{flex-basis:34px;width:34px;height:40px}
}

/* The iPhone composer is a two-row layout, not a wrapping flex box.
   Attachment previews are horizontally scrollable; controls stay on ONE row.
   Scope to Chat to avoid affecting Login, 2FA, Logs and Live Desktop. */
#page-chat .composer{
 display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;
 gap:4px;min-width:0;max-width:100%;height:auto;
 padding:8px 10px;border-radius:9999px;box-sizing:border-box;
}
#page-chat .composer:has(.chat-attachment-image,.chat-attachment-item){border-radius:24px}
#page-chat .composer .chat-attachments{
 display:block;flex:0 0 auto;order:0;width:100%;min-width:0;max-width:100%;
 overflow:hidden;
}
#page-chat .composer .chat-attachments:empty{display:none}
#page-chat .chat-attachment-items{
 display:flex;flex-wrap:nowrap;align-items:center;gap:8px;
 width:100%;min-width:0;max-width:100%;overflow-x:auto;overflow-y:hidden;
 padding:2px 2px 7px;box-sizing:border-box;scrollbar-width:none;
 overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;
}
#page-chat .chat-attachment-items::-webkit-scrollbar{display:none}
#page-chat .composer-main{
 display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;
 gap:8px;width:100%;min-width:0;max-width:100%;flex:0 0 auto;
}
#page-chat .composer-main #chat-text{
 flex:1 1 0;width:0;min-width:0;max-width:none;
 align-self:center;margin:0;box-sizing:border-box;
}
#page-chat .composer-main #chat-attach,
#page-chat .composer-main #chat-mic,
#page-chat .composer-main #chat-send-stop{
 flex-shrink:0;align-self:center;
}
#page-chat .chat-attachment-item{
 display:flex;align-items:center;gap:5px;flex:0 0 auto;min-width:0;
 max-width:180px;border-radius:13px;border:1px solid var(--outline);
 padding:7px 7px 7px 9px;background:var(--blue-soft);
 color:var(--ink);font-size:12px;box-sizing:border-box;
}
#page-chat .chat-attachment-item .icon{
 width:15px;height:15px;flex:none;stroke:currentColor;fill:none;
}
#page-chat .chat-attachment-label{
 min-width:0;max-width:110px;overflow:hidden;white-space:nowrap;
 text-overflow:ellipsis;direction:ltr;
}
#page-chat .chat-attachment-image{
 position:relative;width:72px;height:72px;flex:0 0 72px;
 border:1px solid var(--outline);border-radius:13px;overflow:hidden;
 background:var(--blue-soft);box-sizing:border-box;
}
#page-chat .chat-attachment-image .chat-attachment-thumb{
 display:block;width:100%;height:100%;object-fit:cover;
 border:0;border-radius:0;background:transparent;
}
#page-chat .chat-attachment-remove{
 display:grid;place-items:center;flex:0 0 22px;
 width:22px;height:22px;border:0;border-radius:9999px;
 background:transparent;box-shadow:none;color:var(--muted);
 padding:3px;cursor:pointer;
}
#page-chat .chat-attachment-remove .icon{height:14px;width:14px}
#page-chat .chat-attachment-remove:focus-visible{outline:2px solid var(--blue);outline-offset:1px}
#page-chat .chat-attachment-remove:disabled{opacity:.4}
#page-chat .chat-attachment-image .chat-attachment-remove.is-overlay{
 position:absolute;top:4px;right:4px;z-index:1;
 width:23px;height:23px;flex:none;
 color:#fff;background:rgba(7,15,34,.78);
}
body[data-theme="neon"] #page-chat .chat-attachment-item{
 background:#182e53;border-color:#3b6ba7;color:#edf7ff;
}
body[data-theme="neon"] #page-chat .chat-attachment-image{
 border-color:#427db0;
}
@media(max-width:559px){
 #page-chat .composer{gap:3px;padding:7px 9px}
 #page-chat .composer-main{gap:6px}
 #page-chat .chat-attachment-item{max-width:145px}
 #page-chat .chat-attachment-label{max-width:70px}
 #page-chat .chat-attachment-image{width:64px;height:64px;flex-basis:64px}
 #page-chat .chat-attachment-items{padding-bottom:5px}
}

/* Three-line composer: attachment carousel / textarea / independent tools row. */
#page-chat .composer{
 display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;
 gap:6px;min-width:0;max-width:100%;height:auto;min-height:0;
 padding:9px 12px;border-radius:26px;box-sizing:border-box;
}
#page-chat .composer .chat-attachments{order:0;flex:0 0 auto;min-width:0}
#page-chat .composer-text-row{
 display:flex;order:1;align-items:center;width:100%;min-width:0;min-height:42px;
 box-sizing:border-box;
}
#page-chat .composer-text-row #chat-text{
 flex:1 1 auto;width:100%;min-width:0;max-width:100%;min-height:40px;
 padding:9px 3px!important;margin:0;resize:none;box-sizing:border-box;
 align-self:stretch;
}
#page-chat .composer:has(#chat-text:focus) .composer-text-row #chat-text{min-height:48px}
#page-chat .composer-tools{
 display:flex;flex-direction:row;align-items:center;gap:10px;
 flex:0 0 auto;order:2;width:100%;min-width:0;min-height:44px;
}
#page-chat .composer-tools #chat-attach{
 flex:0 0 38px;width:38px;height:42px;align-self:center;color:var(--ink);
}
#page-chat .composer-tools #chat-attach .icon{width:23px;height:23px}
#page-chat .composer-tools .chat-remote-tools{position:relative;flex:0 0 38px;width:38px;margin-left:auto}
#page-chat .chat-remote-control{position:relative;width:38px}
#page-chat .chat-remote-icon{
 display:grid;place-items:center;width:38px;height:42px;padding:0;
 border:0;border-radius:9999px;background:transparent;box-shadow:none;
 color:var(--muted);cursor:pointer;
}
#page-chat .chat-remote-icon.is-enabled{color:var(--blue);background:var(--blue-soft)}
#page-chat .chat-remote-icon .icon{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9}
#page-chat .chat-remote-icon:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
#page-chat .chat-remote-popover{
 position:absolute;bottom:calc(100% + 9px);right:-74px;
 z-index:80;width:min(260px,calc(100vw - 34px));
 max-width:calc(100vw - 34px);padding:12px;box-sizing:border-box;
 display:flex;flex-direction:column;gap:12px;
 border:1px solid var(--outline);border-radius:17px;
 background:var(--card);color:var(--ink);box-shadow:0 12px 40px #0005;
}
#page-chat .chat-remote-heading{display:flex;flex-direction:column;gap:4px}
#page-chat .chat-remote-heading small{font-size:12px;color:var(--muted)}
#page-chat .chat-remote-switch{
 display:flex;justify-content:space-between;align-items:center;gap:14px;
 width:100%;padding:8px 6px;border:0;background:transparent;color:var(--ink);
 border-radius:10px;box-shadow:none;cursor:pointer;
}
#page-chat .chat-remote-switch-track{
 display:flex;align-items:center;width:43px;height:25px;padding:3px;
 box-sizing:border-box;border-radius:999px;background:var(--outline);
 transition:background .15s;
}
#page-chat .chat-remote-switch-track>span{
 display:block;width:19px;height:19px;border-radius:50%;background:#fff;
 box-shadow:0 1px 3px #0005;transition:transform .15s;
}
#page-chat .chat-remote-switch.is-on .chat-remote-switch-track{background:#1677eb}
#page-chat .chat-remote-switch.is-on .chat-remote-switch-track>span{transform:translateX(18px)}
#page-chat .composer-tools #chat-mic{
 flex:0 0 38px;width:38px;height:42px;margin:0;align-self:center;
}
#page-chat .composer-tools #chat-send-stop{
 flex:0 0 43px;width:43px;height:43px;margin:0;align-self:center;
}
body[data-theme="neon"] #page-chat .chat-remote-icon.is-enabled{color:#65e8fa;background:#153354}
body[data-theme="neon"] #page-chat .chat-remote-popover{background:#152342;border-color:#42638f;color:#eef8ff}
@media(max-width:559px){
 #page-chat .composer{padding:8px 11px;gap:4px}
 #page-chat .composer-tools{gap:9px}
 #page-chat .chat-remote-popover{right:-69px}
}

/* Focus-aware composer. Compact = one text/tools row, expanded = text above
   tools. Attachments always remain a separate row. All changes are CSS-only,
   so focus/blur cannot remount the textarea or interrupt iOS dictation. */
#page-chat .composer-bottom{
 display:flex;flex-direction:row;align-items:center;
 gap:5px;width:100%;min-width:0;max-width:100%;box-sizing:border-box;
}
#page-chat .composer-bottom .composer-text-row{
 flex:1 1 0;order:1;min-width:0;width:auto;min-height:42px;
 align-items:center;
}
#page-chat .composer-bottom .composer-text-row #chat-text{
 flex:1 1 auto;min-height:40px;max-height:44px;min-width:0;
 align-self:center;overflow-y:auto;
}
#page-chat .composer-bottom .composer-tools{display:contents}
#page-chat .composer-bottom .composer-tools #chat-attach{
 order:0;flex:0 0 36px;width:36px;height:42px;
}
#page-chat .composer-bottom .composer-tools #chat-remote-tools{
 order:2;flex:0 0 36px;width:36px;margin-left:0;
}
#page-chat .composer-bottom .composer-tools #chat-mic{
 order:3;flex:0 0 36px;width:36px;height:42px;
}
#page-chat .composer-bottom .composer-tools #chat-send-stop{
 order:4;flex:0 0 43px;width:43px;height:43px;
}
#page-chat .composer:not(:has(#chat-text:focus)){border-radius:9999px}
#page-chat .composer:has(#chat-attachments:not(:empty)){border-radius:24px}
#page-chat .composer:has(#chat-text:focus){border-radius:26px}
#page-chat .composer:has(#chat-text:focus) .composer-bottom{
 flex-direction:column;align-items:stretch;gap:4px;
}
#page-chat .composer:has(#chat-text:focus) .composer-bottom .composer-text-row{
 flex:0 0 auto;width:100%;min-height:48px;
}
#page-chat .composer:has(#chat-text:focus) .composer-bottom #chat-text{
 width:100%;min-height:48px;max-height:104px;
}
#page-chat .composer:has(#chat-text:focus) .composer-bottom .composer-tools{
 display:flex;flex:0 0 auto;align-items:center;
 gap:10px;width:100%;min-width:0;min-height:43px;
}
#page-chat .composer:has(#chat-text:focus) .composer-bottom .composer-tools #chat-remote-tools{
 margin-left:auto;
}
@media(max-width:559px){
 #page-chat .composer-bottom{gap:4px}
 #page-chat .composer-bottom .composer-tools #chat-attach,
 #page-chat .composer-bottom .composer-tools #chat-remote-tools,
 #page-chat .composer-bottom .composer-tools #chat-mic{flex-basis:34px;width:34px}
 #page-chat .composer:has(#chat-text:focus) .composer-bottom .composer-tools{gap:9px}
}

/* Logs: responsive search and page-size controls. */
#page-logs .log-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 12px;min-width:0}
#page-logs .log-toolbar input{flex:1;min-width:0;height:40px;border:1px solid var(--outline);border-radius:12px;padding:8px 12px;background:var(--card);color:var(--ink);font:inherit;font-size:13px}
#page-logs .log-toolbar select{flex:none;min-width:74px;height:40px;border:1px solid var(--outline);border-radius:12px;background:var(--card);color:var(--ink);font-size:13px}
#page-logs .log-table th[hidden]{display:none}
#page-logs .log-prompt-link{max-width:300px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;padding:0;border:0;background:transparent;color:var(--blue);font:inherit;cursor:pointer}
#page-logs .log-prompt-link:hover{text-decoration:underline}
#page-logs .log-prompt-link:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
.log-detail-dialog{position:fixed;inset:0;margin:auto;width:min(760px,calc(100vw - 24px));max-height:min(85dvh,900px);border:1px solid var(--outline);border-radius:22px;padding:0;background:var(--card);color:var(--ink);box-shadow:0 25px 75px #001b3a4b}
.log-detail-dialog::backdrop{background:#0d1a35a8;backdrop-filter:blur(5px)}
.log-detail-header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:18px 23px;background:var(--card);border-bottom:1px solid var(--outline)}
.log-detail-header h2{margin:5px 0 0;font-size:20px}.log-detail-header small{font-size:10px;letter-spacing:1px;color:var(--muted)}
.log-detail-close{width:34px;height:34px;border:1px solid var(--outline);border-radius:50%;background:var(--blue-soft);color:var(--ink);cursor:pointer}
.log-detail-content{padding:18px 23px 25px;display:grid;gap:18px;overflow-y:auto}
.log-detail-content section{min-width:0}.log-detail-content h3{font-size:13px;margin:0 0 8px;color:var(--ink)}
.log-detail-content pre{font-size:12px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--blue-soft);border-radius:14px;padding:14px;margin:0;color:var(--ink);max-height:35dvh;overflow:auto}
.log-detail-owner{margin:0;font-size:13px}.log-detail-note{font-size:11px;color:var(--muted)}
@media(max-width:559px){.log-detail-header{padding:15px}.log-detail-content{padding:15px;gap:14px}#page-logs .log-toolbar input{width:0}}

/* Log page is a fixed viewport panel; vertical and horizontal scrolling belong to its table only. */
#page-logs{min-height:0;overflow:hidden}
#page-logs .settings-content{
 display:flex;flex:1 1 auto;flex-direction:column;min-height:0;max-height:100%;
 overflow:hidden!important;overscroll-behavior:none;
}
#page-logs .settings-title,#page-logs .log-toolbar,#page-logs .log-pagination{flex:0 0 auto}
#page-logs .log-table-scroll{
 flex:1 1 auto;min-height:0;max-height:100%;
 overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
 scrollbar-width:thin;
}
#page-logs .log-table{min-width:690px}
#page-logs .log-table th{position:sticky;top:0;z-index:1}
#page-logs .log-table td:nth-child(3){max-width:none;overflow:visible;white-space:normal;text-overflow:clip}
#page-logs .log-table td:nth-child(n+5){white-space:normal}
#page-logs .log-prompt-cell{width:44%;min-width:225px;max-width:440px}
#page-logs .log-user-cell{white-space:nowrap}
#page-logs .log-status-cell,#page-logs .log-time-cell{white-space:nowrap}
#page-logs .log-token-cell{min-width:118px}
#page-logs .log-token-stack{display:grid;gap:4px;min-width:112px;font-variant-numeric:tabular-nums}
#page-logs .log-token-stack>span{display:flex;align-items:center;justify-content:space-between;gap:12px;white-space:nowrap}
#page-logs .log-token-stack small{color:var(--muted);font-size:10px}
#page-logs .log-token-stack strong{font-size:12px;font-weight:650}
#page-logs .log-prompt-link{width:100%;max-width:100%;white-space:normal;overflow:hidden;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;text-align:left}
@media(max-width:559px){
 #page-logs .settings-content{padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))!important}
 #page-logs .log-pagination{gap:8px;margin-top:10px}
 #page-logs .log-table th,#page-logs .log-table td{padding:10px}
}
