Files
RustBox/ui/app.css
T
Mateusz Gruszczyński bc5fbd6ba9
RustBox CI / rustbox (push) Waiting to run
first commit
2026-10-29 15:24:59 +01:00

1374 lines
82 KiB
CSS

/* RustBox UI bundle - generated by build.rs */
/* 00-tokens.css */
:root {
color-scheme: dark;
--bg: #121513;
--panel: #181c19;
--panel-2: #1e231f;
--panel-3: #242a25;
--sidebar: #101310;
--line: #313832;
--line-strong: #485149;
--text: #edf0ec;
--muted: #9da79f;
--subtle: #7c877f;
--accent: #8fb9a4;
--accent-strong: #a4c9b6;
--accent-ink: #102018;
--danger: #e18f8a;
--warning: #d0ad70;
--success: #a7c892;
--field: #121713;
--selected: #28352e;
--hover: #202621;
--shadow: rgba(0, 0, 0, .32);
--font-sans: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
--font-mono: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace;
--radius-control: 3px;
--radius-panel: 4px;
--ui-size: 13px;
--row-height: 58px;
--control-height: 30px;
--appbar-height: 44px;
--dialog-header-height: 43px;
--ui-scale-factor: 1;
--density-factor: 1;
--icon-size: 18px;
--button-pad-x: 10px;
--button-pad-y: 5px;
--field-pad-x: 8px;
--field-pad-y: 5px;
}
html[data-theme="light"] {
color-scheme: light;
--bg: #f2f4f1;
--panel: #ffffff;
--panel-2: #f7f8f6;
--panel-3: #edf1ec;
--sidebar: #e9eee9;
--line: #cbd2cb;
--line-strong: #aeb8af;
--text: #202622;
--muted: #647068;
--subtle: #7a847d;
--accent: #507b67;
--accent-strong: #416b58;
--accent-ink: #ffffff;
--danger: #a94c48;
--warning: #8a6930;
--success: #587a49;
--field: #ffffff;
--selected: #dce8e0;
--hover: #e8ede8;
--shadow: rgba(31, 39, 33, .16);
}
/* User personalization */
:root {
--folder-pane-width: 228px;
--message-pane-width: 420px;
}
html[data-color-preset="blue"] { --accent: #6f96c9; --accent-strong: #86a9d5; --selected: color-mix(in srgb, var(--accent) 20%, var(--panel)); }
html[data-color-preset="slate"] { --accent: #8e9aa8; --accent-strong: #aab4bf; --selected: color-mix(in srgb, var(--accent) 20%, var(--panel)); }
html[data-color-preset="amber"] { --accent: #c69a55; --accent-strong: #d7ad6b; --selected: color-mix(in srgb, var(--accent) 20%, var(--panel)); }
html[data-color-preset="violet"] { --accent: #9b88c9; --accent-strong: #ad9bd5; --selected: color-mix(in srgb, var(--accent) 20%, var(--panel)); }
html[data-color-preset="rose"] { --accent: #c98591; --accent-strong: #d79aa5; --selected: color-mix(in srgb, var(--accent) 20%, var(--panel)); }
html[data-color-preset="custom"] { --bg: var(--user-bg, #121513); --panel: var(--user-panel, #181c19); --panel-2: color-mix(in srgb, var(--panel) 88%, var(--text)); --panel-3: color-mix(in srgb, var(--panel) 80%, var(--text)); --sidebar: color-mix(in srgb, var(--bg) 88%, black); --text: var(--user-text, #edf0ec); --muted: color-mix(in srgb, var(--text) 66%, var(--panel)); --subtle: color-mix(in srgb, var(--text) 52%, var(--panel)); --field: color-mix(in srgb, var(--bg) 82%, var(--panel)); --line: color-mix(in srgb, var(--text) 18%, var(--panel)); --line-strong: color-mix(in srgb, var(--text) 30%, var(--panel)); --hover: color-mix(in srgb, var(--text) 8%, var(--panel)); --accent: var(--user-accent, #6f9c86); --accent-strong: color-mix(in srgb, var(--accent) 82%, white); --selected: color-mix(in srgb, var(--accent) 22%, var(--panel)); }
html[data-font-family="inter"] { --font-sans: Inter, ui-sans-serif, system-ui, sans-serif; }
html[data-font-family="humanist"] { --font-sans: "Segoe UI", Candara, Calibri, ui-sans-serif, system-ui, sans-serif; }
html[data-font-family="mono"] { --font-sans: ui-monospace, SFMono-Regular, Consolas, "Liberation Mono", monospace; }
html[data-contrast="soft"] { --line: color-mix(in srgb, var(--line) 70%, transparent); --line-strong: color-mix(in srgb, var(--line-strong) 78%, transparent); }
html[data-contrast="high"] { --line: color-mix(in srgb, var(--text) 28%, var(--panel)); --line-strong: color-mix(in srgb, var(--text) 48%, var(--panel)); --muted: color-mix(in srgb, var(--text) 74%, var(--panel)); }
html[data-hide-avatars="true"] .avatar { display: none !important; }
html[data-hide-attachments="true"] .message-attachment, html[data-hide-attachments="true"] .attachment-indicator { display: none !important; }
html[data-hide-flags="true"] .message-flag, html[data-hide-flags="true"] .flag-indicator { display: none !important; }
html[data-reduce-motion="true"] * { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
html[data-color-preset="teal"] { --accent:#4f9d93; --accent-strong:#68b0a5; --selected:color-mix(in srgb,var(--accent) 20%,var(--panel)); }
html[data-color-preset="cyan"] { --accent:#4c9fba; --accent-strong:#68b4cb; --selected:color-mix(in srgb,var(--accent) 20%,var(--panel)); }
html[data-color-preset="indigo"] { --accent:#7184c5; --accent-strong:#8b9bd2; --selected:color-mix(in srgb,var(--accent) 20%,var(--panel)); }
html[data-color-preset="graphite"] { --accent:#9aa19c; --accent-strong:#b0b6b2; --selected:color-mix(in srgb,var(--accent) 18%,var(--panel)); }
html[data-color-preset="orange"] { --accent:#c9824e; --accent-strong:#d69a6d; --selected:color-mix(in srgb,var(--accent) 20%,var(--panel)); }
html[data-color-preset="red"] { --accent:#bd6662; --accent-strong:#cf7e7a; --selected:color-mix(in srgb,var(--accent) 20%,var(--panel)); }
/* Advanced per-user interface controls. */
:root {
--toolbar-density-factor: 1;
--sidebar-item-height: 29px;
--reader-max-width: none;
--composer-width: 900px;
--unread-font-weight: 730;
--folder-bg: var(--sidebar);
--message-bg: var(--panel);
--reader-bg: var(--panel);
}
html[data-monochrome="true"] { --accent:#929a95; --accent-strong:#aeb4b0; --danger:#9f7775; --warning:#9b8e75; --success:#879482; }
html[data-scrollbar-density="normal"] * { scrollbar-width:auto; }
html[data-scrollbar-density="thin"] * { scrollbar-width:thin; }
html[data-scrollbar-density="hidden"] * { scrollbar-width:none; }
html[data-scrollbar-density="hidden"] *::-webkit-scrollbar { width:0; height:0; }
html[data-show-borders="false"] .folder-pane,
html[data-show-borders="false"] .message-pane,
html[data-show-borders="false"] .pane-toolbar,
html[data-show-borders="false"] .reader-toolbar,
html[data-show-borders="false"] .message-header,
html[data-show-borders="false"] .thread-section,
html[data-show-borders="false"] .attachment-list,
html[data-show-borders="false"] .message-row { border-color:transparent !important; }
/* 10-base.css */
* { box-sizing: border-box; scrollbar-color: var(--line-strong) var(--panel); scrollbar-width: thin; }
html, body { height: 100%; }
body { margin: 0; overflow: hidden; background: var(--bg); color: var(--text); font: var(--ui-size)/1.45 var(--font-sans); }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
button:disabled { cursor: default; opacity: .55; }
input, select, textarea { width: 100%; min-width: 0; border: 1px solid var(--line-strong); border-radius: var(--radius-control); background: var(--field); min-height: var(--control-height); padding: var(--field-pad-y) var(--field-pad-x); outline: none; }
input:focus, select:focus, textarea:focus, [contenteditable="true"]:focus { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); outline: 0; }
button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
svg { width: var(--icon-size); height: var(--icon-size); fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.hidden, [hidden] { display: none !important; }
.muted { color: var(--muted); }
.wide { width: 100%; }
.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; }
.button { min-height: var(--control-height); display: inline-flex; align-items: center; justify-content: center; gap: 7px; border: 1px solid var(--line-strong); border-radius: var(--radius-control); padding: var(--button-pad-y) var(--button-pad-x); background: var(--panel-2); color: var(--text); font-weight: 600; }
.button:hover { border-color: var(--accent); }
.button.primary { border-color: var(--accent); background: var(--accent); color: var(--accent-ink); }
.button.primary:hover { background: var(--accent-strong); }
.button.quiet { background: transparent; }
.button.danger, .icon-button.danger { color: var(--danger); }
.icon-button { width: var(--control-height); height: var(--control-height); display: inline-grid; place-items: center; padding: 0; border: 1px solid transparent; border-radius: var(--radius-control); background: transparent; color: var(--muted); }
.icon-button:hover { color: var(--text); background: var(--hover); border-color: var(--line); }
.icon-button.small { width: 26px; height: 26px; }
.icon-button.small svg { width: 15px; height: 15px; }
.form-error { margin-top: 8px; padding: 8px 9px; border: 1px solid color-mix(in srgb, var(--danger) 55%, var(--line)); color: var(--danger); background: color-mix(in srgb, var(--danger) 8%, var(--panel)); border-radius: var(--radius-control); }
label > span, .field-label { display: block; margin-bottom: 5px; color: var(--muted); font-size: 11px; font-weight: 650; }
.checkbox-row { display: flex; align-items: center; gap: 8px; }
.checkbox-row input { width: 15px; height: 15px; min-height: 0; margin: 0; }
.checkbox-row span { margin: 0; }
kbd { font: 10px var(--font-mono); color: var(--subtle); border: 1px solid var(--line); border-bottom-color: var(--line-strong); border-radius: 3px; padding: 1px 5px; }
/* 20-shell.css */
.boot-screen { height: 100%; display: grid; place-content: center; justify-items: center; gap: 12px; background: var(--bg); }
.boot-screen strong { font-size: 14px; letter-spacing: .2px; }
.boot-icon { width: 32px; height: 32px; color: var(--accent); }
.login-view { height: 100%; display: grid; place-items: center; padding: 24px; background: var(--bg); }
.login-panel { width: min(100%, 360px); border: 1px solid var(--line); background: var(--panel); border-radius: var(--radius-panel); box-shadow: 0 18px 46px var(--shadow); }
.login-brand { display: flex; align-items: center; gap: 11px; padding: 18px 20px; border-bottom: 1px solid var(--line); }
.brand-icon { width: 24px; height: 24px; color: var(--accent); }
.login-brand div { display: grid; gap: 1px; }
.login-brand strong { font-size: 16px; }
.login-brand span { font-size: 11px; color: var(--muted); }
.login-form { display: grid; gap: 13px; padding: 20px; }
.login-panel footer { padding: 10px 20px 14px; color: var(--subtle); font-size: 10px; text-align: center; }
.app-view { height: 100%; display: grid; grid-template-rows: var(--appbar-height, 44px) minmax(0, 1fr); background: var(--bg); }
.appbar { display: grid; grid-template-columns: 220px minmax(260px, 620px) 1fr; align-items: center; gap: 16px; padding: 0 10px; border-bottom: 1px solid var(--line); background: var(--panel); }
.app-brand { display: flex; align-items: center; gap: 8px; padding-left: 3px; }
.app-brand strong { font-size: 14px; letter-spacing: -.2px; }
.search-field { height: 30px; display: grid; grid-template-columns: 22px 1fr auto auto; align-items: center; gap: 4px; padding: 0 7px; border: 1px solid var(--line-strong); border-radius: var(--radius-control); background: var(--field); }
.search-field:focus-within { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
.search-field svg { width: 15px; height: 15px; color: var(--muted); }
.search-field input { min-height: 0; height: 28px; border: 0; padding: 0 3px; background: transparent; box-shadow: none; }
.search-field input:focus { box-shadow: none; }
.appbar-actions { justify-self: end; display: flex; align-items: center; gap: 4px; }
.account-summary { display: grid; min-width: 120px; margin-left: 6px; padding-left: 10px; border-left: 1px solid var(--line); line-height: 1.25; }
.account-summary span:first-child { max-width: 190px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; font-weight: 650; }
.account-summary span:last-child { color: var(--success); font-size: 9px; }
.mail-shell { min-height: 0; display: grid; grid-template-columns: var(--folder-pane-width) minmax(300px, var(--message-pane-width)) minmax(420px, 1fr); overflow:hidden; }
.folder-pane, .message-pane, .reader-pane { min-width: 0; min-height: 0; }
.message-pane { overflow:hidden; }
.reader-pane { container-name: reader-pane; container-type: inline-size; }
.folder-pane { display: flex; flex-direction: column; padding: 10px; border-right: 1px solid var(--line); background: var(--sidebar); }
.compose-button { justify-content: flex-start; margin-bottom: 12px; }
.section-heading { min-height: 27px; display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--muted); font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.folder-pane-footer { margin-top: auto; padding-top: 10px; border-top: 1px solid var(--line); display: flex; justify-content: space-between; color: var(--subtle); font: 9px var(--font-mono); }
.mobile-only { display: none; }
.search-filter-button { width:24px; height:24px; display:grid; place-items:center; padding:0; border:0; border-radius:var(--radius-control); background:transparent; color:var(--muted); }
.search-filter-button:hover, .search-filter-button:focus-visible { background:var(--hover); color:var(--text); outline:none; }
.search-filter-button svg { width:14px; height:14px; }
.folder-pane,
.message-pane { position: relative; }
.pane-resizer {
position: absolute;
z-index: 8;
top: 0;
right: -3px;
bottom: 0;
width: 7px;
cursor: col-resize;
touch-action: none;
background: transparent;
}
.pane-resizer::after {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: 3px;
width: 1px;
background: transparent;
}
.pane-resizer:hover::after,
.resizing-pane .pane-resizer::after { background: var(--accent); }
.resizing-pane { cursor: col-resize !important; user-select: none !important; }
.resizing-pane iframe { pointer-events: none; }
@media (max-width: 820px) { .pane-resizer { display: none; } }
.offline-banner {
position: fixed;
z-index: 80;
top: calc(var(--appbar-height, 44px) + 6px);
left: 50%;
max-width: min(620px, calc(100vw - 24px));
transform: translateX(-50%);
padding: 7px 10px;
border: 1px solid var(--warning);
border-radius: var(--radius-control);
background: var(--panel-3);
color: var(--text);
box-shadow: 0 8px 24px var(--shadow);
font-size: 10px;
text-align: center;
}
.network-offline .account-summary span:last-child { color: var(--warning); }
/* 30-mail.css */
.folder-list { display: grid; gap: 1px; overflow: auto; }
.folder-button { min-height: 29px; width: 100%; display: grid; grid-template-columns: 22px minmax(0,1fr) auto; align-items: center; gap: 5px; padding: 3px 6px 3px calc(6px + (var(--folder-depth, 0) * 12px)); border: 1px solid transparent; border-radius: var(--radius-control); background: transparent; color: var(--muted); text-align: left; }
.folder-button svg { width: 15px; height: 15px; }
.folder-button .folder-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.folder-button:hover { color: var(--text); background: var(--hover); }
.folder-button.active { color: var(--text); background: var(--selected); border-color: var(--line); }
.folder-count { min-width: 20px; text-align: right; color: var(--subtle); font: 10px var(--font-mono); }
.folder-count.unread { color: var(--accent); font-weight: 700; }
.message-pane { display: grid; grid-template-rows: auto minmax(0,1fr) auto; border-right: 1px solid var(--line); background: var(--panel); }
.pane-toolbar { min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 7px 9px; border-bottom: 1px solid var(--line); }
.pane-title { display: flex; align-items: center; gap: 6px; min-width: 0; }
.pane-title > div { display: grid; min-width: 0; }
.pane-title strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.pane-title span { color: var(--subtle); font-size: 10px; }
.toolbar-actions, .reader-toolbar { display: flex; align-items: center; gap: 3px; }
.message-list { min-height: 0; overflow-y: auto; overflow-x: hidden; }
.message-row { width: 100%; min-height: var(--row-height); display: grid; grid-template-columns: 19px minmax(0, 1fr) auto; grid-template-rows: auto auto; column-gap: 8px; row-gap: 2px; align-content: center; padding: 7px 9px; border: 0; border-bottom: 1px solid var(--line); background: var(--panel); color: var(--text); text-align: left; }
.message-row:hover { background: var(--hover); }
.message-row.active { background: var(--selected); }
.message-row.unread .message-from, .message-row.unread .message-subject { font-weight: 730; }
.message-state { grid-row: 1 / 3; align-self: center; width: 8px; height: 8px; border: 1px solid var(--line-strong); border-radius: 50%; }
.message-row.unread .message-state { background: var(--accent); border-color: var(--accent); }
.message-main { min-width: 0; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: baseline; gap: 8px; }
.message-from, .message-subject, .message-snippet { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.message-from { font-size: 11px; }
.message-date { color: var(--subtle); font: 9px var(--font-mono); white-space: nowrap; }
.message-subject-line { min-width: 0; display: flex; align-items: center; gap: 6px; }
.message-subject { font-size: 11px; }
.message-snippet { color: var(--muted); font-size: 10px; }
.message-icons { display: inline-flex; gap: 3px; color: var(--subtle); }
.message-icons svg { width: 12px; height: 12px; }
.load-more { margin: 7px; }
.reader-pane { position: relative; overflow: hidden; background: var(--panel-2); }
.reader-empty { height: 100%; display: grid; place-content: center; justify-items: center; gap: 7px; color: var(--muted); }
.reader-empty svg { width: 34px; height: 34px; color: var(--line-strong); }
.reader-empty strong { color: var(--text); font-size: 13px; }
.reader-empty span { font-size: 11px; }
.reader-content { height: 100%; overflow: auto; background: var(--panel); }
.reader-toolbar { position: sticky; top: 0; z-index: 4; min-height: 42px; padding: 5px 10px; border-bottom: 1px solid var(--line); background: var(--panel); }
.reader-toolbar .button { min-height: 29px; }
.reader-toolbar .button svg { width: 15px; height: 15px; }
.toolbar-spacer { flex: 1; }
.move-control select { width: 118px; height: 29px; min-height: 29px; padding-top: 3px; padding-bottom: 3px; }
.message-header { padding: 20px 22px 14px; border-bottom: 1px solid var(--line); }
.message-header h1 { margin: 0 0 15px; font-size: 20px; line-height: 1.25; font-weight: 620; letter-spacing: -.25px; overflow-wrap: anywhere; }
.message-meta { display: grid; grid-template-columns: 32px minmax(0,1fr) auto; align-items: center; gap: 9px; }
.avatar { width: 32px; height: 32px; display: grid; place-items: center; border: 1px solid var(--line-strong); border-radius: 50%; background: var(--panel-2); color: var(--muted); font-weight: 700; }
.sender { display: grid; min-width: 0; }
.sender strong, .sender span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sender strong { font-size: 12px; }
.sender span, .message-meta time { color: var(--muted); font-size: 10px; }
.thread-section { padding: 9px 22px; border-bottom: 1px solid var(--line); }
.thread-list { display: grid; gap: 1px; }
.thread-item { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 8px; padding: 6px 7px; border: 0; border-radius: var(--radius-control); background: transparent; color: var(--muted); text-align: left; }
.thread-item:hover { background: var(--hover); color: var(--text); }
.thread-item.current { background: var(--selected); color: var(--text); }
.thread-item span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.thread-item time { font: 9px var(--font-mono); color: var(--subtle); }
.attachment-list { display: flex; flex-wrap: wrap; gap: 5px; padding: 10px 22px; border-bottom: 1px solid var(--line); }
.attachment-button { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--line); border-radius: var(--radius-control); background: var(--panel-2); color: var(--text); padding: 5px 8px; font-size: 10px; }
.attachment-button svg { width: 13px; height: 13px; }
.attachment-download-all { display:inline-flex; align-items:center; gap:6px; border:1px solid var(--line-strong); border-radius:var(--radius-control); background:transparent; color:var(--muted); padding:5px 8px; font-size:10px; }
.attachment-download-all:hover { color:var(--text); background:var(--hover); border-color:var(--accent); }
.attachment-download-all svg { width:13px; height:13px; }
.message-body { min-height: 260px; background: var(--panel); }
.message-body iframe { display: block; width: 100%; min-height: 68vh; border: 0; background: #fff; }
.message-body pre { margin: 0; padding: 22px; white-space: pre-wrap; overflow-wrap: anywhere; font: 13px/1.58 var(--font-sans); color: var(--text); }
.empty-list { padding: 30px 18px; color: var(--muted); text-align: center; font-size: 11px; }
.bulk-toolbar {
position:fixed;
z-index:72;
top:calc(var(--appbar-height, 44px) + 58px);
left:50%;
transform:translateX(-50%);
width:max-content;
max-width:min(900px, calc(100vw - 24px));
min-height:40px;
display:flex;
align-items:center;
justify-content:center;
flex-wrap:wrap;
gap:5px;
padding:6px;
border:1px solid var(--line-strong);
border-radius:calc(var(--radius-panel) + 4px);
background:color-mix(in srgb, var(--panel-3) 94%, transparent);
box-shadow:0 12px 34px var(--shadow);
backdrop-filter:blur(10px);
}
.bulk-toolbar.hidden { display:none; }
.bulk-toolbar .toolbar-spacer { display:none; }
.bulk-toolbar .button { min-height:28px; padding:4px 8px; }
.bulk-toolbar .move-control select { width:126px; }
.bulk-select { display:flex; align-items:center; gap:7px; color:var(--muted); white-space:nowrap; }
.message-row { grid-template-columns: 19px minmax(0, 1fr) auto; cursor:default; }
.message-select { display:none; grid-row:1 / 3; align-self:center; margin:0; width:14px; height:14px; accent-color:var(--accent); }
.message-state { grid-column:1; }
.message-main { grid-column:2; }
.message-subject-line { grid-column:2; }
.message-icons { grid-column:3; }
.message-list.selection-mode .message-row { grid-template-columns:18px 19px minmax(0, 1fr) auto; cursor:pointer; }
.message-list.selection-mode .message-select { display:block; grid-column:1; }
.message-list.selection-mode .message-state { grid-column:2; }
.message-list.selection-mode .message-main { grid-column:3; }
.message-list.selection-mode .message-subject-line { grid-column:3; }
.message-list.selection-mode .message-icons { grid-column:4; }
.message-row.selected { background:color-mix(in srgb, var(--accent) 14%, var(--panel)); }
#select-mode-btn.active { color:var(--accent); background:var(--selected); border-color:var(--line); }
.label-heading { margin-top:10px; }
.tag-list { max-height:150px; overflow:auto; }
.tag-item { width:100%; min-height:29px; display:grid; grid-template-columns:10px minmax(0,1fr) auto; align-items:center; gap:7px; padding:4px 7px; border:0; border-radius:var(--radius-control); background:transparent; color:var(--muted); text-align:left; }
.tag-item:hover, .tag-item.active { background:var(--hover); color:var(--text); }
.tag-dot { width:8px; height:8px; border-radius:50%; background:var(--tag-color); }
.tag-count { font-size:10px; color:var(--muted); }
.message-tags { display:inline-flex; flex-wrap:wrap; gap:3px; margin-left:5px; vertical-align:middle; }
.message-tag { display:inline-flex; align-items:center; min-height:15px; max-width:120px; padding:0 5px; border:1px solid color-mix(in srgb,var(--tag-color) 48%,var(--line)); border-radius:999px; background:color-mix(in srgb,var(--tag-color) 10%,transparent); color:var(--text); font-size:9px; line-height:14px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.folder-button.drop-target { outline: 1px solid var(--accent); outline-offset: -1px; background: var(--selected); }
.message-row.dragging { opacity: .5; }
.remote-image-bar {
display: flex;
align-items: center;
gap: 10px;
margin: 0 18px 8px;
padding: 8px 10px;
border: 1px solid var(--line);
border-radius: var(--radius-control);
background: var(--panel-2);
color: var(--muted);
font-size: 12px;
}
.remote-image-bar .button { margin-left: auto; }
.source-card { width: min(1040px, calc(100vw - 28px)); height: min(82vh, 860px); display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.message-source-content { margin: 0; padding: 14px; overflow: auto; white-space: pre; tab-size: 4; font: 12px/1.5 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; background: var(--panel-2); color: var(--text); border-block: 1px solid var(--line); }
.attachment-item {
display: inline-flex;
align-items: center;
gap: 4px;
}
.attachment-item .attachment-button {
min-width: 0;
}
/* Reader toolbars must remain usable at every UI scale. */
.reader-toolbar {
max-width:100%;
overflow-x:auto;
overflow-y:hidden;
scrollbar-width:thin;
flex-wrap:nowrap;
}
.reader-toolbar > *, .bulk-toolbar > * { flex:0 0 auto; }
#spam-btn.active { color: var(--warning); background: color-mix(in srgb, var(--warning) 10%, transparent); border-color: color-mix(in srgb, var(--warning) 35%, var(--line)); }
.message-icons { align-items:center; min-width:40px; justify-content:flex-end; }
.message-static-icon { display:inline-grid; place-items:center; color:var(--subtle); }
.message-quick-actions { display:inline-flex; align-items:center; gap:1px; opacity:0; pointer-events:none; }
.message-row:hover .message-quick-actions,
.message-row:focus-within .message-quick-actions,
.message-row.selected .message-quick-actions { opacity:1; pointer-events:auto; }
.message-quick-action { width:22px; height:22px; display:grid; place-items:center; padding:0; border:0; border-radius:var(--radius-control); background:transparent; color:var(--muted); }
.message-quick-action:hover { background:var(--hover); color:var(--text); }
.message-quick-action.active { color:var(--warning); }
.message-quick-action svg { width:12px; height:12px; }
@media (hover:none) { .message-quick-actions { opacity:1; pointer-events:auto; } }
/* Hierarchical folder tree. The disclosure control is separate from the folder action. */
.folder-row { display:grid; grid-template-columns:18px minmax(0,1fr); align-items:center; padding-left:calc(var(--folder-depth, 0) * 12px); min-width:0; }
.folder-expander { width:18px; height:28px; display:grid; place-items:center; padding:0; border:0; border-radius:var(--radius-control); background:transparent; color:var(--subtle); }
.folder-expander:hover, .folder-expander:focus-visible { color:var(--text); background:var(--hover); }
.folder-expander svg { width:13px; height:13px; transition:transform .12s ease; }
.folder-expander.expanded svg { transform:rotate(90deg); }
.folder-expander.placeholder { visibility:hidden; pointer-events:none; }
.folder-row .folder-button { padding-left:4px; }
html[data-reduce-motion="true"] .folder-expander svg { transition:none; }
#reader-from[role="button"] { cursor:pointer; border-radius:var(--radius-control); outline-offset:3px; }
#reader-from[role="button"]:hover { text-decoration:underline; text-underline-offset:2px; }
#reader-from[role="button"]:focus-visible { outline:1px solid var(--accent); }
.list-sort-control select { width:auto; max-width:132px; min-height:28px; height:28px; padding:2px 24px 2px 7px; font-size:10px; }
#thread-toggle svg { transition:transform .12s ease; }
#thread-toggle.expanded svg { transform:rotate(90deg); }
html[data-reduce-motion="true"] #thread-toggle svg { transition:none; }
.attachment-preview-dialog { width:min(1040px, calc(100vw - 28px)); max-width:none; }
.attachment-preview-card { height:min(84vh, 880px); display:grid; grid-template-rows:auto minmax(0,1fr) auto; }
.attachment-preview-body { min-height:0; overflow:auto; display:grid; place-items:center; background:var(--field); }
.attachment-preview-body img { display:block; max-width:100%; max-height:100%; object-fit:contain; }
.attachment-preview-body iframe { width:100%; height:100%; min-height:420px; border:0; background:#fff; }
.attachment-preview-body pre { align-self:stretch; justify-self:stretch; margin:0; padding:16px; overflow:auto; white-space:pre-wrap; overflow-wrap:anywhere; font:12px/1.5 var(--font-mono); color:var(--text); }
/* A flagged message stays visually quiet while remaining easy to scan. */
.message-row.flagged { box-shadow: inset 0 -2px 0 color-mix(in srgb, var(--danger) 58%, transparent); }
.search-highlight {
background: var(--selected);
color: inherit;
border-radius: 2px;
padding: 0 1px;
}
/* Advanced appearance preferences. */
.folder-pane { background: var(--folder-bg); }
.folder-button, .tag-item { min-height: var(--sidebar-item-height); }
.message-pane, .message-row { background: var(--message-bg); }
.reader-content, .message-body { background: var(--reader-bg); }
.message-row.unread .message-from, .message-row.unread .message-subject { font-weight: var(--unread-font-weight); }
.message-header, .thread-section, .attachment-list, .remote-image-bar, .message-body { width:100%; max-width:var(--reader-max-width); margin-inline:auto; }
html[data-unread-badge="outline"] .message-row.unread .message-state { background:transparent; border:2px solid var(--accent); }
html[data-unread-badge="solid"] .message-row.unread .message-state { width:12px; height:6px; border-radius:999px; background:var(--accent); border-color:var(--accent); }
html[data-compact-headers="true"] .message-header { padding-block:10px 8px; }
html[data-compact-headers="true"] .message-header h1 { margin-bottom:8px; font-size:17px; }
html[data-compact-headers="true"] .message-meta { grid-template-columns:26px minmax(0,1fr) auto; }
html[data-compact-headers="true"] .message-meta .avatar { width:26px; height:26px; }
html[data-toolbar-density="compact"] .pane-toolbar,
html[data-toolbar-density="compact"] .reader-toolbar { min-height:calc(36px * var(--ui-scale-factor)); padding-block:3px; }
html[data-toolbar-density="spacious"] .pane-toolbar,
html[data-toolbar-density="spacious"] .reader-toolbar { min-height:calc(52px * var(--ui-scale-factor)); padding-block:8px; }
/* Pane-aware anti-collision rules. These react to the pane width, not only viewport width. */
@container reader-pane (max-width: 640px) {
.reader-toolbar { gap:1px; padding-inline:6px; }
.reader-toolbar .button span { display:none; }
.reader-toolbar .button { padding-inline:6px; }
}
@container reader-pane (max-width: 460px) {
.reader-toolbar { scrollbar-width:none; }
.reader-toolbar::-webkit-scrollbar { display:none; }
}
@media (max-width: 560px) {
.bulk-toolbar { top:auto; bottom:10px; width:calc(100vw - 20px); max-width:none; }
.bulk-toolbar .move-control { display:block; }
.bulk-toolbar .move-control select { width:116px; }
}
/* 40-compose.css */
.dialog { padding: 0; border: 1px solid var(--line-strong); border-radius: var(--radius-panel); background: transparent; color: var(--text); box-shadow: 0 20px 60px var(--shadow); }
.dialog::backdrop { background: rgba(0,0,0,.58); }
.dialog-card { min-width: 420px; background: var(--panel); }
.dialog-header { min-height: 43px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 6px 10px 6px 13px; border-bottom: 1px solid var(--line); }
.dialog-header strong { font-size: 13px; }
.compose-header-actions { display:flex; align-items:center; gap:6px; }
.compose-header-actions .button.small { min-height:28px; padding:4px 8px; font-size:10px; }
.compose-dialog { width: min(900px, calc(100vw - 40px)); max-width: none; }
.compose-card { height:min(760px, calc(100dvh - 48px)); display:grid; grid-template-rows:auto auto auto minmax(240px,1fr) auto auto auto auto; overflow:hidden; container-name:compose-card; container-type:inline-size; }
.compose-addresses { display:grid; gap:6px; max-height:min(46dvh, 380px); padding:10px 12px; border-bottom:1px solid var(--line); background:var(--panel); overflow:auto; }
.compose-addresses > label { display:grid; grid-template-columns:72px minmax(0,1fr); align-items:center; gap:10px; min-height:34px; border:0; }
.compose-addresses > label > span { margin:0; padding:0; font-size:10px; text-align:right; }
.compose-addresses > label input,
.compose-addresses > label select { min-height:34px; border:1px solid var(--line); border-radius:var(--radius-control); background:var(--field); box-shadow:none; }
.compose-addresses > label input:focus,
.compose-addresses > label select:focus { border-color:var(--accent); box-shadow:0 0 0 1px var(--accent); }
.compose-options-row { display:grid; grid-template-columns:72px minmax(0,1fr); align-items:start; gap:10px; min-height:34px; }
.compose-options-row > span { padding-top:8px; font-size:10px; color:var(--muted); text-align:right; }
.compose-options { display:flex; align-items:center; flex-wrap:wrap; gap:7px; padding:0; }
.compose-options label { display:inline-flex; grid-template-columns:none; align-items:center; gap:6px; min-height:34px; margin:0; padding:3px 7px; border:1px solid var(--line); border-radius:var(--radius-control); background:var(--panel-2); font-size:10px; color:var(--muted); }
.compose-options label > span { margin:0; padding:0; font-size:10px; }
.compose-options select { min-width:92px; min-height:26px; border:0; background:transparent; padding-block:2px; }
.compose-options .compose-mdn-option input { min-height:auto; width:14px; height:14px; }
.editor-toolbar { min-height:36px; display:flex; align-items:center; flex-wrap:wrap; gap:2px; row-gap:3px; padding:4px 8px; border-bottom:1px solid var(--line); background:var(--panel-2); }
.editor-toolbar button { width: 28px; height: 27px; display: grid; place-items: center; border: 1px solid transparent; border-radius: var(--radius-control); background: transparent; color: var(--muted); }
.editor-toolbar button:hover { border-color: var(--line); background: var(--hover); color: var(--text); }
.editor-toolbar svg { width: 15px; height: 15px; }
.toolbar-separator { width: 1px; height: 18px; margin: 0 4px; background: var(--line); }
.editor-mode { margin-left: auto; color: var(--subtle); font: 9px var(--font-mono); }
.compose-editor { min-height: 0; overflow: auto; padding: 18px 20px; background: var(--field); border: 0; outline: none; font: 14px/1.6 var(--font-sans); }
.compose-editor:empty::before { content: "Write a message"; color: var(--subtle); }
.compose-editor a { color: var(--accent); }
.dialog-actions { display: flex; align-items: center; gap: 7px; padding: 8px 10px; border-top: 1px solid var(--line); }
.dialog-actions > :first-child { margin-right: auto; }
.compose-upload-progress { display:grid; grid-template-columns:minmax(80px,1fr) auto; align-items:center; gap:8px; padding:7px 10px; border-top:1px solid var(--line); background:var(--panel-2); color:var(--muted); font-size:10px; }
.compose-upload-progress.hidden { display:none; }
.compose-upload-track { height:4px; overflow:hidden; border-radius:999px; background:var(--line); }
.compose-upload-track > span { display:block; width:0; height:100%; background:var(--accent); transition:width .12s linear; }
.compose-attachments { display:flex; flex-wrap:wrap; gap:6px; padding:8px 10px; border-top:1px solid var(--line); background:var(--panel-2); }
.compose-attachment { display:inline-flex; align-items:center; gap:6px; padding:5px 7px; border:1px solid var(--line); border-radius:var(--radius-control); background:var(--field); }
.compose-attachment button { width:20px; height:20px; display:grid; place-items:center; padding:0; border:0; background:transparent; color:var(--muted); }
.compose-mode-control { margin-left:auto; }
.compose-mode-control select { min-width:108px; }
.compose-editor.plain-mode { font-family:var(--font-mono); white-space:pre-wrap; }
.editor-toolbar button:disabled { opacity:.4; cursor:not-allowed; }
.editor-select select { height: 28px; max-width: 104px; border: 1px solid var(--line); background: var(--panel); color: var(--text); font: inherit; }
.editor-color { display: inline-flex; align-items: center; }
.editor-color input { width: 30px; height: 28px; padding: 2px; border: 1px solid var(--line); background: var(--panel); }
.recipient-field { position: relative; }
.recipient-suggestions {
position: absolute;
z-index: 120;
top: calc(100% + 2px);
left: 0;
right: 0;
max-height: 220px;
overflow: auto;
padding: 3px;
border: 1px solid var(--line-strong);
border-radius: var(--radius-control);
background: var(--panel-3);
box-shadow: 0 10px 26px var(--shadow);
}
.recipient-suggestion {
width: 100%;
min-height: 34px;
display: grid;
gap: 1px;
padding: 5px 7px;
border: 0;
border-radius: var(--radius-control);
background: transparent;
color: var(--text);
text-align: left;
}
.recipient-suggestion:hover,
.recipient-suggestion.active { background: var(--selected); }
.recipient-suggestion strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
.recipient-suggestion span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); font-size: 10px; }
/* Inline image editing */
.compose-editor img[data-rustbox-cid] {
max-width: 100%;
height: auto;
cursor: pointer;
border-radius: min(3px, var(--radius-control));
}
.compose-editor img[data-rustbox-cid].compose-inline-image-selected {
outline: 2px solid var(--accent);
outline-offset: 2px;
}
.image-edit-dialog { width:min(840px, calc(100vw - 28px)); max-width:none; }
.image-edit-card {
width:100%;
height:min(720px, calc(100dvh - 28px));
display:grid;
grid-template-rows:auto minmax(0,1fr) auto;
overflow:hidden;
}
.image-edit-layout {
min-height:0;
display:grid;
grid-template-columns:minmax(0,1.35fr) minmax(240px,.65fr);
overflow:hidden;
}
.image-edit-preview {
min-width:0;
min-height:0;
display:grid;
place-items:center;
overflow:auto;
padding:16px;
background:var(--field);
}
.image-edit-preview canvas {
display:block;
max-width:100%;
max-height:100%;
width:auto;
height:auto;
border:1px solid var(--line);
background:var(--panel);
}
.image-edit-controls {
min-height:0;
overflow:auto;
padding:16px;
border-left:1px solid var(--line);
}
.image-edit-controls > label,
.image-crop-controls label { display:grid; gap:6px; margin-bottom:14px; }
.image-edit-controls label > span,
.image-crop-controls label > span { color:var(--muted); font-size:10px; }
.image-edit-range-line { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:8px; }
.image-edit-range-line output { min-width:46px; text-align:right; color:var(--muted); font:10px var(--font-mono); }
.image-crop-controls {
margin:8px 0 0;
padding:12px;
border:1px solid var(--line);
border-radius:var(--radius-control);
}
.image-crop-controls legend { padding:0 5px; color:var(--muted); font-size:10px; font-weight:700; }
.image-crop-disabled { opacity:.5; pointer-events:none; }
.image-edit-help { margin:8px 0 0; color:var(--subtle); font-size:10px; line-height:1.45; }
@media (max-width: 720px) {
.image-edit-layout { grid-template-columns:1fr; grid-template-rows:minmax(220px,1fr) auto; }
.image-edit-controls { border-left:0; border-top:1px solid var(--line); max-height:42dvh; }
}
.compose-dialog { width:min(var(--composer-width), calc(100vw - 40px)); }
.markdown-preview-dialog { width:min(860px, calc(100vw - 32px)); }
.markdown-preview-card { max-height:min(82dvh, 820px); display:grid; grid-template-rows:auto minmax(0,1fr); }
.markdown-preview-content { overflow:auto; padding:22px; background:var(--panel); color:var(--text); line-height:1.55; }
.markdown-preview-content > :first-child { margin-top:0; }
.markdown-preview-content > :last-child { margin-bottom:0; }
.markdown-preview-content pre { overflow:auto; padding:10px; background:var(--panel-2); border:1px solid var(--line); border-radius:var(--radius-control); }
.markdown-preview-content code { font-family:var(--font-mono); }
.markdown-preview-content blockquote { margin-left:0; padding-left:12px; border-left:3px solid var(--line-strong); color:var(--muted); }
#compose-editor {
font-family: var(--compose-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif);
}
.compose-reply-entry { min-height: 1.35em; }
/* OpenPGP composer / reader */
.pgp-reader-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-block:1px solid var(--border);background:color-mix(in srgb,var(--accent) 8%,var(--panel));}
.pgp-reader-bar>div:first-child{display:grid;gap:2px;min-width:0}.pgp-reader-status{display:block}
.compose-pgp-panel{margin-left:82px;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-control);background:color-mix(in srgb,var(--accent) 5%,var(--panel));}
.compose-pgp-panel>summary{min-height:32px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;padding:5px 9px;cursor:pointer;list-style:none;user-select:none;}
.compose-pgp-panel>summary::-webkit-details-marker{display:none}.compose-pgp-summary-title{font-size:10px;font-weight:700;color:var(--text)}
.compose-pgp-summary-status{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}.compose-pgp-summary-action{color:var(--accent);font-size:10px}
.compose-pgp-details{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px 14px;align-items:center;padding:8px 9px;border-top:1px solid var(--line);}
.compose-pgp-details>label:not(.checkbox-row){display:grid;gap:4px;min-width:0}.compose-pgp-details .inline-actions{justify-content:flex-end;margin-top:0}.compose-pgp-wide{grid-column:1 / -1}
.compose-pgp-passphrase{grid-column:1 / -1}.compose-pgp-passphrase input{width:100%}
.compose-fullscreen-toggle{font-size:17px;line-height:1;font-family:var(--font-sans);}
/* Signature/footer editor */
.signature-editor-shell { overflow:hidden; border:1px solid var(--line-strong); border-radius:var(--radius-control); background:var(--field); }
.signature-editor-toolbar { min-height:34px; display:flex; align-items:center; gap:2px; padding:3px 5px; border-bottom:1px solid var(--line); background:var(--panel-2); }
.signature-editor-toolbar button { width:28px; height:27px; display:grid; place-items:center; padding:0; border:1px solid transparent; border-radius:var(--radius-control); background:transparent; color:var(--muted); }
.signature-editor-toolbar button:hover { border-color:var(--line); background:var(--hover); color:var(--text); }
.signature-editor-toolbar svg { width:15px; height:15px; }
.signature-editor-shell .signature-editor { min-height:150px; max-height:320px; overflow:auto; padding:10px; border:0; border-radius:0; background:var(--field); outline:none; }
.signature-editor-shell .signature-editor:focus { box-shadow:inset 0 0 0 1px var(--accent); }
.signature-editor img { max-width:min(100%, 420px); height:auto; }
.signature-help { display:block; margin-top:5px; line-height:1.45; }
.compose-signature img { max-width:100%; height:auto; }
@container compose-card (max-width: 620px) {
.compose-addresses { padding:8px; }
.compose-addresses > label, .compose-options-row { grid-template-columns:54px minmax(0,1fr); gap:7px; }
.compose-pgp-panel { margin-left:61px; }
}
@media (max-width: 560px) {
.compose-addresses > label, .compose-options-row { grid-template-columns:1fr; gap:3px; }
.compose-addresses > label > span, .compose-options-row > span { text-align:left; padding-top:0; }
.compose-pgp-panel { margin-left:0; }
.editor-toolbar { max-height:112px; overflow:auto; }
}
/* 50-settings.css */
.settings-dialog { width: min(900px, calc(100vw - 40px)); max-width: none; }
.settings-card { min-height: 560px; }
.settings-layout { display: grid; grid-template-columns: 160px minmax(0,1fr); min-height: 510px; }
.settings-nav { min-height:0; display: flex; flex-direction: column; gap: 1px; padding: 9px; border-right: 1px solid var(--line); background: var(--sidebar); overflow:auto; overscroll-behavior:contain; }
.settings-tab { min-height: 30px; border: 1px solid transparent; border-radius: var(--radius-control); background: transparent; color: var(--muted); text-align: left; padding: 4px 8px; }
.settings-tab:hover { background: var(--hover); color: var(--text); }
.settings-tab.active { background: var(--selected); border-color: var(--line); color: var(--text); }
.settings-content { min-width: 0; min-height:0; padding: 18px 20px; overflow: auto; overscroll-behavior:contain; }
.settings-panel h2 { margin: 0 0 18px; font-size: 16px; font-weight: 620; }
.settings-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 260px)); gap: 14px 18px; }
.settings-section { padding: 14px; border-bottom: 1px solid var(--line); }
.inline-field { display: grid; grid-template-columns: 1fr auto; gap: 7px; }
.inline-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.folder-card { width: min(470px, calc(100vw - 30px)); }
.sieve-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 14px; }
.sieve-header h2 { margin-bottom: 2px; }
.sieve-header p { margin: 0; }
.sieve-layout { display: grid; grid-template-columns: 190px minmax(0,1fr); gap: 12px; min-height: 390px; }
.sieve-scripts { min-height: 260px; max-height: 390px; overflow: auto; border: 1px solid var(--line); background: var(--panel-2); }
.sieve-script { width: 100%; min-height: 30px; display: grid; grid-template-columns: minmax(0,1fr) auto; align-items: center; gap: 7px; border: 0; border-bottom: 1px solid var(--line); background: transparent; color: var(--muted); text-align: left; padding: 5px 7px; }
.sieve-script:hover, .sieve-script.active { background: var(--selected); color: var(--text); }
.sieve-script span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sieve-script span:last-child { color: var(--success); font: 8px var(--font-mono); }
.sieve-editor-wrap { display:grid; align-content:start; gap:10px; min-width:0; }
.code-editor { min-height: 310px; resize: vertical; font: 11px/1.55 var(--font-mono); tab-size: 4; }
.about-list { display: grid; grid-template-columns: 120px minmax(0,1fr); margin: 0; border-top: 1px solid var(--line); }
.about-list dt, .about-list dd { margin: 0; padding: 8px 0; border-bottom: 1px solid var(--line); }
.about-list dt { color: var(--muted); }
.about-list code { font: 10px var(--font-mono); overflow-wrap: anywhere; }
.toast-stack { position: fixed; right: 14px; bottom: 14px; z-index: 1000; display: grid; gap: 6px; width: min(340px, calc(100vw - 28px)); }
.toast { border: 1px solid var(--line-strong); border-left: 3px solid var(--accent); border-radius: var(--radius-control); background: var(--panel-3); color: var(--text); box-shadow: 0 10px 28px var(--shadow); padding: 9px 10px; font-size: 11px; }
.toast.error { border-left-color: var(--danger); }
.settings-panel-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:16px; }
.settings-panel-heading h2 { margin-bottom:3px; }
.appearance-grid { grid-template-columns: repeat(2,minmax(220px,1fr)); max-width:760px; }
.appearance-grid input[type="range"] { padding:0; border:0; background:transparent; min-height:24px; }
.color-input { display:grid; grid-template-columns:44px 1fr; align-items:center; gap:8px; }
.color-input input[type="color"] { width:44px; height:30px; padding:2px; }
.color-input output { font:11px var(--font-mono); color:var(--muted); }
.appearance-toggles { display:grid; grid-template-columns:repeat(2,minmax(220px,1fr)); gap:10px 18px; margin-top:18px; padding-top:14px; border-top:1px solid var(--line); max-width:760px; }
.appearance-presets { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; max-width:760px; margin-bottom:18px; }
.appearance-preset { min-width:0; display:grid; gap:4px; padding:10px; border:1px solid var(--line); border-radius:var(--radius-panel); background:var(--panel-2); color:var(--text); text-align:left; }
.appearance-preset:hover, .appearance-preset:focus-visible { border-color:var(--accent); background:var(--hover); }
.appearance-preset strong { font-size:11px; }
.appearance-preset span { color:var(--muted); font-size:9px; line-height:1.35; }
.app-prompt-card { width:min(460px,calc(100vw - 24px)); display:grid; grid-template-rows:auto minmax(0,1fr) auto; }
.app-prompt-body { display:grid; gap:10px; padding:16px; overflow:auto; }
.app-prompt-message { margin:0; color:var(--muted); line-height:1.5; }
.app-prompt-control { width:100%; }
.app-prompt-actions > :first-child { margin-right:auto; }
.print-frame { position:fixed; right:0; bottom:0; width:1px; height:1px; border:0; opacity:0; pointer-events:none; }
.headers-card { width:min(820px,calc(100vw - 32px)); max-height:min(720px,calc(100dvh - 32px)); }
.headers-content { margin:0; padding:14px; overflow:auto; white-space:pre-wrap; overflow-wrap:anywhere; background:var(--field); border-top:1px solid var(--line); border-bottom:1px solid var(--line); font:11px/1.55 var(--font-mono); }
.context-menu { position:fixed; z-index:1000; min-width:210px; max-width:300px; padding:4px; border:1px solid var(--line-strong); border-radius:var(--radius-control); background:var(--panel-2); box-shadow:0 12px 28px var(--shadow); }
.context-menu button { width:100%; min-height:30px; display:flex; align-items:center; gap:8px; padding:5px 8px; border:0; border-radius:var(--radius-control); background:transparent; color:var(--text); text-align:left; }
.context-menu button:hover { background:var(--hover); }
.context-menu button.danger { color:var(--danger); }
.context-menu .separator { height:1px; margin:4px; background:var(--line); }
.identity-overview{display:grid;gap:10px;min-width:0}.identity-overview-hint{display:grid;gap:3px;padding:11px 12px;border:1px solid var(--line);border-radius:var(--radius-control);background:var(--panel-2)}
.identity-list{min-width:0;max-height:430px;overflow:auto;border:1px solid var(--line);border-radius:var(--radius-control);background:var(--field)}
.identity-item{width:100%;min-width:0;display:block;padding:10px 11px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);text-align:left}
.identity-item:last-child{border-bottom:0}.identity-item:hover,.identity-item.active{background:var(--hover)}.identity-item strong,.identity-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.identity-item small{margin-top:2px;color:var(--muted)}
.identity-signature-field{min-width:0}.signature-editor{min-height:150px;padding:9px;border:1px solid var(--line-strong);border-radius:var(--radius-control);background:var(--field);overflow:auto}
.dialog.identity-dialog{width:min(980px,calc(100vw - 28px));max-width:none;overflow:hidden}.identity-card{width:100%;height:min(820px,calc(100dvh - 28px));max-height:calc(100dvh - 28px);display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden}
.identity-form-body{min-width:0;min-height:0;overflow-y:auto;overflow-x:hidden;display:grid;align-content:start;gap:12px;padding:14px}.identity-modal-section{min-width:0;display:grid;gap:11px;padding:13px;border:1px solid var(--line);border-radius:var(--radius-panel);background:var(--panel-2)}
.identity-modal-heading{display:grid;gap:2px}.identity-modal-heading>span{line-height:1.4}.identity-fields-grid,.identity-options-grid,.identity-toggle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px}.identity-field-wide{grid-column:1 / -1}
.identity-signature-grid{display:grid;grid-template-columns:minmax(240px,.8fr) minmax(360px,1.2fr);gap:14px;min-width:0}.identity-signature-grid>label{min-width:0}.identity-signature-grid textarea{min-height:210px;resize:vertical}.identity-signature-grid .signature-editor-shell .signature-editor{min-height:210px;max-height:360px}
.identity-options-grid{margin-top:2px}.identity-toggle-grid .checkbox-row{min-width:0}.identity-dialog-actions{padding:9px 12px}.identity-dialog-actions #identity-delete{margin-right:auto}
.notification-settings { display:grid; gap:14px; max-width:620px; }
.notification-folder-list { display:grid; grid-template-columns:repeat(2,minmax(180px,1fr)); gap:7px 14px; max-height:220px; overflow:auto; padding:9px; border:1px solid var(--line); background:var(--field); }
.contacts-card, .calendar-card { width:min(900px,calc(100vw - 32px)); min-height:560px; max-height:calc(100dvh - 32px); }
.contacts-layout { display:grid; grid-template-columns:280px minmax(0,1fr); min-height:500px; }
.contacts-sidebar { border-right:1px solid var(--line); padding:10px; background:var(--panel-2); }
.contact-list { margin-top:10px; max-height:430px; overflow:auto; border:1px solid var(--line); background:var(--field); }
.contact-item { width:100%; display:block; padding:8px 9px; border:0; border-bottom:1px solid var(--line); background:transparent; color:var(--text); text-align:left; }
.contact-item:hover, .contact-item.active { background:var(--hover); }
.contact-item small { display:block; color:var(--muted); margin-top:2px; }
.contact-form { display:grid; align-content:start; gap:12px; padding:16px; }
.calendar-toolbar { display:grid; grid-template-columns:auto 1fr auto auto; align-items:center; gap:8px; padding:10px 12px; border-bottom:1px solid var(--line); }
.calendar-toolbar strong { text-align:center; }
.calendar-events { max-height:360px; overflow:auto; padding:10px 12px; }
.calendar-event { width:100%; display:grid; grid-template-columns:150px 1fr auto; gap:10px; align-items:center; padding:8px 9px; border:0; border-bottom:1px solid var(--line); background:transparent; color:var(--text); text-align:left; }
.calendar-event:hover { background:var(--hover); }
.calendar-event time, .calendar-event small { color:var(--muted); }
.calendar-form { display:grid; gap:12px; padding:14px 16px; border-top:1px solid var(--line); background:var(--panel-2); }
@media (max-width:720px) { .contacts-layout { grid-template-columns:1fr; } .contacts-sidebar { border-right:0; border-bottom:1px solid var(--line); } .calendar-event { grid-template-columns:1fr; } }
.advanced-search-card { width:min(760px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); }
.advanced-search-form { display:grid; gap:16px; padding:16px; overflow:auto; }
.advanced-search-grid { grid-template-columns:repeat(2,minmax(220px,1fr)); max-width:none; }
.advanced-search-grid .wide-field { grid-column:1 / -1; }
.saved-search-section { border-top:1px solid var(--line); padding-top:12px; }
.saved-search-list { display:grid; gap:4px; max-height:160px; overflow:auto; }
.saved-search-item { display:grid; grid-template-columns:minmax(0,1fr) auto auto; align-items:center; gap:6px; min-height:32px; padding:4px 6px; border:1px solid var(--line); background:var(--field); }
.saved-search-item button { min-height:26px; }
.saved-search-item strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.advanced-search-actions { padding:0; border-top:0; }
@media (max-width:720px) { .advanced-search-grid { grid-template-columns:1fr; } .advanced-search-grid .wide-field { grid-column:auto; } }
.tag-card { width:min(390px,calc(100vw - 32px)); }
.tag-form { display:grid; gap:12px; padding:16px; }
.quota-summary { display:grid; gap:6px; max-width:520px; margin-top:16px; padding:10px 12px; border:1px solid var(--line); background:var(--field); }
.quota-summary > span { color:var(--muted); font-size:11px; }
.quota-track { height:6px; overflow:hidden; border-radius:999px; background:var(--panel-3); }
.quota-track span { display:block; width:0; height:100%; background:var(--accent); transition:width .16s ease; }
.contact-group-toolbar { display:grid; grid-template-columns:minmax(0,1fr) auto auto auto; gap:5px; margin-bottom:8px; }
.contact-group-toolbar .button { padding-inline:7px; }
.contact-group-membership { display:grid; grid-template-columns:repeat(2,minmax(140px,1fr)); gap:5px 10px; margin-top:5px; padding:8px; border:1px solid var(--line); background:var(--field); max-height:130px; overflow:auto; }
.field-label { display:block; margin-bottom:4px; color:var(--muted); font-size:11px; }
@media (max-width:720px) { .contact-group-toolbar { grid-template-columns:1fr auto; } .contact-group-toolbar #contact-group-rename, .contact-group-toolbar #contact-group-delete { grid-row:2; } }
.sieve-rules-overview { display:grid; gap:8px; padding:11px; border:1px solid var(--line); border-radius:var(--radius-panel); background:var(--panel-2); }
.sieve-section-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.sieve-section-heading > div { display:grid; gap:2px; }
.sieve-section-heading small { display:block; line-height:1.35; }
.sieve-count-badge, .sieve-status-pill { display:inline-flex; align-items:center; min-height:22px; padding:2px 8px; border:1px solid var(--line); border-radius:999px; background:var(--field); color:var(--muted); font-size:10px; white-space:nowrap; }
.sieve-status-pill.ok { border-color:color-mix(in srgb,var(--success) 45%,var(--line)); color:var(--success); }
.sieve-status-pill.error { border-color:color-mix(in srgb,var(--danger) 45%,var(--line)); color:var(--danger); }
.sieve-builder { overflow:hidden; border:1px solid var(--line); border-radius:var(--radius-panel); background:var(--panel-2); }
.sieve-builder > summary { cursor:pointer; padding:9px 11px; font-weight:650; user-select:none; }
.sieve-builder[open] > summary { border-bottom:1px solid var(--line); }
.sieve-builder-body { display:grid; gap:0; }
.sieve-builder-section { display:grid; gap:8px; padding:11px; border-bottom:1px solid var(--line); }
.sieve-builder-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; padding:0; }
.sieve-builder-grid-rule { grid-template-columns:minmax(220px,1.5fr) minmax(150px,1fr) minmax(170px,1fr); }
.sieve-builder label { min-width:0; }
.sieve-builder input, .sieve-builder select { width:100%; }
.sieve-builder .checkbox-row { align-self:end; min-height:var(--control-height); }
.sieve-builder-wide { grid-column:1 / -1; }
.sieve-builder-dynamic-list { display:grid; gap:7px; }
.sieve-dynamic-row { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; align-items:end; padding:8px; border:1px solid var(--line); border-radius:var(--radius-control); background:var(--field); }
.sieve-dynamic-row .sieve-dynamic-remove { justify-self:start; }
.sieve-rule-preview { display:grid; gap:9px; margin:11px; padding:11px; border:1px solid var(--line); border-radius:var(--radius-control); background:var(--field); }
.sieve-rule-preview-text { display:grid; gap:5px; line-height:1.45; }
.sieve-rule-preview-text strong { color:var(--text); }
.sieve-rule-preview-code { max-height:180px; margin:0; padding:9px; overflow:auto; border:1px solid var(--line); border-radius:var(--radius-control); background:var(--panel); color:var(--muted); font:10px/1.45 var(--font-mono); white-space:pre-wrap; }
.sieve-builder-footer { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:0 11px 11px; }
.sieve-builder-footer .inline-actions { padding:0; }
.sieve-raw-source { border:1px solid var(--line); border-radius:var(--radius-control); background:var(--panel-2); }
.sieve-raw-source > summary { cursor:pointer; padding:8px 10px; font-weight:600; }
.sieve-raw-source[open] > summary { border-bottom:1px solid var(--line); }
.sieve-raw-source p { margin:8px 10px 0; }
.sieve-raw-source .code-editor { width:calc(100% - 20px); min-height:260px; margin:8px 10px 10px; resize:vertical; }
.sieve-result { min-height:18px; }
@media (max-width:900px) { .sieve-builder-grid, .sieve-builder-grid-rule, .sieve-dynamic-row { grid-template-columns:1fr 1fr; } }
@media (max-width:620px) { .sieve-builder-grid, .sieve-builder-grid-rule, .sieve-dynamic-row { grid-template-columns:1fr; } .sieve-builder-footer, .sieve-section-heading { align-items:stretch; flex-direction:column; } }
.sieve-rule-launch{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 11px;border:1px dashed var(--line-strong);border-radius:var(--radius-control);background:var(--panel-2)}.sieve-rule-launch .muted{flex:1 1 260px;line-height:1.4}
.dialog.sieve-rule-dialog{width:min(1040px,calc(100vw - 28px));max-width:none;overflow:hidden}.sieve-rule-card{width:100%;height:min(900px,calc(100dvh - 28px));max-height:calc(100dvh - 28px);display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden}.sieve-rule-card>.dialog-header>div:first-child{display:grid;gap:2px;min-width:0}.sieve-rule-dialog-subtitle{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}.sieve-rule-dialog-body{min-width:0;min-height:0;overflow-y:auto;overflow-x:hidden;padding:12px;background:var(--panel)}
.sieve-builder-modal{overflow:visible}.sieve-builder-modal .sieve-builder-body{overflow:visible}.sieve-builder-modal .sieve-builder-section{padding:14px}.sieve-builder-modal .sieve-rule-preview{margin:14px}.sieve-builder-modal .sieve-builder-footer{position:sticky;bottom:-12px;z-index:3;padding:10px 14px;border-top:1px solid var(--line);background:var(--panel-2);box-shadow:0 -8px 18px color-mix(in srgb,var(--shadow) 45%,transparent)}
.contact-transfer { display: flex; gap: 6px; flex-wrap: wrap; margin: 6px 0; }
/* Diagnostics and mailbox behavior */
.diagnostics-grid {
display: grid;
gap: 12px;
}
.diagnostic-card {
border: 1px solid var(--line);
border-radius: var(--radius-panel);
background: var(--panel-2);
padding: 12px;
}
.diagnostic-card .section-heading {
margin: 0 0 10px;
}
.capability-grid {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.capability-badge {
display: inline-flex;
align-items: center;
gap: 6px;
min-height: 26px;
padding: 3px 7px;
border: 1px solid var(--line);
border-radius: var(--radius-control);
background: var(--panel-3);
font-size: 12px;
}
.capability-badge strong {
font-size: 11px;
font-weight: 650;
}
.capability-badge.supported strong { color: var(--success); }
.capability-badge.unsupported { color: var(--muted); }
.capability-list {
margin-top: 10px;
color: var(--muted);
font-size: 12px;
line-height: 1.55;
overflow-wrap: anywhere;
}
.account-settings-list {
display: grid;
gap: 8px;
}
.account-settings-row {
display: grid;
grid-template-columns: minmax(0, 1fr) auto auto;
gap: 8px;
align-items: center;
padding: 10px;
border: 1px solid var(--line);
border-radius: var(--radius-control);
background: var(--panel-2);
}
.account-settings-row .account-email {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.account-settings-row.active .account-email { font-weight: 650; }
.add-account-card { width: min(440px, calc(100vw - 28px)); }
.contact-photo-editor { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 10px; align-items: center; padding-bottom: 8px; border-bottom: 1px solid var(--line); }
.contact-photo-preview, .contact-photo-placeholder { width: 72px; height: 72px; border: 1px solid var(--line); border-radius: var(--radius-panel); background: var(--panel-2); }
.contact-photo-preview { object-fit: cover; }
.contact-photo-placeholder { display: grid; place-items: center; color: var(--muted); font-size: 12px; }
.contact-photo-editor .inline-actions { align-self: center; }
.folder-properties-card { width: min(520px, calc(100vw - 28px)); }
.folder-properties-list { display: grid; padding: 10px 14px 14px; }
.folder-property-row { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--line); }
.folder-property-row:last-child { border-bottom: 0; }
.folder-property-row strong { overflow-wrap: anywhere; font-weight: 550; }
.account-session-heading {
margin-top: 22px;
}
.account-session-details {
min-width: 0;
display: grid;
gap: 3px;
}
.account-session-details .muted {
font-size: 0.82rem;
}
.duplicates-card { width: min(720px, calc(100vw - 32px)); }
.duplicate-contact-list { display: grid; gap: 12px; max-height: 60vh; overflow: auto; }
.duplicate-contact-group { display: grid; gap: 8px; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius); }
.duplicate-contact-options { display: grid; gap: 6px; }
.duplicate-contact-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 6px; border-top: 1px solid var(--border); }
.duplicate-contact-summary { display: grid; min-width: 0; }
/* Calendar views */
.calendar-toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.calendar-toolbar #calendar-range { flex:1 1 220px; text-align:center; }
.calendar-toolbar #calendar-view { min-width:100px; }
.calendar-events { max-height:440px; }
.calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); border-top:1px solid var(--line); border-left:1px solid var(--line); }
.calendar-weekday { padding:6px 8px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); color:var(--muted); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.04em; }
.calendar-day-cell { min-height:110px; padding:5px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); background:var(--panel); overflow:hidden; }
.calendar-week-grid .calendar-day-cell { min-height:260px; }
.calendar-day-cell.outside-month { opacity:.52; }
.calendar-day-cell.today { box-shadow:inset 0 0 0 1px var(--accent); }
.calendar-day-number { width:28px; height:24px; border:0; background:transparent; color:var(--muted); text-align:center; border-radius:var(--radius); cursor:pointer; }
.calendar-day-number:hover { background:var(--hover); color:var(--text); }
.calendar-event-chip { width:100%; display:grid; grid-template-columns:auto minmax(0,1fr); gap:5px; align-items:center; margin-top:4px; padding:4px 5px; border:0; border-left:3px solid var(--event-color); background:var(--panel-2); color:var(--text); text-align:left; cursor:pointer; }
.calendar-event-chip:hover { background:var(--hover); }
.calendar-event-chip span { color:var(--muted); font-size:10px; white-space:nowrap; }
.calendar-event-chip strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:11px; }
.calendar-more { display:block; margin-top:4px; color:var(--muted); font-size:10px; }
.calendar-agenda-day { display:grid; gap:4px; margin-bottom:12px; }
.calendar-agenda-day h4 { margin:0; padding:7px 4px; border-bottom:1px solid var(--line); font-size:12px; }
.calendar-event { border-left:3px solid var(--event-color, var(--accent)); }
@media (max-width:720px) {
.calendar-grid { grid-template-columns:1fr; border-left:0; }
.calendar-weekday { display:none; }
.calendar-day-cell { min-height:auto; border-left:1px solid var(--line); }
.calendar-day-cell.outside-month { display:none; }
.calendar-toolbar #calendar-range { order:-1; flex-basis:100%; }
}
/* 0.0.1 UI reliability pass: viewport-safe dialogs, toasts and calendar layout */
.dialog {
max-width: calc(100vw - 16px);
max-height: calc(100dvh - 16px);
overflow: auto;
overscroll-behavior: contain;
scrollbar-gutter: auto;
}
.dialog-card {
max-width: 100%;
max-height: calc(100dvh - 18px);
min-height: 0;
overflow: auto;
overscroll-behavior: contain;
scrollbar-gutter: auto;
}
/* Grid dialogs own their internal scroll regions; simple/legacy dialogs fall
back to scrolling the complete card so actions can never be trapped below
the viewport. */
.compose-card,
.settings-card,
.identity-card,
.sieve-rule-card,
.contacts-card,
.calendar-card,
.headers-card,
.source-card,
.shortcuts-card,
.attachment-preview-card,
.app-prompt-card,
.quick-filter-card { overflow: hidden; }
.settings-card {
min-height: 0;
height: min(720px, calc(100dvh - 18px));
display: grid;
grid-template-rows: auto minmax(0, 1fr);
}
.settings-layout { min-height: 0; height: 100%; overflow:hidden; }
.dialog-header {
min-height: var(--dialog-header-height, 43px);
flex: 0 0 auto;
background: var(--panel);
}
.dialog-actions {
flex: 0 0 auto;
margin: 0;
background: var(--panel);
position: relative;
z-index: 2;
}
.contacts-card,
.calendar-card {
width: min(980px, calc(100vw - 32px));
height: min(780px, calc(100dvh - 32px));
min-height: 0;
max-height: calc(100dvh - 32px);
display: grid;
overflow: hidden;
}
.contacts-card { grid-template-rows: auto minmax(0, 1fr); }
.contacts-layout {
min-height: 0;
height: 100%;
overflow: hidden;
grid-template-columns: minmax(240px, 300px) minmax(0, 1fr);
}
.contacts-sidebar {
min-height: 0;
display: flex;
flex-direction: column;
overflow: hidden;
}
.contact-list {
min-height: 120px;
max-height: none;
flex: 1 1 auto;
overflow: auto;
}
.contact-form {
min-height: 0;
overflow: auto;
overscroll-behavior: contain;
padding-bottom: 0;
}
.contact-form > .inline-actions:last-child {
position: sticky;
bottom: 0;
z-index: 3;
margin: 0 -16px;
padding: 10px 16px;
border-top: 1px solid var(--line);
background: var(--panel);
}
.calendar-card { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.calendar-toolbar {
display: grid;
grid-template-columns: auto minmax(180px, 1fr) auto auto auto auto auto;
align-items: center;
gap: 6px;
padding: 8px 10px;
overflow-x: auto;
scrollbar-width: thin;
}
.calendar-toolbar #calendar-range { min-width: 0; text-align: center; }
.calendar-toolbar #calendar-view { min-width: 96px; }
.calendar-events {
min-height: 0;
max-height: none;
overflow: auto;
padding: 0;
overscroll-behavior: contain;
}
.calendar-grid {
width: 100%;
min-width: 680px;
display: grid !important;
grid-template-columns: repeat(7, minmax(86px, 1fr)) !important;
grid-auto-flow: row;
align-items: stretch;
}
.calendar-weekday { min-width: 0; }
.calendar-day-cell { min-width: 0; }
.calendar-form {
min-height: 0;
max-height: min(48dvh, 430px);
overflow: auto;
overscroll-behavior: contain;
}
.headers-card,
.source-card {
width: min(1040px, calc(100vw - 28px));
height: min(82dvh, 860px);
max-height: calc(100dvh - 28px);
display: grid;
grid-template-rows: auto minmax(0, 1fr) auto;
overflow: hidden;
}
.headers-content,
.message-source-content {
min-height: 0;
max-height: none;
overflow: auto;
overscroll-behavior: contain;
}
.toast-stack {
z-index: 2147483000;
pointer-events: none;
}
.toast {
min-height: 42px;
display: grid;
grid-template-columns: 20px minmax(0, 1fr) auto auto;
align-items: center;
gap: 8px;
padding: 8px 8px 8px 10px;
pointer-events: auto;
opacity: 0;
transform: translateY(6px);
transition: opacity .15s ease, transform .15s ease;
}
.toast.visible { opacity: 1; transform: translateY(0); }
.toast-icon { display: grid; place-items: center; color: var(--accent); }
.toast-icon svg { width: 17px; height: 17px; }
.toast-message { min-width: 0; overflow-wrap: anywhere; }
.toast-countdown { min-width: 24px; color:var(--subtle); font:10px var(--font-mono); text-align:right; }
.toast-controls { display:flex; align-items:center; justify-content:flex-end; gap:2px; white-space:nowrap; }
.toast-action { border:0; border-radius:var(--radius-control); background:transparent; color:var(--accent); padding:4px 6px; font-weight:700; font-size:10px; cursor:pointer; }
.toast-action:hover, .toast-action:focus-visible { background:var(--hover); color:var(--text); outline:none; }
.toast-close {
width: 24px;
height: 24px;
display: grid;
place-items: center;
border: 0;
border-radius: var(--radius-control);
background: transparent;
color: var(--muted);
}
.toast-close:hover { background: var(--hover); color: var(--text); }
.toast-close svg { width: 14px; height: 14px; }
.toast-success { border-left-color: var(--success); }
.toast-success .toast-icon { color: var(--success); }
.toast-error { border-left-color: var(--danger); }
.toast-error .toast-icon { color: var(--danger); }
.toast-warning { border-left-color: var(--warning); }
.toast-warning .toast-icon { color: var(--warning); }
.toast-info { border-left-color: var(--accent); }
@media (max-width: 720px) {
.contacts-card, .calendar-card { width: calc(100vw - 12px); height: calc(100dvh - 12px); max-height: calc(100dvh - 12px); }
.contacts-layout { grid-template-columns: 1fr; grid-template-rows: minmax(180px, 34%) minmax(0, 1fr); overflow: hidden; }
.contacts-sidebar { border-right: 0; border-bottom: 1px solid var(--line); }
.contact-form { padding: 12px; }
.contact-form > .inline-actions:last-child { margin: 0 -12px; padding: 9px 12px; }
.calendar-toolbar { grid-template-columns: auto minmax(150px, 1fr) auto auto; }
.calendar-toolbar #calendar-import, .calendar-toolbar #calendar-export, .calendar-toolbar #calendar-new { grid-row: 2; }
.calendar-grid { min-width: 0; grid-template-columns: 1fr !important; border-left: 0; }
.calendar-weekday { display: none; }
.calendar-day-cell { border-left: 1px solid var(--line); }
.calendar-day-cell.outside-month { display: none; }
}
.dialog-header .inline-actions { margin-top: 0; }
.headers-card { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.headers-summary {
max-height: min(30dvh, 240px);
overflow: auto;
padding: 8px 14px;
border-bottom: 1px solid var(--line);
background: var(--panel);
}
.header-summary-row {
display: grid;
grid-template-columns: 130px minmax(0, 1fr);
gap: 12px;
padding: 5px 0;
border-bottom: 1px solid color-mix(in srgb, var(--line) 70%, transparent);
}
.header-summary-row:last-child { border-bottom: 0; }
.header-summary-row code { min-width: 0; overflow-wrap: anywhere; white-space: pre-wrap; font: 10px/1.45 var(--font-mono); }
@media (max-width: 560px) { .header-summary-row { grid-template-columns: 1fr; gap: 2px; } }
/* Dialog/layout hardening */
.contacts-card,
.calendar-card,
.headers-card,
.source-card {
box-sizing: border-box;
contain: layout paint;
}
.contacts-card {
grid-template-rows: auto minmax(0, 1fr);
}
.contact-form {
scrollbar-gutter: auto;
padding-bottom: 12px;
}
.contact-form > .inline-actions:last-child {
box-shadow: 0 -1px 0 var(--line);
}
.calendar-card {
grid-template-rows: auto auto minmax(0, 1fr) auto;
}
.calendar-events {
width: 100%;
min-width: 0;
overflow: auto;
scrollbar-gutter: auto;
}
.calendar-grid {
min-width: 700px;
grid-template-columns: repeat(7, minmax(96px, 1fr)) !important;
}
.calendar-week-grid { min-width: 700px; }
.calendar-form:not(.hidden) {
border-top: 1px solid var(--line);
scrollbar-gutter: auto;
}
.headers-content,
.message-source-content {
scrollbar-gutter: auto;
}
.source-card .dialog-header .button { margin-left: auto; }
.reader-toolbar {
min-width: 0;
overflow-x: auto;
overflow-y: hidden;
scrollbar-width: thin;
}
.duplicate-contact-group { border-color: var(--line); border-radius: var(--radius-panel); }
.duplicate-contact-row { border-color: var(--line); }
@media (max-width: 720px) {
.calendar-grid,
.calendar-week-grid { min-width: 0; grid-template-columns: 1fr !important; }
}
.shortcuts-card { width:min(680px, calc(100vw - 32px)); max-height:calc(100dvh - 32px); display:grid; grid-template-rows:auto minmax(0,1fr) auto; }
.shortcuts-grid { overflow:auto; padding:18px; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.shortcuts-grid h3 { margin:0 0 10px; font-size:12px; }
.shortcuts-grid dl { margin:0; display:grid; grid-template-columns:minmax(92px,max-content) minmax(0,1fr); gap:7px 14px; align-items:center; }
.shortcuts-grid dt, .shortcuts-grid dd { margin:0; }
kbd { display:inline-block; min-width:24px; padding:2px 6px; border:1px solid var(--line); border-bottom-width:2px; border-radius:var(--radius-control); background:var(--field); color:var(--text); font:10px var(--font-mono); text-align:center; }
@media (max-width:620px) { .shortcuts-grid { grid-template-columns:1fr; } }
.quota-summary.quota-warning { border-color:color-mix(in srgb, var(--warning) 55%, var(--line)); }
.quota-summary.quota-warning .quota-track span { background:var(--warning); }
.quota-summary.quota-danger { border-color:color-mix(in srgb, var(--danger) 62%, var(--line)); }
.quota-summary.quota-danger .quota-track span { background:var(--danger); }
@media (max-width: 900px) { .appearance-presets { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width: 520px) { .appearance-presets { grid-template-columns:1fr; } }
.sieve-managed-rules { display:grid; gap:7px; }
.sieve-managed-rule { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px 12px; padding:9px 10px; border:1px solid var(--line); border-radius:var(--radius-control); background:var(--panel); }
.sieve-managed-rule.selected { border-color:var(--accent); box-shadow:inset 3px 0 0 var(--accent); }
.sieve-managed-rule.disabled { opacity:.68; }
.sieve-managed-rule.unsupported { border-style:dashed; }
.sieve-managed-rule-main { display:grid; gap:5px; min-width:0; }
.sieve-managed-rule-title { display:flex; align-items:center; gap:7px; min-width:0; }
.sieve-managed-rule-title strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sieve-rule-state { flex:0 0 auto; padding:1px 6px; border:1px solid var(--line); border-radius:999px; color:var(--muted); font-size:9px; text-transform:uppercase; letter-spacing:.04em; }
.sieve-rule-state.enabled { color:var(--success); border-color:color-mix(in srgb,var(--success) 40%,var(--line)); }
.sieve-managed-rule-summary { display:grid; gap:2px; color:var(--muted); font-size:11px; line-height:1.35; }
.sieve-managed-rule-summary b { color:var(--text); font-weight:600; }
.sieve-managed-rule-actions { display:flex; align-items:flex-start; gap:3px; flex-wrap:wrap; justify-content:flex-end; }
.sieve-managed-rule-actions button { min-width:27px; min-height:25px; padding:2px 6px; }
.sieve-rule-warning { color:var(--warning); font-size:10px; }
@media (max-width:720px) { .sieve-managed-rule { grid-template-columns:1fr; } .sieve-managed-rule-actions { justify-content:flex-start; } }
.quick-filter-dialog { width:min(700px, calc(100vw - 32px)); }
.quick-filter-card { width:100%; max-height:min(720px, calc(100dvh - 32px)); }
.quick-filter-body { padding:16px; overflow:auto; }
.quick-filter-grid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px; }
.quick-filter-grid label { min-width:0; }
.quick-filter-grid input, .quick-filter-grid select { width:100%; }
.quick-filter-toggles { margin-top:14px; }
.quick-filter-hint { min-height:20px; margin-top:10px; }
@media (max-width: 620px) { .quick-filter-grid { grid-template-columns:1fr; } }
.quick-filter-preview { margin-top:14px; padding:10px 12px; border:1px solid var(--line); border-radius:var(--radius-control); background:var(--panel-2); font-size:12px; line-height:1.45; overflow-wrap:anywhere; }
.appearance-advanced { margin-top:12px; border-top:1px solid var(--line); padding-top:10px; }
.appearance-advanced > summary { cursor:pointer; color:var(--text); font-weight:600; margin-bottom:10px; }
.pane-background-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-top:10px; }
.pane-background-control { display:flex; align-items:center; justify-content:space-between; gap:10px; min-width:0; }
.pane-background-control > span { display:flex; align-items:center; gap:6px; }
@media (max-width:820px) { .pane-background-grid { grid-template-columns:1fr; } }
/* OpenPGP settings */
.pgp-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.pgp-settings-grid .settings-section{margin:0}
.pgp-key-list{display:grid;gap:8px}.pgp-key-card{display:grid;gap:8px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel)}
.pgp-key-head{display:flex;justify-content:space-between;gap:12px;align-items:start}.pgp-key-head>div{display:grid;gap:3px;min-width:0}.pgp-key-head small{color:var(--muted)}
.pgp-fingerprint{display:block;overflow-wrap:anywhere;font-size:.84em;color:var(--muted)}
@media(max-width:760px){.pgp-settings-grid{grid-template-columns:1fr}.compose-pgp-details{grid-template-columns:1fr}.compose-pgp-details .inline-actions{justify-content:flex-start}.pgp-reader-bar{align-items:flex-start;flex-direction:column}}
/* 60-responsive.css */
/* Dedicated full-screen composer mode. */
.compose-dialog.compose-fullscreen{width:100vw;height:100dvh;max-width:none;max-height:none;margin:0;border:0;border-radius:0;overflow:hidden}
.compose-dialog.compose-fullscreen .compose-card{width:100%;height:100dvh;max-width:none;max-height:none;border-radius:0}
html[data-preview="off"] .mail-shell { grid-template-columns: var(--folder-pane-width) minmax(360px,1fr); }
html[data-preview="off"] .reader-pane { display: none; }
html[data-preview="bottom"] .mail-shell { grid-template-columns: var(--folder-pane-width) minmax(0,1fr); grid-template-rows: minmax(260px, 44%) minmax(0,1fr); }
html[data-preview="bottom"] .folder-pane { grid-row: 1 / 3; }
html[data-preview="bottom"] .message-pane { grid-column: 2; grid-row: 1; border-right: 0; border-bottom: 1px solid var(--line); }
html[data-preview="bottom"] .reader-pane { grid-column: 2; grid-row: 2; }
@media (max-width: 1080px) {
.appbar { grid-template-columns: minmax(150px, min(22vw, var(--folder-pane-width))) minmax(220px,1fr) auto; }
.mail-shell { grid-template-columns: minmax(170px, min(24vw, var(--folder-pane-width))) minmax(270px, min(39vw, var(--message-pane-width))) minmax(320px,1fr); }
.account-summary { display: none; }
}
@media (max-width: 820px) {
.mobile-only { display: inline-grid; }
.appbar { grid-template-columns: auto minmax(0,1fr) auto; }
.app-brand strong { display: none; }
.mail-shell { display: block; position: relative; }
.folder-pane { position: absolute; z-index: 20; top: 0; bottom: 0; left: 0; width: 250px; transform: translateX(-100%); transition: transform .15s ease; box-shadow: 12px 0 28px var(--shadow); }
.folder-pane.open { transform: translateX(0); }
.message-pane { height: 100%; border-right: 0; }
.reader-pane { display: none; position: absolute; z-index: 15; inset: 0; }
.reader-pane.mobile-open { display: block; }
html[data-preview="off"] .reader-pane.mobile-open { display: block; }
.message-header { padding: 16px; }
.thread-section, .attachment-list { padding-left: 16px; padding-right: 16px; }
.settings-layout { grid-template-columns: 120px minmax(0,1fr); }
.sieve-layout { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
.appbar { gap: 5px; padding: 0 6px; }
.search-field kbd { display: none; }
.appbar-actions .icon-button:first-child { display: none; }
.dialog { width: calc(100vw - 12px); max-width: none; }
.compose-dialog { width: calc(100vw - 12px); }
.compose-card { height: calc(100dvh - 12px); }
.dialog-card { min-width: 0; }
.settings-dialog { width: calc(100vw - 12px); }
.settings-layout { grid-template-columns: 1fr; }
.settings-nav { flex-direction: row; flex-wrap:nowrap; overflow-x:auto; overflow-y:hidden; border-right: 0; border-bottom: 1px solid var(--line); }
.settings-tab { flex:0 0 auto; text-align: center; white-space:nowrap; }
.settings-grid { grid-template-columns: 1fr; }
.reader-toolbar .button span { display: none; }
.reader-toolbar .move-control { display: none; }
}
@media (max-width:760px){
.identity-dialog,.sieve-rule-dialog{width:calc(100vw - 12px);max-width:none}
.identity-card,.sieve-rule-card{height:calc(100dvh - 12px);max-height:calc(100dvh - 12px)}
.identity-signature-grid,.identity-fields-grid,.identity-options-grid,.identity-toggle-grid{grid-template-columns:1fr}
.identity-field-wide{grid-column:auto}
.sieve-rule-dialog-body{padding:7px}
}
@media (max-width:560px){
.compose-dialog.compose-fullscreen{width:100vw;height:100dvh;max-width:none;max-height:none}
.compose-dialog.compose-fullscreen .compose-card{height:100dvh}
}
@media (prefers-reduced-motion: reduce) {
* { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}