/* Workspace v3: calm surfaces, clearer hierarchy, and a canvas that stays out of the way. */
:root { --accent-soft: color-mix(in srgb, var(--primary-color) 12%, transparent); }
button, input, textarea, select { font: inherit; }
button { transition: background-color .15s, border-color .15s; }
button:focus-visible, a:focus-visible, summary:focus-visible { outline: 2px solid var(--primary-color); outline-offset: 3px; }
input:focus, textarea:focus, select:focus { border-color: var(--primary-color); }
button:disabled { opacity: .4; cursor: not-allowed; }
[hidden] { display: none !important; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.eyebrow { font-size: 10px; letter-spacing: .15em; font-weight: 700; color: var(--primary-color); }
.dashboard-container { padding: 28px max(36px, calc((100vw - 1280px) / 2)); gap: 0; background: radial-gradient(ellipse at 90% 12%, var(--accent-soft), transparent 42%), var(--bg1); }
.dashboard-header { padding-bottom: 24px; gap: 22px; }
.header-title h1 { font-size: 23px; letter-spacing: -.8px; font-weight: 650; }
.header-title img { width: 32px; height: 32px; border-radius: 9px; }
.version-tag { font-size: 10px; border-radius: 5px; padding: 4px 6px; }
.dashboard-tabs { border: 0; background: transparent; gap: 3px; margin: 0; }
.dashboard-tabs .tab-btn { font-size: 13px; border-radius: 8px; padding: 10px 16px; }
.dashboard-tabs .tab-btn.active { background: var(--accent-soft) !important; color: var(--primary-color); }
.dashboard-btn { border: 1px solid var(--b1); font-size: 13px; border-radius: 8px; padding: 10px 15px; width: auto; justify-content: center; gap: 20px; }
.dashboard-btn.primary { background: var(--primary-color); color: var(--bg1); font-weight: 650; }
#create-project-btn { font-size: 13px; width: auto; }
.dashboard-intro { padding: 64px 0 56px; display: flex; align-items: center; justify-content: space-between; gap: 30px; }
.dashboard-intro h2 { font-size: clamp(32px, 3.8vw, 52px); letter-spacing: -2px; margin: 14px 0; line-height: 1.15; }
.dashboard-intro p { color: var(--c2); line-height: 1.8; font-size: 14px; }
.intro-art { display: flex; flex-direction: column; align-items: center; transform: rotate(-5deg); margin-right: 80px; }
.intro-art div { padding: 17px 24px; border: 1px solid var(--b1); border-radius: 10px; background: var(--bg2); font-size: 9px; color: var(--c2); letter-spacing: .1em; box-shadow: 0 12px 40px #0001; }
.intro-art b { display: block; margin-top: 8px; font-size: 14px; letter-spacing: 0; font-weight: 500; color: var(--c1); }
.intro-art div:last-child { margin-left: 100px; border-color: color-mix(in srgb, var(--primary-color) 35%, transparent); }
.intro-art i { font-size: 32px; color: var(--primary-color); height: 35px; }
.workspace-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.workspace-heading h2 { font-size: 18px; }
.workspace-heading span { font-size: 11px; color: var(--c2); }
.project-list { grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 20px; padding-bottom: 32px; }
.project-card { border-radius: 12px; padding: 22px; gap: 12px; min-width: 0; transition: border-color .15s, transform .15s; }
.project-card:hover { border-color: color-mix(in srgb, var(--primary-color) 45%, transparent); transform: translateY(-2px); }
.project-card h3 { font-size: 17px; overflow-wrap: anywhere; }
.project-card p { font-size: 12px; line-height: 1.7; }
.project-actions { margin-top: auto; padding-top: 14px; gap: 7px; flex-wrap: wrap; }
.project-actions .dashboard-btn { padding: 8px 10px; font-size: 11px; }
.empty-workspace { grid-column: 1 / -1; text-align: center; padding: 44px; border: 1px dashed var(--b1); border-radius: 14px; background: var(--bg2); }
.empty-icon { display: inline-flex; font-size: 28px; color: var(--primary-color); background: var(--accent-soft); padding: 12px 18px; border-radius: 14px; margin-bottom: 18px; }
.empty-workspace h3 { font-size: 23px; margin-bottom: 10px; }
.empty-workspace p { color: var(--c2); font-size: 13px; }
.empty-workspace > div { display: flex; justify-content: center; gap: 10px; margin-top: 24px; }
.template-preview { height: 120px; background: radial-gradient(var(--b1) 1px, transparent 1px) 0 0 / 12px 12px; border-radius: 7px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; padding: 18px 26px; margin: -6px -6px 4px; }
.template-preview span { border: 1px solid var(--b1); border-top: 3px solid var(--primary-color); border-radius: 4px; background: var(--bg3); position: relative; }
.template-preview span::after { content: ''; position: absolute; top: 10px; left: 10px; width: 50%; height: 3px; background: var(--b1); box-shadow: 0 7px var(--b1); }
.template-card:nth-child(2n) .template-preview { --primary-color: #82bba5; }
.template-card:nth-child(3n) .template-preview { --primary-color: #c9a678; }
.template-card .project-actions button { width: 100%; justify-content: space-between; }
.layout { grid-template-columns: 240px minmax(0, 1fr); }
body.ai-open .layout { grid-template-columns: 240px minmax(0, 1fr) 390px; }
/* Fixed navigation and file actions; only the chosen tool panel scrolls. */
.sidebar { padding: 16px; gap: 12px; overflow: hidden; background: var(--bg2); height: 100dvh; }
.sidebar > :not(.sidebar-content) { flex-shrink: 0; }
.sidebar .editor-icon { flex: 0 0 auto; width: 17px; height: 17px; }
.sidebar button { line-height: 1.35; border-radius: 8px; font-size: 12px; }
.sidebar button:not(:disabled):hover { background-color: var(--b1); }
.sidebar button:focus-visible, .sidebar input:focus-visible { outline: 2px solid var(--primary-color); outline-offset: 2px; }
.sidebar .back-home { width: 100%; min-height: 40px; display: flex; align-items: center; justify-content: flex-start; gap: 10px; padding: 10px 12px; color: var(--c2); border: 1px solid transparent; background: transparent; margin-bottom: 2px; }
.sidebar .back-home span { font-size: 12px; font-weight: 500; }
.sidebar .back-home > svg:last-child { margin-left: auto; width: 14px; height: 14px; opacity: .5; }
.sidebar .back-home:hover { color: var(--c1); border-color: var(--b1); }
.sidebar .sidebar-brand { gap: 9px; padding: 3px 8px 7px; }
.sidebar .sidebar-brand img { width: 26px; height: 26px; object-fit: contain; }
.sidebar .sidebar-brand h1 { font-size: 17px; margin: 0; }
.sidebar #projectTitle { width: 100%; min-height: 40px; font-size: 12px; border: 1px solid var(--b1); padding: 10px 12px; margin: 0; border-radius: 8px; background: var(--bg1); }
.workspace-rail { display: grid; gap: 8px; padding: 0 0 4px; }
.workspace-rail button { min-height: 40px; justify-content: flex-start; padding: 10px 12px; gap: 10px; border: 1px solid var(--b1); }
.workspace-rail button span { font-size: 12px; }
#quick-note { background: var(--bg3); }
#ai-toggle { background: var(--accent-soft); border-color: color-mix(in srgb, var(--primary-color) 18%, transparent); color: var(--primary-color); }
#ai-toggle small { margin-left: auto; font-size: 8px; letter-spacing: .06em; border: 1px solid color-mix(in srgb, var(--primary-color) 20%, transparent); border-radius: 4px; padding: 3px 5px; }
.sidebar-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; background: var(--bg1); padding: 4px; border: 1px solid var(--b1); border-radius: 10px; }
.sidebar-tabs button { display: flex; justify-content: center; gap: 7px; padding: 8px; min-height: 34px; font-size: 11px; color: var(--c2); border-radius: 6px; border: 1px solid transparent; }
.sidebar-tabs .editor-icon { width: 14px; height: 14px; }
.sidebar-tabs button[aria-selected="true"] { color: var(--c1); background: var(--bg3); border-color: var(--b1); box-shadow: 0 1px 3px #0001; }
.sidebar-content { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: var(--b1) transparent; margin-inline: -4px; padding: 6px 4px 12px; }
.sidebar-content [role="tabpanel"] { min-width: 0; }
.sidebar-section-heading { display: flex; align-items: center; justify-content: space-between; gap: 4px; margin: 2px 0 12px; }
.sidebar-section-heading span { color: var(--c1); font-size: 11px; font-weight: 550; }
.sidebar-section-heading small { font-size: 9px; color: var(--c2); }
.sidebar .block-search { font-size: 11px; padding: 9px 11px; min-height: 36px; margin: 0 0 10px; width: 100%; border-radius: 8px; background: var(--bg1); }
#buttons-area { gap: 6px; overflow: visible; padding: 0; mask-image: none; -webkit-mask-image: none; }
#buttons-area .sidebar-draggable-item { font-size: 11px; padding: 10px; gap: 7px; min-height: 42px; line-height: 1.4; border-radius: 8px; border: 1px solid var(--b1); text-align: left; }
#buttons-area .sidebar-draggable-item svg { width: 17px; height: 17px; flex-shrink: 0; margin: 0; }
#buttons-area .sidebar-draggable-item .type { position: static; margin-left: auto; flex-shrink: 0; font-size: 8px; padding: 3px 4px; border-radius: 4px; line-height: 1.1; }
.sidebar .more-blocks { min-height: 36px; font-size: 11px; color: var(--c2); padding: 9px 12px; margin-top: 8px; justify-content: center; }
.canvas-preferences-heading { padding: 0 0 20px; }
.canvas-preferences-heading h2 { font-size: 14px; font-weight: 600; line-height: 1.4; }
.canvas-preferences-heading p { margin-top: 5px; color: var(--c2); font-size: 10px; line-height: 1.5; }
#settings-container { padding: 0; display: flex; flex-direction: column; gap: 22px; }
.canvas-setting h3 { font-size: 12px; font-weight: 550; }
.canvas-setting > p { font-size: 10px; color: var(--c2); line-height: 1.6; margin: 4px 0 11px; }
.setting-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5px; }
.setting-options button { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; padding: 10px 3px; min-height: 64px; border: 1px solid var(--b1); background: var(--bg1); border-radius: 8px; color: var(--c2); }
.setting-options button[aria-pressed="true"] { color: var(--primary-color); border-color: color-mix(in srgb, var(--primary-color) 60%, var(--b1)); background: var(--accent-soft); box-shadow: 0 0 0 1px color-mix(in srgb, var(--primary-color) 8%, transparent); }
.setting-options button[aria-pressed="true"]::after { content: ''; position: absolute; top: 5px; right: 5px; width: 3px; height: 3px; border-radius: 50%; background: currentColor; }
.sidebar .setting-options .option-value { display: inline-flex; align-items: baseline; gap: 2px; font-size: 17px; line-height: 1; font-weight: 550; font-variant-numeric: tabular-nums; }
.option-value small { font-size: 9px; font-weight: 400; }
.sidebar .setting-options .option-label { font-size: 9px; font-weight: 500; line-height: 1.3; }
.corner-sample { display: block; width: 26px; height: 20px; border: 1.5px solid currentColor; border-radius: calc(var(--sample-radius) / 2); background: color-mix(in srgb, currentColor 5%, transparent); }
.canvas-behavior { display: flex; flex-direction: column; border-top: 1px solid var(--b1); border-bottom: 1px solid var(--b1); padding-block: 4px; }
.setting-toggle { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-height: 64px; padding: 12px 0; cursor: pointer; }
.setting-toggle + .setting-toggle { border-top: 1px solid var(--b2); }
.setting-toggle .toggle-copy { display: flex; flex-direction: column; min-width: 0; gap: 4px; }
.toggle-copy strong { font-size: 11px; font-weight: 500; }
.toggle-copy small { font-size: 9px; color: var(--c2); font-weight: 400; line-height: 1.5; }
.sidebar .setting-toggle input { appearance: none; -webkit-appearance: none; position: relative; top: auto; width: 32px; height: 19px; margin: 0; padding: 0; border: 1px solid var(--b1); border-radius: 20px; background: var(--bg3); flex-shrink: 0; cursor: pointer; }
.sidebar .setting-toggle input::after { content: ''; position: absolute; top: 3px; left: 3px; width: 11px; height: 11px; border-radius: 50%; background: var(--c2); transform: none; transition: transform .15s, background-color .15s; }
.sidebar .setting-toggle input:checked { background: var(--primary-color); border-color: var(--primary-color); }
.sidebar .setting-toggle input:checked::after { content: ''; transform: translateX(13px); background: var(--bg1); }
#settings-container .canvas-settings-hint { font-size: 9px; line-height: 1.7; color: var(--c2); margin-top: -8px; }
.sidebar-footer { border-top: 1px solid var(--b1); padding-top: 12px; }
#file-controls { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
#file-controls button { min-height: 54px; display: flex; flex-direction: column; justify-content: center; gap: 6px; padding: 9px 4px; border: 1px solid var(--b1); border-radius: 8px; background: transparent; color: var(--c2); }
#file-controls button:hover { color: var(--c1); }
#file-controls button span { font-size: 10px; }
#file-controls .editor-icon { width: 16px; height: 16px; }
.sidebar-footnote { display: flex; justify-content: space-between; gap: 6px; align-items: center; margin-top: 12px; }
.sidebar .sidebar-footnote span { font-size: 8px; color: var(--c2); display: inline-flex; gap: 5px; align-items: center; }
.sidebar-footnote i { width: 4px; height: 4px; border-radius: 50%; background: #8bb9a1; }
.canvas-toolbar { position: absolute; bottom: 22px; left: 50%; transform: translateX(-50%); z-index: 100; display: flex; align-items: center; gap: 6px; padding: 6px 10px; border: 1px solid var(--b1); background: var(--bg2); box-shadow: 0 8px 30px #0002; border-radius: 12px; white-space: nowrap; }
.canvas-toolbar button { width: auto; min-height: 32px; min-width: 32px; justify-content: center; padding: 7px 10px; font-size: 12px; border-radius: 7px; }
.canvas-toolbar button:hover:not(:disabled) { background: var(--b1); }
.canvas-toolbar > span { font-size: 10px; color: var(--c2); padding-inline: 3px; }
.canvas-toolbar .toolbar-divider { width: 1px; height: 16px; padding: 0; background: var(--b1); }
.grid-element { box-shadow: 0 4px 20px #0001; border-radius: var(--card-radius, 10px); }
.group-drop-overlay { border-radius: var(--card-radius, 10px); }
.grid-element:focus-within > .markdown-options { opacity: 1; pointer-events: auto; }
.markdown-preview-area { min-width: 0; overflow-wrap: anywhere; line-height: 1.7; font-size: 14px; }
.markdown-preview-area pre { max-width: 100%; overflow-x: auto; }
.markdown-preview-area table { display: block; max-width: 100%; overflow-x: auto; border-collapse: collapse; }
.markdown-preview-area th, .markdown-preview-area td { padding: 9px 12px; min-width: 80px; }
.markdown-preview-area :is(ul,ol) { padding-left: 1.6em; }
.markdown-preview-area :is(ul,ol) :is(ul,ol) { margin: .25em 0; }
.markdown-preview-area blockquote:not(.admonition)::before { content: none; }
.markdown-preview-area blockquote { border-left: 3px solid var(--primary-color); padding: 10px 16px; }
.markdown-preview-area img { max-width: 100%; height: auto; }
.ai-panel { background: var(--bg2); border-left: 1px solid var(--b1); display: flex; flex-direction: column; height: 100dvh; min-width: 0; overflow: hidden; z-index: 200; }
.ai-header { display: flex; align-items: center; justify-content: space-between; padding: 20px 18px 16px; }
.ai-header > div { display: flex; align-items: center; flex-wrap: wrap; column-gap: 8px; }
.ai-header strong { font-size: 14px; font-weight: 600; }
.ai-spark { color: var(--primary-color); font-size: 20px; }
.ai-header small { color: var(--c2); font-size: 9px; letter-spacing: .08em; width: 100%; margin: 4px 0 0 28px; }
.icon-btn { width: 32px; height: 32px; padding: 0; justify-content: center; font-size: 22px; color: var(--c2); }
.ai-toolbar { display: flex; gap: 8px; padding: 0 18px 14px; }
.ai-toolbar button { width: auto; min-height: 34px; font-size: 11px; line-height: 1.35; border: 1px solid var(--b1); padding: 8px 12px; border-radius: 7px; }
.ai-toolbar button:last-child { margin-left: auto; }
.ai-context { font-size: 10px; color: var(--c2); border-block: 1px solid var(--b1); padding: 10px 18px; display: flex; align-items: center; gap: 6px; }
.status-dot { width: 5px; height: 5px; background: #8bb9a1; border-radius: 100%; }
.ai-context button { font-size: 9px; padding: 0; width: auto; margin-left: auto; color: var(--primary-color); }
.ai-messages { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 20px 18px; scrollbar-width: thin; }
.ai-welcome { padding: 38px 10px; }
.ai-welcome > span { color: var(--primary-color); font-size: 34px; }
.ai-welcome h2 { font-size: 27px; letter-spacing: -.7px; line-height: 1.3; margin: 18px 0 14px; }
.ai-welcome p { color: var(--c2); font-size: 13px; line-height: 1.8; }
.ai-privacy { color: var(--c2); background: var(--bg1); border: 1px solid var(--b1); border-radius: 8px; padding: 12px; font-size: 11px; line-height: 1.7; margin: 25px 0 16px; }
.ai-welcome button { font-size: 12px; }
.ai-message { margin: 0 0 24px; min-width: 0; }
.message-label { font-size: 9px; font-weight: 650; letter-spacing: .1em; color: var(--c2); margin-bottom: 9px; }
.ai-message.assistant .message-label { color: var(--primary-color); }
.ai-message.user .md-content { background: var(--bg3); padding: 12px 14px; border-radius: 10px 10px 2px 10px; white-space: pre-wrap; }
.ai-message.status { border-left: 2px solid #d3a568; padding: 2px 12px; font-size: 12px; color: var(--c2); }
.md-content { font-size: 13px; line-height: 1.75; overflow-wrap: anywhere; }
.md-content > * + * { margin-top: .8em; }
.md-content :is(h1,h2,h3,h4) { font-size: 1.2em; line-height: 1.4; }
.md-content :is(ul,ol) { padding-left: 1.5em; }
.md-content li + li { margin-top: .3em; }
.md-content pre { background: var(--bg1); padding: 12px; border: 1px solid var(--b1); border-radius: 8px; overflow-x: auto; white-space: pre; }
.md-content code { font-size: .9em; background: var(--bg1); padding: 2px 4px; border-radius: 4px; }
.md-content pre code { padding: 0; }
.md-content table { display: block; overflow-x: auto; border-collapse: collapse; }
.md-content :is(th,td) { border: 1px solid var(--b1); padding: 7px 10px; }
.md-content a { color: var(--primary-color); }
.md-content blockquote { padding-left: 12px; border-left: 2px solid var(--primary-color); color: var(--c2); }
.md-content hr { border: 0; border-top: 1px solid var(--b1); }
.tool-card, .reasoning { border: 1px solid var(--b1); border-radius: 8px; padding: 10px 12px; margin-bottom: 14px; font-size: 11px; background: var(--bg1); }
.tool-card summary, .reasoning summary { cursor: pointer; color: var(--c2); overflow-wrap: anywhere; }
.tool-card pre, .reasoning pre { max-height: 220px; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 10px; margin-top: 10px; line-height: 1.7; }
.approval-card { border: 1px solid var(--primary-color); background: var(--accent-soft); padding: 14px; border-radius: 10px; margin-bottom: 16px; }
.approval-card strong { font-size: 13px; }
.approval-card p { font-size: 12px; line-height: 1.6; margin: 8px 0 12px; }
.approval-card > div { display: flex; flex-wrap: wrap; gap: 6px; }
.approval-card button { width: auto; font-size: 10px; border: 1px solid var(--b1); background: var(--bg2); padding: 7px 9px; }
.approval-card button:last-child { color: var(--primary-color); }
.ai-suggestions { padding: 4px 18px 12px; display: flex; flex-wrap: wrap; gap: 6px; }
.ai-suggestions button { width: auto; border: 1px solid var(--b1); border-radius: 15px; padding: 6px 10px; font-size: 10px; color: var(--c2); }
.ai-composer { margin: 0 14px; background: var(--bg1); border: 1px solid var(--b1); border-radius: 12px; padding: 12px; }
.ai-composer:focus-within { border-color: var(--primary-color); }
.ai-composer textarea { display: block; width: 100%; resize: vertical; min-height: 58px; max-height: 180px; padding: 0; border: 0; border-radius: 0; font-size: 12px; line-height: 1.7; }
.ai-composer > div { display: flex; align-items: center; gap: 8px; margin-top: 9px; }
.ai-state { color: var(--c2); font-size: 9px; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ai-composer button { width: auto; font-size: 11px; padding: 5px 8px; }
.ai-composer .send-btn { color: var(--bg1); background: var(--primary-color); font-size: 19px; padding: 2px 10px; border-radius: 7px; }
.ai-footer { text-align: center; font-size: 8px; color: var(--c2); padding: 10px 4px 12px; }
.ai-settings { margin: auto; width: min(660px, calc(100vw - 32px)); max-height: 90dvh; color: var(--c1); background: var(--bg2); border: 1px solid var(--b1); border-radius: 16px; padding: 28px; overscroll-behavior: contain; }
.ai-settings::backdrop { background: #0009; backdrop-filter: blur(4px); }
.ai-settings header { display: flex; justify-content: space-between; gap: 20px; margin-bottom: 18px; }
.ai-settings h2 { font-size: 25px; margin-top: 8px; }
.ai-settings p { font-size: 12px; color: var(--c2); line-height: 1.75; }
.ai-settings a { color: var(--primary-color); }
.ai-settings fieldset { border: 1px solid var(--b1); border-radius: 10px; padding: 16px; margin-top: 22px; }
.ai-settings legend { padding: 0 7px; font-size: 12px; }
.ai-settings label { display: flex; flex-direction: column; gap: 7px; margin-top: 12px; font-size: 11px; color: var(--c2); }
.ai-settings :is(input,select,textarea) { width: 100%; font-size: 12px; background: var(--bg1); color: var(--c1); border: 1px solid var(--b1); padding: 10px 12px; border-radius: 7px; }
.ai-settings textarea { resize: vertical; font-family: monospace; }
.field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 14px; }
.settings-actions { display: flex; gap: 7px; margin: 12px 0; flex-wrap: wrap; }
.settings-actions button { width: auto; font-size: 11px; background: var(--bg3); padding: 8px 12px; }
.settings-actions .danger { color: #de9292; }
.vault-state { font-size: 10px; color: var(--primary-color); }
.ai-settings footer { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-top: 22px; }
.ai-settings footer span { font-size: 10px; color: var(--c2); max-width: 210px; }
.ai-settings .settings-error { color: #e69a9a; margin-top: 12px; }
@media (max-width: 1100px) {
    .intro-art { margin-right: 10px; }
    .layout { grid-template-columns: 210px minmax(0, 1fr); }
    body.ai-open .layout { grid-template-columns: 210px minmax(0, 1fr) 350px; }
    body.ai-open #save-status, body.ai-open #canvas-count { display: none; }
    .ai-context { padding-inline: 12px; }
}
@media (max-width: 900px) {
    .dashboard-intro { padding: 40px 0; } .intro-art { display: none; }
    .dashboard-header { flex-wrap: wrap; } .dashboard-header .spacer { display: none; }
    body.ai-open .layout { grid-template-columns: 210px minmax(0, 1fr); }
    .ai-panel { position: fixed; width: 350px; right: 0; top: 0; box-shadow: -10px 0 40px #0003; }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; } }
#grid { background-image: radial-gradient(circle at center, var(--b1) var(--grid-dot-radius, .85px), transparent calc(var(--grid-dot-radius, .85px) + .3px)); background-size: 10px 10px; background-position: -5px -5px; }
#grid-content { background-image: none; }

/* Note actions share the same click-target rhythm as the editor toolbar. */
.markdown-options { gap: 6px; bottom: -36px; }
.markdown-options button { width: auto; min-height: 32px; padding: 7px 10px; gap: 6px; border-radius: 7px; font-size: 12px; line-height: 1.3; }
.markdown-options button svg { width: 16px; height: 16px; margin-right: 0; flex-shrink: 0; }
.grid-element:focus-within > .markdown-options { transform: scale(1); }
/* Keep the preference switches in reach on shorter laptop screens. */
@media (max-height: 820px) {
    .sidebar { padding-block: 12px; gap: 8px; }
    .sidebar .back-home { min-height: 34px; padding-block: 8px; margin: 0; }
    .sidebar .sidebar-brand { padding-block: 0 2px; }
    .sidebar #projectTitle, .workspace-rail button { min-height: 36px; padding-block: 8px; }
    .workspace-rail { gap: 6px; padding-bottom: 2px; }
    .sidebar-tabs button { min-height: 32px; padding-block: 7px; }
    .sidebar-content { padding-top: 4px; }
    .canvas-preferences-heading { padding-bottom: 16px; }
    .canvas-preferences-heading p, #settings-container .canvas-settings-hint { display: none; }
    #settings-container { gap: 18px; }
    .canvas-setting > p { margin-bottom: 8px; }
    .setting-options button { min-height: 56px; padding-block: 8px; }
    .setting-toggle { min-height: 54px; padding-block: 10px; }
    .sidebar-footer { padding-top: 10px; }
    #file-controls button { min-height: 48px; padding-block: 7px; }
    .sidebar-footnote { margin-top: 10px; }
}
/* Canvas chrome follows the actual canvas bounds, even with either sidebar open. */
.sidebar-navigation { display: flex; align-items: center; gap: 4px; }
.sidebar .sidebar-navigation .back-home { flex: 1; width: auto; min-width: 0; margin: 0; padding-inline: 10px; }
.sidebar-visibility-button { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; width: 34px; height: 34px; padding: 8px; border: 1px solid var(--b1); border-radius: 8px; background: var(--bg2); color: var(--c2); }
.sidebar-visibility-button .editor-icon { width: 17px; height: 17px; }
.sidebar .sidebar-visibility-button { border-color: transparent; background: transparent; }
.sidebar-visibility-button:hover { color: var(--c1); background: var(--bg3); }
#main-content { --canvas-overlay-inset: 0px; min-width: 0; container-type: inline-size; }
.canvas-topbar { position: absolute; top: 18px; left: 20px; right: calc(20px + var(--canvas-overlay-inset)); display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; z-index: 101; pointer-events: none; }
.canvas-navigation { display: flex; align-items: center; gap: 8px; flex-shrink: 0; pointer-events: auto; }
#main-content .theme-toggle { position: static; display: flex; align-items: center; margin: 0; padding: 8px 10px; height: 34px; border-radius: 8px; font-size: 12px; line-height: 16px; white-space: nowrap; background: var(--bg2); }
#main-content .theme-toggle svg { width: 16px; height: 16px; flex-shrink: 0; }
#main-content .canvas-topbar .searchbar { position: static; left: auto; right: auto; margin: 0; flex: 0 1 260px; min-width: 90px; max-width: 260px; width: 45%; padding: 8px 10px; height: 34px; border-radius: 8px; background: var(--bg2); pointer-events: auto; }
#main-content .searchbar input { padding: 0; min-width: 0; width: 100%; font-size: 12px; }
#main-content .searchbar > svg { width: 16px; height: 16px; flex-shrink: 0; }
#main-content .search-results-popup { top: 60px; left: auto; right: calc(20px + var(--canvas-overlay-inset)); width: min(360px, calc(100% - var(--canvas-overlay-inset) - 40px)); margin: 0; z-index: 102; }
body.sidebar-hidden .layout { grid-template-columns: minmax(0, 1fr); }
body.sidebar-hidden.ai-open .layout { grid-template-columns: minmax(0, 1fr) 390px; }
@media (max-width: 1100px) { body.sidebar-hidden.ai-open .layout { grid-template-columns: minmax(0, 1fr) 350px; } }
@media (max-width: 900px) { body.sidebar-hidden.ai-open .layout { grid-template-columns: minmax(0, 1fr); } }
@container (max-width: 480px) {
    #main-content .theme-toggle { font-size: 0; padding: 8px; width: 34px; }
    #main-content .theme-toggle svg { margin: 0; }
    .canvas-topbar { gap: 10px; left: 14px; right: calc(14px + var(--canvas-overlay-inset)); }
}
/* A stable hit target: active feedback never scales/moves the drop zone. */
#delete-area { position: absolute; left: calc((100% - var(--canvas-overlay-inset)) / 2); bottom: 22px; transform: translateX(-50%); width: min(280px, calc(100% - var(--canvas-overlay-inset) - 28px)); min-height: 66px; padding: 12px 14px; display: flex; align-items: center; gap: 12px; border: 1px solid color-mix(in srgb, var(--md-red) 38%, var(--b1)); border-radius: 14px; background: var(--bg2); color: var(--c1); box-shadow: 0 8px 32px #0003; z-index: 10000; user-select: none; transition: background-color .15s, border-color .15s, box-shadow .15s; }
.delete-target-icon { display: flex; align-items: center; justify-content: center; flex: 0 0 36px; height: 36px; border: 1px solid color-mix(in srgb, var(--md-red) 25%, transparent); border-radius: 10px; background: color-mix(in srgb, var(--md-red) 8%, transparent); color: var(--md-red); transition: background-color .15s, color .15s; }
.delete-target-copy { display: flex; flex: 1; min-width: 0; flex-direction: column; gap: 4px; }
.delete-target-copy strong { font-size: 12px; font-weight: 600; line-height: 1.3; }
.delete-target-copy > span { font-size: 10px; color: var(--c2); line-height: 1.4; }
#delete-area kbd { font: 9px ui-monospace, monospace; color: var(--c2); border: 1px solid var(--b1); border-radius: 4px; padding: 4px 5px; }
#delete-area.active { border-color: var(--md-red); background: color-mix(in srgb, var(--md-red) 10%, var(--bg2)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--md-red) 12%, transparent), 0 8px 32px #0003; }
#delete-area.active .delete-target-icon { background: var(--md-red); color: var(--bg1); border-color: var(--md-red); }
#delete-area.active strong { color: var(--md-red); }
body.dragging-note .canvas-toolbar { opacity: 0; pointer-events: none; }
body.dragging-note .markdown-options { visibility: hidden; }

.grid-element.over-delete { border-color: var(--md-red) !important; outline-color: var(--md-red); }
@media (max-width: 900px) {
    body.ai-open #main-content { --canvas-overlay-inset: 350px; }
    body.ai-open #delete-area kbd { display: none; }
}
/* Viewport-space marquee: it does not scale with the notes beneath it. */
.canvas-selection-box { position: absolute; z-index: 100000; pointer-events: none; border: 1px solid var(--primary-color); background: color-mix(in srgb, var(--primary-color) 13%, transparent); border-radius: 2px; }
body.box-selecting #grid, body.box-selecting .grid-element { cursor: crosshair; }
body.box-selecting .markdown-options { visibility: hidden; }
/* Only the middle of settings scrolls; close/save actions stay in view. */
.ai-settings { padding: 0; overflow: hidden; max-height: min(90dvh, 940px); }
#ai-settings-form { display: flex; flex-direction: column; max-height: min(90dvh - 2px, 938px); min-height: 0; }
.ai-settings header { flex: 0 0 auto; padding: 24px 28px 18px; margin: 0; border-bottom: 1px solid var(--b1); }
.settings-scroll { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; padding: 20px 24px 24px 28px; overscroll-behavior: contain; scrollbar-gutter: stable; scrollbar-width: thin; scrollbar-color: var(--c2) var(--bg2); }
.settings-scroll::-webkit-scrollbar { width: 8px; }
.settings-scroll::-webkit-scrollbar-track { background: var(--bg2); }
.settings-scroll::-webkit-scrollbar-thumb { border: 2px solid var(--bg2); background: var(--c2); border-radius: 8px; }
.settings-bottom { flex: 0 0 auto; padding: 16px 28px; border-top: 1px solid var(--b1); }
.ai-settings .settings-bottom footer { margin: 0; }
.ai-settings .settings-error { margin: 0 0 10px; max-height: 70px; overflow-y: auto; }
.ai-settings .settings-error:empty { display: none; }
.ai-settings label.remember-device { flex-direction: row; align-items: center; gap: 10px; color: var(--c1); font-size: 12px; }
.ai-settings .remember-device input { width: 16px; height: 16px; accent-color: var(--primary-color); }
.ai-settings .device-vault-hint { margin-top: 8px; font-size: 11px; }
@media (max-width: 540px) {
    .ai-settings header { padding: 16px; }
    .settings-scroll { padding: 16px; }
    .settings-bottom { padding: 12px 16px; }
    .ai-settings .field-grid { grid-template-columns: 1fr; }
    .ai-settings footer span { display: none; }
}
/* Model actions read like a conversation; developer JSON is opt-in. */
.tool-card { padding: 12px; min-width: 0; max-width: 100%; background: var(--bg2); border-radius: 11px; margin-bottom: 10px; }
.tool-card > header { display: flex; align-items: center; gap: 8px; min-width: 0; }
.tool-card > header strong { flex: 1; min-width: 0; font-size: 12px; line-height: 1.4; }
.tool-icon { display: inline-flex; flex-shrink: 0; color: var(--primary-color); }
.tool-status { font-size: 9px; padding: 3px 6px; border-radius: 5px; background: var(--bg3); color: var(--c2); text-transform: capitalize; }
.tool-card[data-status="completed"] .tool-icon, .tool-card[data-status="completed"] .tool-status { color: var(--md-green); }
.tool-card[data-status="failed"] .tool-icon, .tool-card[data-status="failed"] .tool-status { color: var(--md-red); }
.tool-card[data-status="denied"] .tool-icon, .tool-card[data-status="denied"] .tool-status { color: var(--md-amber); }
.tool-card[data-status="cancelled"] .tool-icon { color: var(--c2); }
.tool-intent { font-size: 12px; line-height: 1.6; margin: 9px 0 5px; white-space: pre-wrap; overflow-wrap: anywhere; }
.tool-outcome { font-size: 11px; line-height: 1.6; color: var(--c2); overflow-wrap: anywhere; }
.tool-debug { margin-top: 9px; border-top: 1px solid var(--b1); padding-top: 8px; }
.tool-debug summary { font-size: 10px; }
.tool-debug pre { padding: 10px; border-radius: 7px; background: var(--bg1); max-width: 100%; }
.request-preview { margin-top: 24px; }
.request-preview h3 { font-size: 13px; margin-bottom: 6px; }
.request-preview pre { margin-top: 10px; background: var(--bg1); border: 1px solid var(--b1); border-radius: 8px; padding: 14px; max-height: 260px; overflow: auto; font-size: 11px; line-height: 1.6; white-space: pre-wrap; overflow-wrap: anywhere; }
.chat-storage-status { font-size: 10px; color: var(--md-amber); padding-inline: 18px; line-height: 1.5; }
.chat-storage-status:empty { display: none; }
.chat-drawer { padding: 14px 18px; border-bottom: 1px solid var(--b1); background: var(--bg1); max-height: 45dvh; flex-shrink: 0; overflow-y: auto; scrollbar-width: thin; }
.chat-drawer header { display: flex; align-items: center; justify-content: space-between; font-size: 12px; }
.chat-drawer header button { width: 28px; padding: 4px 8px; }
.chat-drawer input { width: 100%; margin-block: 10px 6px; font-size: 12px; padding: 8px 10px; border: 1px solid var(--b1); background: var(--bg2); color: var(--c1); border-radius: 7px; }
.chat-drawer > p { font-size: 10px; color: var(--c2); line-height: 1.5; }
.chat-list { font-size: 12px; padding-top: 8px; }
.chat-history-row { display: flex; align-items: center; gap: 5px; padding-block: 4px; }
.chat-open { min-width: 0; flex: 1; display: flex; align-items: flex-start; flex-direction: column; gap: 5px; padding: 9px 10px; border: 1px solid var(--b1); border-radius: 8px; }
.chat-open[aria-current="true"] { border-color: var(--primary-color); background: var(--accent-soft); }
.chat-open strong { font-size: 11px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chat-open small { font-size: 9px; color: var(--c2); }
.chat-delete { width: 25px; padding: 5px; justify-content: center; color: var(--c2); }
.change-review { border: 1px solid var(--primary-color); border-radius: 11px; padding: 14px; margin: 14px 0; background: var(--accent-soft); }
.change-review > strong { font-size: 12px; line-height: 1.5; }
.change-review > p { margin-block: 8px 12px; color: var(--c2); font-size: 11px; line-height: 1.6; }
.change-review > div { display: flex; gap: 6px; flex-wrap: wrap; }
.change-review button, .change-review-dialog footer button { width: auto; padding: 8px 10px; font-size: 11px; border: 1px solid var(--b1); background: var(--bg2); border-radius: 7px; }
.change-review-dialog { margin: auto; padding: 0; width: min(980px, calc(100vw - 32px)); max-height: 90dvh; color: var(--c1); background: var(--bg2); border: 1px solid var(--b1); border-radius: 15px; overflow: hidden; }
.change-review-dialog[open] { display: flex; flex-direction: column; }
.change-review-dialog::backdrop { background: #0009; backdrop-filter: blur(4px); }
.change-review-dialog > header { padding: 18px 22px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--b1); flex-shrink: 0; }
.change-review-dialog h2 { font-size: 18px; }
.change-review-dialog header button { width: 30px; padding: 5px 9px; }
.review-diff-list { padding: 20px; overflow-y: auto; min-height: 0; overscroll-behavior: contain; scrollbar-width: thin; }
.review-diff { margin-bottom: 20px; }
.review-diff h3 { font-size: 12px; margin-bottom: 10px; }
.review-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.review-columns > div { min-width: 0; border: 1px solid var(--b1); border-radius: 9px; padding: 14px; background: var(--bg1); }
.review-columns > div:first-child { border-top: 3px solid var(--md-red); }
.review-columns > div:last-child { border-top: 3px solid var(--md-green); }
.review-columns strong { font-size: 11px; }
.review-geometry { font-size: 10px; color: var(--c2); margin: 6px 0 12px; }
.review-diff-list > p { font-size: 12px; padding: 8px; }
.change-review-dialog footer { padding: 14px 20px; border-top: 1px solid var(--b1); display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.change-review-dialog footer p { flex: 1; font-size: 11px; color: var(--c2); line-height: 1.5; }
.review-error { padding: 12px 20px; color: var(--md-red); font-size: 12px; }
@media (max-width: 650px) { .review-columns { grid-template-columns: 1fr; } .change-review-dialog footer { flex-wrap: wrap; } .change-review-dialog footer p { flex-basis: 100%; } }
.ai-chat-heading { display: flex; align-items: center; gap: 8px; padding: 0 18px 10px; color: var(--c2); flex-shrink: 0; }
.ai-chat-heading > span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
.ai-chat-heading > button { display: flex; align-items: center; justify-content: center; width: 25px; height: 25px; padding: 5px; border-radius: 6px; color: var(--c2); }
.ai-chat-heading > button:hover { background: var(--bg3); color: var(--c1); }
/* Production recovery: retry without exposing infrastructure error pages. */
.ai-response-error { padding: 14px !important; border: 1px solid color-mix(in srgb, var(--md-amber) 50%, var(--b1)); border-radius: 10px; background: var(--bg2); }
.response-retry-hint { font-size: 11px; line-height: 1.6; color: var(--c2); margin-top: 9px; }
.response-error-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.response-error-actions button { width: auto; padding: 8px 11px; border: 1px solid var(--b1); border-radius: 7px; font-size: 11px; background: var(--bg3); }
.response-error-actions .retry-response { color: var(--primary-color); border-color: color-mix(in srgb, var(--primary-color) 45%, var(--b1)); }
/* Always-visible progress and disposable streaming drafts, outside board data. */
.ai-live-activity { position: absolute; top: 66px; left: 20px; z-index: 110; width: min(370px, calc(100% - var(--canvas-overlay-inset) - 40px)); padding: 12px 14px; border: 1px solid var(--b1); border-radius: 12px; box-shadow: 0 5px 24px #0002; background: var(--bg2); }
.ai-live-heading { display: flex; gap: 9px; align-items: center; }
.ai-live-heading strong { font-size: 12px; line-height: 1.5; font-weight: 600; }
.ai-working-spinner { width: 13px; height: 13px; flex-shrink: 0; border: 2px solid var(--b1); border-top-color: var(--primary-color); border-radius: 50%; animation: ai-working-spin 1s linear infinite; }
@keyframes ai-working-spin { to { transform: rotate(360deg); } }
.ai-live-stats { font-size: 10px; line-height: 1.5; color: var(--c2); margin: 6px 0 9px; }
.ai-live-controls { display: flex; gap: 7px; }
.ai-live-controls button { width: auto; font-size: 10px; padding: 5px 8px; border: 1px solid var(--b1); border-radius: 6px; }
.ai-live-controls button[aria-pressed="true"] { background: var(--accent-soft); color: var(--primary-color); }
.ai-note-draft { position: absolute; z-index: 2147483646; max-width: 1200px; pointer-events: none; border: 1px dashed var(--primary-color); border-radius: 10px; background: color-mix(in srgb, var(--bg2) 94%, transparent); box-shadow: 0 8px 30px #0002; overflow: hidden; }
.ai-draft-badge { padding: 9px 14px; border-bottom: 1px dashed var(--b1); font-size: 11px; color: var(--primary-color); background: var(--accent-soft); }
.ai-draft-content { padding: 14px 18px; max-height: 340px; overflow: hidden; }
.ai-draft-content:empty::after { content: 'Writing…'; color: var(--c2); }
.grid-element.ai-edit-applied { outline: 2px solid var(--md-green); outline-offset: 4px; }
/* One scrollbar treatment across chat, nested code, history and diff review.
   Firefox uses standard colors; WebKit/Blink also get a rounded thumb. */
:is(.ai-messages, .review-diff-list, .chat-drawer, .review-error, .ai-messages pre, .ai-messages table, .review-diff-list pre, .review-diff-list table) {
    scrollbar-width: thin; scrollbar-color: color-mix(in srgb, var(--c2) 50%, transparent) transparent;
    scrollbar-gutter: stable; overscroll-behavior: contain;
}
.ai-messages, .review-diff-list { overflow-x: hidden; }
.review-diff-list { flex: 1 1 auto; }
@supports selector(::-webkit-scrollbar) {
    :is(.ai-messages, .review-diff-list, .chat-drawer, .review-error, .ai-messages pre, .ai-messages table, .review-diff-list pre, .review-diff-list table) { scrollbar-width: auto; scrollbar-color: auto; }
    :is(.ai-messages, .review-diff-list, .chat-drawer, .review-error, .ai-messages pre, .ai-messages table, .review-diff-list pre, .review-diff-list table)::-webkit-scrollbar { width: 8px; height: 8px; }
    :is(.ai-messages, .review-diff-list, .chat-drawer, .review-error, .ai-messages pre, .ai-messages table, .review-diff-list pre, .review-diff-list table)::-webkit-scrollbar-track { background: transparent; }
    :is(.ai-messages, .review-diff-list, .chat-drawer, .review-error, .ai-messages pre, .ai-messages table, .review-diff-list pre, .review-diff-list table)::-webkit-scrollbar-thumb { border: 2px solid transparent; border-radius: 10px; background: color-mix(in srgb, var(--c2) 50%, transparent); background-clip: padding-box; }
    :is(.ai-messages, .review-diff-list, .chat-drawer, .review-error, .ai-messages pre, .ai-messages table, .review-diff-list pre, .review-diff-list table)::-webkit-scrollbar-thumb:hover { background-color: var(--c2); }
    :is(.ai-messages, .review-diff-list, .chat-drawer, .review-error, .ai-messages pre, .ai-messages table, .review-diff-list pre, .review-diff-list table)::-webkit-scrollbar-corner { background: transparent; }
}
.ai-stream-placeholder { color: var(--c2); font-size: 12px; line-height: 1.6; }
:is(.ai-messages, .review-diff-list):focus-visible { outline: 2px solid color-mix(in srgb, var(--primary-color) 60%, transparent); outline-offset: -2px; }
/* On narrow screens chat already covers most of the board. Keep its inline
   progress/Stop available instead of squeezing a second panel into a sliver. */
@media (max-width: 820px) { body.ai-open .ai-live-activity { display: none; } }
