From a2f50bafbea7a75b9a5072103a2932b0815308fb Mon Sep 17 00:00:00 2001 From: Ziyang Zeng Date: Thu, 29 Oct 2026 11:21:34 +0000 Subject: [PATCH 1/7] Match Setup appearance and settings shell to native T3 Code --- docker/setup/app.js | 15 +- docker/setup/client/appearance.js | 60 + docker/setup/client/skills.js | 2 +- docker/setup/client/unlock.js | 1 + docker/setup/console.css | 2551 +++++++++-------- docker/setup/design/README.md | 94 +- docker/setup/design/components.css | 462 +-- docker/setup/design/fonts/OFL.txt | 92 + .../design/fonts/inter-latin-variable.woff2 | Bin 0 -> 48256 bytes docker/setup/design/tokens.css | 227 +- docker/setup/page.mjs | 17 +- docker/t3-client/setup-bridge.js | 60 +- 12 files changed, 1954 insertions(+), 1627 deletions(-) create mode 100644 docker/setup/client/appearance.js create mode 100644 docker/setup/design/fonts/OFL.txt create mode 100644 docker/setup/design/fonts/inter-latin-variable.woff2 diff --git a/docker/setup/app.js b/docker/setup/app.js index 65d047a..328c58b 100644 --- a/docker/setup/app.js +++ b/docker/setup/app.js @@ -1902,6 +1902,16 @@ const s = state.status; const n = now(); document.body.dataset.consoleRoute = state.route; + const pageInfo = T3Routes.page(state.route); + const title = pageInfo?.title || titleOf(state.route); + if ($('current-page').textContent !== title) $('current-page').textContent = title; + const guide = $('page-guide'); + guide.hidden = !pageInfo?.doc; + if (pageInfo?.doc) { + const href = T3Routes.docUrl(pageInfo.doc, s?.image?.version); + if (guide.getAttribute('href') !== href) guide.setAttribute('href', href); + guide.setAttribute('aria-label', pageInfo.title + ' guide'); + } if (s) renderShell(s, n); const route = state.route; const el = $('page-' + route); @@ -4053,7 +4063,10 @@ window.addEventListener('message', (e) => { const m = e.data; if (e.source !== window.parent || e.origin !== location.origin || !m || m.source !== 't3-code') return; - if (m.type === 'theme' && (m.theme === 'light' || m.theme === 'dark') && m.theme !== themeMode()) setTheme(m.theme); + if (m.type === 'theme' && (m.theme === 'light' || m.theme === 'dark')) { + if (m.theme !== themeMode()) setTheme(m.theme); + if (!T3Appearance.apply(document.documentElement, m.appearance)) T3Appearance.clear(document.documentElement); + } }); // Escape closes the dialog once nothing on this page wants it: an open // menu, sheet or palette takes it first (Kit stops it there). diff --git a/docker/setup/client/appearance.js b/docker/setup/client/appearance.js new file mode 100644 index 0000000..a40c117 --- /dev/null +++ b/docker/setup/client/appearance.js @@ -0,0 +1,60 @@ +// Native T3 appearance messages carry semantic colors, never arbitrary CSS. +// Keep local component names here so the bridge does not depend on Kit internals. +const T3Appearance = (() => { + 'use strict'; + const COLORS = Object.freeze({ + '--bg': 'background', '--surface': 'card', '--surface-raised': 'popover', + '--surface-sunken': 'muted', '--fg': 'foreground', '--fg-muted': 'muted-foreground', + '--fg-subtle': 'placeholder', '--border': 'border', '--border-strong': 'input', + '--accent': 'primary', '--on-accent': 'primary-foreground', '--accent-text': 'update-foreground', + '--focus': 'ring', '--hover': 'accent', '--pressed': 'accent', + '--sidebar': 'sidebar', '--sidebar-fg': 'sidebar-foreground', + '--sidebar-fg-muted': 'sidebar-muted-foreground', '--sidebar-border': 'sidebar-border', + '--sidebar-row-hover': 'sidebar-row-hover', '--sidebar-row-active': 'sidebar-row-active', + '--sidebar-row-selected': 'sidebar-row-selected', '--sidebar-control': 'sidebar-control-surface', + '--warn': 'warning', '--warn-text': 'warning-foreground', '--warn-soft': 'warning-surface', + '--danger': 'destructive', '--danger-text': 'destructive-foreground', '--danger-soft': 'error-surface', + '--ok': 'success', '--ok-text': 'success-foreground', '--info': 'info', '--info-text': 'info-foreground', + }); + const FONTS = Object.freeze({ '--font-sans': 'sans', '--font-mono': 'mono' }); + const OWNED = [...Object.keys(COLORS), ...Object.keys(FONTS), '--control-radius', '--font-smoothing']; + const record = value => value !== null && typeof value === 'object' && !Array.isArray(value); + const literal = (value, property, supports) => typeof value === 'string' && value.length > 0 && value.length <= 512 + && !/[;{}<>]/.test(value) && !/\b(?:url|var|env)\s*\(/i.test(value) && supports(property, value); + + const normalize = (value, supports) => { + if (!record(value) || value.version !== 1 || !record(value.colors) || typeof supports !== 'function') return null; + const properties = {}; + for (const [token, role] of Object.entries(COLORS)) { + const color = Object.hasOwn(value.colors, role) ? value.colors[role] : null; + if (literal(color, 'color', supports)) properties[token] = color; + } + if (record(value.fonts)) for (const [token, role] of Object.entries(FONTS)) { + const font = Object.hasOwn(value.fonts, role) ? value.fonts[role] : null; + if (literal(font, 'font-family', supports)) properties[token] = font; + } + if (record(value.fonts) && ['auto', 'antialiased', 'subpixel-antialiased'].includes(value.fonts.smoothing)) properties['--font-smoothing'] = value.fonts.smoothing; + if (typeof value.radius === 'string' && /^(?:0|(?:\d+(?:\.\d+)?|\.\d+)(?:px|rem))$/.test(value.radius) + && value.radius.length <= 16 && parseFloat(value.radius) <= (value.radius.endsWith('rem') ? 2 : 32) + && supports('border-radius', value.radius)) properties['--control-radius'] = value.radius; + const size = typeof value.fontSize === 'string' && /^(?:\d+(?:\.\d+)?)px$/.test(value.fontSize) ? parseFloat(value.fontSize) : null; + return { properties, fontSize: size !== null && size >= 12 && size <= 20 ? `${size}px` : null }; + }; + + const clear = (root) => { + for (const token of OWNED) root.style.removeProperty(token); + root.style.removeProperty('font-size'); + }; + const apply = (root, value) => { + const result = normalize(value, (property, text) => CSS.supports(property, text)); + if (!result) return false; + // A palette can lose a role when switching to an older host. Remove its + // previous override so the current light/dark default takes over cleanly. + clear(root); + for (const [token, color] of Object.entries(result.properties)) root.style.setProperty(token, color); + if (result.fontSize) root.style.fontSize = result.fontSize; + else root.style.removeProperty('font-size'); + return true; + }; + return { COLORS, FONTS, normalize, apply, clear }; +})(); diff --git a/docker/setup/client/skills.js b/docker/setup/client/skills.js index 06cd6cb..bd15dbe 100644 --- a/docker/setup/client/skills.js +++ b/docker/setup/client/skills.js @@ -155,7 +155,7 @@ const T3SkillsUI = (() => { if (!plugin?.hooks.length) return ''; return html``; }; - const table = filtered => html`
+ const table = filtered => html`
Skill
${columns().map((provider, index) => html`
${mark(provider.id)}${provider.name}${errors[provider.id] ? html`` : ''}${loading.has(provider.id) ? 'Reading…' : installed.includes(provider.id) ? provider.control : 'Not detected'}${!showAll && installed.length < S.providers.length && index === columns().length - 1 ? html`` : ''}
`)}
${S.groups(filtered).map(group => html`
${S.displayPath(group.root.path, library().home)}·${group.rows.length}·${readersLabel(group.root)}${hookChip(group)}${groupClosed(group) ? html`${group.rows.map(row => row.name).join(', ')}` : !pluginOf(group) && installed.some(id => !(group.root.readers || []).includes(id)) ? html`` : ''}
${groupClosed(group) ? '' : group.rows.map(skill => html`
${skillBadges(skill)}

${skill.description}

${columns().map(provider => html`
${availability(skill, provider.id)}
`)}
`)}
`)} diff --git a/docker/setup/client/unlock.js b/docker/setup/client/unlock.js index 91b7aee..50ab489 100644 --- a/docker/setup/client/unlock.js +++ b/docker/setup/client/unlock.js @@ -72,6 +72,7 @@ if (m.type === 'theme' && (m.theme === 'light' || m.theme === 'dark')) { document.documentElement.setAttribute('data-theme', m.theme); document.documentElement.setAttribute('data-theme-mode', m.theme); + if (!T3Appearance.apply(document.documentElement, m.appearance)) T3Appearance.clear(document.documentElement); } }); window.parent.postMessage({ source: 't3-setup', type: 'ready' }, location.origin); diff --git a/docker/setup/console.css b/docker/setup/console.css index b49b7e5..47b913b 100644 --- a/docker/setup/console.css +++ b/docker/setup/console.css @@ -23,8 +23,8 @@ body.tc-root { min-height: 100vh; min-height: 100dvh; } .tc-root button { -webkit-tap-highlight-color: transparent; } :root { - --tabbar-h: 58px; - --phonebar-h: 52px; + --tabbar-h: 3.625rem; + --phonebar-h: 3.25rem; } /* While a modal overlay is open, the page behind it does not scroll. */ @@ -34,7 +34,7 @@ html.tc-locked { overflow: hidden; } .tc-app { min-height: 100vh; min-height: 100dvh; } /* The sidebar stays put while the page scrolls under the top bar. */ .tc-sidebar { position: sticky; top: 0; height: 100vh; height: 100dvh; min-height: 0; overflow-y: auto; } -.tc-sidebar-foot .tc-server { margin-bottom: 4px; } +.tc-sidebar-foot .tc-server { margin-bottom: 0.25rem; } /* Full-width runtime metadata keeps long Nightly builds clear of the status. */ .tc-server-version { overflow-wrap: anywhere; } .tc-sidebar-row { display: flex; align-items: center; gap: var(--space-1); } @@ -45,50 +45,50 @@ html.tc-locked { overflow: hidden; } /* The sidebar's pages, in groups. A mark beside a page is either a count of what needs the person or a quiet sign: work running, a port out on the internet. Never a plain count. */ -.tc-nav-group { display: flex; flex-direction: column; gap: 2px; } -.tc-nav-group + .tc-nav-group { margin-top: var(--space-2); } -.tc-nav-group > .tc-nav-label { padding: 6px 10px 4px; } +.tc-nav-group { display: flex; flex-direction: column; gap: var(--space-1); } +.tc-nav-group + .tc-nav-group { margin-top: var(--space-4); } +.tc-nav-group > .tc-nav-label { padding: 0.375rem 0.625rem 0.25rem; } .tc-nav-text { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tc-nav-badge { flex: none; margin-left: auto; } [data-theme="light"] .tc-nav-badge.tc-badge--warn { color: color-mix(in oklab, var(--warn-text), black 28%); } [data-theme="light"] .tc-nav-badge.tc-badge--info { color: color-mix(in oklab, var(--info-text), black 18%); } -.tc-nav-mark { width: 16px; height: 16px; display: inline-grid; place-items: center; } -.tc-nav-mark::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--info); } -.tc-nav-mark--running::before { width: 10px; height: 10px; background: none; border: 1.5px solid var(--info); border-right-color: transparent; animation: tc-spin 0.75s linear infinite; } +.tc-nav-mark { width: 1rem; height: 1rem; display: inline-grid; place-items: center; } +.tc-nav-mark::before { content: ""; width: 0.375rem; height: 0.375rem; border-radius: 50%; background: var(--info); } +.tc-nav-mark--running::before { width: 0.625rem; height: 0.625rem; background: none; border: 1.5px solid var(--info); border-right-color: transparent; animation: tc-spin 0.75s linear infinite; } .tc-nav-mark--live::before { box-shadow: 0 0 0 3px color-mix(in srgb, var(--info) 18%, transparent); } /* Inside T3 Code the console is a dialog: its close button holds the top right corner of the page at a desk, and the end of the phone's bar. */ -.tc-embed-corner { position: fixed; top: 28px; right: 16px; z-index: var(--z-sticky); } +.tc-embed-corner { display: flex; align-items: center; } .tc-embed-corner .tc-embed-close { background: color-mix(in srgb, var(--bg) 80%, transparent); -webkit-backdrop-filter: blur(12px) saturate(1.14); backdrop-filter: blur(12px) saturate(1.14); } .tc-embed-corner .tc-embed-close:hover { background: var(--hover); } /* Every page opens with its title, one line on what it is for, and its main action. */ -.tc-page { padding-top: 28px; --_gap: var(--space-8); } +.tc-page { padding-top: 1.75rem; --_gap: var(--space-8); } /* Notices one after another read as one stack, not as separate sections. */ .tc-page > .tc-notice + .tc-notice { margin-top: calc(var(--space-2) - var(--_gap)); } .tc-page-head { display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; gap: var(--space-3) var(--space-6); min-width: 0; padding: 0 var(--space-4); } .tc-page-head-text { flex: 1 1 26rem; min-width: 0; display: flex; flex-direction: column; gap: var(--space-1); } -.tc-page-title { font-size: 22px; line-height: 28px; font-weight: 600; letter-spacing: -0.02em; text-wrap: balance; overflow-wrap: anywhere; } -.tc-page-sub { color: var(--fg-muted); font-size: 14px; line-height: 20px; max-width: 72ch; text-wrap: pretty; } +.tc-page-title { font-size: 1.25rem; line-height: 1.75rem; font-weight: 600; letter-spacing: -0.02em; text-wrap: balance; overflow-wrap: anywhere; } +.tc-page-sub { color: var(--fg-muted); font-size: 0.875rem; line-height: 1.25rem; max-width: 72ch; text-wrap: pretty; } .tc-page-learn { color: var(--fg); white-space: nowrap; text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; text-decoration-thickness: 1px; border-radius: 2px; } .tc-page-learn:hover { color: var(--accent-text); text-decoration-color: currentColor; } -.tc-page-head-actions { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: var(--space-2); min-height: 28px; } +.tc-page-head-actions { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: var(--space-2); min-height: 1.75rem; } /* Inside T3 Code the close button holds the top right corner: the head keeps clear of it only as far as the page's own margin does not already. */ -[data-embed] .tc-page-head { padding-right: max(var(--space-4), calc(68px - max(0px, (100vw - var(--sidebar-w) - var(--content)) / 2) - var(--space-6))); } +[data-embed] .tc-page-head { padding-right: var(--space-4); } /* A line under everything else on a page: what is there but not managed here. */ -.tc-page-foot { padding: 0 var(--space-4); font-size: 12px; line-height: 18px; color: var(--fg-muted); text-wrap: pretty; } +.tc-page-foot { padding: 0 var(--space-4); font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); text-wrap: pretty; } /* First start, in progress: a line above the page it affects. */ .tc-notice--progress { align-items: center; } .tc-notice--progress > .tc-spinner { margin: 0 2px; } .tc-notice--progress .tc-notice-desc { opacity: 1; color: var(--fg-muted); } .tc-notice--progress .tc-notice-desc strong { color: var(--fg); font-weight: 500; } -.tc-notice--progress > .tc-progress { width: 96px; flex: none; } +.tc-notice--progress > .tc-progress { width: 6rem; flex: none; } .tc-notice--progress > .tc-op-pct { flex: none; } /* On a phone the bar goes under the words, which keep the whole width. */ @media (max-width: 639.98px) { @@ -98,15 +98,15 @@ html.tc-locked { overflow: hidden; } } /* Overview, once set up: Updates and Recent side by side where there is room. */ -.tc-overview-split { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: var(--_gap) var(--space-6); align-items: start; } +.tc-overview-split { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr)); gap: var(--_gap) var(--space-6); align-items: start; } /* A problem's icon carries its tone. */ .tc-tile--icon[data-tone="danger"] { color: var(--danger); } .tc-tile--icon[data-tone="warn"] { color: var(--warn); } /* "2 more updates", at the foot of a short list. */ -.tc-group-more { display: flex; align-items: center; justify-content: center; gap: var(--space-1); min-height: 40px; padding: 0 var(--space-4); - font-size: 12px; color: var(--fg-muted); text-decoration: none !important; border-radius: 0 0 calc(var(--radius-xl) - 1px) calc(var(--radius-xl) - 1px); } +.tc-group-more { display: flex; align-items: center; justify-content: center; gap: var(--space-1); min-height: 2.5rem; padding: 0 var(--space-4); + font-size: 0.75rem; color: var(--fg-muted); text-decoration: none !important; border-radius: 0 0 calc(var(--radius-xl) - 1px) calc(var(--radius-xl) - 1px); } .tc-group-more:hover { color: var(--fg); background: var(--hover); } -.tc-group-more .tc-icon { width: 14px; height: 14px; } +.tc-group-more .tc-icon { width: 0.875rem; height: 0.875rem; } /* A version moving to the next one, under a row's name. */ .tc-row-main > .tc-version { min-width: 0; overflow-wrap: anywhere; } .tc-empty--compact > .tc-icon { align-self: center; } @@ -125,10 +125,10 @@ html.tc-locked { overflow: hidden; } .tc-tile--port-state[data-live] { color: var(--info-text); } /* The phone's top bar: brand, the server's health in a word, search. */ -.tc-phonebar { display: none; align-items: center; gap: 8px; height: var(--phonebar-h); padding: 0 12px 0 16px; flex: none; +.tc-phonebar { display: none; align-items: center; gap: 0.5rem; height: var(--phonebar-h); padding: 0 0.75rem 0 1rem; flex: none; position: sticky; top: 0; z-index: var(--z-sticky); background: color-mix(in srgb, var(--bg) 80%, transparent); -webkit-backdrop-filter: blur(12px) saturate(1.14); backdrop-filter: blur(12px) saturate(1.14); } -.tc-phone-status { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--fg-muted); white-space: nowrap; } +.tc-phone-status { display: inline-flex; align-items: center; gap: 0.375rem; font-size: 0.75rem; color: var(--fg-muted); white-space: nowrap; } .tc-tabbar { display: none; } @@ -137,10 +137,10 @@ html.tc-locked { overflow: hidden; } .tc-sidebar, .tc-embed-corner { display: none; } .tc-phonebar { display: flex; } .tc-tabbar { display: grid; position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-sticky); } - .tc-page { padding: 8px 16px calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px) + 24px); gap: var(--space-6); --_gap: var(--space-6); } - .tc-page .tc-section-head, .tc-page-head, .tc-page-foot { padding: 0 4px; } - .tc-page-title { font-size: 20px; } - [data-embed] .tc-page-head { padding-right: 4px; } + .tc-page { padding: 0.5rem 1rem calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px) + 1.5rem); gap: var(--space-6); --_gap: var(--space-6); } + .tc-page .tc-section-head, .tc-page-head, .tc-page-foot { padding: 0 0.25rem; } + .tc-page-title { font-size: 1.25rem; } + [data-embed] .tc-page-head { padding-right: 0.25rem; } .tc-desk-only { display: none !important; } } @media (min-width: 1024px) { @@ -161,47 +161,47 @@ html.tc-locked { overflow: hidden; } } /* Touch density raises every button to 16px text; an extra-small one (a section's link, a card's Refresh) stays a step below the page's text. */ -.tc-root[data-density="touch"] .tc-btn--xs { --_h: 30px; font-size: 13px; padding: 0 9px; } -.tc-root[data-density="touch"] .tc-btn--xs .tc-icon { width: 15px; height: 15px; } +.tc-root[data-density="touch"] .tc-btn--xs { --_h: 1.875rem; font-size: 0.8125rem; padding: 0 0.5625rem; } +.tc-root[data-density="touch"] .tc-btn--xs .tc-icon { width: 0.9375rem; height: 0.9375rem; } /* A 28px input, for inline values beside small buttons. */ -.tc-input--sm { height: var(--control-sm); font-size: 13px; } +.tc-input--sm { height: var(--control-sm); font-size: 0.8125rem; } /* Storage: the disk, then what can be cleared, each a section like any page's. One wrapper holds them, so the page's rhythm carries on inside it. */ .tc-storage { display: flex; flex-direction: column; gap: var(--_gap); min-width: 0; } .tc-storage-disk { padding: var(--space-4); display: grid; gap: var(--space-3); } .tc-storage-disk-head { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0 var(--space-2); } -.tc-storage-number { font-size: 24px; line-height: 32px; font-weight: 500; letter-spacing: -0.5px; font-variant-numeric: tabular-nums; } -.tc-storage-of { font-size: 14px; color: var(--fg-muted); } +.tc-storage-number { font-size: 1.5rem; line-height: 2rem; font-weight: 500; letter-spacing: -0.5px; font-variant-numeric: tabular-nums; } +.tc-storage-of { font-size: 0.875rem; color: var(--fg-muted); } .tc-storage .tc-hint, .tc-storage-settings .tc-hint { margin: 0; } .tc-storage-meter > span { background: var(--storage-tone); } -.tc-storage-size { font-size: 12px; line-height: 18px; color: var(--fg-muted); font-variant-numeric: tabular-nums; white-space: nowrap; } -.tc-storage-empty { display: flex; align-items: center; gap: 8px; padding: var(--space-4); color: var(--fg-muted); font-size: 13px; } +.tc-storage-size { font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); font-variant-numeric: tabular-nums; white-space: nowrap; } +.tc-storage-empty { display: flex; align-items: center; gap: 0.5rem; padding: var(--space-4); color: var(--fg-muted); font-size: 0.8125rem; } .tc-storage-last { display: flex; align-items: center; gap: var(--space-2); } -.tc-storage-disclosure { appearance: none; border: 0; background: none; width: 100%; padding: 12px var(--space-4); color: var(--fg); font: inherit; font-size: 14px; display: flex; justify-content: space-between; align-items: center; gap: 8px; cursor: pointer; border-radius: inherit; } +.tc-storage-disclosure { appearance: none; border: 0; background: none; width: 100%; padding: 0.75rem var(--space-4); color: var(--fg); font: inherit; font-size: 0.875rem; display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; cursor: pointer; border-radius: inherit; } .tc-storage-disclosure:hover { background: var(--hover); } .tc-storage-disclosure:focus-visible { outline: 2px solid var(--focus); outline-offset: -3px; } .tc-storage-disclosure > .tc-icon { color: var(--fg-muted); transition: rotate var(--dur-fast); } .tc-storage-disclosure[aria-expanded="true"] > .tc-icon { rotate: 180deg; } -.tc-storage-data { border-top: 1px solid var(--hairline); padding: 0 var(--space-4); } +.tc-storage-data { container-type: inline-size; border-top: 1px solid var(--hairline); padding: 0 var(--space-4); } .tc-storage-data[hidden] { display: none; } -.tc-storage-data-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-4); align-items: center; padding: 10px 0; } +.tc-storage-data-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-4); align-items: center; padding: 0.625rem 0; } .tc-storage-data-row + .tc-storage-data-row { border-top: 1px solid var(--hairline); } -.tc-storage-data-row > div { min-width: 0; display: grid; gap: 3px; } -.tc-storage-path { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; line-height: 16px; color: var(--fg-muted); } -.tc-storage-data-note { padding: 12px 0; border-top: 1px solid var(--hairline); } -.tc-storage-review { width: 480px; max-width: calc(100vw - 32px); } +.tc-storage-data-row > div { min-width: 0; display: grid; gap: 0.1875rem; } +.tc-storage-path { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.6875rem; line-height: 1rem; color: var(--fg-muted); } +.tc-storage-data-note { padding: 0.75rem 0; border-top: 1px solid var(--hairline); } +.tc-storage-review { width: 30rem; max-width: calc(100vw - 32px); } .tc-layer.tc-layer--center > .tc-storage-review { display: flex; flex-direction: column; overflow: hidden; } .tc-storage-review > .tc-dialog-body { min-height: 0; overflow-y: auto; overscroll-behavior: contain; } .tc-storage-review > .tc-dialog-foot { flex: none; } .tc-storage-review::before { flex: none; } -.tc-storage-toggle { display: grid; place-items: center; width: 44px; height: 44px; } -.tc-storage-budgets { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); margin: var(--space-4) 0 8px; } +.tc-storage-toggle { display: grid; place-items: center; width: var(--touch); height: var(--touch); } +.tc-storage-budgets { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); margin: var(--space-4) 0 0.5rem; } .tc-storage-input { position: relative; } -.tc-storage-input > input { width: 100%; padding-right: 38px; font-variant-numeric: tabular-nums; } -.tc-storage-input > span { position: absolute; top: 50%; right: 12px; translate: 0 -50%; font-size: 12px; color: var(--fg-muted); pointer-events: none; } -.tc-storage-review-loading { display: flex; align-items: center; gap: 8px; margin-top: var(--space-4); font-size: 13px; color: var(--fg-muted); } -.tc-storage-review-summary { display: grid; gap: 3px; margin: var(--space-4) 0; } +.tc-storage-input > input { width: 100%; padding-right: 2.375rem; font-variant-numeric: tabular-nums; } +.tc-storage-input > span { position: absolute; top: 50%; right: 0.75rem; translate: 0 -50%; font-size: 0.75rem; color: var(--fg-muted); pointer-events: none; } +.tc-storage-review-loading { display: flex; align-items: center; gap: 0.5rem; margin-top: var(--space-4); font-size: 0.8125rem; color: var(--fg-muted); } +.tc-storage-review-summary { display: grid; gap: 0.1875rem; margin: var(--space-4) 0; } .tc-storage-review-summary > strong { font-weight: 500; } .tc-storage-previous { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-3); margin-top: var(--space-4); border: 1px solid var(--border); border-radius: var(--radius-md); cursor: pointer; } .tc-storage-previous > span { min-width: 0; display: grid; gap: var(--space-1); } @@ -211,166 +211,166 @@ html.tc-locked { overflow: hidden; } .tc-storage-previous[data-danger] .tc-checkbox { accent-color: var(--danger); } .tc-storage-review-error { display: grid; gap: var(--space-3); justify-items: start; margin-top: var(--space-4); } .tc-storage-version-list { border: 1px solid var(--border); border-radius: var(--radius-md); } -.tc-storage-version { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; align-items: center; padding: 10px 12px; } +.tc-storage-version { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0.75rem; align-items: center; padding: 0.625rem 0.75rem; } .tc-storage-version + .tc-storage-version { border-top: 1px solid var(--hairline); } .tc-storage-version > div { min-width: 0; display: grid; gap: 2px; } .tc-storage-version > div > span { overflow-wrap: anywhere; } .tc-storage-version > span { text-align: right; } .tc-storage-removable { color: var(--accent-text); } @media (max-width: 639.98px) { - .tc-storage-number { font-size: 21px; line-height: 28px; } + .tc-storage-number { font-size: 1.3125rem; line-height: 1.75rem; } } /* Storage keeps decisions on the page and detail in bounded reviews. The action footer never scrolls away with cache inventories or policy limits. */ -.tc-storage-disk-head { justify-content: space-between; gap: 8px 20px; } +.tc-storage-disk-head { justify-content: space-between; gap: 0.5rem 1.25rem; } .tc-storage-layout, .tc-storage-secondary { min-width: 0; display: grid; align-items: start; gap: var(--_gap); } @media (min-width: 1200px) { - .tc-storage-layout { grid-template-columns: minmax(0, 1fr) 280px; gap: 24px; } + .tc-storage-layout { grid-template-columns: minmax(0, 1fr) 17.5rem; gap: 1.5rem; } .tc-storage-secondary .tc-row { grid-template-columns: max-content minmax(0, 1fr); align-items: start; } .tc-storage-secondary .tc-row-actions { grid-column: 2; justify-content: flex-start; } .tc-storage-secondary .tc-row-name { white-space: normal; } } -.tc-storage-disk-head > div { display: flex; align-items: baseline; gap: 6px; } -.tc-storage-disk-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 16px; color: var(--fg-muted); font-size: 12px; line-height: 18px; } -.tc-storage-disk-warning { display: flex; align-items: flex-start; gap: 7px; margin: 0; font-size: 12px; line-height: 18px; color: var(--warn-text); } +.tc-storage-disk-head > div { display: flex; align-items: baseline; gap: 0.375rem; } +.tc-storage-disk-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.25rem 1rem; color: var(--fg-muted); font-size: 0.75rem; line-height: 1.125rem; } +.tc-storage-disk-warning { display: flex; align-items: flex-start; gap: 0.4375rem; margin: 0; font-size: 0.75rem; line-height: 1.125rem; color: var(--warn-text); } .tc-storage-disk-warning[data-tone="danger"] { color: var(--danger-text); } .tc-storage-disk-warning > .tc-icon { flex: none; margin-top: 2px; } -.tc-storage-cache-summary { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 16px; padding: 12px 16px; border-bottom: 1px solid var(--hairline); font-size: 12px; color: var(--fg-muted); } -.tc-storage-cache-row { grid-template-columns: max-content minmax(0, 1fr) max-content auto; column-gap: 12px; padding: 13px 16px; } +.tc-storage-cache-summary { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 0.25rem 1rem; padding: 0.75rem 1rem; border-bottom: 1px solid var(--hairline); font-size: 0.75rem; color: var(--fg-muted); } +.tc-storage-cache-row { grid-template-columns: max-content minmax(0, 1fr) max-content auto; column-gap: 0.75rem; padding: 0.8125rem 1rem; } .tc-storage-cache-row .tc-row-name { white-space: normal; } -.tc-storage-cache-caption { display: flex; align-items: flex-start; gap: 5px; margin-top: 2px; color: var(--fg-muted); font-size: 12px; line-height: 18px; } +.tc-storage-cache-caption { display: flex; align-items: flex-start; gap: 0.3125rem; margin-top: 2px; color: var(--fg-muted); font-size: 0.75rem; line-height: 1.125rem; } .tc-storage-cache-caption > .tc-icon { flex: none; margin-top: 2px; } -.tc-storage-cache-size { display: grid; justify-items: end; gap: 2px; font-size: 13px; line-height: 20px; font-variant-numeric: tabular-nums; white-space: nowrap; } -.tc-storage-secondary .tc-status-text { color: var(--fg-muted); font-size: 12px; line-height: 18px; } -.tc-storage-active { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 16px; font-size: 13px; } -.tc-storage-active > div { display: grid; gap: 3px; } +.tc-storage-cache-size { display: grid; justify-items: end; gap: 2px; font-size: 0.8125rem; line-height: 1.25rem; font-variant-numeric: tabular-nums; white-space: nowrap; } +.tc-storage-secondary .tc-status-text { color: var(--fg-muted); font-size: 0.75rem; line-height: 1.125rem; } +.tc-storage-active { display: grid; grid-template-columns: 1.125rem minmax(0, 1fr) auto; align-items: center; gap: 0.75rem; padding: 1rem; font-size: 0.8125rem; } +.tc-storage-active > div { display: grid; gap: 0.1875rem; } .tc-storage-active strong { font-weight: 500; } -.tc-storage-active > div > span { color: var(--fg-muted); font-size: 12px; } -.tc-storage-notice { display: flex; gap: 10px; align-items: flex-start; padding: 14px 16px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); font-size: 13px; line-height: 20px; } +.tc-storage-active > div > span { color: var(--fg-muted); font-size: 0.75rem; } +.tc-storage-notice { display: flex; gap: 0.625rem; align-items: flex-start; padding: 0.875rem 1rem; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); font-size: 0.8125rem; line-height: 1.25rem; } .tc-storage-notice > .tc-icon { flex: none; margin-top: 2px; color: var(--fg-muted); } .tc-storage-notice > div { min-width: 0; } .tc-storage-notice strong { font-weight: 500; } -.tc-storage-notice p { margin: 4px 0 0; color: var(--fg-muted); overflow-wrap: anywhere; } -.tc-storage-notice .tc-btn { margin-top: 10px; } +.tc-storage-notice p { margin: 0.25rem 0 0; color: var(--fg-muted); overflow-wrap: anywhere; } +.tc-storage-notice .tc-btn { margin-top: 0.625rem; } .tc-storage-notice--danger { border-color: color-mix(in srgb, var(--danger-text) 24%, var(--border)); } .tc-storage-notice--danger > .tc-icon { color: var(--danger-text); } -.tc-storage-last { font-size: 12px; line-height: 18px; color: var(--fg-muted); flex-wrap: wrap; } +.tc-storage-last { font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); flex-wrap: wrap; } .tc-storage-last > span:first-child { display: flex; flex: none; } .tc-storage-last > .tc-btn { margin-left: auto; } .tc-storage-disclosure { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; text-align: left; } .tc-layer.tc-layer--center > .tc-storage-cleanup, -.tc-layer.tc-layer--center > .tc-storage-settings { display: flex; flex-direction: column; width: 600px; max-width: calc(100vw - 32px); max-height: min(820px, calc(100dvh - 64px)); overflow: hidden; } +.tc-layer.tc-layer--center > .tc-storage-settings { display: flex; flex-direction: column; width: 37.5rem; max-width: calc(100vw - 32px); max-height: min(820px, calc(100dvh - 64px)); overflow: hidden; } .tc-storage-preferences-form { display: flex; flex-direction: column; min-height: 0; max-height: inherit; margin: 0; } -.tc-storage-dialog-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex: none; padding: 22px 24px 18px; border-bottom: 1px solid var(--hairline); } -.tc-storage-dialog-head > div { min-width: 0; display: grid; gap: 7px; } -.tc-storage-dialog-head > .tc-btn { flex: none; margin: -4px -8px 0 0; } -.tc-storage-dialog-scroll { min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 20px 24px 24px; } -.tc-storage-dialog-foot { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 8px; padding: 16px 24px; border-top: 1px solid var(--hairline); background: var(--surface-raised); } -.tc-storage-dialog-foot .tc-btn { min-height: 34px; } -.tc-storage-save-hint { margin-right: auto; color: var(--fg-muted); font-size: 11px; line-height: 16px; } -.tc-storage-plan-loading { display: flex; align-items: center; gap: 12px; min-height: 160px; justify-content: center; color: var(--fg-muted); font-size: 13px; } -.tc-storage-plan-loading > div { display: grid; gap: 5px; } +.tc-storage-dialog-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; flex: none; padding: 1.375rem 1.5rem 1.125rem; border-bottom: 1px solid var(--hairline); } +.tc-storage-dialog-head > div { min-width: 0; display: grid; gap: 0.4375rem; } +.tc-storage-dialog-head > .tc-btn { flex: none; margin: -0.25rem -0.5rem 0 0; } +.tc-storage-dialog-scroll { min-height: 0; overflow-y: auto; overscroll-behavior: contain; padding: 1.25rem 1.5rem 1.5rem; } +.tc-storage-dialog-foot { flex: none; display: flex; align-items: center; justify-content: flex-end; gap: 0.5rem; padding: 1rem 1.5rem; border-top: 1px solid var(--hairline); background: var(--surface-raised); } +.tc-storage-dialog-foot .tc-btn { min-height: 2.125rem; } +.tc-storage-save-hint { margin-right: auto; color: var(--fg-muted); font-size: 0.6875rem; line-height: 1rem; } +.tc-storage-plan-loading { display: flex; align-items: center; gap: 0.75rem; min-height: 10rem; justify-content: center; color: var(--fg-muted); font-size: 0.8125rem; } +.tc-storage-plan-loading > div { display: grid; gap: 0.3125rem; } .tc-storage-plan-loading strong { color: var(--fg); font-weight: 500; } -.tc-storage-plan-loading span:not(.tc-spinner) { font-size: 12px; } -.tc-storage-plan-summary { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; } -.tc-storage-plan-summary > div { display: grid; gap: 5px; } -.tc-storage-plan-summary strong { font-size: 27px; font-weight: 500; line-height: 34px; font-variant-numeric: tabular-nums; letter-spacing: -.6px; } -.tc-storage-cleanup .tc-storage-plan-note { color: var(--fg-muted); font-size: 12px; line-height: 18px; margin: 12px 0 0; } -.tc-storage-plan-list { margin-top: 20px; border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; } -.tc-storage-plan-row { padding: 14px; } +.tc-storage-plan-loading span:not(.tc-spinner) { font-size: 0.75rem; } +.tc-storage-plan-summary { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; } +.tc-storage-plan-summary > div { display: grid; gap: 0.3125rem; } +.tc-storage-plan-summary strong { font-size: 1.6875rem; font-weight: 500; line-height: 2.125rem; font-variant-numeric: tabular-nums; letter-spacing: -.6px; } +.tc-storage-cleanup .tc-storage-plan-note { color: var(--fg-muted); font-size: 0.75rem; line-height: 1.125rem; margin: 0.75rem 0 0; } +.tc-storage-plan-list { margin-top: 1.25rem; border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; } +.tc-storage-plan-row { padding: 0.875rem; } .tc-storage-plan-row + .tc-storage-plan-row { border-top: 1px solid var(--hairline); } -.tc-storage-plan-kept { padding: 9px 14px; color: var(--fg-muted); font-size: 11px; font-weight: 500; background: var(--hover); border-top: 1px solid var(--hairline); } -.tc-storage-plan-choice { display: flex; align-items: center; gap: 10px; min-height: 30px; } +.tc-storage-plan-kept { padding: 0.5625rem 0.875rem; color: var(--fg-muted); font-size: 0.6875rem; font-weight: 500; background: var(--hover); border-top: 1px solid var(--hairline); } +.tc-storage-plan-choice { display: flex; align-items: center; gap: 0.625rem; min-height: 1.875rem; } .tc-storage-plan-choice > .tc-checkbox { flex: none; } .tc-storage-plan-choice > .tc-tile { flex: none; } -.tc-storage-plan-lock { width: 16px; display: flex; justify-content: center; flex: none; color: var(--fg-muted); } +.tc-storage-plan-lock { width: 1rem; display: flex; justify-content: center; flex: none; color: var(--fg-muted); } .tc-storage-plan-main { flex: 1; min-width: 0; display: grid; gap: 2px; } -.tc-storage-plan-label { cursor: pointer; min-height: 44px; align-content: center; } +.tc-storage-plan-label { cursor: pointer; min-height: var(--touch); align-content: center; } .tc-storage-plan-choice > .tc-storage-size { align-self: flex-start; padding-top: 2px; } -.tc-storage-plan-explanation { display: grid; gap: 8px; } -.tc-storage-plan-effect { color: var(--fg-muted); font-size: 12px; line-height: 18px; } -.tc-storage-technical { margin: 8px 0 0 26px; font-size: 11px; line-height: 17px; color: var(--fg-muted); } -.tc-storage-technical summary { cursor: pointer; width: fit-content; padding: 6px 0; } -.tc-storage-technical code { display: block; padding: 8px 10px; margin-top: 6px; border: 1px solid var(--hairline); border-radius: var(--radius-sm); background: var(--hover); overflow-wrap: anywhere; color: var(--fg); } -.tc-storage-plan-locations { margin: 16px 0 0; } -.tc-storage-location-item { padding: 12px 0; } +.tc-storage-plan-explanation { display: grid; gap: 0.5rem; } +.tc-storage-plan-effect { color: var(--fg-muted); font-size: 0.75rem; line-height: 1.125rem; } +.tc-storage-technical { margin: 0.5rem 0 0 1.625rem; font-size: 0.6875rem; line-height: 1.0625rem; color: var(--fg-muted); } +.tc-storage-technical summary { cursor: pointer; width: fit-content; padding: 0.375rem 0; } +.tc-storage-technical code { display: block; padding: 0.5rem 0.625rem; margin-top: 0.375rem; border: 1px solid var(--hairline); border-radius: var(--radius-sm); background: var(--hover); overflow-wrap: anywhere; color: var(--fg); } +.tc-storage-plan-locations { margin: 1rem 0 0; } +.tc-storage-location-item { padding: 0.75rem 0; } .tc-storage-location-item + .tc-storage-location-item { border-top: 1px solid var(--hairline); } -.tc-storage-location-item strong { font-size: 12px; font-weight: 500; color: var(--fg); } -.tc-storage-location-item p { margin: 5px 0; } +.tc-storage-location-item strong { font-size: 0.75rem; font-weight: 500; color: var(--fg); } +.tc-storage-location-item p { margin: 0.3125rem 0; } .tc-storage-plan-row[data-kept] { background: color-mix(in srgb, var(--fg) 2%, transparent); } .tc-storage-plan-row[data-kept] .tc-storage-plan-choice { align-items: flex-start; } .tc-storage-plan-row[data-kept] .tc-storage-plan-lock, .tc-storage-plan-row[data-kept] .tc-storage-plan-choice > .tc-tile { margin-top: 2px; } -.tc-storage-result-summary { display: flex; align-items: flex-start; gap: 12px; margin: 4px 0 24px; } -.tc-storage-result-mark { width: 36px; height: 36px; display: grid; place-items: center; border-radius: var(--radius-lg); background: var(--ok-soft); color: var(--ok-text); flex: none; } +.tc-storage-result-summary { display: flex; align-items: flex-start; gap: 0.75rem; margin: 0.25rem 0 1.5rem; } +.tc-storage-result-mark { width: 2.25rem; height: 2.25rem; display: grid; place-items: center; border-radius: var(--radius-lg); background: var(--ok-soft); color: var(--ok-text); flex: none; } .tc-storage-result-mark[data-danger] { background: var(--danger-soft); color: var(--danger-text); } -.tc-storage-result-summary > div { display: grid; gap: 6px; min-width: 0; } -.tc-storage-result-summary strong { font-size: 15px; font-weight: 500; line-height: 22px; } -.tc-storage-result-summary > div > span { color: var(--fg-muted); font-size: 13px; line-height: 20px; overflow-wrap: anywhere; } +.tc-storage-result-summary > div { display: grid; gap: 0.375rem; min-width: 0; } +.tc-storage-result-summary strong { font-size: 0.9375rem; font-weight: 500; line-height: 1.375rem; } +.tc-storage-result-summary > div > span { color: var(--fg-muted); font-size: 0.8125rem; line-height: 1.25rem; overflow-wrap: anywhere; } .tc-storage-cleanup-steps { list-style: none; padding: 0; margin: 0; border: 1px solid var(--border); border-radius: var(--radius-lg); } -.tc-storage-cleanup-steps li { display: grid; grid-template-columns: 16px minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 12px 14px; font-size: 13px; } +.tc-storage-cleanup-steps li { display: grid; grid-template-columns: 1rem minmax(0, 1fr) auto; align-items: center; gap: 0.625rem; padding: 0.75rem 0.875rem; font-size: 0.8125rem; } .tc-storage-cleanup-steps li + li { border-top: 1px solid var(--hairline); } .tc-storage-cleanup-steps li > span:first-child { display: flex; color: var(--fg-muted); } -.tc-storage-policy-section + .tc-storage-policy-section { margin-top: 24px; padding-top: 24px; border-top: 1px solid var(--hairline); } +.tc-storage-policy-section + .tc-storage-policy-section { margin-top: 1.5rem; padding-top: 1.5rem; border-top: 1px solid var(--hairline); } /* Related copy shares a column. Gaps survive the shell's paragraph reset; intrinsic icon columns avoid reserving space beside smaller marks. */ -.tc-storage-policy-heading { display: grid; grid-template-columns: max-content minmax(0, 1fr) 44px; align-items: flex-start; gap: 12px; } -.tc-storage-policy-copy { display: grid; gap: 12px; min-width: 0; } -.tc-storage-policy-intro { display: grid; gap: 5px; } -.tc-storage-policy-heading .tc-hint { line-height: 19px; } -.tc-storage-policy-heading .tc-storage-toggle { width: 44px; height: 44px; margin-top: -12px; } -.tc-storage-policy-heading .tc-switch::before { content: ""; position: absolute; inset: -14px -9px; } -.tc-storage-policy-state { display: flex; align-items: flex-start; gap: 6px; font-size: 12px; line-height: 18px; color: var(--fg-muted); } +.tc-storage-policy-heading { display: grid; grid-template-columns: max-content minmax(0, 1fr) var(--touch); align-items: flex-start; gap: 0.75rem; } +.tc-storage-policy-copy { display: grid; gap: 0.75rem; min-width: 0; } +.tc-storage-policy-intro { display: grid; gap: 0.3125rem; } +.tc-storage-policy-heading .tc-hint { line-height: 1.1875rem; } +.tc-storage-policy-heading .tc-storage-toggle { width: var(--touch); height: var(--touch); margin-top: calc(0.625rem - var(--touch) / 2); } +.tc-storage-policy-heading .tc-switch::before { content: ""; position: absolute; top: 50%; left: 50%; translate: -50% -50%; width: var(--touch); height: var(--touch); } +.tc-storage-policy-state { display: flex; align-items: flex-start; gap: 0.375rem; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } .tc-storage-policy-state > .tc-icon { flex: none; margin-top: 2px; } -.tc-storage-limits-trigger { display: flex; gap: 8px; align-items: center; width: 100%; appearance: none; color: var(--fg); font: inherit; font-size: 13px; text-align: left; cursor: pointer; background: transparent; border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 12px; margin-top: 16px; } +.tc-storage-limits-trigger { display: flex; gap: 0.5rem; align-items: center; width: 100%; appearance: none; color: var(--fg); font: inherit; font-size: 0.8125rem; text-align: left; cursor: pointer; background: transparent; border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 0.75rem; margin-top: 1rem; } .tc-storage-limits-trigger > .tc-small { margin-left: auto; } .tc-storage-limits-trigger:hover { background: var(--hover); } .tc-storage-limits-trigger:focus-visible, .tc-storage-technical summary:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; } .tc-storage-limits-trigger[aria-expanded="true"] > .tc-icon { rotate: 180deg; } -.tc-storage-limits { padding-top: 12px; } +.tc-storage-limits { padding-top: 0.75rem; } .tc-storage-limits[hidden] { display: none; } -.tc-storage-limit-list { margin: 12px 0; border: 1px solid var(--border); border-radius: var(--radius-lg); } -.tc-storage-limit-row { display: grid; grid-template-columns: minmax(0, 1fr) 104px; align-items: center; gap: 12px; padding: 8px 12px; } +.tc-storage-limit-list { margin: 0.75rem 0; border: 1px solid var(--border); border-radius: var(--radius-lg); } +.tc-storage-limit-row { display: grid; grid-template-columns: minmax(0, 1fr) 6.5rem; align-items: center; gap: 0.75rem; padding: 0.5rem 0.75rem; } .tc-storage-limit-row + .tc-storage-limit-row { border-top: 1px solid var(--hairline); } -.tc-storage-limit-label { display: flex; align-items: center; gap: 9px; min-height: 36px; font-size: 13px; line-height: 19px; cursor: pointer; } +.tc-storage-limit-label { display: flex; align-items: center; gap: 0.5625rem; min-height: 2.25rem; font-size: 0.8125rem; line-height: 1.1875rem; cursor: pointer; } .tc-storage-limit-label > .tc-checkbox { flex: none; } -.tc-storage-policy-detail { color: var(--fg-muted); font-size: 12px; line-height: 18px; } -.tc-storage-settings .tc-storage-notice { margin-top: 20px; scroll-margin-bottom: 16px; } +.tc-storage-policy-detail { color: var(--fg-muted); font-size: 0.75rem; line-height: 1.125rem; } +.tc-storage-settings .tc-storage-notice { margin-top: 1.25rem; scroll-margin-bottom: 16px; } @media (max-width: 639.98px) { - .tc-storage-cache-row { grid-template-columns: 24px minmax(0, 1fr) auto; column-gap: 10px; row-gap: 4px; padding: 14px 12px; align-items: start; } - .tc-storage-cache-row > .tc-tile { grid-column: 1; grid-row: 1; width: 24px; height: 24px; } + .tc-storage-cache-row { grid-template-columns: 1.5rem minmax(0, 1fr) auto; column-gap: 0.625rem; row-gap: 0.25rem; padding: 0.875rem 0.75rem; align-items: start; } + .tc-storage-cache-row > .tc-tile { grid-column: 1; grid-row: 1; width: 1.5rem; height: 1.5rem; } .tc-storage-cache-row > .tc-row-main { grid-column: 2; grid-row: 1 / 3; } .tc-storage-cache-row > .tc-storage-cache-size { grid-column: 3; grid-row: 1; } .tc-storage-cache-row > .tc-row-actions { grid-column: 3; grid-row: 2; justify-content: flex-end; } - .tc-storage-cache-row > .tc-row-actions .tc-btn { min-height: 36px; } - .tc-storage-cache-summary { padding: 12px; } - .tc-storage-disk-head > .tc-small { font-size: 12px; } + .tc-storage-cache-row > .tc-row-actions .tc-btn { min-height: 2.25rem; } + .tc-storage-cache-summary { padding: 0.75rem; } + .tc-storage-disk-head > .tc-small { font-size: 0.75rem; } .tc-layer.tc-layer--center > .tc-storage-cleanup, .tc-layer.tc-layer--center > .tc-storage-settings { width: 100%; max-width: none; max-height: 90dvh; } .tc-layer.tc-layer--center > .tc-storage-cleanup::before, .tc-layer.tc-layer--center > .tc-storage-settings::before { display: none; } - .tc-storage-dialog-head { padding: 20px; } - .tc-storage-dialog-head > .tc-btn { min-width: 44px; min-height: 44px; margin: -10px -10px 0 0; } - .tc-storage-dialog-scroll { padding: 18px 20px 22px; } - .tc-storage-dialog-foot { padding: 12px 20px max(16px, env(safe-area-inset-bottom)); } - .tc-storage-dialog-foot .tc-btn { min-height: 40px; } + .tc-storage-dialog-head { padding: 1.25rem; } + .tc-storage-dialog-head > .tc-btn { min-width: var(--touch); min-height: var(--touch); margin: -0.625rem -0.625rem 0 0; } + .tc-storage-dialog-scroll { padding: 1.125rem 1.25rem 1.375rem; } + .tc-storage-dialog-foot { padding: 0.75rem 1.25rem max(1rem, env(safe-area-inset-bottom)); } + .tc-storage-dialog-foot .tc-btn { min-height: 2.5rem; } .tc-storage-save-hint { display: none; } .tc-storage-dialog-foot .tc-btn--primary { flex: 1; } - .tc-storage-plan-choice { gap: 8px; } + .tc-storage-plan-choice { gap: 0.5rem; } .tc-storage-plan-choice > .tc-tile { display: none; } - .tc-storage-plan-row { padding: 12px; } - .tc-storage-plan-summary strong { font-size: 25px; } - .tc-storage-policy-heading { gap: 10px; } - .tc-storage-limit-row { grid-template-columns: minmax(0, 1fr) 92px; gap: 8px; padding: 8px 10px; } - .tc-storage-limit-label { min-height: 44px; } + .tc-storage-plan-row { padding: 0.75rem; } + .tc-storage-plan-summary strong { font-size: 1.5625rem; } + .tc-storage-policy-heading { gap: 0.625rem; } + .tc-storage-limit-row { grid-template-columns: minmax(0, 1fr) 5.75rem; gap: 0.5rem; padding: 0.5rem 0.625rem; } + .tc-storage-limit-label { min-height: var(--touch); } } /* Readiness collapsed to one line once everything is done. */ -.tc-ready-line { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 2px var(--space-3); align-items: center; padding: 18px var(--space-4); } -.tc-ready-line .tc-check-mark { width: 28px; height: 28px; border: 0; background: var(--ok-soft); color: var(--ok-text); } -.tc-ready-line .tc-check-mark .tc-icon { width: 15px; height: 15px; } -.tc-ready-line-title { font-size: 17px; line-height: 24px; font-weight: 600; } +.tc-ready-line { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 2px var(--space-3); align-items: center; padding: 1.125rem var(--space-4); } +.tc-ready-line .tc-check-mark { width: 1.75rem; height: 1.75rem; border: 0; background: var(--ok-soft); color: var(--ok-text); } +.tc-ready-line .tc-check-mark .tc-icon { width: 0.9375rem; height: 0.9375rem; } +.tc-ready-line-title { font-size: 1.0625rem; line-height: 1.5rem; font-weight: 600; } /* Readiness: the heading stack, and the phone's full-width next step. */ .tc-ready-heading { display: flex; flex-direction: column; gap: var(--space-1); min-width: 0; } @@ -390,30 +390,30 @@ html.tc-locked { overflow: hidden; } .tc-hint--warn { color: var(--warn-text); } /* The pairing ceremony: QR on the right on desktop, first on a phone. */ -.tc-pair-body { gap: 20px; } +.tc-pair-body { gap: 1.25rem; } .tc-pair { display: flex; gap: var(--space-6); align-items: flex-start; } .tc-pair-fields { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: var(--space-4); } .tc-pair-qr { flex: none; display: flex; flex-direction: column; align-items: center; } -.tc-pair-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-4) var(--space-6); align-items: end; padding: 20px var(--space-4); } +.tc-pair-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-4) var(--space-6); align-items: end; padding: 1.25rem var(--space-4); } .tc-pair-form-intro { display: flex; flex-direction: column; gap: var(--space-1); grid-column: 1 / -1; } .tc-pair-form-fields { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-4); } .tc-pair-form-note { grid-column: 1 / -1; } /* The label field, the lifetime and the button stand the same height, on one line. */ .tc-pair-form .tc-input { height: var(--control-md); } -.tc-pair-form .tc-seg { padding: 3px; } -.tc-pair-form .tc-seg button { height: 24px; } +.tc-pair-form .tc-seg { padding: 0.1875rem; } +.tc-pair-form .tc-seg button { height: 1.5rem; } .tc-pair-phone-actions { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); } -.tc-pair-done-text { display: flex; flex-direction: column; gap: 6px; align-items: center; } +.tc-pair-done-text { display: flex; flex-direction: column; gap: 0.375rem; align-items: center; } .tc-pair-done-text .tc-page-lede { max-width: 30ch; } .tc-pair-done-actions { display: flex; flex-direction: column; gap: var(--space-2); align-items: center; } .tc-pair-done .tc-steps { align-self: stretch; } -.tc-pair-done { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 18px; padding: 22px var(--space-4) 18px; } -.tc-pair-done .tc-empty-media { margin: 10px 0 2px; } -.tc-pair-done-title { font-size: 24px; line-height: 32px; font-weight: 600; letter-spacing: -0.025em; text-wrap: balance; } +.tc-pair-done { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 1.125rem; padding: 1.375rem var(--space-4) 1.125rem; } +.tc-pair-done .tc-empty-media { margin: 0.625rem 0 2px; } +.tc-pair-done-title { font-size: 1.5rem; line-height: 2rem; font-weight: 600; letter-spacing: -0.025em; text-wrap: balance; } @media (max-width: 1023.98px) { .tc-pair { flex-direction: column; align-items: stretch; } .tc-pair-qr { order: -1; } - .tc-pair-qr .tc-qr svg { width: 200px; height: 200px; } + .tc-pair-qr .tc-qr svg { width: 12.5rem; height: 12.5rem; } .tc-pair-form, .tc-pair-form-fields { grid-template-columns: minmax(0, 1fr); } .tc-pair-form .tc-seg { width: 100%; } .tc-pair-form .tc-seg button { flex: 1; justify-content: center; } @@ -433,69 +433,69 @@ html.tc-locked { overflow: hidden; } @media (max-width: 639.98px) { .tc-port-panel { flex-direction: column; align-items: stretch; } .tc-port-panel .tc-qr { align-self: center; } - .tc-port-panel .tc-qr svg { width: 168px; height: 168px; } + .tc-port-panel .tc-qr svg { width: 10.5rem; height: 10.5rem; } } /* A log: Recent on Overview, Activity's finished lines. */ .tc-log { list-style: none; margin: 0; padding: 0; } -.tc-log li { display: grid; grid-template-columns: 16px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 11px var(--space-4); font-size: 14px; } +.tc-log li { display: grid; grid-template-columns: 1rem minmax(0, 1fr) auto; gap: 0.75rem; align-items: center; padding: 0.6875rem var(--space-4); font-size: 0.875rem; } .tc-log li + li { border-top: 1px solid var(--hairline); } .tc-log .tc-icon { color: var(--fg-muted); } -.tc-log time { font-size: 12px; line-height: 1; color: var(--fg-muted); white-space: nowrap; font-variant-numeric: tabular-nums; } +.tc-log time { font-size: 0.75rem; line-height: 1; color: var(--fg-muted); white-space: nowrap; font-variant-numeric: tabular-nums; } @media (max-width: 639.98px) { - .tc-log li { grid-template-columns: 16px minmax(0, 1fr); row-gap: 2px; align-items: start; } + .tc-log li { grid-template-columns: 1rem minmax(0, 1fr); row-gap: 2px; align-items: start; } .tc-log li > .tc-icon { margin-top: 2px; } .tc-log li > .tc-truncate { white-space: normal; } - .tc-log li > time { grid-column: 2; line-height: 16px; } + .tc-log li > time { grid-column: 2; line-height: 1rem; } } /* Link rows: the phone's More page. */ -.tc-linkrow { display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 0 var(--space-4); color: var(--fg); text-decoration: none !important; font-size: 16px; background: none; border: 0; width: 100%; font-family: inherit; cursor: pointer; text-align: left; } +.tc-linkrow { display: flex; align-items: center; gap: 0.75rem; min-height: 3.25rem; padding: 0 var(--space-4); color: var(--fg); text-decoration: none !important; font-size: 1rem; background: none; border: 0; width: 100%; font-family: inherit; cursor: pointer; text-align: left; } .tc-linkrow > .tc-icon { color: var(--fg-muted); } -.tc-linkrow-aside { margin-left: auto; font-size: 14px; color: var(--fg-muted); } -.tc-linkrow > .tc-icon:last-child:not(:first-child) { width: 16px; height: 16px; } +.tc-linkrow-aside { margin-left: auto; font-size: 0.875rem; color: var(--fg-muted); } +.tc-linkrow > .tc-icon:last-child:not(:first-child) { width: 1rem; height: 1rem; } .tc-linkrow-aside + .tc-icon { margin-left: 0; } .tc-linkrow--danger, .tc-linkrow--danger > .tc-icon { color: var(--danger-text); } .tc-group > .tc-linkrow + .tc-linkrow { border-top: 1px solid var(--hairline); } .tc-linkrow .tc-seg { margin-left: auto; } -.tc-linkrow .tc-seg button { height: 30px; padding: 0 12px; font-size: 14px; } +.tc-linkrow .tc-seg button { height: 1.875rem; padding: 0 0.75rem; font-size: 0.875rem; } /* Key/value: a value that is prose, and inline actions that should not grow the row. */ -.tc-kv .tc-btn--xs { margin-block: -4px; } -.tc-kv-aside { color: var(--fg-muted); font-size: 12px; } +.tc-kv .tc-btn--xs { margin-block: -0.25rem; } +.tc-kv-aside { color: var(--fg-muted); font-size: 0.75rem; } .tc-kv > dd .tc-kv-end { margin-left: auto; } @media (max-width: 639.98px) { .tc-kv { grid-template-columns: minmax(0, 1fr); } .tc-kv > dd { padding-top: 0; border-top: 0; } - .tc-kv > dt { padding-bottom: 4px; } + .tc-kv > dt { padding-bottom: 0.25rem; } } .tc-status.tc-status--prose { display: block; } /* A status line's words wrap beside their dot instead of dropping under it. */ .tc-status-text { flex: 1 1 0%; min-width: 0; overflow-wrap: anywhere; } -.tc-row-details { position: relative; display: inline; padding: 0; margin-left: 4px; border: 0; border-radius: 2px; background: none; color: var(--fg); font: inherit; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; } +.tc-row-details { position: relative; display: inline; padding: 0; margin-left: 0.25rem; border: 0; border-radius: 2px; background: none; color: var(--fg); font: inherit; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; } .tc-row-details::after { content: ""; position: absolute; inset: -13px -4px; } .tc-row-details:hover { color: var(--accent-text); } .tc-row-details:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; } -.tc-update-check--label { min-width: 168px; } -.tc-update-check > .tc-spinner { width: 16px; height: 16px; flex: 0 0 16px; } +.tc-update-check--label { min-width: 10.5rem; } +.tc-update-check > .tc-spinner { width: 1rem; height: 1rem; flex: 0 0 16px; } .tc-check-failures { list-style: none; padding: 0; margin: var(--space-4) 0 0; } -.tc-check-failures > li { padding: var(--space-3) 0; border-top: 1px solid var(--hairline); font-size: 14px; } +.tc-check-failures > li { padding: var(--space-3) 0; border-top: 1px solid var(--hairline); font-size: 0.875rem; } .tc-check-failures strong { display: block; margin-bottom: var(--space-2); font-weight: 500; } -.tc-check-failures summary { width: fit-content; min-height: 24px; padding: 3px 0; color: var(--fg-muted); cursor: pointer; font-size: 12px; line-height: 18px; } -.tc-error-detail { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 12px; line-height: 1.6; padding: var(--space-3); margin: var(--space-3) 0 0; background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--radius-md); user-select: text; } +.tc-check-failures summary { width: fit-content; min-height: 1.5rem; padding: 0.1875rem 0; color: var(--fg-muted); cursor: pointer; font-size: 0.75rem; line-height: 1.125rem; } +.tc-error-detail { white-space: pre-wrap; overflow-wrap: anywhere; font-size: 0.75rem; line-height: 1.6; padding: var(--space-3); margin: var(--space-3) 0 0; background: var(--surface); border: 1px solid var(--hairline); border-radius: var(--radius-md); user-select: text; } .tc-version-arrow { color: var(--fg-subtle); } /* An operation inside a row (Updating): narration, figure, bar. */ -.tc-row-op { margin-top: var(--space-2); font-size: 12px; } +.tc-row-op { margin-top: var(--space-2); font-size: 0.75rem; } .tc-row-main > .tc-progress { margin-top: var(--space-2); } -.tc-op-list { display: flex; flex-direction: column; gap: 14px; } -.tc-op--quiet { font-size: 12px; } +.tc-op-list { display: flex; flex-direction: column; gap: 0.875rem; } +.tc-op--quiet { font-size: 0.75rem; } .tc-op--quiet .tc-op-line { color: var(--fg-muted); } .tc-tile--dim { opacity: 0.6; } /* Count the actual leading element, even if a caller also sets plain. */ .tc-row--plain:not(:has(> .tc-tile, > .tc-row-lead)) { grid-template-columns: minmax(0, 1fr) auto; } -.tc-row--key { min-height: 44px; padding-block: var(--space-2); } +.tc-row--key { min-height: var(--touch); padding-block: var(--space-2); } .tc-saved-read { display: flex; align-items: center; gap: var(--space-2); } .tc-row-actions-inline { display: inline-flex; align-items: center; gap: var(--space-2); } .tc-btn--pressed { background: var(--hover); } @@ -522,26 +522,26 @@ html.tc-locked { overflow: hidden; } /* Unlock: the standalone card, full height. */ .tc-standalone { min-height: 100vh; min-height: 100dvh; } -.tc-masthead-in { padding: 24px; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; } -.tc-masthead .tc-embed-close { margin: -8px -8px 0 0; color: color-mix(in srgb, var(--on-stage) 80%, transparent); --_icon: currentColor; } +.tc-masthead-in { padding: 1.5rem; display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; } +.tc-masthead .tc-embed-close { margin: -0.5rem -0.5rem 0 0; color: color-mix(in srgb, var(--on-stage) 80%, transparent); --_icon: currentColor; } .tc-masthead .tc-embed-close:hover { color: var(--on-stage); background: rgb(255 255 255 / 0.12); } .tc-unlock-form { display: flex; flex-direction: column; gap: var(--space-4); margin-top: var(--space-6); } -.tc-unlock-actions { display: flex; gap: 8px; flex-wrap: wrap; } +.tc-unlock-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; } .tc-standalone .tc-note { margin-top: var(--space-6); } .tc-standalone .tc-note code { color: var(--fg); } @media (max-width: 639.98px) { - .tc-standalone { padding: 24px 16px; align-items: flex-start; padding-top: 12vh; } - .tc-standalone-body { padding: 24px 20px; } + .tc-standalone { padding: 1.5rem 1rem; align-items: flex-start; padding-top: 12vh; } + .tc-standalone-body { padding: 1.5rem 1.25rem; } .tc-unlock-actions { flex-direction: column; } .tc-unlock-actions .tc-btn { width: 100%; } .tc-unlock-actions .tc-btn:not(.tc-btn--primary) { border-color: transparent; background: transparent; box-shadow: none; } } -.tc-reveal { height: 26px; width: 26px; } +.tc-reveal { height: 1.625rem; width: 1.625rem; } /* Skeleton rows for the first paint, before /status has answered. */ -.tc-skel-row { display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 12px var(--space-4); } +.tc-skel-row { display: flex; align-items: center; gap: 0.75rem; min-height: 4rem; padding: 0.75rem var(--space-4); } .tc-skel--tile { width: var(--monogram); height: var(--monogram); flex: none; } -.tc-skel--line { width: 120px; } +.tc-skel--line { width: 7.5rem; } .tc-skel-row + .tc-skel-row { border-top: 1px solid var(--hairline); } /* ----------------------------------------------------------- layers -- */ @@ -552,24 +552,24 @@ html.tc-locked { overflow: hidden; } the overlay's place above the page. */ .tc-layer > .tc-backdrop { z-index: 0; animation: tc-fade var(--dur-base) ease-out; } .tc-layer--sheet { justify-content: flex-end; } -.tc-layer--sheet > .tc-sheet { position: relative; z-index: 1; margin: 8px; height: calc(100% - 16px); max-height: calc(100% - 16px); +.tc-layer--sheet > .tc-sheet { position: relative; z-index: 1; margin: 0.5rem; height: calc(100% - 16px); max-height: calc(100% - 16px); animation: tc-slide-in var(--dur-base) cubic-bezier(0.32, 0.72, 0, 1); } -.tc-layer--center { align-items: center; justify-content: center; padding: 16px; } +.tc-layer--center { align-items: center; justify-content: center; padding: 1rem; } .tc-layer--center > .tc-dialog { position: relative; z-index: 1; animation: tc-pop var(--dur-base) ease-out; max-height: calc(100% - 32px); overflow: auto; } .tc-layer--center > .tc-error-dialog { display: flex; flex-direction: column; overflow: hidden; } .tc-error-dialog .tc-dialog-body { min-height: 0; overflow-y: auto; } .tc-error-dialog .tc-dialog-foot { flex: none; } -.tc-layer--palette { align-items: flex-start; justify-content: center; padding: 10vh 16px 16px; } +.tc-layer--palette { align-items: flex-start; justify-content: center; padding: 10vh 1rem 1rem; } .tc-layer--palette > .tc-palette { position: relative; z-index: 1; animation: tc-pop var(--dur-base) ease-out; } -.tc-palette .tc-listbox { max-height: min(400px, 56vh); } -.tc-palette-empty { padding: 20px 16px 24px; font-size: 14px; color: var(--fg-muted); text-align: center; } +.tc-palette .tc-listbox { max-height: min(25rem, 56vh); } +.tc-palette-empty { padding: 1.25rem 1rem 1.5rem; font-size: 0.875rem; color: var(--fg-muted); text-align: center; } /* Popover menus position themselves against their trigger; no backdrop. */ .tc-layer--menu { z-index: var(--z-menu); pointer-events: none; } .tc-layer--menu > .tc-menu { position: fixed; pointer-events: auto; animation: tc-pop var(--dur-fast) ease-out; transform-origin: top right; } /* A menu sheet's title lines up with its items: the same inset on the left. */ -.tc-menu-head { display: flex; align-items: center; gap: 12px; padding: 4px 20px 12px; } +.tc-menu-head { display: flex; align-items: center; gap: 0.75rem; padding: 0.25rem 1.25rem 0.75rem; } .tc-menu-head-text { display: flex; flex-direction: column; min-width: 0; } -.tc-menu-head-title { font-size: 17px; line-height: 24px; font-weight: 600; } +.tc-menu-head-title { font-size: 1.0625rem; line-height: 1.5rem; font-weight: 600; } /* Under 1024px every sheet, menu and dialog rises from the bottom. */ @media (max-width: 1023.98px) { .tc-layer--sheet, .tc-layer--center, .tc-layer--bottom { align-items: flex-end; justify-content: stretch; padding: 0; } @@ -579,30 +579,30 @@ html.tc-locked { overflow: hidden; } animation: tc-rise-sheet 300ms cubic-bezier(0.32, 0.72, 0, 1); padding-bottom: env(safe-area-inset-bottom, 0px); } .tc-layer--center > .tc-dialog .tc-dialog-foot { flex-direction: column-reverse; } /* Every dialog rising from the bottom carries a sheet's handle. */ - .tc-layer--center > .tc-dialog::before { content: ""; display: block; width: 36px; height: 4px; margin: 8px auto 0; border-radius: 2px; background: var(--border-strong); } + .tc-layer--center > .tc-dialog::before { content: ""; display: block; width: 2.25rem; height: 0.25rem; margin: 0.5rem auto 0; border-radius: 2px; background: var(--border-strong); } /* No keyboard here to name keys for. */ .tc-root[data-density="touch"] .tc-palette-foot { display: none; } .tc-layer--center > .tc-dialog .tc-dialog-foot .tc-btn { width: 100%; } - .tc-layer--palette { padding: 8px; } + .tc-layer--palette { padding: 0.5rem; } .tc-layer--palette > .tc-palette { width: 100%; } } .tc-layer > .tc-sheet--bottom { position: relative; z-index: 1; align-self: flex-end; } -.tc-sheet--bottom .tc-sheet-body { padding-bottom: 8px; } -.tc-sheet-actions { display: flex; flex-direction: column; padding: 0 12px 4px; } -.tc-sheet-actions .tc-menu-item { min-height: 40px; font-size: 16px; padding: 4px 8px; } -.tc-sheet-actions .tc-menu-sep { margin: 6px 8px; } +.tc-sheet--bottom .tc-sheet-body { padding-bottom: 0.5rem; } +.tc-sheet-actions { display: flex; flex-direction: column; padding: 0 0.75rem 0.25rem; } +.tc-sheet-actions .tc-menu-item { min-height: 2.5rem; font-size: 1rem; padding: 0.25rem 0.5rem; } +.tc-sheet-actions .tc-menu-sep { margin: 0.375rem 0.5rem; } .tc-sheet-cancel { padding: 8px 16px calc(16px + env(safe-area-inset-bottom, 0px)); } .tc-sheet--menu { overflow: hidden; } .tc-sheet--menu > .tc-menu-head, .tc-sheet--menu > .tc-sheet-cancel, .tc-sheet--menu > .tc-menu-foot { flex: none; } .tc-sheet--menu > .tc-sheet-actions { min-height: 0; overflow-y: auto; overscroll-behavior: contain; } .tc-sheet--menu > .tc-sheet-actions > * { flex: none; } -.tc-sheet--menu > .tc-menu-foot { margin: 0 20px; padding: 8px 0; overflow-wrap: anywhere; } -.tc-sheet .tc-sheet-foot-note { margin-right: auto; font-size: 12px; color: var(--fg-muted); display: inline-flex; gap: 6px; align-items: center; } +.tc-sheet--menu > .tc-menu-foot { margin: 0 1.25rem; padding: 0.5rem 0; overflow-wrap: anywhere; } +.tc-sheet .tc-sheet-foot-note { margin-right: auto; font-size: 0.75rem; color: var(--fg-muted); display: inline-flex; gap: 0.375rem; align-items: center; } .tc-layer[data-closing] > * { animation: tc-fade-out 140ms ease-in forwards !important; } /* Dialog detail list: what is removed, kept, and stays. */ -.tc-consequences { list-style: none; margin: 8px 0 0; padding: 0; border: 1px solid color-mix(in srgb, var(--border) 60%, transparent); border-radius: var(--radius-lg); } -.tc-consequences li { display: flex; gap: 10px; align-items: center; padding: 9px 12px; font-size: 12px; line-height: 16px; color: var(--fg); } +.tc-consequences { list-style: none; margin: 0.5rem 0 0; padding: 0; border: 1px solid color-mix(in srgb, var(--border) 60%, transparent); border-radius: var(--radius-lg); } +.tc-consequences li { display: flex; gap: 0.625rem; align-items: center; padding: 0.5625rem 0.75rem; font-size: 0.75rem; line-height: 1rem; color: var(--fg); } .tc-consequences li + li { border-top: 1px solid var(--hairline); } .tc-consequences .tc-icon { color: var(--fg-muted); } @@ -613,7 +613,7 @@ html.tc-locked { overflow: hidden; } .tc-signin-open { display: flex; gap: var(--space-2); } .tc-signin-code { display: flex; gap: var(--space-2); } .tc-signin-code .tc-input { flex: 1 1 auto; min-width: 0; } -.tc-log-tail { margin: 0; padding: var(--space-2) var(--space-3); border-radius: var(--radius-lg); background: var(--surface-sunken); font: 400 12px/18px var(--font-mono); color: var(--fg-muted); white-space: pre-wrap; word-break: break-word; max-height: 120px; overflow: auto; } +.tc-log-tail { margin: 0; padding: var(--space-2) var(--space-3); border-radius: var(--radius-lg); background: var(--surface-sunken); font: 400 0.75rem/1.125rem var(--font-mono); color: var(--fg-muted); white-space: pre-wrap; word-break: break-word; max-height: 7.5rem; overflow: auto; } .tc-saved-keys-wrap { gap: var(--space-2); } /* A device name is a small edit: a compact dialog, with the device beside @@ -626,23 +626,23 @@ html.tc-locked { overflow: hidden; } .tc-access-pending { color: var(--fg); } .tc-device-rename-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-3); } .tc-device-rename-head > div { min-width: 0; display: flex; flex-direction: column; gap: var(--space-1); } -.tc-device-rename-head > .tc-btn { flex: none; margin: -4px 0 0; } +.tc-device-rename-head > .tc-btn { flex: none; margin: -0.25rem 0 0; } .tc-device-rename-context { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3); border: 1px solid var(--hairline); border-radius: var(--radius-lg); background: var(--surface-sunken); } .tc-device-rename-context > .tc-tile { flex: none; } -.tc-device-rename-name { font-size: 14px; font-weight: 500; line-height: 20px; overflow-wrap: anywhere; } +.tc-device-rename-name { font-size: 0.875rem; font-weight: 500; line-height: 1.25rem; overflow-wrap: anywhere; } .tc-device-rename-label { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); } .tc-device-rename-label > .tc-hint { font-variant-numeric: tabular-nums; } .tc-device-rename .tc-input { height: var(--control-lg); } -.tc-device-rename-error { display: flex; align-items: flex-start; gap: var(--space-2); color: var(--danger-text); font-size: 12px; line-height: 18px; } +.tc-device-rename-error { display: flex; align-items: flex-start; gap: var(--space-2); color: var(--danger-text); font-size: 0.75rem; line-height: 1.125rem; } .tc-device-rename-error > .tc-icon { flex: none; margin-top: 1px; } .tc-device-rename-foot { padding-top: 0; } -.tc-device-rename-foot [data-key="device-save"] { min-width: 120px; } +.tc-device-rename-foot [data-key="device-save"] { min-width: 7.5rem; } @media (max-width: 1023.98px) { - .tc-device-rename-body { padding: 20px 20px 16px; } + .tc-device-rename-body { padding: 1.25rem 1.25rem 1rem; } .tc-root[data-density="touch"] .tc-device-rename .tc-input { height: var(--touch); } .tc-root[data-density="touch"] .tc-device-rename .tc-btn { --_h: var(--touch); } - .tc-layer--center > .tc-device-rename .tc-device-rename-foot { flex-direction: row; padding: 0 20px 20px; } + .tc-layer--center > .tc-device-rename .tc-device-rename-foot { flex-direction: row; padding: 0 1.25rem 1.25rem; } .tc-layer--center > .tc-device-rename .tc-device-rename-foot .tc-btn { flex: 1; width: auto; } } @media (max-width: 1023.98px) { @@ -654,73 +654,73 @@ html.tc-locked { overflow: hidden; } /* Added tools: the section's filter beside its button, the empty state's suggestions, and the Add a tool sheet. */ .tc-section-actions { gap: var(--space-2); } -.tc-tool-filter { width: 160px; } -.tc-tool-filter .tc-input { padding-left: 30px; } +.tc-tool-filter { width: 10rem; } +.tc-tool-filter .tc-input { padding-left: 1.875rem; } .tc-chips { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-2); margin-top: var(--space-3); } -.tc-chip-btn { height: var(--control-sm); padding: 0 var(--space-3); border: 1px solid var(--border); border-radius: 999px; background: var(--surface); color: var(--fg); - font: 400 13px/1 var(--font-mono); cursor: pointer; } +.tc-chip-btn { height: var(--control-sm); padding: 0 var(--space-3); border: 1px solid var(--border); border-radius: 62.4375rem; background: var(--surface); color: var(--fg); + font: 400 0.8125rem/1 var(--font-mono); cursor: pointer; } .tc-chip-btn:hover { background: var(--hover); } .tc-chip-btn:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; } .tc-empty-cta { margin-top: var(--space-3); } /* A listbox is a flex column with a maximum height: its options keep their own height and the list scrolls, rather than squeezing them together. */ .tc-listbox > * { flex: none; } -.tc-listbox--rich .tc-option { align-items: flex-start; padding-block: 8px; } -.tc-sheet .tc-combobox .tc-listbox--rich { max-height: min(400px, 46vh); } +.tc-listbox--rich .tc-option { align-items: flex-start; padding-block: 0.5rem; } +.tc-sheet .tc-combobox .tc-listbox--rich { max-height: min(25rem, 46vh); } .tc-option--rich > .tc-tile { margin-top: 1px; } .tc-option-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 auto; } -.tc-option-name { line-height: 20px; } -.tc-option-desc { font-size: 12px; line-height: 16px; color: var(--fg-muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } +.tc-option-name { line-height: 1.25rem; } +.tc-option-desc { font-size: 0.75rem; line-height: 1rem; color: var(--fg-muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .tc-option[aria-disabled="true"] { cursor: default; opacity: 0.6; } .tc-option[aria-disabled="true"]:hover { background: none; } -.tc-option-meta .tc-icon { width: 12px; height: 12px; } +.tc-option-meta .tc-icon { width: 0.75rem; height: 0.75rem; } /* What a match provides, or why it cannot be picked: wrapped between items, never inside one, and never wider than the name it sits beside. */ -.tc-listbox--rich .tc-option-meta { flex: none; max-width: 40%; flex-wrap: wrap; justify-content: flex-end; column-gap: 6px; line-height: 20px; } +.tc-listbox--rich .tc-option-meta { flex: none; max-width: 40%; flex-wrap: wrap; justify-content: flex-end; column-gap: 0.375rem; line-height: 1.25rem; } .tc-listbox--rich .tc-option-meta > span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; } /* A release's labels - how new, newest, installed, on the volume - one line, dot-separated. */ .tc-listbox--releases .tc-option-meta { flex: none; gap: 0; white-space: nowrap; } -.tc-listbox--releases .tc-option-meta > span + span::before { content: "·"; padding: 0 6px; } -.tc-combobox-note { display: flex; align-items: center; gap: var(--space-2); padding: 10px 12px; border-top: 1px solid var(--hairline); font-size: 13px; color: var(--fg-muted); } +.tc-listbox--releases .tc-option-meta > span + span::before { content: "·"; padding: 0 0.375rem; } +.tc-combobox-note { display: flex; align-items: center; gap: var(--space-2); padding: 0.625rem 0.75rem; border-top: 1px solid var(--hairline); font-size: 0.8125rem; color: var(--fg-muted); } /* A sentence over a row of examples. The sentence's text and code flow as one line that wraps, rather than each becoming a flex item of its own. */ -.tc-combobox-note--stack { flex-direction: column; align-items: flex-start; gap: 10px; padding: 12px; line-height: 1.45; } -.tc-combobox-note--stack .tc-chips { justify-content: flex-start; margin-top: 0; gap: 6px; } -.tc-combobox-note--stack .tc-chip-btn { height: var(--control-xs, 24px); padding: 0 10px; font-size: 12px; } +.tc-combobox-note--stack { flex-direction: column; align-items: flex-start; gap: 0.625rem; padding: 0.75rem; line-height: 1.45; } +.tc-combobox-note--stack .tc-chips { justify-content: flex-start; margin-top: 0; gap: 0.375rem; } +.tc-combobox-note--stack .tc-chip-btn { height: var(--control-xs, 1.5rem); padding: 0 0.625rem; font-size: 0.75rem; } .tc-tool-picked { display: flex; align-items: flex-start; gap: var(--space-3); } .tc-tool-picked-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1 1 auto; } .tc-kv--sheet { border: 1px solid color-mix(in srgb, var(--border) 60%, transparent); border-radius: var(--radius-lg); } -.tc-kv--sheet > dt, .tc-kv--sheet > dd { padding: 8px 12px; font-size: 13px; } +.tc-kv--sheet > dt, .tc-kv--sheet > dd { padding: 0.5rem 0.75rem; font-size: 0.8125rem; } .tc-kv--sheet > dd { flex-wrap: wrap; overflow-wrap: anywhere; } .tc-seg--fill { width: 100%; } .tc-seg--fill > button { flex: 1 1 0; justify-content: center; } @media (max-width: 639.98px) { - .tc-tool-filter { width: 112px; } + .tc-tool-filter { width: 7rem; } } /* Combobox (provider picker) inside a sheet. */ .tc-combobox { border: 1px solid var(--border-strong); border-radius: var(--radius-lg); background: var(--bg); box-shadow: var(--shadow-xs); overflow: hidden; } -[data-theme="dark"] .tc-combobox { background: oklch(1 0 0 / 0.0256); } +[data-theme="dark"] .tc-combobox { background: color-mix(in srgb, var(--border-strong) 32%, transparent); } .tc-combobox:focus-within { border-color: var(--focus); box-shadow: 0 0 0 3px color-mix(in srgb, var(--focus) 24%, transparent); } -.tc-combobox .tc-palette-input { height: 38px; padding: 0 10px; } -.tc-combobox .tc-palette-input input { font-size: 14px; } -.tc-combobox .tc-listbox { border-top: 1px solid var(--hairline); padding: 4px; max-height: 220px; } +.tc-combobox .tc-palette-input { height: 2.375rem; padding: 0 0.625rem; } +.tc-combobox .tc-palette-input input { font-size: 0.875rem; } +.tc-combobox .tc-listbox { border-top: 1px solid var(--hairline); padding: 0.25rem; max-height: 13.75rem; } .tc-saved-keys { border: 1px solid color-mix(in srgb, var(--border) 60%, transparent); border-radius: var(--radius-xl); } -.tc-saved-keys > div { display: flex; align-items: center; gap: 10px; padding: 9px 12px; font-size: 14px; } +.tc-saved-keys > div { display: flex; align-items: center; gap: 0.625rem; padding: 0.5625rem 0.75rem; font-size: 0.875rem; } .tc-saved-keys > div + div { border-top: 1px solid var(--hairline); } /* ---------------------------------------------------------- toaster -- */ -.tc-toaster { position: fixed; right: 24px; bottom: 24px; z-index: var(--z-toast); display: flex; flex-direction: column; gap: 8px; align-items: flex-end; pointer-events: none; +.tc-toaster { position: fixed; right: 1.5rem; bottom: 1.5rem; z-index: var(--z-toast); display: flex; flex-direction: column; gap: 0.5rem; align-items: flex-end; pointer-events: none; /* Reduced motion sets a duration on every element. The host must still hide immediately when a dialog owns the surface; individual toasts animate. */ transition: none; } .tc-toaster > .tc-toast { pointer-events: auto; transition: opacity var(--dur-base), translate var(--dur-base); } .tc-toaster > .tc-toast[data-leaving] { opacity: 0; translate: 0 6px; } -.tc-toast .tc-btn { margin: -6px -4px -6px 4px; } +.tc-toast .tc-btn { margin: -0.375rem -0.25rem -0.375rem 0.25rem; } /* A retained error must not cover the actions when its retry opens a modal. */ .tc-root:has(.tc-layer [role="alertdialog"][aria-modal="true"]) .tc-toaster { display: none; } @media (max-width: 1023.98px) { - .tc-toaster { left: 16px; right: 16px; bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px) + 12px); align-items: center; } + .tc-toaster { left: 1rem; right: 1rem; bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px) + 12px); align-items: center; } } /* ----------------------------------------------------------- motion -- */ @@ -733,7 +733,7 @@ html.tc-locked { overflow: hidden; } .tc-layer > *, .tc-layer--sheet > .tc-sheet, .tc-toaster > .tc-toast { animation: none !important; transition: none !important; } } /* T3 Code's release on Updates: a row like any other, then its channel. */ -.tc-runtime-mark { width: var(--monogram); height: var(--monogram); border-radius: 5px; align-self: start; margin-top: 0; } +.tc-runtime-mark { width: var(--monogram); height: var(--monogram); border-radius: 0.3125rem; align-self: start; margin-top: 0; } /* The channel sits under T3 Code's name, its text level with the name's. */ .tc-runtime-channel { grid-template-columns: minmax(0, 1fr) auto; padding-left: calc(var(--space-4) + var(--monogram) + var(--space-3)); } .tc-runtime-channel .tc-seg { flex: none; } @@ -744,77 +744,77 @@ html.tc-locked { overflow: hidden; } .tc-runtime-channel { grid-template-columns: minmax(0, 1fr); } .tc-runtime-channel-actions { width: 100%; } .tc-runtime-channel .tc-seg { display: flex; flex: 1 1 auto; } - .tc-runtime-channel .tc-seg button { flex: 1; min-height: 32px; justify-content: center; } + .tc-runtime-channel .tc-seg button { flex: 1; min-height: 2rem; justify-content: center; } } /* A switch keeps a comfortable target without growing its row: its label is the target around it, and a press anywhere on it presses the switch. */ .tc-switch-hit { display: inline-grid; place-items: center; min-width: var(--control-sm); height: var(--control-sm); padding: 0 2px; cursor: pointer; } -.tc-switch-hit .tc-switch { --_t: 18px; } +.tc-switch-hit .tc-switch { --_t: 1.125rem; } .tc-switch:disabled { opacity: var(--opacity-disabled); cursor: default; } -.tc-root[data-density="touch"] .tc-switch-hit { min-width: 44px; height: 32px; } +.tc-root[data-density="touch"] .tc-switch-hit { min-width: var(--touch); height: 2rem; } /* A path beside a row's name, and a URL with its own Copy. */ .tc-row-path { color: var(--fg-muted); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tc-url-line { align-items: center; flex-wrap: nowrap; gap: 2px; } .tc-url-line > .tc-mono { color: var(--fg); } -.tc-url-line > .tc-btn { margin: -4px 0; } +.tc-url-line > .tc-btn { margin: -0.25rem 0; } .tc-url-source { flex: none; color: var(--fg-muted); } .tc-pair-form-note.tc-hint { display: flex; align-items: center; gap: var(--space-2); } /* A shell command, whole: it wraps rather than scrolls, and copies in one press. */ -.tc-cmd { position: relative; display: flex; align-items: flex-start; gap: var(--space-2); padding: 10px 6px 10px 12px; +.tc-cmd { position: relative; display: flex; align-items: flex-start; gap: var(--space-2); padding: 0.625rem 0.375rem 0.625rem 0.75rem; border: 1px solid var(--border-strong); border-radius: var(--radius-lg); background: var(--surface-sunken); } -.tc-cmd-text { flex: 1 1 auto; min-width: 0; margin: 0; padding: 3px 0 2px; font: 400 12px/18px var(--font-mono); color: var(--fg); +.tc-cmd-text { flex: 1 1 auto; min-width: 0; margin: 0; padding: 0.1875rem 0 2px; font: 400 0.75rem/1.125rem var(--font-mono); color: var(--fg); white-space: pre; overflow-x: auto; user-select: all; scrollbar-width: thin; } .tc-cmd > .tc-btn { flex: none; margin: -2px 0; } /* Numbered steps, each with its command under its sentence. */ -.tc-fix-steps { margin: var(--space-2) 0 0; padding: 0; list-style: none; counter-reset: fix-step; display: flex; flex-direction: column; gap: var(--space-4); font-size: 14px; line-height: 20px; } -.tc-fix-steps > li { counter-increment: fix-step; display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: var(--space-2) var(--space-3); } -.tc-fix-steps > li::before { content: counter(fix-step); grid-row: 1; width: 18px; height: 18px; margin-top: 1px; border-radius: 50%; display: grid; place-items: center; - border: 1px solid var(--border-strong); color: var(--fg-muted); font: 500 10px/1 var(--font-mono); } +.tc-fix-steps { margin: var(--space-2) 0 0; padding: 0; list-style: none; counter-reset: fix-step; display: flex; flex-direction: column; gap: var(--space-4); font-size: 0.875rem; line-height: 1.25rem; } +.tc-fix-steps > li { counter-increment: fix-step; display: grid; grid-template-columns: 1.125rem minmax(0, 1fr); gap: var(--space-2) var(--space-3); } +.tc-fix-steps > li::before { content: counter(fix-step); grid-row: 1; width: 1.125rem; height: 1.125rem; margin-top: 1px; border-radius: 50%; display: grid; place-items: center; + border: 1px solid var(--border-strong); color: var(--fg-muted); font: 500 0.625rem/1 var(--font-mono); } .tc-fix-steps > li > * { grid-column: 2; min-width: 0; } .tc-fix-steps code { white-space: nowrap; } .tc-volume-fix { width: min(560px, calc(100% - 32px)); } .tc-auto-schedule { width: min(440px, calc(100% - 32px)); } .tc-auto-schedule .tc-storage-budgets { margin: var(--space-4) 0 var(--space-1); } -.tc-auto-schedule .tc-storage-input > input { padding-right: 76px; } +.tc-auto-schedule .tc-storage-input > input { padding-right: 4.75rem; } /* The phone's More: a page's state beside its name. */ .tc-linkrow-label { min-width: 0; flex: 0 0 auto; max-width: 72%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tc-linkrow > .tc-badge { margin-left: auto; flex: none; } /* Context editors: center the workspace on desktop; retain phone sheets. */ -.tc-layer--center > .tc-context-sheet { position: relative; z-index: 1; width: min(760px, 100%); max-height: calc(100dvh - 64px); animation: tc-pop var(--dur-base) ease-out; } +.tc-layer--center > .tc-context-sheet { position: relative; z-index: 1; width: min(47.5rem, 100%); max-height: calc(100dvh - 64px); animation: tc-pop var(--dur-base) ease-out; } .tc-context-sheet .tc-sheet-body { min-height: 0; gap: var(--space-3); } .tc-context-sheet .tc-sheet-head, .tc-context-sheet .tc-sheet-foot { flex-shrink: 0; } .tc-context-sheet .tc-sheet-foot { flex-wrap: wrap; } -.tc-context-sheet .tc-input--area { box-sizing: border-box; width: 100%; min-height: min(42dvh, 420px); resize: vertical; font-family: var(--font-mono); line-height: 1.6; } +.tc-context-sheet .tc-input--area { box-sizing: border-box; width: 100%; min-height: min(42dvh, 26.25rem); resize: vertical; font-family: var(--font-mono); line-height: 1.6; } .tc-context-path { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-family: var(--font-mono); } .tc-editor-toolbar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--space-2) var(--space-3); } .tc-editor-toolbar .tc-label { margin: 0; } .tc-editor-tools { display: flex; align-items: center; flex-wrap: wrap; gap: 2px; margin-left: auto; } -.tc-editor-area { padding: 12px 14px; tab-size: 2; } +.tc-editor-area { padding: 0.75rem 0.875rem; tab-size: 2; } .tc-editor-meta { display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; gap: 2px var(--space-4); - font-size: 12px; line-height: 18px; color: var(--fg-muted); } + font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } .tc-editor-meta > span:first-child { font-variant-numeric: tabular-nums; white-space: nowrap; } /* Tabs under a page's head: the page in two halves, each at its own address. */ .tc-tabs { display: flex; gap: var(--space-6); padding: 0 var(--space-4); margin-top: calc(var(--space-3) - var(--_gap)); border-bottom: 1px solid color-mix(in srgb, var(--border) 70%, transparent); } -.tc-tab-button { position: relative; height: 36px; padding: 0; border: 0; background: none; color: var(--fg-muted); font: inherit; font-size: 14px; font-weight: 500; cursor: pointer; } +.tc-tab-button { position: relative; height: 2.25rem; padding: 0; border: 0; background: none; color: var(--fg-muted); font: inherit; font-size: 0.875rem; font-weight: 500; cursor: pointer; } .tc-tab-button:hover { color: var(--fg); } .tc-tab-button[aria-selected="true"] { color: var(--fg); } .tc-tab-button[aria-selected="true"]::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; border-radius: 1px; background: var(--fg); } .tc-tab-button:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-radius: var(--radius-sm); } .tc-tabpanel { display: flex; flex-direction: column; gap: var(--_gap); min-width: 0; } @media (max-width: 1023.98px) { - .tc-tabs { padding: 0 4px; } + .tc-tabs { padding: 0 0.25rem; } } /* A select as small as the buttons beside it. On a phone it keeps 16px text, which stops iOS zooming in when it opens. */ -.tc-select--sm { height: var(--control-sm); font-size: 13px; padding-left: 9px; } -.tc-root[data-density="touch"] .tc-select--sm { height: 32px; font-size: 16px; } +.tc-select--sm { height: var(--control-sm); font-size: 0.8125rem; padding-left: 0.5625rem; } +.tc-root[data-density="touch"] .tc-select--sm { height: 2rem; font-size: 1rem; } @media (max-width: 1023.98px) { .tc-layer--center > .tc-context-sheet { width: 100%; max-height: 88dvh; animation: tc-rise-sheet 300ms cubic-bezier(0.32, 0.72, 0, 1); } .tc-context-sheet .tc-input--area { min-height: 32dvh; } @@ -822,66 +822,66 @@ html.tc-locked { overflow: hidden; } } /* Instructions & skills: token-based page layouts and controls. */ -.tc-tab-count { font: 400 12px/1 var(--font-mono); color: var(--fg-muted); font-variant-numeric: tabular-nums; } +.tc-tab-count { font: 400 0.75rem/1 var(--font-mono); color: var(--fg-muted); font-variant-numeric: tabular-nums; } /* ---------------------------------------------------------- toolbar --- */ -.tc-sk-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: -12px; } -.tc-sk-search { position: relative; display: flex; align-items: center; flex: 0 1 300px; min-width: 200px; } -.tc-sk-search > .tc-icon { position: absolute; left: 10px; color: var(--fg-muted); pointer-events: none; } -.tc-sk-search > .tc-input { height: 32px; padding-left: 32px; padding-right: 36px; } -.tc-sk-search > .tc-kbd { position: absolute; right: 6px; } +.tc-sk-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 0.5rem; margin-top: -0.75rem; } +.tc-sk-search { position: relative; display: flex; align-items: center; flex: 0 1 300px; min-width: 12.5rem; } +.tc-sk-search > .tc-icon { position: absolute; left: 0.625rem; color: var(--fg-muted); pointer-events: none; } +.tc-sk-search > .tc-input { height: 2rem; padding-left: 2rem; padding-right: 2.25rem; } +.tc-sk-search > .tc-kbd { position: absolute; right: 0.375rem; } .tc-skills-library .tc-btn .tc-btn-value { color: var(--fg-muted); font-weight: 400; } .tc-skills-library .tc-btn[aria-pressed="true"] { border-color: color-mix(in srgb, var(--warn) 40%, transparent); background: var(--warn-soft); color: var(--warn-text); } .tc-skills-library .tc-btn .tc-dot { margin: 0 1px; } -.tc-skills-library .tc-btn .tc-chev { width: 14px; height: 14px; margin: 0 -4px 0 -2px; color: var(--fg-muted); } +.tc-skills-library .tc-btn .tc-chev { width: 0.875rem; height: 0.875rem; margin: 0 -0.25rem 0 -2px; color: var(--fg-muted); } /* ------------------------------------------------------------ notice --- */ -.tc-notice .tc-notice-actions { display: flex; gap: 6px; align-items: center; margin-left: auto; align-self: center; } -.tc-notice code { font-size: 12px; } +.tc-notice .tc-notice-actions { display: flex; gap: 0.375rem; align-items: center; margin-left: auto; align-self: center; } +.tc-notice code { font-size: 0.75rem; } .tc-notice--warn .tc-btn { margin: 0; } /* ----------------------------------------------------------- matrix ---- */ -.tc-mx { --mx-cols: minmax(240px, 1fr) repeat(var(--mx-agent-count, 5), 116px); position: relative; } -.tc-mx-head, .tc-mx-row { display: grid; grid-template-columns: var(--mx-cols); align-items: center; column-gap: 0; padding: 0 8px 0 16px; } -.tc-mx-head { min-height: 56px; border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2%, var(--surface)); border-radius: calc(var(--radius-xl) - 1px) calc(var(--radius-xl) - 1px) 0 0; } -.tc-mx-head-label { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); padding-right: 12px; min-width: 0; font-size: 12px; font-weight: 500; color: var(--fg-muted); } -.tc-mx-agent { display: flex; flex-direction: column; gap: 2px; padding: 8px 4px 8px 8px; min-width: 0; } -.tc-mx-agent-name { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 500; line-height: 18px; color: var(--fg); white-space: nowrap; } -.tc-mx-agent-kind { font-size: 12px; line-height: 16px; color: var(--fg-muted); white-space: nowrap; } +.tc-mx { --mx-name-width: 15rem; --mx-agent-width: 7.75rem; --mx-cols: minmax(var(--mx-name-width), 1fr) repeat(var(--mx-agent-count, 5), var(--mx-agent-width)); position: relative; } +.tc-mx-head, .tc-mx-row { display: grid; grid-template-columns: var(--mx-cols); align-items: center; column-gap: 0; padding: 0 0.5rem 0 1rem; } +.tc-mx-head { min-height: 3.5rem; border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2%, var(--surface)); border-radius: calc(var(--radius-xl) - 1px) calc(var(--radius-xl) - 1px) 0 0; } +.tc-mx-head-label { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); padding-right: 0.75rem; min-width: 0; font-size: 0.75rem; font-weight: 500; color: var(--fg-muted); } +.tc-mx-agent { display: flex; flex-direction: column; gap: 2px; padding: 0.5rem 0.25rem 0.5rem 0.5rem; min-width: 0; } +.tc-mx-agent-name { display: flex; align-items: center; gap: 0.375rem; font-size: 0.8125rem; font-weight: 500; line-height: 1.125rem; color: var(--fg); white-space: nowrap; } +.tc-mx-agent-kind { font-size: 0.75rem; line-height: 1rem; color: var(--fg-muted); white-space: nowrap; } .tc-mx-columns { color: var(--fg-muted); font-weight: 400; flex-shrink: 0; } -.tc-mx-group { display: flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px 0 12px; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); font-size: 12px; line-height: 18px; color: var(--fg-muted); } +.tc-mx-group { display: flex; align-items: center; gap: 0.5rem; min-height: 2.5rem; padding: 0 1rem 0 0.75rem; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } .tc-mx-head + .tc-mx-group { border-top: 0; } -.tc-mx-group-toggle { white-space: nowrap; flex-shrink: 0; display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 6px; margin-left: -2px; border: 0; border-radius: var(--radius-sm); background: none; font: inherit; color: var(--fg); font-size: 12px; font-weight: 500; cursor: pointer; } +.tc-mx-group-toggle { white-space: nowrap; flex-shrink: 0; display: inline-flex; align-items: center; gap: 0.375rem; height: 1.75rem; padding: 0 0.375rem; margin-left: -2px; border: 0; border-radius: var(--radius-sm); background: none; font: inherit; color: var(--fg); font-size: 0.75rem; font-weight: 500; cursor: pointer; } .tc-mx-group-toggle:hover { background: var(--hover); } -.tc-mx-group-toggle > .tc-icon { width: 14px; height: 14px; color: var(--fg-muted); } +.tc-mx-group-toggle > .tc-icon { width: 0.875rem; height: 0.875rem; color: var(--fg-muted); } .tc-mx-group code { color: var(--fg-muted); } .tc-mx-group .tc-sep { color: var(--fg-subtle); } .tc-mx-readers { display: block; } -.tc-mx-row { background: var(--surface); min-height: 72px; padding-top: 10px; padding-bottom: 10px; border-top: 1px solid var(--hairline); transition: background-color var(--dur-fast); } +.tc-mx-row { background: var(--surface); min-height: 4.5rem; padding-top: 0.625rem; padding-bottom: 0.625rem; border-top: 1px solid var(--hairline); transition: background-color var(--dur-fast); } .tc-mx-group + .tc-mx-row { border-top-color: var(--border); } .tc-mx-row:hover, .tc-mx-row[data-hover="true"] { background: color-mix(in srgb, var(--surface-sunken) 70%, var(--surface)); } [data-theme="dark"] .tc-mx-row:hover, [data-theme="dark"] .tc-mx-row[data-hover="true"] { background: color-mix(in srgb, var(--fg) 2%, var(--surface)); } .tc-mx-row[data-collapsed] { display: none; } -.tc-mx-skill { display: flex; align-items: center; gap: var(--space-2); min-width: 0; padding-right: 12px; } +.tc-mx-skill { display: flex; align-items: center; gap: var(--space-2); min-width: 0; padding-right: 0.75rem; } .tc-mx-skill-copy { display: flex; flex: 1; flex-direction: column; gap: 2px; min-width: 0; } /* Keep the skill and its actions in view while comparing distant agent columns. */ -.tc-mx-head-label, .tc-mx-skill { position: sticky; left: 0; z-index: 1; align-self: stretch; margin-left: -16px; padding-left: 16px; background: inherit; box-shadow: 1px 0 var(--hairline); } -.tc-mx-skill { margin-block: -10px; padding-block: 10px; } -.tc-mx-name { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0; } -.tc-mx-name > a { font-size: 14px; line-height: 20px; font-weight: 500; color: var(--fg); } +.tc-mx-head-label, .tc-mx-skill { position: sticky; left: 0; z-index: 1; align-self: stretch; margin-left: -1rem; padding-left: 1rem; background: inherit; box-shadow: 1px 0 var(--hairline); } +.tc-mx-skill { margin-block: -0.625rem; padding-block: 0.625rem; } +.tc-mx-name { display: flex; align-items: center; gap: 0.375rem; flex-wrap: wrap; min-width: 0; } +.tc-mx-name > a { font-size: 0.875rem; line-height: 1.25rem; font-weight: 500; color: var(--fg); } .tc-mx-name > a:hover { text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; } -.tc-mx-desc { margin: 0; font-size: 12px; line-height: 18px; color: var(--fg-muted); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; } +.tc-mx-desc { margin: 0; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; } .tc-mx-actions { display: flex; flex-shrink: 0; justify-content: flex-end; opacity: 0; } .tc-mx-row:hover .tc-mx-actions, .tc-mx-row[data-hover="true"] .tc-mx-actions { opacity: 1; } /* One cell: an agent's native setting for one skill. Quiet text at rest; its chevron shows on hover, a menu holds the choices. */ .tc-cellwrap { position: relative; min-width: 0; } -.tc-cell { display: inline-flex; align-items: center; gap: 4px; height: 28px; max-width: 100%; padding: 0 8px; border: 1px solid transparent; border-radius: var(--radius-sm); - background: none; color: var(--fg); font: inherit; font-size: 13px; font-weight: 400; white-space: nowrap; cursor: pointer; transition: background-color var(--dur-fast), border-color var(--dur-fast); } -.tc-cell > .tc-icon { width: 12px; height: 12px; color: var(--fg-muted); opacity: 0; margin-right: -2px; } +.tc-cell { display: inline-flex; align-items: center; gap: 0.25rem; height: 1.75rem; max-width: 100%; padding: 0 0.5rem; border: 1px solid transparent; border-radius: var(--radius-sm); + background: none; color: var(--fg); font: inherit; font-size: 0.8125rem; font-weight: 400; white-space: nowrap; cursor: pointer; transition: background-color var(--dur-fast), border-color var(--dur-fast); } +.tc-cell > .tc-icon { width: 0.75rem; height: 0.75rem; color: var(--fg-muted); opacity: 0; margin-right: -2px; } .tc-cell:hover, .tc-mx-row[data-hover="true"] .tc-cell:not(.tc-cell--none):not(.tc-cell--found):not(.tc-cell--locked) { background: var(--surface); border-color: var(--border-strong); box-shadow: var(--shadow-xs); } [data-theme="dark"] .tc-cell:hover, [data-theme="dark"] .tc-mx-row[data-hover="true"] .tc-cell:not(.tc-cell--none):not(.tc-cell--found):not(.tc-cell--locked) { background: color-mix(in srgb, var(--fg) 4%, transparent); } .tc-cell:hover > .tc-icon, .tc-mx-row[data-hover="true"] .tc-cell > .tc-icon, .tc-cell[aria-expanded="true"] > .tc-icon { opacity: 1; } @@ -890,186 +890,186 @@ html.tc-locked { overflow: hidden; } .tc-cell--found { color: var(--fg-muted); cursor: help; } .tc-cell--found > span { text-decoration: underline dotted; text-decoration-color: var(--border-strong); text-underline-offset: 4px; } .tc-cell--locked { color: var(--fg-muted); cursor: default; } -.tc-cell--locked > .tc-icon { opacity: 0.8; width: 12px; height: 12px; } +.tc-cell--locked > .tc-icon { opacity: 0.8; width: 0.75rem; height: 0.75rem; } .tc-cell--none { color: var(--fg-muted); } .tc-cell--none .tc-cell-add { display: none; } .tc-mx-row[data-hover="true"] .tc-cell--none .tc-cell-dash, .tc-cell--none:hover .tc-cell-dash { display: none; } -.tc-mx-row[data-hover="true"] .tc-cell--none .tc-cell-add, .tc-cell--none:hover .tc-cell-add { display: inline-flex; align-items: center; gap: 4px; color: var(--fg); } -.tc-cell--none .tc-cell-add > .tc-icon { width: 12px; height: 12px; opacity: 1; color: var(--fg-muted); } -.tc-cell .tc-switch { margin-right: 6px; } -.tc-cell--switch { padding-left: 6px; } - -.tc-cellwrap > .tc-menu { position: absolute; top: calc(100% + 4px); left: -4px; z-index: 30; width: 296px; } -.tc-menu-item[aria-checked] { align-items: flex-start; padding-top: 6px; padding-bottom: 6px; } -.tc-menu-item .tc-menu-check { width: 16px; height: 16px; flex: none; margin-top: 2px; color: var(--fg); opacity: 0; } +.tc-mx-row[data-hover="true"] .tc-cell--none .tc-cell-add, .tc-cell--none:hover .tc-cell-add { display: inline-flex; align-items: center; gap: 0.25rem; color: var(--fg); } +.tc-cell--none .tc-cell-add > .tc-icon { width: 0.75rem; height: 0.75rem; opacity: 1; color: var(--fg-muted); } +.tc-cell .tc-switch { margin-right: 0.375rem; } +.tc-cell--switch { padding-left: 0.375rem; } + +.tc-cellwrap > .tc-menu { position: absolute; top: calc(100% + 4px); left: -0.25rem; z-index: 30; width: 18.5rem; } +.tc-menu-item[aria-checked] { align-items: flex-start; padding-top: 0.375rem; padding-bottom: 0.375rem; } +.tc-menu-item .tc-menu-check { width: 1rem; height: 1rem; flex: none; margin-top: 2px; color: var(--fg); opacity: 0; } .tc-menu-item[aria-checked="true"] .tc-menu-check { opacity: 1; } -.tc-menu-item-text strong { font-weight: 500; font-size: 14px; line-height: 20px; } -.tc-menu-foot { padding: 6px 8px 4px; font-size: 12px; line-height: 16px; color: var(--fg-muted); } +.tc-menu-item-text strong { font-weight: 500; font-size: 0.875rem; line-height: 1.25rem; } +.tc-menu-foot { padding: 0.375rem 0.5rem 0.25rem; font-size: 0.75rem; line-height: 1rem; color: var(--fg-muted); } /* Badges inside a skill's name line. */ -.tc-tagline { display: inline-flex; align-items: center; gap: 4px; height: 18px; padding: 0 5px; border-radius: var(--radius-sm); font-size: 11px; font-weight: 500; line-height: 1; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 5%, transparent); white-space: nowrap; } -.tc-tagline .tc-icon { width: 11px; height: 11px; } -.tc-tagline code { font-size: 11px; color: var(--fg); } +.tc-tagline { display: inline-flex; align-items: center; gap: 0.25rem; height: 1.125rem; padding: 0 0.3125rem; border-radius: var(--radius-sm); font-size: 0.6875rem; font-weight: 500; line-height: 1; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 5%, transparent); white-space: nowrap; } +.tc-tagline .tc-icon { width: 0.6875rem; height: 0.6875rem; } +.tc-tagline code { font-size: 0.6875rem; color: var(--fg); } /* -------------------------------------------------------- inspector ---- */ -.tc-insp-head { display: flex; align-items: flex-start; gap: 12px; padding: 20px 16px 16px 20px; border-bottom: 1px solid var(--hairline); } -.tc-insp-head .tc-tile--icon { width: 36px; height: 36px; border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--border); color: var(--fg); box-shadow: var(--shadow-xs); } -.tc-insp-head .tc-tile--icon .tc-icon { width: 18px; height: 18px; } +.tc-insp-head { display: flex; align-items: flex-start; gap: 0.75rem; padding: 1.25rem 1rem 1rem 1.25rem; border-bottom: 1px solid var(--hairline); } +.tc-insp-head .tc-tile--icon { width: 2.25rem; height: 2.25rem; border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--border); color: var(--fg); box-shadow: var(--shadow-xs); } +.tc-insp-head .tc-tile--icon .tc-icon { width: 1.125rem; height: 1.125rem; } .tc-insp-title { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; } -.tc-insp-title h2 { margin: 0; font-size: 17px; line-height: 24px; font-weight: 600; } -.tc-insp-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; line-height: 18px; color: var(--fg-muted); } -.tc-insp-body { flex: 1; overflow: auto; padding: 20px; display: flex; flex-direction: column; gap: 24px; } -.tc-insp-section { display: flex; flex-direction: column; gap: 8px; } -.tc-insp-label { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--fg-section); min-height: 24px; } -.tc-insp-desc { margin: 0; font-size: 14px; line-height: 21px; color: var(--fg); text-wrap: pretty; } +.tc-insp-title h2 { margin: 0; font-size: 1.0625rem; line-height: 1.5rem; font-weight: 600; } +.tc-insp-meta { display: flex; align-items: center; gap: 0.375rem; flex-wrap: wrap; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } +.tc-insp-body { flex: 1; overflow: auto; padding: 1.25rem; display: flex; flex-direction: column; gap: 1.5rem; } +.tc-insp-section { display: flex; flex-direction: column; gap: 0.5rem; } +.tc-insp-label { display: flex; align-items: center; gap: 0.5rem; font-size: 0.875rem; color: var(--fg-section); min-height: 1.5rem; } +.tc-insp-desc { margin: 0; font-size: 0.875rem; line-height: 1.3125rem; color: var(--fg); text-wrap: pretty; } .tc-avail { display: flex; flex-direction: column; } -.tc-avail-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 2px 12px; padding: 10px 14px; min-height: 56px; } +.tc-avail-row { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 2px 0.75rem; padding: 0.625rem 0.875rem; min-height: 3.5rem; } .tc-avail-row + .tc-avail-row { border-top: 1px solid var(--hairline); } .tc-avail-row .tc-row-main { gap: 0; } -.tc-avail-row .tc-select { width: 136px; height: 28px; font-size: 13px; padding-left: 9px; } -.tc-avail-row .tc-tile { width: 24px; height: 24px; font-size: 9.5px; } -.tc-avail-name { font-size: 14px; font-weight: 500; line-height: 20px; } -.tc-avail-note { font-size: 12px; line-height: 18px; color: var(--fg-muted); } +.tc-avail-row .tc-select { width: 8.5rem; height: 1.75rem; font-size: 0.8125rem; padding-left: 0.5625rem; } +.tc-avail-row .tc-tile { width: 1.5rem; height: 1.5rem; font-size: 0.59375rem; } +.tc-avail-name { font-size: 0.875rem; font-weight: 500; line-height: 1.25rem; } +.tc-avail-note { font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } .tc-avail-row[data-reach="none"] .tc-avail-name { color: var(--fg-muted); font-weight: 400; } -.tc-pathlist { display: grid; grid-template-columns: 92px minmax(0, 1fr); margin: 0; } -.tc-pathlist > dt, .tc-pathlist > dd { margin: 0; padding: 10px 14px; border-top: 1px solid var(--hairline); font-size: 13px; line-height: 20px; min-width: 0; } +.tc-pathlist { display: grid; grid-template-columns: 5.75rem minmax(0, 1fr); margin: 0; } +.tc-pathlist > dt, .tc-pathlist > dd { margin: 0; padding: 0.625rem 0.875rem; border-top: 1px solid var(--hairline); font-size: 0.8125rem; line-height: 1.25rem; min-width: 0; } .tc-pathlist > dt { color: var(--fg-muted); } -.tc-pathlist > dd { display: flex; align-items: center; gap: 6px; } +.tc-pathlist > dd { display: flex; align-items: center; gap: 0.375rem; } .tc-pathlist > dd code { overflow-wrap: anywhere; color: var(--fg); } .tc-pathlist > dt:first-of-type, .tc-pathlist > dt:first-of-type + dd { border-top: 0; } -.tc-files { list-style: none; margin: 0; padding: 4px 0; } -.tc-files li { display: flex; align-items: center; gap: 8px; height: 30px; padding: 0 14px; font: 400 12px/1 var(--font-mono); color: var(--fg); } -.tc-files li .tc-icon { width: 14px; height: 14px; color: var(--fg-muted); } -.tc-files li[data-depth="1"] { padding-left: 36px; } +.tc-files { list-style: none; margin: 0; padding: 0.25rem 0; } +.tc-files li { display: flex; align-items: center; gap: 0.5rem; height: 1.875rem; padding: 0 0.875rem; font: 400 0.75rem/1 var(--font-mono); color: var(--fg); } +.tc-files li .tc-icon { width: 0.875rem; height: 0.875rem; color: var(--fg-muted); } +.tc-files li[data-depth="1"] { padding-left: 2.25rem; } .tc-files li .tc-files-size { margin-left: auto; color: var(--fg-muted); font-variant-numeric: tabular-nums; } -.tc-code { margin: 0; padding: 12px 0; border-radius: var(--radius-lg); border: 1px solid var(--border); background: var(--surface-sunken); font: 400 12px/20px var(--font-mono); color: var(--fg); overflow: hidden; counter-reset: ln; } -.tc-code > span { display: grid; grid-template-columns: 44px minmax(0, 1fr); padding: 0 14px 0 0; white-space: pre-wrap; overflow-wrap: anywhere; } -.tc-code > span::before { counter-increment: ln; content: counter(ln); padding-right: 12px; text-align: right; color: var(--fg-subtle); user-select: none; } +.tc-code { margin: 0; padding: 0.75rem 0; border-radius: var(--radius-lg); border: 1px solid var(--border); background: var(--surface-sunken); font: 400 0.75rem/1.25rem var(--font-mono); color: var(--fg); overflow: hidden; counter-reset: ln; } +.tc-code > span { display: grid; grid-template-columns: var(--touch) minmax(0, 1fr); padding: 0 0.875rem 0 0; white-space: pre-wrap; overflow-wrap: anywhere; } +.tc-code > span::before { counter-increment: ln; content: counter(ln); padding-right: 0.75rem; text-align: right; color: var(--fg-subtle); user-select: none; } .tc-code-fade { position: relative; } -.tc-code-fade::after { content: ""; position: absolute; left: 1px; right: 1px; bottom: 1px; height: 56px; border-radius: 0 0 var(--radius-lg) var(--radius-lg); background: linear-gradient(to bottom, transparent, var(--surface-sunken)); pointer-events: none; } +.tc-code-fade::after { content: ""; position: absolute; left: 1px; right: 1px; bottom: 1px; height: 3.5rem; border-radius: 0 0 var(--radius-lg) var(--radius-lg); background: linear-gradient(to bottom, transparent, var(--surface-sunken)); pointer-events: none; } /* ------------------------------------------------------------ wizard --- */ -.tc-wizard { width: 960px; max-width: 100%; height: 720px; display: flex; flex-direction: column; border-radius: var(--radius-2xl); overflow: hidden; background: var(--surface-raised); border: 1px solid var(--border); box-shadow: var(--shadow-dialog); } -.tc-wizard-head { display: flex; align-items: center; gap: 12px; padding: 16px 16px 16px 20px; border-bottom: 1px solid var(--hairline); } -.tc-wizard-head .tc-steps { margin-left: auto; margin-right: 8px; } -.tc-wizard-grid { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 300px; } -.tc-wizard-main { min-height: 0; overflow: hidden; padding: 20px 24px; display: flex; flex-direction: column; gap: 16px; } -.tc-wizard-rail { min-height: 0; overflow: hidden; border-left: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2%, transparent); padding: 20px; display: flex; flex-direction: column; gap: 16px; } -.tc-wizard-foot { display: flex; align-items: center; gap: 8px; padding: 12px 16px 12px 20px; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } -.tc-wizard-foot .tc-hint { display: inline-flex; align-items: center; gap: 6px; } -.tc-step-title { margin: 0; font-size: 15px; line-height: 22px; font-weight: 600; } - -.tc-source { display: flex; flex-direction: column; gap: 8px; } +.tc-wizard { width: 60rem; max-width: 100%; height: 45rem; display: flex; flex-direction: column; border-radius: var(--radius-2xl); overflow: hidden; background: var(--surface-raised); border: 1px solid var(--border); box-shadow: var(--shadow-dialog); } +.tc-wizard-head { display: flex; align-items: center; gap: 0.75rem; padding: 1rem 1rem 1rem 1.25rem; border-bottom: 1px solid var(--hairline); } +.tc-wizard-head .tc-steps { margin-left: auto; margin-right: 0.5rem; } +.tc-wizard-grid { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 18.75rem; } +.tc-wizard-main { min-height: 0; overflow: hidden; padding: 1.25rem 1.5rem; display: flex; flex-direction: column; gap: 1rem; } +.tc-wizard-rail { min-height: 0; overflow: hidden; border-left: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2%, transparent); padding: 1.25rem; display: flex; flex-direction: column; gap: 1rem; } +.tc-wizard-foot { display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1rem 0.75rem 1.25rem; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } +.tc-wizard-foot .tc-hint { display: inline-flex; align-items: center; gap: 0.375rem; } +.tc-step-title { margin: 0; font-size: 0.9375rem; line-height: 1.375rem; font-weight: 600; } + +.tc-source { display: flex; flex-direction: column; gap: 0.5rem; } .tc-source-input { position: relative; display: flex; align-items: center; } -.tc-source-input > .tc-input { height: 36px; font-family: var(--font-mono); font-size: 13px; padding-left: 36px; padding-right: 100px; } -.tc-source-input > .tc-icon { position: absolute; left: 12px; color: var(--fg-muted); } -.tc-source-input > .tc-btn { position: absolute; right: 4px; } -.tc-source-found { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 12px; line-height: 18px; color: var(--fg-muted); } -.tc-source-found .tc-icon { width: 14px; height: 14px; color: var(--ok); } +.tc-source-input > .tc-input { height: 2.25rem; font-family: var(--font-mono); font-size: 0.8125rem; padding-left: 2.25rem; padding-right: 6.25rem; } +.tc-source-input > .tc-icon { position: absolute; left: 0.75rem; color: var(--fg-muted); } +.tc-source-input > .tc-btn { position: absolute; right: 0.25rem; } +.tc-source-found { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } +.tc-source-found .tc-icon { width: 0.875rem; height: 0.875rem; color: var(--ok); } .tc-source-found strong { color: var(--fg); font-weight: 500; } .tc-source-found code { color: var(--fg); } .tc-picklist { border: 1px solid var(--border); border-radius: var(--radius-xl); background: var(--surface); display: flex; flex-direction: column; min-height: 0; flex: 1; overflow: hidden; } [data-theme="dark"] .tc-picklist { background: color-mix(in srgb, var(--fg) 2%, transparent); } -.tc-picklist-head { display: flex; align-items: center; gap: 10px; padding: 8px 8px 8px 14px; border-bottom: 1px solid var(--hairline); } -.tc-picklist-head .tc-input { height: 28px; font-size: 13px; } +.tc-picklist-head { display: flex; align-items: center; gap: 0.625rem; padding: 0.5rem 0.5rem 0.5rem 0.875rem; border-bottom: 1px solid var(--hairline); } +.tc-picklist-head .tc-input { height: 1.75rem; font-size: 0.8125rem; } .tc-picklist-body { overflow: hidden; flex: 1; } -.tc-pick { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; gap: 2px 12px; align-items: start; padding: 10px 14px; } +.tc-pick { display: grid; grid-template-columns: 1.125rem minmax(0, 1fr) auto; gap: 2px 0.75rem; align-items: start; padding: 0.625rem 0.875rem; } .tc-pick + .tc-pick { border-top: 1px solid var(--hairline); } -.tc-pick-name { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 14px; font-weight: 500; line-height: 20px; } -.tc-pick-desc { margin: 0; font-size: 12px; line-height: 18px; color: var(--fg-muted); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden; } -.tc-pick-side { display: flex; align-items: center; gap: 6px; font: 400 12px/20px var(--font-mono); color: var(--fg-muted); white-space: nowrap; } +.tc-pick-name { display: flex; align-items: center; gap: 0.375rem; flex-wrap: wrap; font-size: 0.875rem; font-weight: 500; line-height: 1.25rem; } +.tc-pick-desc { margin: 0; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 1; overflow: hidden; } +.tc-pick-side { display: flex; align-items: center; gap: 0.375rem; font: 400 0.75rem/1.25rem var(--font-mono); color: var(--fg-muted); white-space: nowrap; } .tc-pick[data-open] { background: color-mix(in srgb, var(--surface-sunken) 60%, transparent); } -.tc-pick-files { grid-column: 2 / -1; margin-top: 8px; border-radius: var(--radius-lg); border: 1px solid var(--border); background: var(--surface); } +.tc-pick-files { grid-column: 2 / -1; margin-top: 0.5rem; border-radius: var(--radius-lg); border: 1px solid var(--border); background: var(--surface); } [data-theme="dark"] .tc-pick-files { background: color-mix(in srgb, var(--fg) 2%, transparent); } -.tc-pick-files .tc-files li { height: 26px; } -.tc-pick-files-foot { display: flex; align-items: center; gap: 6px; padding: 8px 14px; border-top: 1px solid var(--hairline); font-size: 12px; color: var(--fg-muted); } -.tc-pick-files-foot .tc-icon { width: 14px; height: 14px; } +.tc-pick-files .tc-files li { height: 1.625rem; } +.tc-pick-files-foot { display: flex; align-items: center; gap: 0.375rem; padding: 0.5rem 0.875rem; border-top: 1px solid var(--hairline); font-size: 0.75rem; color: var(--fg-muted); } +.tc-pick-files-foot .tc-icon { width: 0.875rem; height: 0.875rem; } -.tc-checkbox { appearance: auto; accent-color: var(--accent); width: 16px; height: 16px; margin: 2px 0 0; flex: none; cursor: pointer; } +.tc-checkbox { appearance: auto; accent-color: var(--accent); width: 1rem; height: 1rem; margin: 2px 0 0; flex: none; cursor: pointer; } .tc-checkbox:disabled { opacity: var(--opacity-disabled); cursor: default; } .tc-checkbox:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; } /* Install plan rail. */ -.tc-plan-label { font-size: 12px; font-weight: 500; color: var(--fg-muted); } -.tc-plan-source { display: flex; flex-direction: column; gap: 4px; } -.tc-plan-source code { font-size: 12px; color: var(--fg); overflow-wrap: anywhere; } -.tc-plan-stat { display: flex; align-items: baseline; gap: 6px; } +.tc-plan-label { font-size: 0.75rem; font-weight: 500; color: var(--fg-muted); } +.tc-plan-source { display: flex; flex-direction: column; gap: 0.25rem; } +.tc-plan-source code { font-size: 0.75rem; color: var(--fg); overflow-wrap: anywhere; } +.tc-plan-stat { display: flex; align-items: baseline; gap: 0.375rem; } .tc-plan-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 2px; } -.tc-plan-list li { display: flex; align-items: center; gap: 8px; min-height: 26px; font-size: 13px; color: var(--fg); } -.tc-plan-list li .tc-plan-end { margin-left: auto; font-size: 12px; color: var(--fg-muted); } +.tc-plan-list li { display: flex; align-items: center; gap: 0.5rem; min-height: 1.625rem; font-size: 0.8125rem; color: var(--fg); } +.tc-plan-list li .tc-plan-end { margin-left: auto; font-size: 0.75rem; color: var(--fg-muted); } .tc-plan-list li[data-off] { color: var(--fg-muted); } -.tc-plan-note { margin: 0; font-size: 12px; line-height: 18px; color: var(--fg-muted); } -.tc-plan-note .tc-icon { width: 14px; height: 14px; vertical-align: -2px; margin-right: 4px; } +.tc-plan-note { margin: 0; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } +.tc-plan-note .tc-icon { width: 0.875rem; height: 0.875rem; vertical-align: -2px; margin-right: 0.25rem; } /* Agents step: one row per agent, the copy it reads. */ -.tc-route-row { display: grid; grid-template-columns: 18px auto minmax(0, 1fr) auto; gap: 2px 12px; align-items: center; padding: 9px 14px; } +.tc-route-row { display: grid; grid-template-columns: 1.125rem auto minmax(0, 1fr) auto; gap: 2px 0.75rem; align-items: center; padding: 0.5625rem 0.875rem; } .tc-route-row + .tc-route-row { border-top: 1px solid var(--hairline); } .tc-route-row .tc-row-main { gap: 0; } .tc-route-row .tc-checkbox { margin: 0; } .tc-route-row[data-off] .tc-avail-name { color: var(--fg-muted); font-weight: 400; } -.tc-route-group { display: flex; align-items: center; gap: 8px; padding: 8px 14px; font-size: 12px; line-height: 18px; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2.5%, transparent); border-top: 1px solid var(--border); } +.tc-route-group { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 0.875rem; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2.5%, transparent); border-top: 1px solid var(--border); } .tc-route-group:first-child { border-top: 0; } .tc-route-group code { color: var(--fg); } .tc-route-group .tc-spacer + * { white-space: nowrap; } -.tc-dest-head { display: flex; align-items: center; gap: 8px; padding: 10px 14px; font-size: 12px; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } +.tc-dest-head { display: flex; align-items: center; gap: 0.5rem; padding: 0.625rem 0.875rem; font-size: 0.75rem; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } .tc-dest-head + .tc-dest-row, .tc-dest-row + .tc-dest-row { border-top: 1px solid var(--hairline); } .tc-dest-row + .tc-dest-head { border-top: 1px solid var(--border); } -.tc-dest-head code { color: var(--fg); font-size: 12px; } -.tc-dest-row { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; gap: 2px 10px; align-items: center; padding: 9px 14px; font-size: 13px; } -.tc-dest-row .tc-icon { width: 14px; height: 14px; } +.tc-dest-head code { color: var(--fg); font-size: 0.75rem; } +.tc-dest-row { display: grid; grid-template-columns: 1.125rem minmax(0, 1fr) auto; gap: 2px 0.625rem; align-items: center; padding: 0.5625rem 0.875rem; font-size: 0.8125rem; } +.tc-dest-row .tc-icon { width: 0.875rem; height: 0.875rem; } .tc-dest-row[data-state="ok"] > .tc-icon { color: var(--ok); } .tc-dest-row[data-state="failed"] > .tc-icon { color: var(--danger); } .tc-dest-row[data-state="replace"] > .tc-icon { color: var(--warn); } .tc-dest-row[data-state="new"] > .tc-icon { color: var(--fg-muted); } -.tc-dest-note { grid-column: 2 / -1; font-size: 12px; line-height: 18px; color: var(--fg-muted); } +.tc-dest-note { grid-column: 2 / -1; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } .tc-dest-row[data-state="failed"] .tc-dest-note { color: var(--danger-text); } -.tc-result-hero { display: flex; align-items: center; gap: 14px; } -.tc-result-mark { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: var(--ok-soft); color: var(--ok-text); flex: none; } -.tc-result-mark .tc-icon { width: 20px; height: 20px; } -.tc-result-hero h3 { margin: 0; font-size: 17px; line-height: 24px; font-weight: 600; } +.tc-result-hero { display: flex; align-items: center; gap: 0.875rem; } +.tc-result-mark { width: 2.5rem; height: 2.5rem; border-radius: 50%; display: grid; place-items: center; background: var(--ok-soft); color: var(--ok-text); flex: none; } +.tc-result-mark .tc-icon { width: 1.25rem; height: 1.25rem; } +.tc-result-hero h3 { margin: 0; font-size: 1.0625rem; line-height: 1.5rem; font-weight: 600; } /* ------------------------------------------------------- instructions -- */ -.tc-ins-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 24px; align-items: start; } -.tc-doc-head { display: flex; align-items: center; gap: 12px; padding: 14px 14px 14px 16px; border-bottom: 1px solid var(--hairline); } +.tc-ins-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 1.5rem; align-items: start; } +.tc-doc-head { display: flex; align-items: center; gap: 0.75rem; padding: 0.875rem 0.875rem 0.875rem 1rem; border-bottom: 1px solid var(--hairline); } .tc-doc-head > .tc-row-main { flex: 1; } -.tc-doc-head .tc-tile--icon { width: 32px; height: 32px; border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--border); color: var(--fg); } -.tc-doc-preview { padding: 16px 20px 8px; font-size: 14px; line-height: 21px; color: var(--fg); } +.tc-doc-head .tc-tile--icon { width: 2rem; height: 2rem; border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--border); color: var(--fg); } +.tc-doc-preview { padding: 1rem 1.25rem 0.5rem; font-size: 0.875rem; line-height: 1.3125rem; color: var(--fg); } .tc-doc-preview .tc-notice { display: grid; grid-template-columns: auto minmax(0, 1fr); } .tc-doc-preview .tc-notice > .tc-btn { grid-column: 2; justify-self: start; } -.tc-doc-foot { flex-wrap: wrap; justify-content: space-between; gap: 4px 16px; } +.tc-doc-foot { flex-wrap: wrap; justify-content: space-between; gap: 0.25rem 1rem; } .tc-doc-foot > code { max-width: 100%; } .tc-doc-foot > span { white-space: nowrap; } -.tc-reads-row { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px 12px; align-items: center; padding: 14px 16px; } +.tc-reads-row { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0.625rem 0.75rem; align-items: center; padding: 0.875rem 1rem; } .tc-reads-row + .tc-reads-row { border-top: 1px solid var(--hairline); } .tc-reads-row .tc-seg { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); } -.tc-reads-row .tc-seg button { justify-content: center; height: 26px; font-size: 12.5px; } -.tc-reads-row .tc-tile { width: 24px; height: 24px; font-size: 9.5px; } -.tc-reads-path { display: flex; align-items: center; gap: 6px; font-size: 12px; line-height: 18px; color: var(--fg-muted); min-width: 0; } +.tc-reads-row .tc-seg button { justify-content: center; height: 1.625rem; font-size: 0.78125rem; } +.tc-reads-row .tc-tile { width: 1.5rem; height: 1.5rem; font-size: 0.59375rem; } +.tc-reads-path { display: flex; align-items: center; gap: 0.375rem; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); min-width: 0; } .tc-reads-path code { flex: 1; min-width: 0; color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tc-reads-path > :not(code) { flex-shrink: 0; white-space: nowrap; } -.tc-reads-path .tc-icon { width: 12px; height: 12px; flex: none; } +.tc-reads-path .tc-icon { width: 0.75rem; height: 0.75rem; flex: none; } /* ------------------------------------------------------------- phone --- */ -.tc-sk-agent-chips .tc-chip-btn { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 12px 0 8px; border-radius: var(--radius-full); border: 1px solid var(--border-strong); background: var(--surface); color: var(--fg); font: inherit; font-size: 14px; font-weight: 500; white-space: nowrap; flex: none; } +.tc-sk-agent-chips .tc-chip-btn { display: inline-flex; align-items: center; gap: 0.375rem; height: 2rem; padding: 0 0.75rem 0 0.5rem; border-radius: var(--radius-full); border: 1px solid var(--border-strong); background: var(--surface); color: var(--fg); font: inherit; font-size: 0.875rem; font-weight: 500; white-space: nowrap; flex: none; } .tc-sk-agent-chips .tc-chip-btn[aria-pressed="true"] { background: var(--fg); color: var(--bg); border-color: var(--fg); } .tc-sk-agent-chips .tc-chip-btn[aria-pressed="true"] .tc-tab-count { color: color-mix(in srgb, var(--bg) 70%, transparent); } -.tc-sk-agent-chips .tc-chip-btn:not(:has(.tc-tile)) { padding-left: 12px; } -.tc-sk-agent-chips .tc-chip-btn .tc-tile { width: 18px; height: 18px; font-size: 8px; } +.tc-sk-agent-chips .tc-chip-btn:not(:has(.tc-tile)) { padding-left: 0.75rem; } +.tc-sk-agent-chips .tc-chip-btn .tc-tile { width: 1.125rem; height: 1.125rem; font-size: 0.5rem; } .tc-plist { border-radius: var(--radius-xl); border: 1px solid color-mix(in srgb, var(--border) 60%, transparent); background: color-mix(in srgb, var(--surface) 40%, transparent); box-shadow: var(--shadow-xs); overflow: hidden; flex: none; } -.tc-plist-group { display: flex; align-items: center; gap: 6px; padding: 10px 14px 8px; font-size: 12px; line-height: 16px; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2.5%, transparent); border-bottom: 1px solid var(--hairline); } +.tc-plist-group { display: flex; align-items: center; gap: 0.375rem; padding: 0.625rem 0.875rem 0.5rem; font-size: 0.75rem; line-height: 1rem; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2.5%, transparent); border-bottom: 1px solid var(--hairline); } .tc-plist-group strong { color: var(--fg); font-weight: 500; } -.tc-prow { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; align-items: center; padding: 12px 14px; min-height: 64px; color: inherit; text-decoration: none !important; } +.tc-prow { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.25rem 0.75rem; align-items: center; padding: 0.75rem 0.875rem; min-height: 4rem; color: inherit; text-decoration: none !important; } .tc-prow + .tc-prow { border-top: 1px solid var(--hairline); } -.tc-prow-name { font-size: 16px; line-height: 22px; font-weight: 500; color: var(--fg); } -.tc-prow-desc { grid-column: 1; margin: 0; font-size: 13px; line-height: 18px; color: var(--fg-muted); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; } -.tc-prow-agents { grid-column: 1; display: flex; align-items: center; gap: 8px; font-size: 12px; line-height: 16px; color: var(--fg-muted); margin-top: 2px; } +.tc-prow-name { font-size: 1rem; line-height: 1.375rem; font-weight: 500; color: var(--fg); } +.tc-prow-desc { grid-column: 1; margin: 0; font-size: 0.8125rem; line-height: 1.125rem; color: var(--fg-muted); display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; } +.tc-prow-agents { grid-column: 1; display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; line-height: 1rem; color: var(--fg-muted); margin-top: 2px; } .tc-prow > .tc-icon { grid-column: 2; grid-row: 1 / span 3; color: var(--fg-muted); } /* Runtime adaptations: actual layers, scrolling data, keyboard affordances and @@ -1080,24 +1080,24 @@ html.tc-locked { overflow: hidden; } .tc-sk-notices { display: flex; flex-direction: column; gap: var(--space-2); } .tc-sk-notices:empty { display: none; } .tc-sk-table { min-width: 0; container-type: inline-size; } -.tc-mx-scroll { scroll-padding-inline: 256px 8px; overflow-x: auto; overscroll-behavior-x: contain; border-radius: inherit; } -.tc-mx { min-width: calc(240px + var(--mx-agent-count, 5) * 116px + 24px); } +.tc-mx-scroll { scroll-padding-inline: 16rem 0.5rem; overflow-x: auto; overscroll-behavior-x: contain; border-radius: inherit; } +.tc-mx { min-width: calc(var(--mx-name-width) + var(--mx-agent-count, 5) * var(--mx-agent-width) + 1.5rem); } .tc-mx-head, .tc-mx-row { min-width: 100%; } /* Folder context stays attached to the visible table, independently of its columns. */ .tc-mx-group { overflow: hidden; position: sticky; left: 0; width: 100cqi; } .tc-mx-group > code, .tc-mx-readers, .tc-mx-collapsed-names { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; } -.tc-mx-collapsed-names { max-width: 40%; font: 400 12px/18px var(--font-mono); } +.tc-mx-collapsed-names { max-width: 40%; font: 400 0.75rem/1.125rem var(--font-mono); } .tc-mx-agent[data-uninstalled] { opacity: var(--opacity-disabled); } .tc-mx-agent-name .tc-tile { flex: none; } .tc-mx-actions:focus-within, .tc-mx-row:focus-within .tc-mx-actions { opacity: 1; } .tc-cell:focus-visible .tc-cell-dash { display: none; } .tc-cell:focus-visible .tc-cell-add { display: inline-flex; } .tc-cell:focus-visible, .tc-skill-name:focus-visible, .tc-prow:focus-visible, .tc-mx-group-toggle:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; } -.tc-skill-name { appearance: none; padding: 0; border: 0; background: none; color: var(--fg); text-align: left; font: 500 14px/20px var(--font-sans); cursor: pointer; overflow-wrap: anywhere; } +.tc-skill-name { appearance: none; padding: 0; border: 0; background: none; color: var(--fg); text-align: left; font: 500 0.875rem/1.25rem var(--font-sans); cursor: pointer; overflow-wrap: anywhere; } .tc-skill-name:hover { text-decoration: underline; text-underline-offset: 3px; } .tc-mx-row[data-highlight], .tc-prow[data-highlight] { background: var(--accent-soft); } .tc-mx-row[data-highlight] { background: linear-gradient(var(--accent-soft), var(--accent-soft)), var(--surface); } -.tc-sk-library-foot { display: flex; gap: var(--space-2); align-items: center; flex-wrap: wrap; font-size: 12px; line-height: 18px; color: var(--fg-muted); } +.tc-sk-library-foot { display: flex; gap: var(--space-2); align-items: center; flex-wrap: wrap; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } .tc-sk-library-foot > span:first-child { display: inline-flex; align-items: center; gap: var(--space-2); flex: 1 1 28rem; } .tc-sk-scan-time { margin-left: auto; } .tc-sk-agent-chips, .tc-sk-phone-list, .tc-sk-phone-actions { display: none; } @@ -1105,10 +1105,10 @@ html.tc-locked { overflow: hidden; } .tc-sk-empty { padding: var(--space-8) var(--space-4); } .tc-agent-stack { display: inline-flex; align-items: center; flex: none; } .tc-agent-stack .tc-tile { box-shadow: 0 0 0 2px var(--surface); } -.tc-agent-stack .tc-tile + .tc-tile { margin-left: -3px; } -.tc-menu-item-description { display: block; margin-top: 1px; font-size: 12px; line-height: 16px; color: var(--fg-muted); } -.tc-menu:has([role="menuitemradio"]) { max-width: min(296px, calc(100vw - 16px)); width: 296px; } -.tc-menu-foot { border-top: 1px solid var(--hairline); margin-top: 4px; } +.tc-agent-stack .tc-tile + .tc-tile { margin-left: -0.1875rem; } +.tc-menu-item-description { display: block; margin-top: 1px; font-size: 0.75rem; line-height: 1rem; color: var(--fg-muted); } +.tc-menu:has([role="menuitemradio"]) { max-width: min(296px, calc(100vw - 16px)); width: 18.5rem; } +.tc-menu-foot { border-top: 1px solid var(--hairline); margin-top: 0.25rem; } .tc-menu-foot code { overflow-wrap: anywhere; } .tc-layer--sheet > .tc-skill-inspector { width: min(520px, calc(100vw - 16px)); } .tc-insp-head, .tc-insp-foot { flex: none; } @@ -1117,17 +1117,17 @@ html.tc-locked { overflow: hidden; } .tc-insp-foot > .tc-hint { display: inline-flex; align-items: flex-start; gap: var(--space-2); } .tc-insp-body { min-height: 0; overscroll-behavior: contain; } -.tc-insp-body .tc-editor-area { min-height: 320px; width: 100%; resize: vertical; font: 400 12px/20px var(--font-mono); } +.tc-insp-body .tc-editor-area { min-height: 20rem; width: 100%; resize: vertical; font: 400 0.75rem/1.25rem var(--font-mono); } .tc-file-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-files li[data-depth="2"] { padding-left: 48px; } -.tc-files li[data-depth="3"], .tc-files li[data-depth="4"] { padding-left: 60px; } +.tc-files li[data-depth="2"] { padding-left: 3rem; } +.tc-files li[data-depth="3"], .tc-files li[data-depth="4"] { padding-left: 3.75rem; } .tc-files-size { flex: none; } .tc-layer--center > .tc-wizard { position: relative; z-index: 1; max-height: calc(100dvh - 48px); animation: tc-pop var(--dur-base) ease-out; } .tc-wizard-head, .tc-wizard-foot { flex: none; } .tc-wizard-head .tc-steps { flex: none; } .tc-wizard-main { overflow-y: auto; overscroll-behavior: contain; min-width: 0; } .tc-wizard-main > * { flex-shrink: 0; } -.tc-wizard-main > .tc-picklist { flex: 1 1 auto; min-height: 180px; } +.tc-wizard-main > .tc-picklist { flex: 1 1 auto; min-height: 11.25rem; } .tc-picklist-body { overflow-y: auto; overscroll-behavior: contain; min-height: 0; } .tc-wizard-rail-wrap { min-height: 0; overflow-y: auto; border-left: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2%, transparent); } .tc-wizard-rail-toggle { display: none; } @@ -1135,7 +1135,7 @@ html.tc-locked { overflow: hidden; } .tc-plan-section { display: flex; flex-direction: column; gap: var(--space-2); border-top: 1px solid var(--border); padding-top: var(--space-4); } .tc-plan-bottom { margin-top: auto; padding-top: var(--space-4); } .tc-import-step-head { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: var(--space-3); } -.tc-import-step-head .tc-hint { margin-top: 4px; } +.tc-import-step-head .tc-hint { margin-top: 0.25rem; } .tc-import-intro { display: flex; flex-direction: column; align-items: center; text-align: center; justify-content: center; gap: var(--space-3); padding: var(--space-6); flex: 1; } .tc-import-catalog { display: flex; flex-direction: column; } .tc-import-catalog .tc-btn { justify-content: space-between; } @@ -1146,8 +1146,8 @@ html.tc-locked { overflow: hidden; } .tc-route-row { cursor: pointer; } .tc-route-row > .tc-checkbox { align-self: center; } .tc-import-consent { display: flex; align-items: flex-start; gap: var(--space-3); padding: var(--space-4); border-radius: var(--radius-xl); border: 1px solid color-mix(in srgb, var(--warn) 32%, transparent); background: var(--warn-soft); cursor: pointer; } -.tc-import-consent > span { min-width: 0; display: flex; flex-direction: column; gap: 4px; } -.tc-import-consent strong { font-size: 13px; font-weight: 500; line-height: 20px; } +.tc-import-consent > span { min-width: 0; display: flex; flex-direction: column; gap: 0.25rem; } +.tc-import-consent strong { font-size: 0.8125rem; font-weight: 500; line-height: 1.25rem; } .tc-import-consent .tc-hint { color: var(--warn-text); } .tc-import-progress { display: flex; align-items: center; gap: var(--space-2); } .tc-result-hero[data-state="partial"] .tc-result-mark { background: var(--warn-soft); color: var(--warn-text); } @@ -1156,8 +1156,8 @@ html.tc-locked { overflow: hidden; } .tc-ins-section { min-width: 0; display: flex; flex-direction: column; gap: var(--space-3); } .tc-ins-section-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--space-2); padding: 0 var(--space-4); } .tc-ins-section-head h2 { margin: 0; font-weight: 400; } -.tc-doc-preview .tc-code { border: 0; background: none; padding: 0; max-height: 312px; overflow: auto; } -.tc-ins-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: var(--space-2); min-height: 240px; padding: var(--space-8) var(--space-6); } +.tc-doc-preview .tc-code { border: 0; background: none; padding: 0; max-height: 19.5rem; overflow: auto; } +.tc-ins-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: var(--space-2); min-height: 15rem; padding: var(--space-8) var(--space-6); } .tc-ins-empty > .tc-empty-media { margin: 0 0 var(--space-2); } .tc-ins-empty > .tc-empty-desc { max-width: 36ch; text-wrap: pretty; } .tc-sk-empty-actions .tc-btn { margin-top: 0; } @@ -1167,60 +1167,60 @@ html.tc-locked { overflow: hidden; } @media (max-width: 1023.98px) { .tc-sk-toolbar { margin: 0; } .tc-sk-search { flex: 1 1 100%; min-width: 0; } - .tc-sk-search > .tc-input { min-height: 44px; font-size: 16px; } + .tc-sk-search > .tc-input { min-height: var(--touch); font-size: 1rem; } .tc-sk-search > .tc-kbd, .tc-sk-desktop-filters, .tc-sk-desktop-actions, .tc-sk-table { display: none !important; } /* Keep the scrollport's 4px focus gutter within the library's bounds, without moving its content or increasing the row's layout space. */ - .tc-skills-library { margin-inline: -4px; padding-inline: 4px; } - .tc-sk-agent-chips { display: flex; overflow-x: auto; overscroll-behavior-x: contain; gap: var(--space-2); margin: -4px; padding: 4px 4px 8px; scroll-padding-inline: 4px; } - .tc-sk-agent-chips .tc-chip-btn { min-height: 44px; } + .tc-skills-library { margin-inline: -0.25rem; padding-inline: 0.25rem; } + .tc-sk-agent-chips { display: flex; overflow-x: auto; overscroll-behavior-x: contain; gap: var(--space-2); margin: -0.25rem; padding: 0.25rem 0.25rem 0.5rem; scroll-padding-inline: 4px; } + .tc-sk-agent-chips .tc-chip-btn { min-height: var(--touch); } .tc-sk-phone-list { display: flex; flex-direction: column; gap: var(--space-4); } .tc-prow { width: 100%; text-align: left; appearance: none; border: 0; background: none; cursor: pointer; font: inherit; } .tc-prow + .tc-prow { border-top: 1px solid var(--hairline); } .tc-prow:hover { background: var(--hover); } .tc-prow-agents > span:last-child { overflow-wrap: anywhere; } .tc-plist-group { flex-wrap: wrap; } - .tc-sk-phone-actions { display: flex; align-items: center; gap: var(--space-2); position: fixed; left: 16px; right: 16px; bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px)); z-index: 2; background: var(--surface-raised); border-top: 1px solid var(--border); padding: var(--space-3) 16px; margin: 0 -16px; } - .tc-sk-phone-actions .tc-btn { min-height: 44px; } + .tc-sk-phone-actions { display: flex; align-items: center; gap: var(--space-2); position: fixed; left: 1rem; right: 1rem; bottom: calc(var(--tabbar-h) + env(safe-area-inset-bottom, 0px)); z-index: 2; background: var(--surface-raised); border-top: 1px solid var(--border); padding: var(--space-3) 1rem; margin: 0 -1rem; } + .tc-sk-phone-actions .tc-btn { min-height: var(--touch); } .tc-sk-phone-actions .tc-btn--primary { flex: 1; } - .tc-sk-phone-actions .tc-btn:not(.tc-btn--primary) { font-size: 0; padding: 0; width: 44px; } - .tc-sk-phone-actions .tc-btn:not(.tc-btn--primary) .tc-icon { width: 20px; height: 20px; } + .tc-sk-phone-actions .tc-btn:not(.tc-btn--primary) { font-size: 0; padding: 0; width: var(--touch); } + .tc-sk-phone-actions .tc-btn:not(.tc-btn--primary) .tc-icon { width: 1.25rem; height: 1.25rem; } .tc-sk-notices .tc-notice { flex-wrap: wrap; } - .tc-sk-notices .tc-notice-actions { margin-left: 24px; } + .tc-sk-notices .tc-notice-actions { margin-left: 1.5rem; } .tc-sk-library-foot { margin-bottom: var(--space-2); } .tc-layer--sheet > .tc-skill-inspector { width: 100%; max-height: 92dvh; height: auto; margin: 0; } - .tc-skill-inspector .tc-insp-body { padding: 16px; gap: var(--space-5); } + .tc-skill-inspector .tc-insp-body { padding: 1rem; gap: var(--space-5); } .tc-skill-inspector .tc-insp-foot { padding-bottom: calc(var(--space-3) + env(safe-area-inset-bottom, 0px)); } - .tc-avail-row { grid-template-columns: auto minmax(0, 1fr); padding: 12px 14px; } - .tc-avail-row > .tc-select { grid-column: 1 / -1; width: 100%; min-height: 44px; font-size: 16px; } + .tc-avail-row { grid-template-columns: auto minmax(0, 1fr); padding: 0.75rem 0.875rem; } + .tc-avail-row > .tc-select { grid-column: 1 / -1; width: 100%; min-height: var(--touch); font-size: 1rem; } .tc-avail-row > .tc-cell { grid-column: 2; justify-self: start; } .tc-layer--center > .tc-wizard { max-height: 94dvh; height: 94dvh; width: 100%; max-width: none; border-radius: var(--radius-2xl) var(--radius-2xl) 0 0; } .tc-wizard-head { flex-wrap: wrap; padding: var(--space-4); gap: var(--space-2); } .tc-wizard-head > .tc-tile { display: none; } .tc-wizard-head > .tc-sheet-head-text { flex: 1; min-width: 0; } - .tc-wizard-head > .tc-sheet-head-text .tc-small { font-size: 12px; } - .tc-wizard-head .tc-steps { order: 4; width: 100%; margin: 4px 0 0; } + .tc-wizard-head > .tc-sheet-head-text .tc-small { font-size: 0.75rem; } + .tc-wizard-head .tc-steps { order: 4; width: 100%; margin: 0.25rem 0 0; } .tc-wizard-grid { display: flex; flex-direction: column; overflow-y: auto; min-height: 0; } .tc-wizard-main { flex: 1 0 auto; overflow: visible; padding: var(--space-4); } .tc-wizard-rail-wrap { flex: none; border-left: 0; border-top: 1px solid var(--border); overflow: visible; } - .tc-wizard-rail-toggle { display: block; padding: var(--space-3) var(--space-4); font-size: 13px; font-weight: 500; cursor: pointer; min-height: 44px; } + .tc-wizard-rail-toggle { display: block; padding: var(--space-3) var(--space-4); font-size: 0.8125rem; font-weight: 500; cursor: pointer; min-height: var(--touch); } .tc-wizard-rail { min-height: 0; padding: 0 var(--space-4) var(--space-4); } .tc-wizard-foot { padding: var(--space-3) var(--space-4) calc(var(--space-3) + env(safe-area-inset-bottom, 0px)); } - .tc-wizard-foot .tc-btn { min-height: 44px; } + .tc-wizard-foot .tc-btn { min-height: var(--touch); } .tc-wizard-keyboard { display: none !important; } .tc-picklist { flex: none; } .tc-picklist-body { overflow: visible; } .tc-picklist-head { flex-wrap: wrap; } - .tc-picklist-head .tc-input { flex: 1 1 100%; min-height: 44px; font-size: 16px; } - .tc-pick { grid-template-columns: 18px minmax(0, 1fr); } - .tc-pick-side { grid-column: 2; justify-self: start; min-height: 36px; } - .tc-source-input > .tc-input { height: 44px; font-size: 16px; } - .tc-source-input > .tc-btn { min-height: 36px; } - .tc-route-row { min-height: 64px; } + .tc-picklist-head .tc-input { flex: 1 1 100%; min-height: var(--touch); font-size: 1rem; } + .tc-pick { grid-template-columns: 1.125rem minmax(0, 1fr); } + .tc-pick-side { grid-column: 2; justify-self: start; min-height: 2.25rem; } + .tc-source-input > .tc-input { height: var(--touch); font-size: 1rem; } + .tc-source-input > .tc-btn { min-height: 2.25rem; } + .tc-route-row { min-height: 4rem; } .tc-import-step-head .tc-seg { width: 100%; display: flex; } - .tc-import-step-head .tc-seg button { flex: 1; min-height: 36px; } + .tc-import-step-head .tc-seg button { flex: 1; min-height: 2.25rem; } .tc-ins-grid { grid-template-columns: minmax(0, 1fr); } - .tc-reads-row .tc-seg button { min-height: 36px; font-size: 12px; padding-inline: 4px; } + .tc-reads-row .tc-seg button { min-height: 2.25rem; font-size: 0.75rem; padding-inline: 0.25rem; } } @media (forced-colors: active) { .tc-checkbox { appearance: auto; } @@ -1229,15 +1229,15 @@ html.tc-locked { overflow: hidden; } /* Keep the selection count readable while the source filter stays compact. */ .tc-picklist-head > .tc-hint { white-space: nowrap; } -.tc-picklist-head .tc-input { width: 140px; flex: none; } -.tc-plan-stat > strong { font: 600 22px/28px var(--font-sans); letter-spacing: -0.02em; } +.tc-picklist-head .tc-input { width: 8.75rem; flex: none; } +.tc-plan-stat > strong { font: 600 1.375rem/1.75rem var(--font-sans); letter-spacing: -0.02em; } @media (min-width: 1024px) { .tc-wizard-rail-wrap > .tc-wizard-rail { display: flex; } } @media (max-width: 1023.98px) { .tc-picklist-head .tc-input { flex: 1 1 100%; width: 100%; } - .tc-import-step-head .tc-seg button, .tc-reads-row .tc-seg button, .tc-pick-side, .tc-source-input > .tc-btn { min-height: 44px; } - .tc-skills-library { padding-bottom: 76px; } + .tc-import-step-head .tc-seg button, .tc-reads-row .tc-seg button, .tc-pick-side, .tc-source-input > .tc-btn { min-height: var(--touch); } + .tc-skills-library { padding-bottom: 4.75rem; } .tc-pick-files-foot { flex-wrap: wrap; } } @@ -1247,16 +1247,16 @@ html.tc-locked { overflow: hidden; } body[data-console-route="instructions"] .tc-tabbar, #page-instructions > .tc-page-head { display: none; } #page-instructions { padding-top: 0; } - .tc-instructions-phone-head { display: grid; grid-template-columns: 76px minmax(0, 1fr) 44px; align-items: center; min-height: 52px; margin-inline: -16px; padding-inline: 8px; } - .tc-instructions-phone-head h1 { font-size: 15px; line-height: 22px; font-weight: 600; text-align: center; margin: 0; } - .tc-instructions-phone-head .tc-btn { min-height: 44px; padding: 8px; gap: 4px; } + .tc-instructions-phone-head { display: grid; grid-template-columns: 4.75rem minmax(0, 1fr) var(--touch); align-items: center; min-height: 3.25rem; margin-inline: -1rem; padding-inline: 0.5rem; } + .tc-instructions-phone-head h1 { font-size: 0.9375rem; line-height: 1.375rem; font-weight: 600; text-align: center; margin: 0; } + .tc-instructions-phone-head .tc-btn { min-height: var(--touch); padding: 0.5rem; gap: 0.25rem; } .tc-back-icon { transform: rotate(180deg); } - .tc-sk-phone-notice { display: flex; align-items: center; gap: 10px; border: 1px solid color-mix(in srgb, var(--warn) 32%, transparent); background: var(--warn-soft); color: var(--warn-text); border-radius: var(--radius-xl); padding: 12px 14px; text-align: left; font: inherit; cursor: pointer; } + .tc-sk-phone-notice { display: flex; align-items: center; gap: 0.625rem; border: 1px solid color-mix(in srgb, var(--warn) 32%, transparent); background: var(--warn-soft); color: var(--warn-text); border-radius: var(--radius-xl); padding: 0.75rem 0.875rem; text-align: left; font: inherit; cursor: pointer; } .tc-sk-phone-notice > span { min-width: 0; flex: 1; } .tc-sk-phone-notice strong, .tc-sk-phone-notice > span > span { display: block; } - .tc-sk-phone-notice strong { font-size: 13px; line-height: 20px; font-weight: 500; } - .tc-sk-phone-notice > span > span { font-size: 12px; line-height: 18px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } - .tc-sk-phone-notice > .tc-icon { flex: none; width: 16px; height: 16px; } + .tc-sk-phone-notice strong { font-size: 0.8125rem; line-height: 1.25rem; font-weight: 500; } + .tc-sk-phone-notice > span > span { font-size: 0.75rem; line-height: 1.125rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } + .tc-sk-phone-notice > .tc-icon { flex: none; width: 1rem; height: 1rem; } .tc-sk-notices .tc-sk-skill-notice, .tc-sk-notices > button { display: none; } .tc-sk-phone-actions { bottom: env(safe-area-inset-bottom, 0px); } } @@ -1267,35 +1267,35 @@ html.tc-locked { overflow: hidden; } .tc-pick[data-open] .tc-pick-side > .tc-icon { transform: rotate(180deg); } @media (max-width: 1023.98px) { - #page-instructions { gap: 12px; --_gap: 12px; } - .tc-skills-library { gap: 8px; } + #page-instructions { gap: 0.75rem; --_gap: 0.75rem; } + .tc-skills-library { gap: 0.5rem; } .tc-sk-notices:not(:has(.tc-sk-provider-notice)) { display: none; } - .tc-plist-group { padding-block: 0; min-height: 44px; } - .tc-plist-group .tc-mx-group-toggle { min-height: 44px; } + .tc-plist-group { padding-block: 0; min-height: var(--touch); } + .tc-plist-group .tc-mx-group-toggle { min-height: var(--touch); } .tc-layer--sheet > .tc-skill-inspector { max-height: 80dvh; } .tc-skill-inspector .tc-insp-head > .tc-tile { display: none; } - .tc-skill-inspector .tc-insp-head { padding: 18px 16px 12px; } - .tc-skill-inspector .tc-insp-head h2 { font-size: 16px; line-height: 22px; } - .tc-skill-inspector .tc-insp-body { gap: 20px; } - .tc-avail-row > [data-inspect-copy-to] { grid-column: 2; justify-self: start; min-height: 44px; } + .tc-skill-inspector .tc-insp-head { padding: 1.125rem 1rem 0.75rem; } + .tc-skill-inspector .tc-insp-head h2 { font-size: 1rem; line-height: 1.375rem; } + .tc-skill-inspector .tc-insp-body { gap: 1.25rem; } + .tc-avail-row > [data-inspect-copy-to] { grid-column: 2; justify-self: start; min-height: var(--touch); } .tc-insp-foot > [data-inspect-edit] { flex: 1; } .tc-insp-foot:has([data-inspect-edit]) > .tc-spacer { display: none; } } @media (max-width: 1023.98px) { - .tc-avail-row { grid-template-columns: 24px minmax(0, 1fr) auto; } + .tc-avail-row { grid-template-columns: 1.5rem minmax(0, 1fr) auto; } .tc-avail-row > .tc-cell, .tc-avail-row > [data-inspect-copy-to] { grid-column: 3; grid-row: 1; justify-self: end; } - .tc-avail-row > [data-inspect-copy-to] { max-width: 130px; white-space: normal; text-align: center; } + .tc-avail-row > [data-inspect-copy-to] { max-width: 8.125rem; white-space: normal; text-align: center; } } .tc-import-check-all { display: inline-grid; place-items: center; flex: none; cursor: pointer; } @media (max-width: 1023.98px) { - .tc-import-check-all { min-width: 44px; min-height: 44px; margin-left: -12px; } - .tc-pick-name { min-height: 44px; align-content: center; } + .tc-import-check-all { min-width: var(--touch); min-height: var(--touch); margin-left: -0.75rem; } + .tc-pick-name { min-height: var(--touch); align-content: center; } [data-inspect-close], [data-import-close], .tc-doc-head > button, - .tc-reads-path > .tc-btn { min-width: 44px; min-height: 44px; } + .tc-reads-path > .tc-btn { min-width: var(--touch); min-height: var(--touch); } .tc-doc-preview .tc-btn, .tc-ins-empty > .tc-btn, .tc-sk-empty-actions > .tc-btn, - .tc-skill-inspector .tc-editor-tools > .tc-btn { min-width: 44px; min-height: 44px; } + .tc-skill-inspector .tc-editor-tools > .tc-btn { min-width: var(--touch); min-height: var(--touch); } } .tc-wizard-rail-wrap { display: flex; flex-direction: column; } @@ -1322,14 +1322,14 @@ html.tc-locked { overflow: hidden; } Tokens only, from the console design system. */ /* -------------------------------------------------------------- table --- */ -.tc-mcp-detail { display: flex; align-items: center; gap: 6px; min-width: 0; font: 400 12px/18px var(--font-mono); color: var(--fg-muted); } +.tc-mcp-detail { display: flex; align-items: center; gap: 0.375rem; min-width: 0; font: 400 0.75rem/1.125rem var(--font-mono); color: var(--fg-muted); } .tc-mcp-detail > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; } -.tc-mcp-detail > .tc-icon { width: 12px; height: 12px; flex: none; } -.tc-keys { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 4px; } -.tc-key { display: inline-flex; align-items: center; gap: 4px; height: 18px; padding: 0 5px; border-radius: var(--radius-sm); - background: color-mix(in srgb, var(--fg) 5%, transparent); font: 400 11px/1 var(--font-mono); color: var(--fg-muted); white-space: nowrap; } -.tc-key > .tc-icon { width: 11px; height: 11px; } -.tc-mx-name .tc-badge { height: 18px; font-size: 11px; font-weight: 500; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 5%, transparent); } +.tc-mcp-detail > .tc-icon { width: 0.75rem; height: 0.75rem; flex: none; } +.tc-keys { display: flex; flex-wrap: wrap; gap: 0.25rem; margin-top: 0.25rem; } +.tc-key { display: inline-flex; align-items: center; gap: 0.25rem; height: 1.125rem; padding: 0 0.3125rem; border-radius: var(--radius-sm); + background: color-mix(in srgb, var(--fg) 5%, transparent); font: 400 0.6875rem/1 var(--font-mono); color: var(--fg-muted); white-space: nowrap; } +.tc-key > .tc-icon { width: 0.6875rem; height: 0.6875rem; } +.tc-mx-name .tc-badge { height: 1.125rem; font-size: 0.6875rem; font-weight: 500; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 5%, transparent); } .tc-mx-name .tc-btn--xs { margin-left: 2px; } .tc-cell[data-tone="warn"] { color: var(--warn-text); font-weight: 500; } @@ -1339,111 +1339,111 @@ html.tc-locked { overflow: hidden; } .tc-cell--own { color: var(--fg); cursor: default; } .tc-cell--own > span { color: var(--fg-muted); } -.tc-menu-status { display: flex; gap: 8px; align-items: flex-start; margin: 2px 4px 6px; padding: 8px 10px; border-radius: var(--radius-md); - background: var(--warn-soft); color: var(--warn-text); font-size: 12px; line-height: 17px; } -.tc-menu-status > .tc-icon { width: 14px; height: 14px; flex: none; margin-top: 1px; } +.tc-menu-status { display: flex; gap: 0.5rem; align-items: flex-start; margin: 2px 0.25rem 0.375rem; padding: 0.5rem 0.625rem; border-radius: var(--radius-md); + background: var(--warn-soft); color: var(--warn-text); font-size: 0.75rem; line-height: 1.0625rem; } +.tc-menu-status > .tc-icon { width: 0.875rem; height: 0.875rem; flex: none; margin-top: 1px; } /* ---------------------------------------------------------- inspector --- */ -.tc-layer--sheet > .tc-mcp-inspector { width: min(560px, 100%); } -.tc-avail-row .tc-badge--warn { height: 18px; font-size: 11px; } +.tc-layer--sheet > .tc-mcp-inspector { width: min(35rem, 100%); } +.tc-avail-row .tc-badge--warn { height: 1.125rem; font-size: 0.6875rem; } .tc-avail-row--open { background: color-mix(in srgb, var(--warn) 4%, transparent); } -.tc-diff { grid-column: 2 / -1; margin-top: 10px; border: 1px solid color-mix(in srgb, var(--warn) 30%, var(--border)); border-radius: var(--radius-lg); +.tc-diff { grid-column: 2 / -1; margin-top: 0.625rem; border: 1px solid color-mix(in srgb, var(--warn) 30%, var(--border)); border-radius: var(--radius-lg); background: var(--surface); overflow: hidden; } -[data-theme="dark"] .tc-diff { background: oklch(1 0 0 / 0.02); } -.tc-diff-row { display: grid; grid-template-columns: 88px minmax(0, 1fr); gap: 4px 12px; padding: 9px 12px; font-size: 12px; line-height: 18px; } +[data-theme="dark"] .tc-diff { background: color-mix(in srgb, var(--fg) 2%, transparent); } +.tc-diff-row { display: grid; grid-template-columns: 5.5rem minmax(0, 1fr); gap: 0.25rem 0.75rem; padding: 0.5625rem 0.75rem; font-size: 0.75rem; line-height: 1.125rem; } .tc-diff-row + .tc-diff-row { border-top: 1px solid var(--hairline); } .tc-diff-label { color: var(--fg-muted); } -.tc-diff-vals { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 2px 10px; min-width: 0; } +.tc-diff-vals { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 2px 0.625rem; min-width: 0; } .tc-diff-who { color: var(--fg-muted); white-space: nowrap; } -.tc-diff-vals code { font-size: 12px; color: var(--fg); overflow-wrap: anywhere; } -.tc-diff-vals mark { background: var(--warn-soft); color: var(--warn-text); border-radius: 3px; padding: 0 1px; } -.tc-diff-foot { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 8px 10px 8px 12px; border-top: 1px solid var(--hairline); +.tc-diff-vals code { font-size: 0.75rem; color: var(--fg); overflow-wrap: anywhere; } +.tc-diff-vals mark { background: var(--warn-soft); color: var(--warn-text); border-radius: 0.1875rem; padding: 0 1px; } +.tc-diff-foot { display: flex; align-items: center; gap: 0.375rem; flex-wrap: wrap; padding: 0.5rem 0.625rem 0.5rem 0.75rem; border-top: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } .tc-diff-foot .tc-hint { margin-right: auto; } .tc-signin { list-style: none; margin: 0; padding: 0; } -.tc-signin li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 10px; padding: 8px 14px; font-size: 13px; } +.tc-signin li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 0.625rem; padding: 0.5rem 0.875rem; font-size: 0.8125rem; } .tc-signin li + li { border-top: 1px solid var(--hairline); } -.tc-signin .tc-tile { width: 20px; height: 20px; } +.tc-signin .tc-tile { width: 1.25rem; height: 1.25rem; } .tc-signin code { color: var(--fg); } .tc-secret-val { letter-spacing: 0.12em; color: var(--fg-muted); } /* ------------------------------------------------------------- editor --- */ -.tc-form { display: flex; flex-direction: column; gap: 18px; min-height: 0; } -.tc-form-field { display: flex; flex-direction: column; gap: 6px; min-width: 0; } -.tc-form-field > .tc-label { display: flex; align-items: center; gap: 8px; } +.tc-form { display: flex; flex-direction: column; gap: 1.125rem; min-height: 0; } +.tc-form-field { display: flex; flex-direction: column; gap: 0.375rem; min-width: 0; } +.tc-form-field > .tc-label { display: flex; align-items: center; gap: 0.5rem; } .tc-form-field > .tc-label .tc-spacer + * { font-weight: 400; } -.tc-form-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: end; } -.tc-form .tc-input { height: 32px; } -.tc-form .tc-input.tc-input--mono { font-family: var(--font-mono); font-size: 13px; } +.tc-form-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.75rem; align-items: end; } +.tc-form .tc-input { height: 2rem; } +.tc-form .tc-input.tc-input--mono { font-family: var(--font-mono); font-size: 0.8125rem; } .tc-paste { position: relative; border-radius: var(--radius-lg); border: 1px dashed var(--border-strong); background: var(--surface-sunken); - padding: 10px 12px; font: 400 12px/18px var(--font-mono); color: var(--fg); white-space: pre; overflow: hidden; } -.tc-paste-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; line-height: 18px; color: var(--fg-muted); } -.tc-paste-meta > .tc-icon { width: 14px; height: 14px; color: var(--ok); } + padding: 0.625rem 0.75rem; font: 400 0.75rem/1.125rem var(--font-mono); color: var(--fg); white-space: pre; overflow: hidden; } +.tc-paste-meta { display: flex; align-items: center; gap: 0.375rem; flex-wrap: wrap; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } +.tc-paste-meta > .tc-icon { width: 0.875rem; height: 0.875rem; color: var(--ok); } .tc-paste-meta strong { color: var(--fg); font-weight: 500; } -.tc-argv { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; font-size: 12px; color: var(--fg-muted); } -.tc-arg { display: inline-flex; align-items: center; height: 20px; padding: 0 6px; border-radius: var(--radius-xs); border: 1px solid var(--border); - background: var(--surface); font: 400 11.5px/1 var(--font-mono); color: var(--fg); } -[data-theme="dark"] .tc-arg { background: oklch(1 0 0 / 0.03); } +.tc-argv { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem; font-size: 0.75rem; color: var(--fg-muted); } +.tc-arg { display: inline-flex; align-items: center; height: 1.25rem; padding: 0 0.375rem; border-radius: var(--radius-xs); border: 1px solid var(--border); + background: var(--surface); font: 400 0.71875rem/1 var(--font-mono); color: var(--fg); } +[data-theme="dark"] .tc-arg { background: color-mix(in srgb, var(--fg) 3%, transparent); } .tc-arg--exe { border-color: color-mix(in srgb, var(--accent) 35%, var(--border)); color: var(--accent-text); } -.tc-argv .tc-btn--link { font-size: 12px; color: var(--fg-muted); margin-left: auto; } +.tc-argv .tc-btn--link { font-size: 0.75rem; color: var(--fg-muted); margin-left: auto; } .tc-kvs { border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); overflow: hidden; } -[data-theme="dark"] .tc-kvs { background: oklch(1 0 0 / 0.02); } -.tc-kv-row { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.4fr) 28px; gap: 6px; padding: 6px; align-items: center; } +[data-theme="dark"] .tc-kvs { background: color-mix(in srgb, var(--fg) 2%, transparent); } +.tc-kv-row { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.4fr) 1.75rem; gap: 0.375rem; padding: 0.375rem; align-items: center; } .tc-kv-row + .tc-kv-row { border-top: 1px solid var(--hairline); } -.tc-kv-row .tc-input { height: 28px; font-family: var(--font-mono); font-size: 12.5px; padding: 0 9px; } +.tc-kv-row .tc-input { height: 1.75rem; font-family: var(--font-mono); font-size: 0.78125rem; padding: 0 0.5625rem; } .tc-secret { position: relative; display: flex; min-width: 0; } -.tc-secret > .tc-input { padding-right: 32px; } -.tc-secret > .tc-btn { position: absolute; right: 2px; top: 2px; width: 24px; height: 24px; } -.tc-kv-foot { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-top: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2%, transparent); } +.tc-secret > .tc-input { padding-right: 2rem; } +.tc-secret > .tc-btn { position: absolute; right: 2px; top: 2px; width: 1.5rem; height: 1.5rem; } +.tc-kv-foot { display: flex; align-items: center; gap: 0.5rem; padding: 0.375rem 0.5rem; border-top: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2%, transparent); } .tc-kv-foot .tc-hint { margin-left: auto; } -.tc-changed { display: inline-flex; align-items: center; height: 18px; padding: 0 5px; border-radius: var(--radius-sm); background: var(--info-soft); - color: var(--info-text); font-size: 11px; font-weight: 500; } +.tc-changed { display: inline-flex; align-items: center; height: 1.125rem; padding: 0 0.3125rem; border-radius: var(--radius-sm); background: var(--info-soft); + color: var(--info-text); font-size: 0.6875rem; font-weight: 500; } /* Rail rows: who gets the server, and what saving does to each agent. */ .tc-agentpick { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: var(--radius-xl); background: var(--surface); overflow: hidden; } -[data-theme="dark"] .tc-agentpick { background: oklch(1 0 0 / 0.02); } -.tc-agentpick-row { display: grid; grid-template-columns: 18px auto minmax(0, 1fr); gap: 2px 10px; align-items: center; padding: 9px 12px; } +[data-theme="dark"] .tc-agentpick { background: color-mix(in srgb, var(--fg) 2%, transparent); } +.tc-agentpick-row { display: grid; grid-template-columns: 1.125rem auto minmax(0, 1fr); gap: 2px 0.625rem; align-items: center; padding: 0.5625rem 0.75rem; } .tc-agentpick-row + .tc-agentpick-row { border-top: 1px solid var(--hairline); } .tc-agentpick-row .tc-checkbox { margin: 0; } .tc-agentpick-row .tc-row-main { gap: 0; } -.tc-agentpick-row .tc-avail-name { font-size: 13px; } -.tc-agentpick-row .tc-avail-note { font-size: 11.5px; line-height: 16px; } +.tc-agentpick-row .tc-avail-name { font-size: 0.8125rem; } +.tc-agentpick-row .tc-avail-note { font-size: 0.71875rem; line-height: 1rem; } .tc-agentpick-row[data-tone="warn"] .tc-avail-note { color: var(--warn-text); } .tc-agentpick-row[data-off="true"] .tc-avail-name { color: var(--fg-muted); font-weight: 400; } /* Version choice when sharing an agent's own server. */ -.tc-choice { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 4px 12px; padding: 12px 14px; border: 1px solid var(--border); +.tc-choice { display: grid; grid-template-columns: 1.125rem minmax(0, 1fr); gap: 0.25rem 0.75rem; padding: 0.75rem 0.875rem; border: 1px solid var(--border); border-radius: var(--radius-xl); background: var(--surface); cursor: pointer; } -[data-theme="dark"] .tc-choice { background: oklch(1 0 0 / 0.02); } +[data-theme="dark"] .tc-choice { background: color-mix(in srgb, var(--fg) 2%, transparent); } .tc-choice[data-checked="true"] { border-color: color-mix(in srgb, var(--accent) 60%, var(--border)); box-shadow: 0 0 0 3px var(--accent-soft); } -.tc-choice input[type="radio"] { appearance: none; -webkit-appearance: none; width: 16px; height: 16px; margin: 2px 0 0; border-radius: 50%; +.tc-choice input[type="radio"] { appearance: none; -webkit-appearance: none; width: 1rem; height: 1rem; margin: 2px 0 0; border-radius: 50%; border: 1px solid var(--border-strong); background: var(--bg); display: grid; place-items: center; } .tc-choice input[type="radio"]:checked { border: 5px solid var(--accent); background: var(--on-accent); } -.tc-choice-head { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 500; } -.tc-choice-head .tc-tile { width: 20px; height: 20px; } -.tc-choice-body { grid-column: 2; display: flex; flex-direction: column; gap: 4px; min-width: 0; } +.tc-choice-head { display: flex; align-items: center; gap: 0.5rem; font-size: 0.875rem; font-weight: 500; } +.tc-choice-head .tc-tile { width: 1.25rem; height: 1.25rem; } +.tc-choice-body { grid-column: 2; display: flex; flex-direction: column; gap: 0.25rem; min-width: 0; } /* Remove confirmation. */ -.tc-mcp-remove { width: min(460px, 100%); } -.tc-dialog-list { list-style: none; margin: 4px 0 0; padding: 0; border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; } -.tc-dialog-list li { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 2px 10px; padding: 8px 12px; font-size: 13px; } +.tc-mcp-remove { width: min(28.75rem, 100%); } +.tc-dialog-list { list-style: none; margin: 0.25rem 0 0; padding: 0; border: 1px solid var(--border); border-radius: var(--radius-lg); overflow: hidden; } +.tc-dialog-list li { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 2px 0.625rem; padding: 0.5rem 0.75rem; font-size: 0.8125rem; } .tc-dialog-list li + li { border-top: 1px solid var(--hairline); } -.tc-dialog-list .tc-tile { width: 20px; height: 20px; } -.tc-dialog-list code { color: var(--fg-muted); font-size: 12px; } +.tc-dialog-list .tc-tile { width: 1.25rem; height: 1.25rem; } +.tc-dialog-list code { color: var(--fg-muted); font-size: 0.75rem; } /* --------------------------------------------------------------- phone --- */ -.tc-prow-detail { grid-column: 1; margin: 0; font: 400 12px/18px var(--font-mono); color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-prow-name-line { display: flex; align-items: center; gap: 6px; min-width: 0; } -.tc-prow-name-line .tc-badge { height: 18px; font-size: 11px; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 5%, transparent); } +.tc-prow-detail { grid-column: 1; margin: 0; font: 400 0.75rem/1.125rem var(--font-mono); color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.tc-prow-name-line { display: flex; align-items: center; gap: 0.375rem; min-width: 0; } +.tc-prow-name-line .tc-badge { height: 1.125rem; font-size: 0.6875rem; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 5%, transparent); } .tc-prow-agents .tc-warnline { color: var(--warn-text); } -.tc-mx-name > a.tc-btn { height: 24px; font-size: 12px; font-weight: 500; line-height: 1; color: var(--fg); text-decoration: none; } +.tc-mx-name > a.tc-btn { height: 1.5rem; font-size: 0.75rem; font-weight: 500; line-height: 1; color: var(--fg); text-decoration: none; } .tc-mx-name > a.tc-btn:hover { text-decoration: none; } .tc-mcp-detail--prose { font-family: var(--font-sans); } /* Inherited and own-entry cells are facts, not controls. */ @@ -1459,33 +1459,33 @@ html.tc-locked { overflow: hidden; } .tc-mcp-library .tc-sk-desktop-filters { display: flex; align-items: center; gap: var(--space-2); } .tc-mcp-table .tc-mx-head { position: relative; } .tc-mcp-table .tc-mx-agent-name { min-width: 0; } -.tc-mcp-table .tc-mx-agent-name .tc-tile { width: 20px; height: 20px; } +.tc-mcp-table .tc-mx-agent-name .tc-tile { width: 1.25rem; height: 1.25rem; } .tc-mcp-table .tc-key { max-width: 100%; overflow: hidden; text-overflow: ellipsis; } -.tc-mcp-loading, .tc-mcp-diff-loading { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-4); color: var(--fg-muted); font-size: 13px; } +.tc-mcp-loading, .tc-mcp-diff-loading { display: flex; align-items: center; gap: var(--space-2); padding: var(--space-4); color: var(--fg-muted); font-size: 0.8125rem; } .tc-cell--error, .tc-cell--unsupported { color: var(--fg-muted); cursor: help; } -.tc-cell--via { font-size: 12px; } +.tc-cell--via { font-size: 0.75rem; } .tc-mcp-library .tc-warning, .tc-mcp-editor .tc-warning, .tc-mcp-inspector .tc-warning, .tc-mcp-remove .tc-warning { color: var(--warn-text); } .tc-mcp-inspect-actions { display: flex; align-items: center; gap: var(--space-1); } -.tc-mcp-inspector .tc-pathlist { grid-template-columns: 82px minmax(0, 1fr); } +.tc-mcp-inspector .tc-pathlist { grid-template-columns: 5.125rem minmax(0, 1fr); } .tc-mcp-connection dd { flex-wrap: wrap; } .tc-mcp-connection dd > .tc-btn { margin-left: auto; flex: none; } -.tc-mcp-secret-value { overflow-wrap: anywhere; font-family: var(--font-mono); font-size: 12px; min-width: 0; } -.tc-mcp-path { overflow-wrap: anywhere; font-size: 12px; color: var(--fg-muted); } -.tc-mcp-inspector .tc-signin code { overflow-wrap: anywhere; min-width: 0; font-size: 12px; } +.tc-mcp-secret-value { overflow-wrap: anywhere; font-family: var(--font-mono); font-size: 0.75rem; min-width: 0; } +.tc-mcp-path { overflow-wrap: anywhere; font-size: 0.75rem; color: var(--fg-muted); } +.tc-mcp-inspector .tc-signin code { overflow-wrap: anywhere; min-width: 0; font-size: 0.75rem; } .tc-mcp-inspector .tc-insp-section h3 { margin: 0; font-weight: 400; } .tc-mcp-editor .tc-form-field .tc-label { flex-wrap: wrap; } .tc-mcp-editor .tc-form-row { grid-template-columns: minmax(0, 1fr) auto; } -.tc-mcp-editor .tc-form > .tc-hint { margin-top: -12px; } +.tc-mcp-editor .tc-form > .tc-hint { margin-top: -0.75rem; } .tc-mcp-editor .tc-form-field .tc-hint, .tc-mcp-editor .tc-wizard-rail .tc-hint { margin: 0; } -.tc-mcp-editor .tc-form-field > .tc-label > .tc-hint { font-weight: 400; font-size: 11.5px; } -.tc-mcp-editor .tc-paste { height: auto; min-height: 104px; resize: vertical; overflow: auto; white-space: pre-wrap; } -.tc-mcp-editor .tc-secret > .tc-input { padding-right: 32px; } -.tc-mcp-editor .tc-mcp-secret-input { resize: vertical; min-height: 28px; height: 28px; line-height: 18px; padding-block: 4px; overflow: auto; } +.tc-mcp-editor .tc-form-field > .tc-label > .tc-hint { font-weight: 400; font-size: 0.71875rem; } +.tc-mcp-editor .tc-paste { height: auto; min-height: 6.5rem; resize: vertical; overflow: auto; white-space: pre-wrap; } +.tc-mcp-editor .tc-secret > .tc-input { padding-right: 2rem; } +.tc-mcp-editor .tc-mcp-secret-input { resize: vertical; min-height: 1.75rem; height: 1.75rem; line-height: 1.125rem; padding-block: 0.25rem; overflow: auto; } .tc-mcp-argument { display: flex; align-items: center; gap: var(--space-2); } -.tc-mcp-argument > .tc-input { resize: vertical; height: auto; min-height: 32px; font-size: 12px; } -.tc-mcp-argument .tc-hint { flex: none; font-size: 11px; } +.tc-mcp-argument > .tc-input { resize: vertical; height: auto; min-height: 2rem; font-size: 0.75rem; } +.tc-mcp-argument .tc-hint { flex: none; font-size: 0.6875rem; } .tc-mcp-arguments { display: flex; flex-direction: column; gap: var(--space-2); } -.tc-mcp-editor .tc-arg { max-width: 100%; height: auto; min-height: 20px; overflow-wrap: anywhere; white-space: pre-wrap; } +.tc-mcp-editor .tc-arg { max-width: 100%; height: auto; min-height: 1.25rem; overflow-wrap: anywhere; white-space: pre-wrap; } .tc-mcp-editor .tc-choice code { overflow-wrap: anywhere; min-width: 0; } .tc-mcp-editor .tc-choice-head { flex-wrap: wrap; } .tc-mcp-editor .tc-agentpick-row .tc-avail-note { overflow-wrap: anywhere; } @@ -1504,25 +1504,25 @@ html.tc-locked { overflow: hidden; } .tc-mcp-inspector .tc-diff { grid-column: 1 / -1; } .tc-mcp-inspector .tc-diff-row { grid-template-columns: minmax(0, 1fr); } .tc-mcp-inspector .tc-diff-vals { grid-template-columns: minmax(0, 1fr); } - .tc-mcp-inspector .tc-diff-foot > .tc-btn { min-height: 44px; flex: 1; white-space: normal; } + .tc-mcp-inspector .tc-diff-foot > .tc-btn { min-height: var(--touch); flex: 1; white-space: normal; } .tc-mcp-inspector .tc-avail-row > .tc-mcp-inspect-actions { grid-column: 1 / -1; justify-content: flex-end; } - .tc-mcp-inspector .tc-avail-row > .tc-btn { grid-column: 2; justify-self: start; min-height: 44px; } + .tc-mcp-inspector .tc-avail-row > .tc-btn { grid-column: 2; justify-self: start; min-height: var(--touch); } .tc-mcp-inspector .tc-mcp-inspector-remove { display: none; } - .tc-mcp-inspector .tc-insp-foot > .tc-btn { min-height: 44px; } + .tc-mcp-inspector .tc-insp-foot > .tc-btn { min-height: var(--touch); } .tc-mcp-editor .tc-form-row { grid-template-columns: minmax(0, 1fr); } - .tc-mcp-editor .tc-input, .tc-mcp-editor .tc-kv-row .tc-input { min-height: 44px; height: auto; font-size: 16px; } - .tc-mcp-editor .tc-paste { min-height: 120px; font-size: 13px; } - .tc-mcp-editor .tc-mcp-secret-input { padding-block: 12px; } - .tc-mcp-editor .tc-secret > .tc-input { padding-right: 44px; } - .tc-mcp-editor .tc-secret > .tc-btn { min-width: 40px; min-height: 40px; } - .tc-mcp-editor .tc-kv-row { grid-template-columns: minmax(0, 1fr) 44px; gap: var(--space-2); } + .tc-mcp-editor .tc-input, .tc-mcp-editor .tc-kv-row .tc-input { min-height: var(--touch); height: auto; font-size: 1rem; } + .tc-mcp-editor .tc-paste { min-height: 7.5rem; font-size: 0.8125rem; } + .tc-mcp-editor .tc-mcp-secret-input { padding-block: 0.75rem; } + .tc-mcp-editor .tc-secret > .tc-input { padding-right: 2.75rem; } + .tc-mcp-editor .tc-secret > .tc-btn { min-width: 2.5rem; min-height: 2.5rem; } + .tc-mcp-editor .tc-kv-row { grid-template-columns: minmax(0, 1fr) var(--touch); gap: var(--space-2); } .tc-mcp-editor .tc-kv-row > .tc-input { grid-column: 1; } .tc-mcp-editor .tc-kv-row > .tc-secret { grid-column: 1; } - .tc-mcp-editor .tc-kv-row > .tc-btn { grid-column: 2; grid-row: 1 / 3; min-width: 44px; min-height: 44px; } - .tc-mcp-editor .tc-kv-foot .tc-btn, .tc-mcp-editor .tc-argv .tc-btn, .tc-mcp-editor .tc-seg button { min-height: 44px; } + .tc-mcp-editor .tc-kv-row > .tc-btn { grid-column: 2; grid-row: 1 / 3; min-width: var(--touch); min-height: var(--touch); } + .tc-mcp-editor .tc-kv-foot .tc-btn, .tc-mcp-editor .tc-argv .tc-btn, .tc-mcp-editor .tc-seg button { min-height: var(--touch); } .tc-mcp-editor .tc-argv .tc-btn { margin-left: 0; } .tc-mcp-editor .tc-choice { padding: var(--space-4); } - .tc-mcp-editor .tc-choice-head { font-size: 14px; } + .tc-mcp-editor .tc-choice-head { font-size: 0.875rem; } .tc-mcp-editor .tc-agentpick-row { padding: var(--space-3); } .tc-mcp-editor .tc-wizard-foot .tc-btn--primary { white-space: normal; } .tc-mcp-editor .tc-form-field > .tc-label > .tc-spacer { display: none; } @@ -1530,9 +1530,9 @@ html.tc-locked { overflow: hidden; } } .tc-mcp-editor .tc-choice--summary { grid-template-columns: minmax(0, 1fr); cursor: default; } .tc-mcp-editor .tc-choice--summary .tc-choice-body { grid-column: 1; } -.tc-mcp-editor .tc-wizard-head > .tc-tile { width: 36px; height: 36px; flex: none; border: 1px solid var(--border); border-radius: var(--radius-lg); } +.tc-mcp-editor .tc-wizard-head > .tc-tile { width: 2.25rem; height: 2.25rem; flex: none; border: 1px solid var(--border); border-radius: var(--radius-lg); } @media (max-width: 1023.98px) { - #page-mcp { padding-top: 0; gap: 12px; --_gap: 12px; } + #page-mcp { padding-top: 0; gap: 0.75rem; --_gap: 0.75rem; } } @media (max-width: 1023.98px) { body[data-console-route="mcp"] .tc-phonebar, @@ -1541,7 +1541,7 @@ html.tc-locked { overflow: hidden; } .tc-mcp-editor .tc-wizard-head > .tc-sheet-head-text { flex: 1; } } .tc-mcp-editor .tc-mcp-secret-input { white-space: pre; scrollbar-width: none; } -.tc-mcp-editor textarea.tc-mcp-secret-input { height: auto; min-height: 56px; } +.tc-mcp-editor textarea.tc-mcp-secret-input { height: auto; min-height: 3.5rem; } .tc-mcp-table .tc-mx[data-no-agents="true"] { --mx-cols: minmax(0, 1fr); min-width: 0; } @media (max-width: 1023.98px) { .tc-mcp-library .tc-sk-agent-chips { scrollbar-width: none; } @@ -1550,10 +1550,10 @@ html.tc-locked { overflow: hidden; } cannot cover an inspector policy or a dialog’s Save/Cancel controls. */ .tc-root:has(.tc-mcp-inspector, .tc-mcp-editor, .tc-mcp-remove) .tc-toaster { visibility: hidden; } #page-mcp .tc-page-sub { max-width: none; } -.tc-mcp-table > .tc-sk-library-foot { padding: 12px 16px; border-top: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } +.tc-mcp-table > .tc-sk-library-foot { padding: 0.75rem 1rem; border-top: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } .tc-mcp-mobile-footer { display: none; } @media (min-width: 1024px) { - #page-mcp { gap: 20px; --_gap: 20px; } + #page-mcp { gap: 1.25rem; --_gap: 1.25rem; } .tc-layer--sheet:has(> .tc-mcp-inspector) { padding: 0; } .tc-layer--sheet > .tc-mcp-inspector { height: 100dvh; max-height: 100dvh; margin: 0; border-radius: 0; } } @@ -1561,18 +1561,18 @@ html.tc-locked { overflow: hidden; } .tc-mcp-mobile-footer { display: block; } } .tc-mcp-phone-menu { display: none; } -.tc-mcp-remove .tc-dialog-list li > span { display: flex; align-items: baseline; flex-wrap: wrap; gap: 2px 4px; min-width: 0; } +.tc-mcp-remove .tc-dialog-list li > span { display: flex; align-items: baseline; flex-wrap: wrap; gap: 2px 0.25rem; min-width: 0; } .tc-mcp-remove .tc-dialog-list code { overflow-wrap: anywhere; } @media (max-width: 1023.98px) { .tc-mcp-inspector [data-mcp-menu-head] { display: none; } .tc-mcp-inspector .tc-insp-foot > .tc-spacer { display: none; } - .tc-mcp-inspector .tc-insp-foot > .tc-mcp-phone-menu { display: inline-flex; min-width: 44px; } + .tc-mcp-inspector .tc-insp-foot > .tc-mcp-phone-menu { display: inline-flex; min-width: var(--touch); } .tc-mcp-inspector .tc-insp-foot > [data-mcp-inspect="edit"] { flex: 1; } } -@media (min-width: 1024px) { .tc-mcp-editor .tc-paste { min-height: 112px; } } +@media (min-width: 1024px) { .tc-mcp-editor .tc-paste { min-height: 7rem; } } @media (max-width: 1023.98px) { .tc-mcp-library .tc-sk-notices { display: none; } - .tc-mcp-library .tc-mcp-phone-attention { display: flex; min-height: 60px; } + .tc-mcp-library .tc-mcp-phone-attention { display: flex; min-height: 3.75rem; } } /* Skill updates and plugin hooks: additions on top of the Skills library @@ -1581,25 +1581,25 @@ html.tc-locked { overflow: hidden; } /* ------------------------------------------------------ list header --- */ /* The library card gets its own header: status filters on the left, update checking and view options on the right. Replaces the PR's options row. */ -.tc-lh { display: flex; align-items: center; gap: 8px; min-height: 48px; padding: 0 8px 0 8px; } +.tc-lh { display: flex; align-items: center; flex-wrap: wrap; gap: 0.5rem; min-height: 3rem; padding: 0.375rem 0.5rem; } .tc-lh-filters { display: flex; align-items: center; gap: 2px; } -.tc-lh-filter { display: inline-flex; align-items: center; gap: 6px; height: 30px; padding: 0 10px; border: 0; border-radius: var(--radius-md); - background: none; color: var(--fg-muted); font: inherit; font-size: 13px; font-weight: 500; white-space: nowrap; cursor: pointer; text-decoration: none !important; } +.tc-lh-filter { display: inline-flex; align-items: center; gap: 0.375rem; height: 1.875rem; padding: 0 0.625rem; border: 0; border-radius: var(--radius-md); + background: none; color: var(--fg-muted); font: inherit; font-size: 0.8125rem; font-weight: 500; white-space: nowrap; cursor: pointer; text-decoration: none !important; } .tc-lh-filter:hover { color: var(--fg); background: var(--hover); } .tc-lh-filter[aria-pressed="true"] { color: var(--fg); background: color-mix(in srgb, var(--fg) 7%, transparent); } .tc-lh-filter .tc-dot { margin: 0; } -.tc-lh-filter .tc-tab-count { font-size: 11.5px; } +.tc-lh-filter .tc-tab-count { font-size: 0.71875rem; } .tc-lh-filter[data-tone="accent"] .tc-dot { color: var(--accent); } -.tc-lh-sep { width: 1px; height: 18px; background: var(--border); margin: 0 4px; flex: none; } -.tc-lh-status { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; line-height: 16px; color: var(--fg-muted); white-space: nowrap; } -.tc-lh-status .tc-spinner { width: 12px; height: 12px; border-width: 1.5px; color: var(--fg-muted); } +.tc-lh-sep { width: 1px; height: 1.125rem; background: var(--border); margin: 0 0.25rem; flex: none; } +.tc-lh-status { display: inline-flex; align-items: center; gap: 0.375rem; font-size: 0.75rem; line-height: 1rem; color: var(--fg-muted); white-space: nowrap; } +.tc-lh-status .tc-spinner { width: 0.75rem; height: 0.75rem; border-width: 1.5px; color: var(--fg-muted); } .tc-lh-view { position: relative; } .tc-menu[aria-label="Skill view options"] { width: min(328px, calc(100vw - 16px)); } .tc-lh ~ .tc-mx .tc-mx-head { border-radius: 0; } .tc-lh .tc-btn[aria-expanded="true"] { background: var(--surface); border-color: var(--focus); box-shadow: 0 0 0 3px color-mix(in srgb, var(--focus) 20%, transparent); } /* Menu items that are checkboxes rather than radios share the check mark. */ -.tc-menu-item[role="menuitemcheckbox"] { align-items: flex-start; padding-top: 6px; padding-bottom: 6px; } +.tc-menu-item[role="menuitemcheckbox"] { align-items: flex-start; padding-top: 0.375rem; padding-bottom: 0.375rem; } /* ---------------------------------------------------------- rows ------ */ /* A tracked skill names its repository in the name line. */ @@ -1608,10 +1608,10 @@ html.tc-locked { overflow: hidden; } .tc-tagline--src[data-tone="warn"] code { color: var(--warn-text); } /* The update itself is a small accent button, the row's one call to action. */ -.tc-upd { display: inline-flex; align-items: center; gap: 4px; height: 20px; padding: 0 8px 0 6px; border-radius: var(--radius-full); +.tc-upd { display: inline-flex; align-items: center; gap: 0.25rem; height: 1.25rem; padding: 0 0.5rem 0 0.375rem; border-radius: var(--radius-full); border: 1px solid color-mix(in srgb, var(--accent) 28%, transparent); background: var(--accent-soft); color: var(--accent-text); - font: 500 11.5px/1 var(--font-sans); white-space: nowrap; cursor: pointer; text-decoration: none !important; } -.tc-upd .tc-icon { width: 12px; height: 12px; } + font: 500 0.71875rem/1 var(--font-sans); white-space: nowrap; cursor: pointer; text-decoration: none !important; } +.tc-upd .tc-icon { width: 0.75rem; height: 0.75rem; } .tc-upd:hover { border-color: color-mix(in srgb, var(--accent) 50%, transparent); } [data-theme="dark"] .tc-upd { color: color-mix(in srgb, var(--accent-text) 60%, white); } @@ -1619,83 +1619,83 @@ html.tc-locked { overflow: hidden; } .tc-mx-actions .tc-btn--sm { white-space: nowrap; } /* Plugin groups carry their hooks. */ -.tc-mx-group .tc-hookchip, .tc-plist-group .tc-hookchip { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 8px; border-radius: var(--radius-sm); - border: 1px solid color-mix(in srgb, var(--warn) 36%, transparent); background: var(--warn-soft); color: var(--warn-text); font: inherit; font-size: 12px; font-weight: 500; cursor: pointer; white-space: nowrap; } -.tc-mx-group .tc-hookchip .tc-icon, .tc-plist-group .tc-hookchip .tc-icon { width: 13px; height: 13px; } +.tc-mx-group .tc-hookchip, .tc-plist-group .tc-hookchip { display: inline-flex; align-items: center; gap: 0.375rem; height: 1.625rem; padding: 0 0.5rem; border-radius: var(--radius-sm); + border: 1px solid color-mix(in srgb, var(--warn) 36%, transparent); background: var(--warn-soft); color: var(--warn-text); font: inherit; font-size: 0.75rem; font-weight: 500; cursor: pointer; white-space: nowrap; } +.tc-mx-group .tc-hookchip .tc-icon, .tc-plist-group .tc-hookchip .tc-icon { width: 0.8125rem; height: 0.8125rem; } .tc-mx-group .tc-hookchip span, .tc-plist-group .tc-hookchip span { font-weight: 400; opacity: 0.85; } /* Hidden bundled skills: a quiet last row instead of a permanent switch. */ -.tc-mx-hidden { display: flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 16px; border-top: 1px solid var(--border); - font-size: 12px; line-height: 18px; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 1.5%, transparent); } -.tc-mx-hidden .tc-icon { width: 14px; height: 14px; } +.tc-mx-hidden { display: flex; align-items: center; gap: 0.5rem; min-height: var(--touch); padding: 0 1rem; border-top: 1px solid var(--border); + font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 1.5%, transparent); } +.tc-mx-hidden .tc-icon { width: 0.875rem; height: 0.875rem; } .tc-mx-hidden .tc-mono { color: var(--fg-subtle); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; } .tc-mx-head .tc-mx-more { font-weight: 500; } /* ------------------------------------------------------ review dialog -- */ -.tc-ur { position: relative; z-index: 1; width: 1040px; max-width: 100%; height: 812px; max-height: 100%; display: flex; flex-direction: column; +.tc-ur { position: relative; z-index: 1; width: 65rem; max-width: 100%; height: 50.75rem; max-height: 100%; display: flex; flex-direction: column; border-radius: var(--radius-2xl); overflow: hidden; background: var(--surface-raised); border: 1px solid var(--border); box-shadow: var(--shadow-dialog); } -.tc-ur-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 16px 14px 20px; } -.tc-ur-head .tc-tile--icon { width: 36px; height: 36px; border-radius: var(--radius-md); background: var(--accent-soft); color: var(--accent-text); border: 1px solid color-mix(in srgb, var(--accent) 22%, transparent); } +.tc-ur-head { display: flex; align-items: flex-start; gap: 0.75rem; padding: 1.125rem 1rem 0.875rem 1.25rem; } +.tc-ur-head .tc-tile--icon { width: 2.25rem; height: 2.25rem; border-radius: var(--radius-md); background: var(--accent-soft); color: var(--accent-text); border: 1px solid color-mix(in srgb, var(--accent) 22%, transparent); } [data-theme="dark"] .tc-ur-head .tc-tile--icon { color: color-mix(in srgb, var(--accent-text) 60%, white); } -.tc-ur-head .tc-tile--icon .tc-icon { width: 18px; height: 18px; } +.tc-ur-head .tc-tile--icon .tc-icon { width: 1.125rem; height: 1.125rem; } .tc-ur-title { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; } -.tc-ur-title h2 { margin: 0; font-size: 17px; line-height: 24px; font-weight: 600; } -.tc-ur-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12px; line-height: 18px; color: var(--fg-muted); } -.tc-ur-meta code { font-size: 12px; color: var(--fg); } -.tc-ur-meta .tc-icon { width: 13px; height: 13px; } -.tc-ur-queue { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 4px 0 10px; border-radius: var(--radius-full); border: 1px solid var(--border); font-size: 12px; color: var(--fg-muted); white-space: nowrap; } +.tc-ur-title h2 { margin: 0; font-size: 1.0625rem; line-height: 1.5rem; font-weight: 600; } +.tc-ur-meta { display: flex; align-items: center; gap: 0.375rem; flex-wrap: wrap; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } +.tc-ur-meta code { font-size: 0.75rem; color: var(--fg); } +.tc-ur-meta .tc-icon { width: 0.8125rem; height: 0.8125rem; } +.tc-ur-queue { display: inline-flex; align-items: center; gap: 0.375rem; height: 1.75rem; padding: 0 0.25rem 0 0.625rem; border-radius: var(--radius-full); border: 1px solid var(--border); font-size: 0.75rem; color: var(--fg-muted); white-space: nowrap; } .tc-ur-queue strong { color: var(--fg); font-weight: 500; } -.tc-ur-facts { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr) minmax(0, 1.5fr); margin: 0 20px; border: 1px solid var(--border); border-radius: var(--radius-xl); } -.tc-ur-fact { display: flex; flex-direction: column; gap: 4px; padding: 11px 14px 12px; min-width: 0; } +.tc-ur-facts { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr) minmax(0, 1.5fr); margin: 0 1.25rem; border: 1px solid var(--border); border-radius: var(--radius-xl); } +.tc-ur-fact { display: flex; flex-direction: column; gap: 0.25rem; padding: 0.6875rem 0.875rem 0.75rem; min-width: 0; } .tc-ur-fact + .tc-ur-fact { border-left: 1px solid var(--hairline); } -.tc-ur-fact-label { font-size: 12px; line-height: 16px; color: var(--fg-muted); } -.tc-ur-fact-value { display: flex; align-items: center; gap: 8px; min-height: 24px; font-size: 14px; line-height: 20px; font-weight: 500; min-width: 0; } -.tc-ur-fact-value code { font-size: 12.5px; font-weight: 400; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; } -.tc-ur-fact-note { font-size: 12px; line-height: 18px; color: var(--fg-muted); min-width: 0; } -.tc-ur-fact-note code { font-size: 11.5px; color: var(--fg-muted); } -.tc-ur-counts { display: inline-flex; align-items: center; gap: 10px; font: 500 13px/20px var(--font-sans); font-variant-numeric: tabular-nums; } -.tc-ur-counts > span { display: inline-flex; align-items: center; gap: 4px; } -.tc-ur-counts i { font-style: normal; font-weight: 400; color: var(--fg-muted); font-size: 12px; } -.tc-ur-fact .tc-tiles .tc-tile { width: 22px; height: 22px; font-size: 8.5px; } - -.tc-ur-edits { margin: 12px 20px 0; } +.tc-ur-fact-label { font-size: 0.75rem; line-height: 1rem; color: var(--fg-muted); } +.tc-ur-fact-value { display: flex; align-items: center; gap: 0.5rem; min-height: 1.5rem; font-size: 0.875rem; line-height: 1.25rem; font-weight: 500; min-width: 0; } +.tc-ur-fact-value code { font-size: 0.78125rem; font-weight: 400; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; } +.tc-ur-fact-note { font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); min-width: 0; } +.tc-ur-fact-note code { font-size: 0.71875rem; color: var(--fg-muted); } +.tc-ur-counts { display: inline-flex; align-items: center; gap: 0.625rem; font: 500 0.8125rem/1.25rem var(--font-sans); font-variant-numeric: tabular-nums; } +.tc-ur-counts > span { display: inline-flex; align-items: center; gap: 0.25rem; } +.tc-ur-counts i { font-style: normal; font-weight: 400; color: var(--fg-muted); font-size: 0.75rem; } +.tc-ur-fact .tc-tiles .tc-tile { width: 1.375rem; height: 1.375rem; font-size: 0.53125rem; } + +.tc-ur-edits { margin: 0.75rem 1.25rem 0; } .tc-ur-edits .tc-notice-desc { opacity: 0.9; } -.tc-ur-body { flex: 1; min-height: 0; display: grid; grid-template-columns: 296px minmax(0, 1fr); margin-top: 16px; border-top: 1px solid var(--border); } -.tc-ur-files { min-height: 0; overflow: hidden; padding: 10px 8px; display: flex; flex-direction: column; gap: 1px; border-right: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 1.5%, transparent); } -.tc-ur-files-label { display: flex; align-items: center; gap: 6px; padding: 6px 8px 6px; font-size: 12px; line-height: 16px; font-weight: 500; color: var(--fg-muted); } +.tc-ur-body { flex: 1; min-height: 0; display: grid; grid-template-columns: 18.5rem minmax(0, 1fr); margin-top: 1rem; border-top: 1px solid var(--border); } +.tc-ur-files { min-height: 0; overflow: hidden; padding: 0.625rem 0.5rem; display: flex; flex-direction: column; gap: 1px; border-right: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 1.5%, transparent); } +.tc-ur-files-label { display: flex; align-items: center; gap: 0.375rem; padding: 0.375rem 0.5rem 0.375rem; font-size: 0.75rem; line-height: 1rem; font-weight: 500; color: var(--fg-muted); } .tc-ur-files-label + .tc-ur-file { margin-top: 0; } -.tc-ur-file { display: grid; grid-template-columns: 16px minmax(0, 1fr) auto; align-items: center; gap: 8px; min-height: 34px; padding: 5px 8px; border: 0; border-radius: var(--radius-md); +.tc-ur-file { display: grid; grid-template-columns: 1rem minmax(0, 1fr) auto; align-items: center; gap: 0.5rem; min-height: 2.125rem; padding: 0.3125rem 0.5rem; border: 0; border-radius: var(--radius-md); background: none; color: var(--fg); font: inherit; text-align: left; cursor: pointer; } .tc-ur-file:hover { background: var(--hover); } .tc-ur-file[aria-selected="true"] { background: var(--surface); box-shadow: 0 0 0 1px var(--border), var(--shadow-xs); } -[data-theme="dark"] .tc-ur-file[aria-selected="true"] { background: oklch(1 0 0 / 0.05); } -.tc-ur-file > .tc-icon { width: 15px; height: 15px; color: var(--fg-muted); } +[data-theme="dark"] .tc-ur-file[aria-selected="true"] { background: color-mix(in srgb, var(--fg) 5%, transparent); } +.tc-ur-file > .tc-icon { width: 0.9375rem; height: 0.9375rem; color: var(--fg-muted); } .tc-ur-file[data-status="modified"] > .tc-icon { color: var(--info); } .tc-ur-file[data-status="added"] > .tc-icon { color: var(--ok); } .tc-ur-file[data-status="removed"] > .tc-icon { color: var(--danger); } -.tc-ur-file-name { display: flex; flex-direction: column; min-width: 0; font: 400 12.5px/18px var(--font-mono); } +.tc-ur-file-name { display: flex; flex-direction: column; min-width: 0; font: 400 0.78125rem/1.125rem var(--font-mono); } .tc-ur-file-name > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-ur-file-name > small { font: 400 11.5px/16px var(--font-sans); color: var(--fg-muted); } +.tc-ur-file-name > small { font: 400 0.71875rem/1rem var(--font-sans); color: var(--fg-muted); } .tc-ur-file[data-status="removed"] .tc-ur-file-name > span { text-decoration: line-through; text-decoration-color: color-mix(in srgb, var(--danger) 60%, transparent); } -.tc-ur-file-stat { display: inline-flex; gap: 6px; font: 400 11.5px/1 var(--font-mono); font-variant-numeric: tabular-nums; color: var(--fg-muted); white-space: nowrap; } +.tc-ur-file-stat { display: inline-flex; gap: 0.375rem; font: 400 0.71875rem/1 var(--font-mono); font-variant-numeric: tabular-nums; color: var(--fg-muted); white-space: nowrap; } .tc-ur-file-stat .add { color: var(--ok-text); } .tc-ur-file-stat .del { color: var(--danger-text); } .tc-ur-file[data-dim] { color: var(--fg-muted); } -.tc-ur-files hr { height: 1px; border: 0; margin: 8px 8px; background: var(--hairline); } -.tc-ur-files-note { margin: auto 8px 2px; display: flex; gap: 8px; font-size: 12px; line-height: 17px; color: var(--fg-muted); } -.tc-ur-files-note .tc-icon { width: 14px; height: 14px; flex: none; margin-top: 1px; } +.tc-ur-files hr { height: 1px; border: 0; margin: 0.5rem 0.5rem; background: var(--hairline); } +.tc-ur-files-note { margin: auto 0.5rem 2px; display: flex; gap: 0.5rem; font-size: 0.75rem; line-height: 1.0625rem; color: var(--fg-muted); } +.tc-ur-files-note .tc-icon { width: 0.875rem; height: 0.875rem; flex: none; margin-top: 1px; } .tc-ur-diff { display: flex; flex-direction: column; min-height: 0; min-width: 0; } -.tc-ur-diff-head { display: flex; align-items: center; gap: 10px; min-height: 48px; padding: 8px 12px 8px 16px; border-bottom: 1px solid var(--hairline); } -.tc-ur-diff-head strong { font: 500 13px/18px var(--font-mono); } +.tc-ur-diff-head { display: flex; align-items: center; gap: 0.625rem; min-height: 3rem; padding: 0.5rem 0.75rem 0.5rem 1rem; border-bottom: 1px solid var(--hairline); } +.tc-ur-diff-head strong { font: 500 0.8125rem/1.125rem var(--font-mono); } .tc-ur-diff-head .tc-hint { margin: 0; } -.tc-ur-diff-head .tc-seg button { height: 24px; font-size: 12px; } -.tc-dv { flex: 1; min-height: 0; overflow: hidden; padding: 6px 0 12px; font: 400 12px/20px var(--font-mono); color: var(--fg); } -.tc-dv-line { display: grid; grid-template-columns: 44px 44px 20px minmax(0, 1fr); padding-right: 16px; white-space: pre-wrap; overflow-wrap: anywhere; } -.tc-dv-line > .n { text-align: right; padding-right: 10px; color: var(--fg-subtle); user-select: none; font-variant-numeric: tabular-nums; } +.tc-ur-diff-head .tc-seg button { height: 1.5rem; font-size: 0.75rem; } +.tc-dv { flex: 1; min-height: 0; overflow: hidden; padding: 0.375rem 0 0.75rem; font: 400 0.75rem/1.25rem var(--font-mono); color: var(--fg); } +.tc-dv-line { display: grid; grid-template-columns: var(--touch) var(--touch) 1.25rem minmax(0, 1fr); padding-right: 1rem; white-space: pre-wrap; overflow-wrap: anywhere; } +.tc-dv-line > .n { text-align: right; padding-right: 0.625rem; color: var(--fg-subtle); user-select: none; font-variant-numeric: tabular-nums; } .tc-dv-line > .s { color: var(--fg-subtle); user-select: none; text-align: center; } .tc-dv-line[data-k="add"] { background: color-mix(in srgb, var(--ok) 9%, transparent); } .tc-dv-line[data-k="add"] > .s { color: var(--ok-text); } @@ -1703,181 +1703,181 @@ html.tc-locked { overflow: hidden; } .tc-dv-line[data-k="del"] { background: color-mix(in srgb, var(--danger) 8%, transparent); } .tc-dv-line[data-k="del"] > .s { color: var(--danger-text); } .tc-dv-line[data-k="del"] > .n { color: color-mix(in srgb, var(--danger-text) 60%, transparent); } -.tc-dv-line mark { color: inherit; border-radius: 3px; padding: 0 1px; } +.tc-dv-line mark { color: inherit; border-radius: 0.1875rem; padding: 0 1px; } .tc-dv-line[data-k="add"] mark { background: color-mix(in srgb, var(--ok) 24%, transparent); } .tc-dv-line[data-k="del"] mark { background: color-mix(in srgb, var(--danger) 22%, transparent); } -.tc-dv-hunk { display: flex; align-items: center; gap: 8px; margin: 6px 0; padding: 4px 16px; font: 400 11.5px/18px var(--font-mono); color: var(--fg-muted); +.tc-dv-hunk { display: flex; align-items: center; gap: 0.5rem; margin: 0.375rem 0; padding: 0.25rem 1rem; font: 400 0.71875rem/1.125rem var(--font-mono); color: var(--fg-muted); background: color-mix(in srgb, var(--info) 6%, transparent); border-block: 1px solid color-mix(in srgb, var(--info) 12%, transparent); } -.tc-dv-hunk .tc-icon { width: 13px; height: 13px; } +.tc-dv-hunk .tc-icon { width: 0.8125rem; height: 0.8125rem; } .tc-dv-hunk:first-child { margin-top: 0; border-top: 0; } .tc-dv .k { color: var(--accent-text); } [data-theme="dark"] .tc-dv .k { color: color-mix(in srgb, var(--accent-text) 55%, white); } .tc-dv .m { color: var(--fg-muted); } -.tc-ur-foot { display: flex; align-items: center; gap: 12px; padding: 14px 16px 14px 20px; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } -.tc-ur-consent { display: flex; align-items: flex-start; gap: 10px; min-width: 0; cursor: pointer; } +.tc-ur-foot { display: flex; align-items: center; gap: 0.75rem; padding: 0.875rem 1rem 0.875rem 1.25rem; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } +.tc-ur-consent { display: flex; align-items: flex-start; gap: 0.625rem; min-width: 0; cursor: pointer; } .tc-ur-consent > span { display: flex; flex-direction: column; gap: 1px; min-width: 0; } -.tc-ur-consent strong { font-size: 13px; line-height: 20px; font-weight: 500; } -.tc-ur-consent small { font-size: 12px; line-height: 17px; color: var(--fg-muted); } +.tc-ur-consent strong { font-size: 0.8125rem; line-height: 1.25rem; font-weight: 500; } +.tc-ur-consent small { font-size: 0.75rem; line-height: 1.0625rem; color: var(--fg-muted); } .tc-ur-foot .tc-btn--primary[aria-disabled="true"] { opacity: var(--opacity-disabled); cursor: not-allowed; } -.tc-ur-foot-note { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; line-height: 17px; color: var(--fg-muted); } -.tc-ur-foot-note .tc-icon { width: 14px; height: 14px; } +.tc-ur-foot-note { display: inline-flex; align-items: center; gap: 0.375rem; font-size: 0.75rem; line-height: 1.0625rem; color: var(--fg-muted); } +.tc-ur-foot-note .tc-icon { width: 0.875rem; height: 0.875rem; } /* ------------------------------------------------------- outcome states -- */ /* The review dialog's compact form: updating, updated, up to date, out of date, result not confirmed, couldn't prepare. Same panel, smaller. */ -.tc-ur--compact { width: min(480px, 100%); height: auto; } +.tc-ur--compact { width: min(30rem, 100%); height: auto; } .tc-ur--compact .tc-dialog-title:focus { outline: none; } -.tc-ur--compact .tc-dialog-body { padding: 24px 24px 16px; display: flex; flex-direction: column; gap: 8px; } -.tc-state-mark { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; flex: none; margin-bottom: 6px; } -.tc-state-mark .tc-icon { width: 20px; height: 20px; color: inherit; } +.tc-ur--compact .tc-dialog-body { padding: 1.5rem 1.5rem 1rem; display: flex; flex-direction: column; gap: 0.5rem; } +.tc-state-mark { width: 2.5rem; height: 2.5rem; border-radius: 50%; display: grid; place-items: center; flex: none; margin-bottom: 0.375rem; } +.tc-state-mark .tc-icon { width: 1.25rem; height: 1.25rem; color: inherit; } .tc-state-mark[data-tone="ok"] { background: var(--ok-soft); color: var(--ok-text); } .tc-state-mark[data-tone="warn"] { background: var(--warn-soft); color: var(--warn-text); } .tc-state-mark[data-tone="idle"] { background: color-mix(in srgb, var(--fg) 6%, transparent); color: var(--fg-muted); } .tc-state-mark[data-tone="danger"] { background: var(--danger-soft); color: var(--danger-text); } -.tc-state-list { list-style: none; margin: 8px 0 0; padding: 0; border: 1px solid var(--border); border-radius: var(--radius-lg); } -.tc-state-list li { display: flex; align-items: center; gap: 10px; min-height: 36px; padding: 6px 12px; font-size: 13px; line-height: 18px; } +.tc-state-list { list-style: none; margin: 0.5rem 0 0; padding: 0; border: 1px solid var(--border); border-radius: var(--radius-lg); } +.tc-state-list li { display: flex; align-items: center; gap: 0.625rem; min-height: 2.25rem; padding: 0.375rem 0.75rem; font-size: 0.8125rem; line-height: 1.125rem; } .tc-state-list li + li { border-top: 1px solid var(--hairline); } -.tc-state-list li > .tc-icon { width: 14px; height: 14px; color: var(--fg-muted); flex: none; } -.tc-state-list li > .end { margin-left: auto; color: var(--fg-muted); font-size: 12px; white-space: nowrap; } +.tc-state-list li > .tc-icon { width: 0.875rem; height: 0.875rem; color: var(--fg-muted); flex: none; } +.tc-state-list li > .end { margin-left: auto; color: var(--fg-muted); font-size: 0.75rem; white-space: nowrap; } .tc-state-list li[data-status="modified"] > .tc-icon { color: var(--info); } .tc-state-list li[data-status="added"] > .tc-icon { color: var(--ok); } .tc-state-list li[data-status="removed"] > .tc-icon { color: var(--danger); } .tc-state-list li[data-status="done"] > .tc-icon { color: var(--ok); } -.tc-state-list code { font-size: 12px; } +.tc-state-list code { font-size: 0.75rem; } .tc-ur--compact .tc-dialog-foot { align-items: center; } -.tc-ur--compact .tc-dialog-desc code { font-size: 12.5px; color: var(--fg); } +.tc-ur--compact .tc-dialog-desc code { font-size: 0.78125rem; color: var(--fg); } /* -------------------------------------------------- inspector source --- */ -.tc-src-status { display: flex; align-items: center; gap: 8px; padding: 10px 10px 10px 14px; border-top: 1px solid var(--hairline); font-size: 13px; line-height: 20px; } +.tc-src-status { display: flex; align-items: center; gap: 0.5rem; padding: 0.625rem 0.625rem 0.625rem 0.875rem; border-top: 1px solid var(--hairline); font-size: 0.8125rem; line-height: 1.25rem; } .tc-src-status .tc-hint { margin: 0; } .tc-src-status strong { font-weight: 500; } -.tc-insp-banner { display: flex; align-items: center; gap: 12px; padding: 12px 12px 12px 14px; border-radius: var(--radius-xl); +.tc-insp-banner { display: flex; align-items: center; gap: 0.75rem; padding: 0.75rem 0.75rem 0.75rem 0.875rem; border-radius: var(--radius-xl); border: 1px solid color-mix(in srgb, var(--accent) 26%, transparent); background: var(--accent-soft); } .tc-insp-banner > .tc-icon { color: var(--accent-text); flex: none; } [data-theme="dark"] .tc-insp-banner > .tc-icon { color: color-mix(in srgb, var(--accent-text) 60%, white); } .tc-insp-banner > div { display: flex; flex-direction: column; gap: 1px; flex: 1; min-width: 0; } -.tc-insp-banner strong { font-size: 14px; line-height: 20px; font-weight: 500; } -.tc-insp-banner span { font-size: 12px; line-height: 18px; color: var(--fg-muted); } -.tc-insp-banner code { font-size: 12px; color: var(--fg); } +.tc-insp-banner strong { font-size: 0.875rem; line-height: 1.25rem; font-weight: 500; } +.tc-insp-banner span { font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } +.tc-insp-banner code { font-size: 0.75rem; color: var(--fg); } /* ---------------------------------------------------------- hooks ------ */ -.tc-layer--sheet > .tc-sheet--hooks { width: 600px; } -.tc-hk-intro { margin: 0; font-size: 13px; line-height: 20px; color: var(--fg-muted); text-wrap: pretty; } -.tc-hk-plugin { display: flex; flex-direction: column; gap: 8px; } -.tc-hk-plugin-head { display: flex; align-items: center; gap: 8px; min-height: 28px; font-size: 14px; line-height: 20px; } +.tc-layer--sheet > .tc-sheet--hooks { width: 37.5rem; } +.tc-hk-intro { margin: 0; font-size: 0.8125rem; line-height: 1.25rem; color: var(--fg-muted); text-wrap: pretty; } +.tc-hk-plugin { display: flex; flex-direction: column; gap: 0.5rem; } +.tc-hk-plugin-head { display: flex; align-items: center; gap: 0.5rem; min-height: 1.75rem; font-size: 0.875rem; line-height: 1.25rem; } .tc-hk-plugin-head strong { font-weight: 500; } -.tc-hk-plugin-head code { font-size: 12px; color: var(--fg-muted); } -.tc-hk-plugin-head .tc-icon { width: 15px; height: 15px; color: var(--fg-muted); } -.tc-hk-plugin-head .tc-spacer + span { font-size: 12px; color: var(--fg-muted); } -.tc-hk { display: flex; flex-direction: column; gap: 12px; padding: 14px 14px 14px 16px; } -.tc-hk-head { display: flex; align-items: center; gap: 12px; } +.tc-hk-plugin-head code { font-size: 0.75rem; color: var(--fg-muted); } +.tc-hk-plugin-head .tc-icon { width: 0.9375rem; height: 0.9375rem; color: var(--fg-muted); } +.tc-hk-plugin-head .tc-spacer + span { font-size: 0.75rem; color: var(--fg-muted); } +.tc-hk { display: flex; flex-direction: column; gap: 0.75rem; padding: 0.875rem 0.875rem 0.875rem 1rem; } +.tc-hk-head { display: flex; align-items: center; gap: 0.75rem; } .tc-hk-event { display: flex; flex-direction: column; flex: 1; min-width: 0; } -.tc-hk-event strong { font-size: 14px; line-height: 20px; font-weight: 500; } -.tc-hk-event span { font-size: 12px; line-height: 18px; color: var(--fg-muted); } -.tc-hk-event code { font-size: 11.5px; color: var(--fg-muted); } -.tc-hk-state { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; line-height: 16px; font-weight: 500; white-space: nowrap; } +.tc-hk-event strong { font-size: 0.875rem; line-height: 1.25rem; font-weight: 500; } +.tc-hk-event span { font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } +.tc-hk-event code { font-size: 0.71875rem; color: var(--fg-muted); } +.tc-hk-state { display: inline-flex; align-items: center; gap: 0.375rem; font-size: 0.75rem; line-height: 1rem; font-weight: 500; white-space: nowrap; } .tc-hk-state[data-tone="warn"] { color: var(--warn-text); } .tc-hk-state[data-tone="ok"] { color: var(--ok-text); } .tc-hk-state[data-tone="idle"] { color: var(--fg-muted); } -.tc-hk-switch { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--fg); white-space: nowrap; } +.tc-hk-switch { display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.8125rem; color: var(--fg); white-space: nowrap; } .tc-hk-switch[data-disabled] { color: var(--fg-muted); } .tc-hk-switch[data-disabled] .tc-switch { opacity: var(--opacity-disabled); } -.tc-hk-cmd { margin: 0; padding: 10px 12px; border-radius: var(--radius-md); border: 1px solid var(--hairline); background: var(--surface-sunken); - font: 400 12px/20px var(--font-mono); color: var(--fg); white-space: pre-wrap; overflow-wrap: anywhere; } +.tc-hk-cmd { margin: 0; padding: 0.625rem 0.75rem; border-radius: var(--radius-md); border: 1px solid var(--hairline); background: var(--surface-sunken); + font: 400 0.75rem/1.25rem var(--font-mono); color: var(--fg); white-space: pre-wrap; overflow-wrap: anywhere; } .tc-hk-cmd .m { color: var(--fg-muted); } -.tc-hk-facts { display: grid; grid-template-columns: 76px minmax(0, 1fr); gap: 4px 12px; margin: 0; font-size: 12px; line-height: 18px; } +.tc-hk-facts { display: grid; grid-template-columns: 4.75rem minmax(0, 1fr); gap: 0.25rem 0.75rem; margin: 0; font-size: 0.75rem; line-height: 1.125rem; } .tc-hk-facts dt { color: var(--fg-muted); } .tc-hk-facts dd { margin: 0; min-width: 0; color: var(--fg); } -.tc-hk-facts code { font-size: 11.5px; overflow-wrap: anywhere; } -.tc-hk-trust { display: flex; align-items: center; gap: 14px; padding: 10px 10px 10px 14px; border-radius: var(--radius-lg); +.tc-hk-facts code { font-size: 0.71875rem; overflow-wrap: anywhere; } +.tc-hk-trust { display: flex; align-items: center; gap: 0.875rem; padding: 0.625rem 0.625rem 0.625rem 0.875rem; border-radius: var(--radius-lg); border: 1px solid color-mix(in srgb, var(--warn) 30%, transparent); background: var(--warn-soft); } -.tc-hk-trust p { margin: 0; flex: 1; min-width: 0; font-size: 12px; line-height: 18px; color: var(--fg); } +.tc-hk-trust p { margin: 0; flex: 1; min-width: 0; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg); } .tc-hk-trust .tc-btn { flex: none; } -.tc-hk--compact { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 4px 14px; padding: 12px 14px 12px 16px; } -.tc-hk--compact .tc-hk-line { grid-column: 1 / -1; font: 400 12px/18px var(--font-mono); color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.tc-hk--compact { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 0.25rem 0.875rem; padding: 0.75rem 0.875rem 0.75rem 1rem; } +.tc-hk--compact .tc-hk-line { grid-column: 1 / -1; font: 400 0.75rem/1.125rem var(--font-mono); color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* ---------------------------------------------------------- phone ------ */ -.tc-pnote { display: grid; grid-template-columns: 20px minmax(0, 1fr) 16px; align-items: center; gap: 2px 10px; width: 100%; padding: 11px 12px 11px 14px; border-radius: var(--radius-xl); +.tc-pnote { display: grid; grid-template-columns: 1.25rem minmax(0, 1fr) 1rem; align-items: center; gap: 2px 0.625rem; width: 100%; padding: 0.6875rem 0.75rem 0.6875rem 0.875rem; border-radius: var(--radius-xl); border: 1px solid var(--border); background: var(--surface); color: var(--fg); font: inherit; text-align: left; flex: none; } -[data-theme="dark"] .tc-pnote { background: oklch(1 0 0 / 0.02); } -.tc-pnote > .tc-icon:first-child { width: 18px; height: 18px; } -.tc-pnote > .tc-icon:last-child { width: 16px; height: 16px; color: var(--fg-muted); } -.tc-pnote strong { display: block; font-size: 15px; line-height: 20px; font-weight: 500; } -.tc-pnote small { display: block; font-size: 13px; line-height: 18px; color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +[data-theme="dark"] .tc-pnote { background: color-mix(in srgb, var(--fg) 2%, transparent); } +.tc-pnote > .tc-icon:first-child { width: 1.125rem; height: 1.125rem; } +.tc-pnote > .tc-icon:last-child { width: 1rem; height: 1rem; color: var(--fg-muted); } +.tc-pnote strong { display: block; font-size: 0.9375rem; line-height: 1.25rem; font-weight: 500; } +.tc-pnote small { display: block; font-size: 0.8125rem; line-height: 1.125rem; color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tc-pnote[data-tone="accent"] { border-color: color-mix(in srgb, var(--accent) 26%, transparent); background: var(--accent-soft); } .tc-pnote[data-tone="accent"] > .tc-icon:first-child { color: var(--accent-text); } [data-theme="dark"] .tc-pnote[data-tone="accent"] > .tc-icon:first-child { color: color-mix(in srgb, var(--accent-text) 60%, white); } .tc-pnote[data-tone="warn"] { border-color: color-mix(in srgb, var(--warn) 32%, transparent); background: var(--warn-soft); } .tc-pnote[data-tone="warn"] > .tc-icon:first-child { color: var(--warn); } .tc-pnote[data-tone="warn"] strong { color: var(--warn-text); } -.tc-psearch { display: flex; gap: 8px; flex: none; } +.tc-psearch { display: flex; gap: 0.5rem; flex: none; } .tc-psearch .tc-sk-search { flex: 1; min-width: 0; } -.tc-psearch .tc-sk-search > .tc-input { height: 40px; font-size: 16px; } -.tc-psearch .tc-btn--icon { width: 40px; height: 40px; } -.tc-prow-name-line { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } -.tc-prow .tc-upd { height: 22px; font-size: 12px; } - -.tc-layer--center > .tc-ur--phone.tc-sheet--full { position: absolute; left: 0; right: 0; bottom: 0; top: 36px; max-height: none; display: flex; flex-direction: column; box-shadow: var(--shadow-dialog); } -.tc-pur-head { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px 12px 16px; } -.tc-pur-head h2 { margin: 0; font-size: 17px; line-height: 24px; font-weight: 600; } -.tc-pur-body { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; gap: 14px; padding: 0 16px 16px; } +.tc-psearch .tc-sk-search > .tc-input { height: 2.5rem; font-size: 1rem; } +.tc-psearch .tc-btn--icon { width: 2.5rem; height: 2.5rem; } +.tc-prow-name-line { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; } +.tc-prow .tc-upd { height: 1.375rem; font-size: 0.75rem; } + +.tc-layer--center > .tc-ur--phone.tc-sheet--full { position: absolute; left: 0; right: 0; bottom: 0; top: 2.25rem; max-height: none; display: flex; flex-direction: column; box-shadow: var(--shadow-dialog); } +.tc-pur-head { display: flex; align-items: flex-start; gap: 0.625rem; padding: 0.625rem 0.75rem 0.75rem 1rem; } +.tc-pur-head h2 { margin: 0; font-size: 1.0625rem; line-height: 1.5rem; font-weight: 600; } +.tc-pur-body { flex: 1; min-height: 0; overflow: hidden; display: flex; flex-direction: column; gap: 0.875rem; padding: 0 1rem 1rem; } .tc-pur-facts { display: flex; flex-direction: column; } -.tc-pur-fact { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 2px 12px; align-items: center; padding: 10px 14px; font-size: 14px; line-height: 20px; } +.tc-pur-fact { display: grid; grid-template-columns: 5.25rem minmax(0, 1fr); gap: 2px 0.75rem; align-items: center; padding: 0.625rem 0.875rem; font-size: 0.875rem; line-height: 1.25rem; } .tc-pur-fact + .tc-pur-fact { border-top: 1px solid var(--hairline); } -.tc-pur-fact > span:first-child { font-size: 13px; color: var(--fg-muted); } -.tc-pur-fact code { font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-pur-fact .tc-tiles .tc-tile { width: 22px; height: 22px; font-size: 8.5px; } -.tc-pur-file { display: grid; grid-template-columns: 16px minmax(0, 1fr) auto 16px; align-items: center; gap: 10px; min-height: 48px; padding: 8px 14px; font: 400 13px/18px var(--font-mono); } +.tc-pur-fact > span:first-child { font-size: 0.8125rem; color: var(--fg-muted); } +.tc-pur-fact code { font-size: 0.78125rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.tc-pur-fact .tc-tiles .tc-tile { width: 1.375rem; height: 1.375rem; font-size: 0.53125rem; } +.tc-pur-file { display: grid; grid-template-columns: 1rem minmax(0, 1fr) auto 1rem; align-items: center; gap: 0.625rem; min-height: 3rem; padding: 0.5rem 0.875rem; font: 400 0.8125rem/1.125rem var(--font-mono); } .tc-pur-file + .tc-pur-file, .tc-pur-file + .tc-pur-diff, .tc-pur-diff + .tc-pur-file { border-top: 1px solid var(--hairline); } -.tc-pur-file > .tc-icon { width: 15px; height: 15px; color: var(--fg-muted); } +.tc-pur-file > .tc-icon { width: 0.9375rem; height: 0.9375rem; color: var(--fg-muted); } .tc-pur-file[data-status="modified"] > .tc-icon:first-child { color: var(--info); } .tc-pur-file[data-status="added"] > .tc-icon:first-child { color: var(--ok); } .tc-pur-file[data-status="removed"] > .tc-icon:first-child { color: var(--danger); } -.tc-pur-file .tc-ur-file-stat { font-size: 12px; } -.tc-pur-diff { padding: 4px 0 8px; font: 400 11.5px/19px var(--font-mono); background: color-mix(in srgb, var(--fg) 1.5%, transparent); } -.tc-pur-diff .tc-dv-line { grid-template-columns: 22px minmax(0, 1fr); padding: 0 12px 0 0; } -.tc-pur-foot { flex: none; display: flex; flex-direction: column; gap: 12px; padding: 14px 16px 28px; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } -.tc-pur-foot .tc-btn { height: 44px; font-size: 16px; } -.tc-pur-foot .tc-ur-consent strong { font-size: 15px; line-height: 22px; } -.tc-pur-foot .tc-ur-consent small { font-size: 13px; line-height: 18px; } -.tc-pur-foot .tc-checkbox { width: 20px; height: 20px; margin-top: 1px; } +.tc-pur-file .tc-ur-file-stat { font-size: 0.75rem; } +.tc-pur-diff { padding: 0.25rem 0 0.5rem; font: 400 0.71875rem/1.1875rem var(--font-mono); background: color-mix(in srgb, var(--fg) 1.5%, transparent); } +.tc-pur-diff .tc-dv-line { grid-template-columns: 1.375rem minmax(0, 1fr); padding: 0 0.75rem 0 0; } +.tc-pur-foot { flex: none; display: flex; flex-direction: column; gap: 0.75rem; padding: 0.875rem 1rem 1.75rem; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } +.tc-pur-foot .tc-btn { height: var(--touch); font-size: 1rem; } +.tc-pur-foot .tc-ur-consent strong { font-size: 0.9375rem; line-height: 1.375rem; } +.tc-pur-foot .tc-ur-consent small { font-size: 0.8125rem; line-height: 1.125rem; } +.tc-pur-foot .tc-checkbox { width: 1.25rem; height: 1.25rem; margin-top: 1px; } /* ------------------------------------------------------ updates view --- */ /* The Updates view swaps agent settings for what matters when updating: where a skill came from, its status, and who reads the folder. */ -.tc-ut { --ut-cols: minmax(0, 1.3fr) minmax(0, 1fr) 188px 124px 140px; } -.tc-ut-head, .tc-ut-row { display: grid; grid-template-columns: var(--ut-cols); align-items: center; column-gap: 16px; padding: 0 12px 0 16px; } -.tc-ut-head { min-height: 40px; font-size: 12px; font-weight: 500; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2%, transparent); border-bottom: 1px solid var(--border); } -.tc-ut-row { min-height: 68px; padding-top: 10px; padding-bottom: 10px; border-top: 1px solid var(--hairline); } +.tc-ut { --ut-cols: minmax(0, 1.3fr) minmax(0, 1fr) 11.75rem 7.75rem 8.75rem; } +.tc-ut-head, .tc-ut-row { display: grid; grid-template-columns: var(--ut-cols); align-items: center; column-gap: 1rem; padding: 0 0.75rem 0 1rem; } +.tc-ut-head { min-height: 2.5rem; font-size: 0.75rem; font-weight: 500; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2%, transparent); border-bottom: 1px solid var(--border); } +.tc-ut-row { min-height: 4.25rem; padding-top: 0.625rem; padding-bottom: 0.625rem; border-top: 1px solid var(--hairline); } .tc-ut-head + .tc-ut-row { border-top: 0; } .tc-ut-skill, .tc-ut-src, .tc-ut-status { display: flex; flex-direction: column; gap: 2px; min-width: 0; } -.tc-ut-skill a { font-size: 14px; line-height: 20px; font-weight: 500; color: var(--fg); } -.tc-ut-skill code, .tc-ut-src small { font-size: 11.5px; line-height: 16px; color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-ut-src code { font-size: 12.5px; line-height: 18px; color: var(--fg); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-ut-src small { font-family: var(--font-sans); font-size: 12px; } -.tc-ut-status strong { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; line-height: 18px; font-weight: 500; } -.tc-ut-status strong .tc-icon { width: 14px; height: 14px; } -.tc-ut-status small { font-size: 12px; line-height: 16px; color: var(--fg-muted); } +.tc-ut-skill a { font-size: 0.875rem; line-height: 1.25rem; font-weight: 500; color: var(--fg); } +.tc-ut-skill code, .tc-ut-src small { font-size: 0.71875rem; line-height: 1rem; color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.tc-ut-src code { font-size: 0.78125rem; line-height: 1.125rem; color: var(--fg); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.tc-ut-src small { font-family: var(--font-sans); font-size: 0.75rem; } +.tc-ut-status strong { display: inline-flex; align-items: center; gap: 0.375rem; font-size: 0.8125rem; line-height: 1.125rem; font-weight: 500; } +.tc-ut-status strong .tc-icon { width: 0.875rem; height: 0.875rem; } +.tc-ut-status small { font-size: 0.75rem; line-height: 1rem; color: var(--fg-muted); } .tc-ut-status[data-tone="accent"] strong { color: var(--accent-text); } [data-theme="dark"] .tc-ut-status[data-tone="accent"] strong { color: color-mix(in srgb, var(--accent-text) 60%, white); } .tc-ut-status[data-tone="accent"] .tc-dot { color: var(--accent); } .tc-ut-status[data-tone="warn"] strong { color: var(--warn-text); } .tc-ut-status[data-tone="idle"] strong { color: var(--fg-muted); font-weight: 400; } -.tc-ut-readers { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--fg-muted); white-space: nowrap; } -.tc-ut-readers .tc-tile { width: 20px; height: 20px; font-size: 8px; } -.tc-ut-act { display: flex; justify-content: flex-end; gap: 6px; } +.tc-ut-readers { display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; color: var(--fg-muted); white-space: nowrap; } +.tc-ut-readers .tc-tile { width: 1.25rem; height: 1.25rem; font-size: 0.5rem; } +.tc-ut-act { display: flex; justify-content: flex-end; gap: 0.375rem; } .tc-ut-row[data-tone="warn"] { background: color-mix(in srgb, var(--warn) 3%, transparent); } -.tc-ut-err { grid-column: 1 / -1; display: flex; align-items: flex-start; gap: 8px; margin-top: 8px; padding: 8px 10px; border-radius: var(--radius-md); background: var(--warn-soft); color: var(--warn-text); font-size: 12px; line-height: 18px; } -.tc-ut-err .tc-icon { width: 14px; height: 14px; flex: none; margin-top: 2px; } -.tc-ut-note { display: flex; align-items: flex-start; gap: 8px; padding: 12px 16px; border-top: 1px solid var(--border); font-size: 12px; line-height: 18px; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 1.5%, transparent); } -.tc-ut-note .tc-icon { width: 14px; height: 14px; flex: none; margin-top: 2px; } -.tc-ut-empty { padding: 56px 24px 60px; } -.tc-ut-empty .tc-empty-desc { max-width: 520px; margin: 0 auto; } +.tc-ut-err { grid-column: 1 / -1; display: flex; align-items: flex-start; gap: 0.5rem; margin-top: 0.5rem; padding: 0.5rem 0.625rem; border-radius: var(--radius-md); background: var(--warn-soft); color: var(--warn-text); font-size: 0.75rem; line-height: 1.125rem; } +.tc-ut-err .tc-icon { width: 0.875rem; height: 0.875rem; flex: none; margin-top: 2px; } +.tc-ut-note { display: flex; align-items: flex-start; gap: 0.5rem; padding: 0.75rem 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 1.5%, transparent); } +.tc-ut-note .tc-icon { width: 0.875rem; height: 0.875rem; flex: none; margin-top: 2px; } +.tc-ut-empty { padding: 3.5rem 1.5rem 3.75rem; } +.tc-ut-empty .tc-empty-desc { max-width: 32.5rem; margin: 0 auto; } .tc-dv { -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 24px), transparent); mask-image: linear-gradient(to bottom, #000 calc(100% - 24px), transparent); } -.tc-hk-actions { display: flex; align-items: center; gap: 8px; padding-top: 12px; border-top: 1px solid var(--hairline); } -.tc-hk-actions > span { flex: 1; min-width: 0; font-size: 12px; line-height: 18px; color: var(--fg-muted); } -.tc-pnotes > .tc-pnote { border: 0; border-radius: 0; background: transparent; text-decoration: none !important; min-height: 60px; } +.tc-hk-actions { display: flex; align-items: center; gap: 0.5rem; padding-top: 0.75rem; border-top: 1px solid var(--hairline); } +.tc-hk-actions > span { flex: 1; min-width: 0; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } +.tc-pnotes > .tc-pnote { border: 0; border-radius: 0; background: transparent; text-decoration: none !important; min-height: 3.75rem; } .tc-pnotes > .tc-pnote + .tc-pnote { border-top: 1px solid var(--hairline); } .tc-pnote[data-icon="accent"] > .tc-icon:first-child { color: var(--accent-text); } [data-theme="dark"] .tc-pnote[data-icon="accent"] > .tc-icon:first-child { color: color-mix(in srgb, var(--accent-text) 60%, white); } @@ -1887,10 +1887,10 @@ html.tc-locked { overflow: hidden; } /* -------------------------------------------------------- responsive --- */ @media (max-width: 1023.98px) { - .tc-lh { flex-wrap: wrap; padding-block: 6px; } + .tc-lh { flex-wrap: wrap; padding-block: 0.375rem; } .tc-lh-filters { display: none; } /* the phone chip row takes over */ .tc-ut-head { display: none; } - .tc-ut-row { grid-template-columns: minmax(0, 1fr) auto; row-gap: 6px; } + .tc-ut-row { grid-template-columns: minmax(0, 1fr) auto; row-gap: 0.375rem; } .tc-ut-src, .tc-ut-readers { display: none; } .tc-ut-status { grid-column: 1; } .tc-ut-act { grid-column: 2; grid-row: 1 / span 2; align-self: center; } @@ -1898,19 +1898,19 @@ html.tc-locked { overflow: hidden; } .tc-ur-facts { grid-template-columns: minmax(0, 1fr); } .tc-ur-fact + .tc-ur-fact { border-left: 0; border-top: 1px solid var(--hairline); } .tc-ur-body { grid-template-columns: minmax(0, 1fr); grid-template-rows: auto minmax(0, 1fr); } - .tc-ur-files { max-height: 208px; overflow: auto; border-right: 0; border-bottom: 1px solid var(--hairline); } + .tc-ur-files { max-height: 13rem; overflow: auto; border-right: 0; border-bottom: 1px solid var(--hairline); } .tc-ur-files-note { display: none; } - .tc-layer--sheet > .tc-sheet--hooks { width: min(600px, 100vw); } + .tc-layer--sheet > .tc-sheet--hooks { width: min(37.5rem, 100vw); } } @media (max-width: 639.98px) { /* Below 640px the review renders the accordion layout (.tc-pur-*), in a bottom sheet that fills the screen. See README, Screen 9. */ .tc-ur-foot { flex-wrap: wrap; } - .tc-ur-foot .tc-btn, .tc-hk-actions .tc-btn, .tc-lh .tc-btn { min-height: 44px; } + .tc-ur-foot .tc-btn, .tc-hk-actions .tc-btn, .tc-lh .tc-btn { min-height: var(--touch); } .tc-hk-actions { flex-wrap: wrap; } .tc-hk-actions > span { flex-basis: 100%; } - .tc-hk--compact .tc-switch { --_t: 20px; } - .tc-ut-act .tc-btn { min-height: 44px; } + .tc-hk--compact .tc-switch { --_t: 1.25rem; } + .tc-ut-act .tc-btn { min-height: var(--touch); } } /* Application layer integration: preserve Kit layers and the shared controls. */ @@ -1929,20 +1929,20 @@ html.tc-locked { overflow: hidden; } .tc-ur-diff-scroll { min-height: 0; flex: 1; overflow: auto; overscroll-behavior: contain; } .tc-ur-diff-scroll > .tc-code { border: 0; border-radius: 0; min-height: 100%; } .tc-ur-diff-head > code { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; min-width: 0; } -.tc-ur-diff-head > span:not(.tc-spacer) { color: var(--fg-muted); font-size: 12px; white-space: nowrap; } +.tc-ur-diff-head > span:not(.tc-spacer) { color: var(--fg-muted); font-size: 0.75rem; white-space: nowrap; } .tc-ur .tc-seg > button { white-space: nowrap; } -.tc-ur-loading { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-3); min-height: 160px; padding: var(--space-5); color: var(--fg-muted); text-align: center; } -.tc-ur-loading strong { color: var(--fg); font-size: 14px; font-weight: 500; } -.tc-ur-loading > span:last-child { font-size: 13px; } -.tc-ur-no-text { min-height: 128px; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: var(--space-5); margin: 0; color: var(--fg-muted); font-size: 13px; line-height: 20px; text-align: center; } -.tc-dv { padding-bottom: 24px; } -.tc-dv-line { min-height: 20px; } +.tc-ur-loading { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-3); min-height: 10rem; padding: var(--space-5); color: var(--fg-muted); text-align: center; } +.tc-ur-loading strong { color: var(--fg); font-size: 0.875rem; font-weight: 500; } +.tc-ur-loading > span:last-child { font-size: 0.8125rem; } +.tc-ur-no-text { min-height: 8rem; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: var(--space-5); margin: 0; color: var(--fg-muted); font-size: 0.8125rem; line-height: 1.25rem; text-align: center; } +.tc-dv { padding-bottom: 1.5rem; } +.tc-dv-line { min-height: 1.25rem; } .tc-dv-text { min-width: 0; white-space: pre-wrap; overflow-wrap: anywhere; } button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointer; text-align: left; } .tc-dv-fold-headings { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .tc-ur--compact .tc-dialog-body { overflow: auto; min-height: 0; } .tc-ur--compact .tc-dialog-foot { flex: none; } -.tc-state-list { max-height: 240px; overflow: auto; } +.tc-state-list { max-height: 15rem; overflow: auto; } .tc-state-list li code { min-width: 0; overflow-wrap: anywhere; } .tc-ur-mobile-readers { display: inline-flex; align-items: center; gap: var(--space-2); } .tc-hk + .tc-hk { border-top: 1px solid var(--hairline); } @@ -1958,52 +1958,52 @@ button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointe .tc-layer--center:has(> .tc-ur--phone) { padding: 0; } .tc-layer--center > .tc-ur--phone.tc-sheet--full { width: 100%; max-width: 100%; height: calc(100dvh - 36px); max-height: calc(100dvh - 36px); border-bottom: 0; } .tc-ur--phone .tc-pur-head { flex: none; } - .tc-pur-head [data-update-close] { width: 44px; height: 44px; flex: 0 0 44px; } + .tc-pur-head [data-update-close] { width: var(--touch); height: var(--touch); flex: 0 0 44px; } .tc-pur-body { overflow: auto; overscroll-behavior: contain; } .tc-pur-body .tc-ur-edits { margin: 0; flex-wrap: wrap; } - .tc-pur-body .tc-notice-actions { padding-left: 26px; } - .tc-pur-body .tc-notice-actions .tc-btn { min-height: 44px; } + .tc-pur-body .tc-notice-actions { padding-left: 1.625rem; } + .tc-pur-body .tc-notice-actions .tc-btn { min-height: var(--touch); } .tc-pur-file { width: 100%; border: 0; background: none; color: var(--fg); cursor: pointer; text-align: left; } .tc-pur-file > span:nth-child(2) { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } - .tc-pur-diff { max-height: 180px; overflow: auto; overscroll-behavior: contain; } - .tc-pur-diff > .tc-seg { display: flex; width: max-content; max-width: calc(100% - 16px); margin: 4px 8px 8px; } - .tc-pur-diff .tc-seg > button { min-height: 44px; padding-inline: 8px; } - .tc-pur-foot { padding-bottom: max(20px, env(safe-area-inset-bottom)); } - .tc-pur-foot .tc-ur-foot-note { font-size: 13px; } + .tc-pur-diff { max-height: 11.25rem; overflow: auto; overscroll-behavior: contain; } + .tc-pur-diff > .tc-seg { display: flex; width: max-content; max-width: calc(100% - 16px); margin: 0.25rem 0.5rem 0.5rem; } + .tc-pur-diff .tc-seg > button { min-height: var(--touch); padding-inline: 0.5rem; } + .tc-pur-foot { padding-bottom: max(1.25rem, env(safe-area-inset-bottom)); } + .tc-pur-foot .tc-ur-foot-note { font-size: 0.8125rem; } .tc-ur--compact .tc-dialog-foot { flex-wrap: wrap; } - .tc-ur--compact .tc-dialog-foot .tc-btn { min-height: 44px; } - .tc-ur-queue { max-width: 110px; height: auto; } - .tc-ur-queue > span { font-size: 11px; line-height: 16px; } - .tc-ur-queue .tc-btn { min-width: 44px; min-height: 44px; } - .tc-dv-hunk { min-height: 44px; } + .tc-ur--compact .tc-dialog-foot .tc-btn { min-height: var(--touch); } + .tc-ur-queue { max-width: 6.875rem; height: auto; } + .tc-ur-queue > span { font-size: 0.6875rem; line-height: 1rem; } + .tc-ur-queue .tc-btn { min-width: var(--touch); min-height: var(--touch); } + .tc-dv-hunk { min-height: var(--touch); } } /* The card owns a single header and footer in either library view. */ -.tc-sk-card > .tc-sk-library-foot { padding: 12px 16px; border-top: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } +.tc-sk-card > .tc-sk-library-foot { padding: 0.75rem 1rem; border-top: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } .tc-sk-matrix .tc-mx-agent { position: relative; } -.tc-sk-matrix .tc-mx-agent:has(.tc-mx-more) { padding-right: 42px; } +.tc-sk-matrix .tc-mx-agent:has(.tc-mx-more) { padding-right: 2.625rem; } .tc-sk-matrix .tc-mx-more { position: absolute; inset: 10px 6px auto auto; } .tc-sk-phone-view, .tc-sk-phone-summary { display: none; } .tc-sk-phone-row { position: relative; border-top: 1px solid var(--hairline); } .tc-sk-phone-row > .tc-prow { border-top: 0; } .tc-sk-phone-row[data-highlight] { background: var(--accent-soft); } -.tc-ut-src small { display: inline-flex; align-items: center; gap: 4px; } +.tc-ut-src small { display: inline-flex; align-items: center; gap: 0.25rem; } .tc-ut-act .tc-btn { white-space: nowrap; } .tc-ut-head > .tc-sr { position: static; width: auto; height: auto; clip-path: none; color: transparent; } .tc-ut-note > span { min-width: 0; } .tc-hk-body { display: flex; flex-direction: column; gap: var(--space-4); } -.tc-hk-label { display: block; width: fit-content; padding: 0; border: 0; background: none; color: var(--fg); font: 500 14px/20px var(--font-sans); cursor: pointer; text-align: left; } +.tc-hk-label { display: block; width: fit-content; padding: 0; border: 0; background: none; color: var(--fg); font: 500 0.875rem/1.25rem var(--font-sans); cursor: pointer; text-align: left; } .tc-hk-label:hover { text-decoration: underline; text-underline-offset: 3px; } .tc-hk-error { grid-column: 1 / -1; } .tc-hk-event > span { overflow-wrap: anywhere; } .tc-hk-plugin-head { flex-wrap: wrap; } .tc-hk-plugin-head > code { overflow: hidden; text-overflow: ellipsis; } -.tc-hk-foot { flex-wrap: wrap; gap: 8px; } -.tc-hk-foot > .tc-hint { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-size: 12px; } +.tc-hk-foot { flex-wrap: wrap; gap: 0.5rem; } +.tc-hk-foot > .tc-hint { display: inline-flex; align-items: center; gap: 0.375rem; margin: 0; font-size: 0.75rem; } .tc-hk-footnote { margin-top: auto; } .tc-hk--compact { cursor: pointer; } .tc-hk--compact:has(.tc-switch:hover) { cursor: default; } -.tc-hk-skeleton .tc-skeleton { min-height: 14px; width: 70%; } +.tc-hk-skeleton .tc-skeleton { min-height: 0.875rem; width: 70%; } .tc-hk-skeleton .tc-skeleton + .tc-skeleton { width: 95%; } .tc-src-status { flex-wrap: wrap; } .tc-src-status [data-accent] { color: var(--accent); } @@ -2015,7 +2015,7 @@ button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointe @media (max-width: 1023.98px) { .tc-sk-matrix { display: none; } .tc-sk-card > .tc-lh .tc-lh-filters, .tc-sk-card > .tc-lh .tc-lh-sep, .tc-sk-card > .tc-lh .tc-lh-view { display: none; } - .tc-sk-card > .tc-lh { min-height: 0; padding: 10px 12px; flex-wrap: wrap; } + .tc-sk-card > .tc-lh { min-height: 0; padding: 0.625rem 0.75rem; flex-wrap: wrap; } .tc-sk-card > .tc-lh:has(.tc-lh-filters:only-child) { display: none; } .tc-sk-card > .tc-lh .tc-spacer { display: none; } .tc-sk-card > .tc-lh .tc-lh-status { margin-right: auto; white-space: normal; } @@ -2027,36 +2027,42 @@ button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointe .tc-sk-card .tc-sk-phone-list { margin: 0; gap: 0; } .tc-sk-card .tc-plist { border: 0; border-radius: 0; } .tc-sk-card .tc-plist + .tc-plist { border-top: 1px solid var(--border); } - .tc-mx-hidden { flex-wrap: wrap; padding-block: 10px; } + .tc-mx-hidden { flex-wrap: wrap; padding-block: 0.625rem; } .tc-mx-hidden .tc-mono { display: none; } - .tc-mx-hidden .tc-btn { min-height: 44px; } + .tc-mx-hidden .tc-btn { min-height: var(--touch); } .tc-insp-banner { flex-wrap: wrap; } - .tc-insp-banner > div { flex-basis: calc(100% - 40px); } - .tc-insp-banner > .tc-btn { margin-left: 30px; } + .tc-insp-banner > div { flex-basis: calc(100% - 2.5rem); } + .tc-insp-banner > .tc-btn { margin-left: 1.875rem; } } @media (max-width: 639.98px) { - .tc-layer--sheet > .tc-sheet--hooks { width: 100%; height: calc(100dvh - 36px); max-height: calc(100dvh - 36px); margin-top: 36px; border-radius: var(--radius-2xl) var(--radius-2xl) 0 0; } - .tc-sheet--hooks .tc-hk-body { padding: 16px; gap: 20px; } - .tc-sheet--hooks .tc-hk { padding: 12px; } - .tc-sheet--hooks .tc-hk-head { flex-wrap: wrap; gap: 6px; } + .tc-layer--sheet > .tc-sheet--hooks { width: 100%; height: calc(100dvh - 36px); max-height: calc(100dvh - 36px); margin-top: 2.25rem; border-radius: var(--radius-2xl) var(--radius-2xl) 0 0; } + .tc-sheet--hooks .tc-hk-body { padding: 1rem; gap: 1.25rem; } + .tc-sheet--hooks .tc-hk { padding: 0.75rem; } + .tc-sheet--hooks .tc-hk-head { flex-wrap: wrap; gap: 0.375rem; } .tc-sheet--hooks .tc-hk-head > .tc-hk-event { flex-basis: 100%; } - .tc-sheet--hooks .tc-hk-label, .tc-sheet--hooks .tc-btn { min-height: 44px; } - .tc-sheet--hooks .tc-hk--compact { grid-template-columns: minmax(0, 1fr) auto; gap: 4px 8px; } + .tc-sheet--hooks .tc-hk-label, .tc-sheet--hooks .tc-btn { min-height: var(--touch); } + .tc-sheet--hooks .tc-hk--compact { grid-template-columns: minmax(0, 1fr) auto; gap: 0.25rem 0.5rem; } .tc-sheet--hooks .tc-hk--compact > .tc-hk-event { grid-column: 1; } .tc-sheet--hooks .tc-hk--compact > .tc-hk-state { grid-column: 1; grid-row: 2; } .tc-sheet--hooks .tc-hk--compact > .tc-hk-switch { grid-column: 2; grid-row: 1 / span 2; } .tc-sheet--hooks .tc-hk--compact > .tc-hk-line { grid-row: 3; } .tc-sheet--hooks .tc-hk-plugin-head > code { max-width: 65%; } - .tc-sheet--hooks .tc-hk-plugin-head > .tc-spacer + span { flex-basis: 100%; margin-left: 23px; } + .tc-sheet--hooks .tc-hk-plugin-head > .tc-spacer + span { flex-basis: 100%; margin-left: 1.4375rem; } .tc-sheet--hooks .tc-hk-foot > .tc-hint { flex-basis: 100%; } } .tc-sk-card { container-type: inline-size; } -.tc-sk-matrix .tc-mx { min-width: calc(264px + var(--mx-agent-count, 5) * 116px + var(--mx-more-space, 0px)); } +/* Keep filters together and move repository actions onto their own row when + the actual card, including the chosen interface type size, needs more room. */ +@container (max-width: 50rem) { + .tc-sk-card > .tc-lh:has(.tc-lh-status) .tc-lh-filters { flex-basis: 100%; } +} + +.tc-sk-matrix .tc-mx { min-width: calc(var(--mx-name-width) + 1.5rem + var(--mx-agent-count, 5) * var(--mx-agent-width) + var(--mx-more-space, 0rem)); } @media (max-width: 639.98px) { - .tc-pur-body .tc-ur-edits { display: grid; grid-template-columns: 18px minmax(0, 1fr); } + .tc-pur-body .tc-ur-edits { display: grid; grid-template-columns: 1.125rem minmax(0, 1fr); } .tc-pur-body .tc-ur-edits .tc-notice-actions { grid-column: 2; padding: 0; justify-self: start; } - .tc-pur-head { display: grid; grid-template-columns: minmax(0, 1fr) 44px; } + .tc-pur-head { display: grid; grid-template-columns: minmax(0, 1fr) var(--touch); } .tc-pur-head > .tc-ur-title { grid-column: 1 / -1; grid-row: 1; } .tc-pur-head > [data-update-close] { grid-column: 2; grid-row: 1; } .tc-pur-head > .tc-ur-queue { grid-column: 1 / -1; width: fit-content; } @@ -2066,28 +2072,28 @@ button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointe .tc-sk-agent-chips [data-accent] { color: var(--accent); } .tc-sk-phone-row { width: 100%; cursor: pointer; } .tc-sk-phone-row > .tc-prow-name-line { grid-column: 1; min-width: 0; } -.tc-sk-phone-summary .tc-pnote { min-height: 60px; } +.tc-sk-phone-summary .tc-pnote { min-height: 3.75rem; } .tc-sk-phone-summary .tc-pnote > span { min-width: 0; } -.tc-sheet--hooks .tc-insp-meta .tc-warning { display: inline-flex; align-items: center; gap: 6px; color: var(--warn-text); } +.tc-sheet--hooks .tc-insp-meta .tc-warning { display: inline-flex; align-items: center; gap: 0.375rem; color: var(--warn-text); } .tc-sheet--hooks .tc-hk-state .tc-dot { margin: 0; } .tc-sheet--hooks .tc-hk-state[data-tone="ok"] .tc-dot { color: var(--ok); } .tc-layer--sheet:has(> .tc-sheet--hooks) { justify-content: flex-end; align-items: stretch; } -.tc-layer--center:has(> .tc-ur:not(.tc-ur--phone)) { align-items: center; justify-content: center; padding: 16px; } +.tc-layer--center:has(> .tc-ur:not(.tc-ur--phone)) { align-items: center; justify-content: center; padding: 1rem; } @media (max-width: 639.98px) { .tc-layer--center:has(> .tc-ur--compact) { align-items: flex-end; justify-content: center; padding: 0; } .tc-layer--center > .tc-ur--compact { width: 100%; max-width: 100%; max-height: calc(100dvh - 36px); border-radius: var(--radius-2xl) var(--radius-2xl) 0 0; border-bottom: 0; } } .tc-ur-file-name > small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-ur-link-note { display: flex; align-items: baseline; gap: 3px; white-space: nowrap; } +.tc-ur-link-note { display: flex; align-items: baseline; gap: 0.1875rem; white-space: nowrap; } .tc-ur-link-note > span { flex: none; } .tc-ur-link-note > code { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; } @media (max-width: 639.98px) { - .tc-pur-head h2 { padding-right: 44px; } + .tc-pur-head h2 { padding-right: 2.75rem; } .tc-pur-head > [data-update-close] { align-self: start; } - .tc-ur-save-inline { padding: 4px 0; border: 0; background: none; color: inherit; font: inherit; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; } + .tc-ur-save-inline { padding: 0.25rem 0; border: 0; background: none; color: inherit; font: inherit; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; } } @media (max-width: 1023.98px) { @@ -2099,7 +2105,7 @@ button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointe .tc-skill-inspector [data-inspect-copy-source] { margin-left: auto; flex: none; } @media (max-width: 1023.98px) { - .tc-plist-group .tc-hookchip { min-height: 44px; } + .tc-plist-group .tc-hookchip { min-height: var(--touch); } } .tc-pur-diff { scrollbar-width: thin; scrollbar-color: var(--border-strong) transparent; } @@ -2143,378 +2149,378 @@ button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointe decisive action and for selection. */ /* ------------------------------------------------------------- page --- */ -#page-files { max-width: 1240px; gap: 0; } -#page-files > .tc-page-head { padding: 0 16px; } -#page-files > .tc-tabs { margin-top: 16px; } -.tc-fpage-body { display: flex; flex-direction: column; gap: 12px; margin-top: 16px; min-width: 0; } +#page-files { max-width: 77.5rem; gap: 0; } +#page-files > .tc-page-head { padding: 0 1rem; } +#page-files > .tc-tabs { margin-top: 1rem; } +.tc-fpage-body { display: flex; flex-direction: column; gap: 0.75rem; margin-top: 1rem; min-width: 0; } /* Tabs carry a quiet size or count. */ #files-browser .tc-tab-button .tc-tab-count { letter-spacing: 0; } -#files-browser .tc-tab-button > .tc-icon { width: 15px; height: 15px; color: var(--fg-muted); } +#files-browser .tc-tab-button > .tc-icon { width: 0.9375rem; height: 0.9375rem; color: var(--fg-muted); } #files-browser .tc-tab-button[aria-selected="true"] > .tc-icon { color: var(--fg); } -#files-browser .tc-tabs .tc-spacer + .tc-tab-aside { align-self: center; font-size: 12px; color: var(--fg-muted); display: inline-flex; align-items: center; gap: 6px; } +#files-browser .tc-tabs .tc-spacer + .tc-tab-aside { align-self: center; font-size: 0.75rem; color: var(--fg-muted); display: inline-flex; align-items: center; gap: 0.375rem; } /* --------------------------------------------------------- toolbar ---- */ -.tc-ftb { display: flex; align-items: center; gap: 8px; min-width: 0; } +.tc-ftb { display: flex; align-items: center; gap: 0.5rem; min-width: 0; } .tc-ftb .tc-btn { flex: none; } -.tc-ftb-sep { width: 1px; height: 20px; background: var(--border); margin: 0 2px; flex: none; } +.tc-ftb-sep { width: 1px; height: 1.25rem; background: var(--border); margin: 0 2px; flex: none; } /* Path bar: breadcrumbs in an input-shaped box. Click empty space, or press ⌘L, to type any absolute path. */ -.tc-path { position: relative; display: flex; align-items: center; gap: 2px; flex: 1 1 auto; min-width: 0; height: 32px; padding: 0 2px 0 8px; +.tc-path { position: relative; display: flex; align-items: center; gap: 2px; flex: 1 1 auto; min-width: 0; height: 2rem; padding: 0 2px 0 0.5rem; border: 1px solid var(--border-strong); border-radius: var(--radius-md); background: var(--bg); box-shadow: var(--shadow-xs); } -[data-theme="dark"] .tc-path { background: oklch(1 0 0 / 0.0256); } -.tc-path > .tc-icon:first-child { width: 15px; height: 15px; color: var(--fg-muted); flex: none; margin-right: 4px; } -.tc-crumb { display: inline-flex; align-items: center; height: 24px; padding: 0 6px; border: 0; border-radius: var(--radius-sm); background: none; color: var(--fg-muted); - font: inherit; font-size: 13px; white-space: nowrap; cursor: pointer; text-decoration: none !important; } +[data-theme="dark"] .tc-path { background: color-mix(in srgb, var(--border-strong) 32%, transparent); } +.tc-path > .tc-icon:first-child { width: 0.9375rem; height: 0.9375rem; color: var(--fg-muted); flex: none; margin-right: 0.25rem; } +.tc-crumb { display: inline-flex; align-items: center; height: 1.5rem; padding: 0 0.375rem; border: 0; border-radius: var(--radius-sm); background: none; color: var(--fg-muted); + font: inherit; font-size: 0.8125rem; white-space: nowrap; cursor: pointer; text-decoration: none !important; } .tc-crumb:hover { background: var(--hover); color: var(--fg); } .tc-crumb[aria-current="location"] { color: var(--fg); font-weight: 500; } -.tc-crumb-sep { width: 12px; height: 12px; color: var(--fg-subtle); flex: none; } +.tc-crumb-sep { width: 0.75rem; height: 0.75rem; color: var(--fg-subtle); flex: none; } .tc-path-end { margin-left: auto; display: flex; align-items: center; gap: 2px; flex: none; } -.tc-path-end .tc-badge { height: 20px; font-size: 11px; font-weight: 500; margin-right: 4px; } -.tc-path-real { font: 400 12px/1 var(--font-mono); color: var(--fg-subtle); margin-right: 6px; white-space: nowrap; } -.tc-path[data-editing] { border-color: var(--focus); box-shadow: 0 0 0 3px color-mix(in srgb, var(--focus) 22%, transparent); padding-left: 8px; } -.tc-path[data-editing] > input { flex: 1; min-width: 0; height: 30px; border: 0; background: none; outline: none; color: var(--fg); font: 400 13px/30px var(--font-mono); padding: 0; } +.tc-path-end .tc-badge { height: 1.25rem; font-size: 0.6875rem; font-weight: 500; margin-right: 0.25rem; } +.tc-path-real { font: 400 0.75rem/1 var(--font-mono); color: var(--fg-subtle); margin-right: 0.375rem; white-space: nowrap; } +.tc-path[data-editing] { border-color: var(--focus); box-shadow: 0 0 0 3px color-mix(in srgb, var(--focus) 22%, transparent); padding-left: 0.5rem; } +.tc-path[data-editing] > input { flex: 1; min-width: 0; height: 1.875rem; border: 0; background: none; outline: none; color: var(--fg); font: 400 0.8125rem/1.875rem var(--font-mono); padding: 0; } .tc-path[data-editing] > input + .tc-path-ghost { position: absolute; } -.tc-path-ghost { font: 400 13px/30px var(--font-mono); color: var(--fg-subtle); pointer-events: none; } +.tc-path-ghost { font: 400 0.8125rem/1.875rem var(--font-mono); color: var(--fg-subtle); pointer-events: none; } .tc-fsearch { position: relative; display: flex; align-items: center; flex: 0 0 232px; } -.tc-fsearch > .tc-icon { position: absolute; left: 9px; width: 15px; height: 15px; color: var(--fg-muted); pointer-events: none; } -.tc-fsearch > .tc-input { height: 32px; padding-left: 30px; padding-right: 30px; font-size: 13px; } -.tc-fsearch > .tc-kbd { position: absolute; right: 6px; } +.tc-fsearch > .tc-icon { position: absolute; left: 0.5625rem; width: 0.9375rem; height: 0.9375rem; color: var(--fg-muted); pointer-events: none; } +.tc-fsearch > .tc-input { height: 2rem; padding-left: 1.875rem; padding-right: 1.875rem; font-size: 0.8125rem; } +.tc-fsearch > .tc-kbd { position: absolute; right: 0.375rem; } .tc-fsearch[data-active] > .tc-input { border-color: var(--focus); box-shadow: 0 0 0 3px color-mix(in srgb, var(--focus) 22%, transparent); } .tc-segicons { display: inline-flex; padding: 2px; gap: 2px; border-radius: var(--radius-md); background: var(--surface-sunken); border: 1px solid color-mix(in srgb, var(--border) 60%, transparent); flex: none; } -.tc-segicons button { display: inline-flex; align-items: center; gap: 6px; height: 26px; padding: 0 9px; border: 0; border-radius: 6px; background: transparent; color: var(--fg-muted); font: inherit; font-size: 12.5px; font-weight: 500; cursor: pointer; } -.tc-segicons button .tc-icon { width: 14px; height: 14px; } +.tc-segicons button { display: inline-flex; align-items: center; gap: 0.375rem; height: 1.625rem; padding: 0 0.5625rem; border: 0; border-radius: 0.375rem; background: transparent; color: var(--fg-muted); font: inherit; font-size: 0.78125rem; font-weight: 500; cursor: pointer; } +.tc-segicons button .tc-icon { width: 0.875rem; height: 0.875rem; } .tc-segicons button[aria-pressed="true"] { background: var(--surface); color: var(--fg); box-shadow: 0 1px 2px rgb(0 0 0 / 0.08), 0 0 0 1px color-mix(in srgb, var(--border) 80%, transparent); } -[data-theme="dark"] .tc-segicons button[aria-pressed="true"] { background: oklch(1 0 0 / 0.08); box-shadow: none; } +[data-theme="dark"] .tc-segicons button[aria-pressed="true"] { background: color-mix(in srgb, var(--border-strong) 72%, transparent); box-shadow: none; } .tc-split { display: inline-flex; flex: none; } .tc-split > .tc-btn:first-child { border-top-right-radius: 0; border-bottom-right-radius: 0; } -.tc-split > .tc-btn:last-child { border-top-left-radius: 0; border-bottom-left-radius: 0; padding: 0 7px; margin-left: 1px; } +.tc-split > .tc-btn:last-child { border-top-left-radius: 0; border-bottom-left-radius: 0; padding: 0 0.4375rem; margin-left: 1px; } .tc-split > .tc-btn--primary:last-child { box-shadow: inset 1px 0 0 color-mix(in srgb, var(--on-accent) 22%, transparent); margin-left: 0; } /* ------------------------------------------------------- summary ------ */ /* What the projects hold, as one bar: kept files, Git history, and what an install or build recreates (hatched). */ -.tc-fsum { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px 24px; padding: 14px 16px 14px 18px; } -.tc-fsum-lead { display: flex; align-items: baseline; gap: 8px; min-width: 0; } -.tc-fsum-lead strong { font-size: 22px; line-height: 28px; font-weight: 600; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; } -.tc-fsum-lead span { font-size: 13px; color: var(--fg-muted); } -.tc-fsum-free { justify-self: end; font-size: 12px; color: var(--fg-muted); text-align: right; white-space: nowrap; } +.tc-fsum { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 0.625rem 1.5rem; padding: 0.875rem 1rem 0.875rem 1.125rem; } +.tc-fsum-lead { display: flex; align-items: baseline; gap: 0.5rem; min-width: 0; } +.tc-fsum-lead strong { font-size: 1.375rem; line-height: 1.75rem; font-weight: 600; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; } +.tc-fsum-lead span { font-size: 0.8125rem; color: var(--fg-muted); } +.tc-fsum-free { justify-self: end; font-size: 0.75rem; color: var(--fg-muted); text-align: right; white-space: nowrap; } .tc-fsum-free strong { color: var(--fg); font-weight: 500; } .tc-fsum .tc-comp { grid-column: 1 / -1; } -.tc-fsum-legend { display: flex; align-items: center; gap: 6px 18px; flex-wrap: wrap; font-size: 12px; color: var(--fg-muted); } +.tc-fsum-legend { display: flex; align-items: center; gap: 0.375rem 1.125rem; flex-wrap: wrap; font-size: 0.75rem; color: var(--fg-muted); } .tc-fsum-legend strong { color: var(--fg); font-weight: 500; font-variant-numeric: tabular-nums; } .tc-fsum .tc-btn { justify-self: end; } -.tc-comp { display: flex; gap: 2px; height: 10px; border-radius: 5px; overflow: hidden; background: var(--hover); } -.tc-comp > span { display: block; height: 100%; min-width: 3px; } +.tc-comp { display: flex; gap: 2px; height: 0.625rem; border-radius: 0.3125rem; overflow: hidden; background: var(--hover); } +.tc-comp > span { display: block; height: 100%; min-width: 0.1875rem; } .tc-comp > [data-part="kept"] { background: color-mix(in srgb, var(--fg) 62%, transparent); } .tc-comp > [data-part="git"] { background: color-mix(in srgb, var(--fg) 30%, transparent); } .tc-comp > [data-part="rebuild"] { background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--fg) 22%, transparent) 0 3px, color-mix(in srgb, var(--fg) 9%, transparent) 3px 6px); } .tc-comp > [data-part="free"] { background: transparent; } .tc-comp > [data-part="other"], :is(#files-browser, .tc-files-detail-sheet, .tc-fdlg) .tc-key > i[data-part="other"] { background: color-mix(in srgb, var(--fg) 14%, transparent); } -:is(#files-browser, .tc-files-detail-sheet, .tc-fdlg) .tc-key { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; } -:is(#files-browser, .tc-files-detail-sheet, .tc-fdlg) .tc-key > i { display: inline-block; width: 10px; height: 10px; border-radius: 3px; } +:is(#files-browser, .tc-files-detail-sheet, .tc-fdlg) .tc-key { display: inline-flex; align-items: center; gap: 0.375rem; white-space: nowrap; } +:is(#files-browser, .tc-files-detail-sheet, .tc-fdlg) .tc-key > i { display: inline-block; width: 0.625rem; height: 0.625rem; border-radius: 0.1875rem; } :is(#files-browser, .tc-files-detail-sheet, .tc-fdlg) .tc-key > i[data-part="kept"] { background: color-mix(in srgb, var(--fg) 62%, transparent); } :is(#files-browser, .tc-files-detail-sheet, .tc-fdlg) .tc-key > i[data-part="git"] { background: color-mix(in srgb, var(--fg) 30%, transparent); } :is(#files-browser, .tc-files-detail-sheet, .tc-fdlg) .tc-key > i[data-part="rebuild"] { background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--fg) 28%, transparent) 0 2px, color-mix(in srgb, var(--fg) 10%, transparent) 2px 4px); } /* ------------------------------------------------------- workspace ---- */ -.tc-fx { display: grid; grid-template-columns: minmax(0, 1fr) clamp(260px, 32%, 344px); gap: 12px; align-items: start; min-width: 0; } +.tc-fx { display: grid; grid-template-columns: minmax(0, 1fr) clamp(16.25rem, 32%, 21.5rem); gap: 0.75rem; align-items: start; min-width: 0; } .tc-fx[data-panel="closed"] { grid-template-columns: minmax(0, 1fr); } .tc-fcard { position: relative; min-width: 0; } /* The list. One grid for header and rows. */ -.tc-fl { --fl-cols: 32px minmax(0, 1fr) 176px 96px 32px; position: relative; } -.tc-fl--projects { --fl-cols: 32px minmax(0, 1fr) 168px 92px 84px 32px; } -.tc-fl--wide { --fl-cols: 32px minmax(0, 1fr) 128px 196px 104px 40px; } -.tc-fl-head, .tc-fl-row { display: grid; grid-template-columns: var(--fl-cols); align-items: center; column-gap: 12px; padding: 0 8px 0 10px; } -.tc-fl-head { min-height: 36px; font-size: 12px; font-weight: 500; color: var(--fg-muted); border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2%, transparent); border-radius: calc(var(--radius-xl) - 1px) calc(var(--radius-xl) - 1px) 0 0; } -.tc-fl-head > button.tc-sort { display: inline-flex; align-items: center; gap: 4px; justify-self: start; height: 24px; margin-left: -6px; padding: 0 6px; border: 0; border-radius: var(--radius-sm); background: none; font: inherit; color: inherit; cursor: pointer; } +.tc-fl { --fl-cols: 2rem minmax(0, 1fr) 11rem 6rem 2rem; position: relative; } +.tc-fl--projects { --fl-cols: 2rem minmax(0, 1fr) 10.5rem 5.75rem 5.25rem 2rem; } +.tc-fl--wide { --fl-cols: 2rem minmax(0, 1fr) 8rem 12.25rem 6.5rem 2.5rem; } +.tc-fl-head, .tc-fl-row { display: grid; grid-template-columns: var(--fl-cols); align-items: center; column-gap: 0.75rem; padding: 0 0.5rem 0 0.625rem; } +.tc-fl-head { min-height: 2.25rem; font-size: 0.75rem; font-weight: 500; color: var(--fg-muted); border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2%, transparent); border-radius: calc(var(--radius-xl) - 1px) calc(var(--radius-xl) - 1px) 0 0; } +.tc-fl-head > button.tc-sort { display: inline-flex; align-items: center; gap: 0.25rem; justify-self: start; height: 1.5rem; margin-left: -0.375rem; padding: 0 0.375rem; border: 0; border-radius: var(--radius-sm); background: none; font: inherit; color: inherit; cursor: pointer; } .tc-fl-head > button.tc-sort:hover { background: var(--hover); color: var(--fg); } .tc-fl-head > button.tc-sort[aria-sort] { color: var(--fg); } -.tc-fl-head > button.tc-sort .tc-icon { width: 12px; height: 12px; } +.tc-fl-head > button.tc-sort .tc-icon { width: 0.75rem; height: 0.75rem; } .tc-fl-head > .tc-right, .tc-fl-row > .tc-right { justify-self: end; text-align: right; } -.tc-fl-row { min-height: 44px; border-top: 1px solid var(--hairline); color: var(--fg); text-decoration: none !important; cursor: default; transition: background-color var(--dur-fast); } +.tc-fl-row { min-height: var(--touch); border-top: 1px solid var(--hairline); color: var(--fg); text-decoration: none !important; cursor: default; transition: background-color var(--dur-fast); } .tc-fl-head + .tc-fl-row { border-top: 0; } .tc-fl-row:hover, .tc-fl-row[data-hover] { background: color-mix(in srgb, var(--surface-sunken) 70%, transparent); } -[data-theme="dark"] .tc-fl-row:hover, [data-theme="dark"] .tc-fl-row[data-hover] { background: oklch(1 0 0 / 0.025); } +[data-theme="dark"] .tc-fl-row:hover, [data-theme="dark"] .tc-fl-row[data-hover] { background: color-mix(in srgb, var(--fg) 2.5%, transparent); } .tc-fl-row[aria-selected="true"] { background: color-mix(in srgb, var(--accent) 7%, transparent); box-shadow: inset 2px 0 0 var(--accent); } [data-theme="dark"] .tc-fl-row[aria-selected="true"] { background: color-mix(in srgb, var(--accent) 16%, transparent); } .tc-fl-row[data-dim] .tc-fname > span:first-child, .tc-fl-row[data-dim] .tc-fl-icon { opacity: 0.62; } -.tc-fl--projects .tc-fl-row { min-height: 60px; padding-top: 8px; padding-bottom: 8px; } +.tc-fl--projects .tc-fl-row { min-height: 3.75rem; padding-top: 0.5rem; padding-bottom: 0.5rem; } .tc-fl-row .tc-checkbox { margin: 0; } .tc-fl-row:not(:hover):not([aria-selected="true"]) .tc-checkbox:not(:checked) { opacity: 0; } .tc-fl[data-selecting] .tc-fl-row .tc-checkbox { opacity: 1 !important; } .tc-fl-head .tc-checkbox { margin: 0; } -.tc-fcell { display: flex; align-items: center; gap: 10px; min-width: 0; } -.tc-fl-icon { width: 18px; height: 18px; flex: none; color: var(--fg-muted); } +.tc-fcell { display: flex; align-items: center; gap: 0.625rem; min-width: 0; } +.tc-fl-icon { width: 1.125rem; height: 1.125rem; flex: none; color: var(--fg-muted); } .tc-fl-icon[data-kind="folder"] { color: color-mix(in srgb, var(--fg) 58%, transparent); } .tc-fl-icon[data-kind="image"], .tc-fl-icon[data-kind="video"] { color: var(--id-cursor); } .tc-fl-icon[data-kind="code"] { color: var(--id-grok); } .tc-fl-icon[data-kind="archive"] { color: var(--id-claude); } .tc-fl-icon[data-kind="secret"] { color: var(--warn); } -.tc-ftile { width: 32px; height: 32px; flex: none; display: grid; place-items: center; border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--border); box-shadow: var(--shadow-xs); color: var(--fg); } -[data-theme="dark"] .tc-ftile { background: oklch(1 0 0 / 0.04); } -.tc-ftile .tc-icon { width: 16px; height: 16px; } -.tc-fname { display: flex; flex: 1; flex-direction: column; gap: 3px; min-width: 0; } -.tc-fname > span:first-child { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 14px; line-height: 20px; } +.tc-ftile { width: 2rem; height: 2rem; flex: none; display: grid; place-items: center; border-radius: var(--radius-md); background: var(--surface); border: 1px solid var(--border); box-shadow: var(--shadow-xs); color: var(--fg); } +[data-theme="dark"] .tc-ftile { background: color-mix(in srgb, var(--fg) 4%, transparent); } +.tc-ftile .tc-icon { width: 1rem; height: 1rem; } +.tc-fname { display: flex; flex: 1; flex-direction: column; gap: 0.1875rem; min-width: 0; } +.tc-fname > span:first-child { display: flex; align-items: center; gap: 0.5rem; min-width: 0; font-size: 0.875rem; line-height: 1.25rem; } .tc-fname > span:first-child > b { min-width: 0; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-fname > span:first-child > b.tc-mono-name { font: 400 13px/20px var(--font-mono); } +.tc-fname > span:first-child > b.tc-mono-name { font: 400 0.8125rem/1.25rem var(--font-mono); } .tc-fname .tc-sep { color: var(--fg-subtle); } /* Small labels beside a name. */ -.tc-ftag { display: inline-flex; align-items: center; gap: 4px; height: 18px; padding: 0 6px; border-radius: var(--radius-sm); font-size: 11px; font-weight: 500; line-height: 1; white-space: nowrap; flex: none; +.tc-ftag { display: inline-flex; align-items: center; gap: 0.25rem; height: 1.125rem; padding: 0 0.375rem; border-radius: var(--radius-sm); font-size: 0.6875rem; font-weight: 500; line-height: 1; white-space: nowrap; flex: none; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 5.5%, transparent); } -.tc-ftag .tc-icon { width: 11px; height: 11px; } +.tc-ftag .tc-icon { width: 0.6875rem; height: 0.6875rem; } .tc-ftag[data-tone="live"] { color: var(--ok-text); background: var(--ok-soft); } -.tc-ftag[data-tone="live"] .tc-dot { width: 6px; height: 6px; color: var(--ok); } +.tc-ftag[data-tone="live"] .tc-dot { width: 0.375rem; height: 0.375rem; color: var(--ok); } .tc-ftag[data-tone="warn"] { color: var(--warn-text); background: var(--warn-soft); } .tc-ftag[data-tone="rebuild"] { color: var(--fg-muted); background: transparent; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--fg) 14%, transparent); } -.tc-ftag code { font-size: 11px; } -.tc-git { display: inline-grid; place-items: center; width: 16px; height: 16px; border-radius: 4px; font: 600 10.5px/1 var(--font-mono); flex: none; } +.tc-ftag code { font-size: 0.6875rem; } +.tc-git { display: inline-grid; place-items: center; width: 1rem; height: 1rem; border-radius: 0.25rem; font: 600 0.65625rem/1 var(--font-mono); flex: none; } .tc-git[data-s="M"] { color: var(--warn-text); background: var(--warn-soft); } .tc-git[data-s="A"], .tc-git[data-s="U"] { color: var(--ok-text); background: var(--ok-soft); } .tc-git[data-s="D"] { color: var(--danger-text); background: var(--danger-soft); } /* Size cell: a bar against the largest sibling, the rebuildable part hatched. */ -.tc-fsize { display: grid; grid-template-columns: minmax(0, 1fr) 64px; align-items: center; gap: 10px; min-width: 0; } -.tc-fsize > b { font-size: 13px; font-weight: 400; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; } +.tc-fsize { display: grid; grid-template-columns: minmax(0, 1fr) 4rem; align-items: center; gap: 0.625rem; min-width: 0; } +.tc-fsize > b { font-size: 0.8125rem; font-weight: 400; text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; } .tc-fsize > b[data-muted] { color: var(--fg-muted); } -.tc-bar { position: relative; display: flex; height: 6px; border-radius: 3px; background: color-mix(in srgb, var(--fg) 6%, transparent); overflow: hidden; } +.tc-bar { position: relative; display: flex; height: 0.375rem; border-radius: 0.1875rem; background: color-mix(in srgb, var(--fg) 6%, transparent); overflow: hidden; } .tc-bar > span { display: block; height: 100%; } .tc-bar > [data-part="kept"] { background: color-mix(in srgb, var(--fg) 46%, transparent); } .tc-bar > [data-part="git"] { background: color-mix(in srgb, var(--fg) 28%, transparent); } .tc-bar > [data-part="rebuild"] { background: repeating-linear-gradient(135deg, color-mix(in srgb, var(--fg) 26%, transparent) 0 2px, color-mix(in srgb, var(--fg) 10%, transparent) 2px 4px); } .tc-fl-row[aria-selected="true"] .tc-bar > [data-part="kept"] { background: color-mix(in srgb, var(--accent) 80%, var(--fg)); } -.tc-fmeta { font-size: 12.5px; color: var(--fg-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } +.tc-fmeta { font-size: 0.78125rem; color: var(--fg-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .tc-fmeta strong { color: var(--fg); font-weight: 400; } .tc-fl-row > .tc-fmenu { opacity: 0; justify-self: end; } .tc-fl-row:hover > .tc-fmenu, .tc-fl-row[aria-selected="true"] > .tc-fmenu, .tc-fl-row[data-hover] > .tc-fmenu { opacity: 1; } /* Selection summary and actions share a row, wrapping as groups when needed. */ -.tc-fl-selbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; min-height: 44px; padding: 8px 10px; border-bottom: 1px solid color-mix(in srgb, var(--accent) 30%, var(--border)); +.tc-fl-selbar { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.75rem; min-height: var(--touch); padding: 0.5rem 0.625rem; border-bottom: 1px solid color-mix(in srgb, var(--accent) 30%, var(--border)); background: color-mix(in srgb, var(--accent) 6%, var(--surface)); border-radius: calc(var(--radius-xl) - 1px) calc(var(--radius-xl) - 1px) 0 0; } [data-theme="dark"] .tc-fl-selbar { background: color-mix(in srgb, var(--accent) 14%, var(--surface)); } .tc-fl-selbar > .tc-checkbox { flex: none; } -.tc-files-selection-summary { display: flex; flex: 1; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; min-width: 0; font-size: 13px; } +.tc-files-selection-summary { display: flex; flex: 1; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.5rem; min-width: 0; font-size: 0.8125rem; } .tc-files-selection-summary strong { font-weight: 500; white-space: nowrap; } -.tc-files-selection-summary span { color: var(--fg-muted); font-size: 12.5px; } -.tc-files-selection-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 4px; max-width: 100%; margin-left: auto; } +.tc-files-selection-summary span { color: var(--fg-muted); font-size: 0.78125rem; } +.tc-files-selection-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 0.25rem; max-width: 100%; margin-left: auto; } /* Footer of the list: counts, hidden items, scan time. */ -.tc-fl-foot { display: flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 12px 0 16px; border-top: 1px solid var(--border); font-size: 12px; color: var(--fg-muted); +.tc-fl-foot { display: flex; align-items: center; gap: 0.5rem; min-height: 2.5rem; padding: 0 0.75rem 0 1rem; border-top: 1px solid var(--border); font-size: 0.75rem; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2%, transparent); border-radius: 0 0 calc(var(--radius-xl) - 1px) calc(var(--radius-xl) - 1px); } .tc-fl-foot .tc-sep { color: var(--fg-subtle); } .tc-fl-foot .tc-btn--link, .tc-linkbtn { height: auto; padding: 0; border: 0; background: none; color: var(--fg); font: inherit; text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; cursor: pointer; } -.tc-fl-foot .tc-icon { width: 14px; height: 14px; } +.tc-fl-foot .tc-icon { width: 0.875rem; height: 0.875rem; } /* --------------------------------------------------------- details --- */ -.tc-fd { display: flex; flex-direction: column; min-width: 0; position: sticky; top: 16px; } -.tc-fd-head { display: flex; align-items: flex-start; gap: 12px; padding: 16px 10px 14px 16px; } +.tc-fd { display: flex; flex-direction: column; min-width: 0; position: sticky; top: 1rem; } +.tc-fd-head { display: flex; align-items: flex-start; gap: 0.75rem; padding: 1rem 0.625rem 0.875rem 1rem; } .tc-fd-title { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; } -.tc-fd-title h2 { margin: 0; font-size: 16px; line-height: 22px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-fd-title code { font-size: 11.5px; color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-fd-sec { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px; border-top: 1px solid var(--hairline); } -.tc-fd-label { display: flex; align-items: center; gap: 8px; font-size: 12px; line-height: 16px; color: var(--fg-muted); } +.tc-fd-title h2 { margin: 0; font-size: 1rem; line-height: 1.375rem; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.tc-fd-title code { font-size: 0.71875rem; color: var(--fg-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.tc-fd-sec { display: flex; flex-direction: column; gap: 0.625rem; padding: 0.875rem 1rem; border-top: 1px solid var(--hairline); } +.tc-fd-label { display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; line-height: 1rem; color: var(--fg-muted); } .tc-fd-label .tc-spacer + * { color: var(--fg-muted); } -.tc-fd-big { display: flex; align-items: baseline; gap: 8px; } -.tc-fd-big strong { font-size: 22px; line-height: 28px; font-weight: 600; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; } -.tc-fd-big span { font-size: 12px; color: var(--fg-muted); } -.tc-fd-keys { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 6px 8px; align-items: center; font-size: 12.5px; } +.tc-fd-big { display: flex; align-items: baseline; gap: 0.5rem; } +.tc-fd-big strong { font-size: 1.375rem; line-height: 1.75rem; font-weight: 600; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; } +.tc-fd-big span { font-size: 0.75rem; color: var(--fg-muted); } +.tc-fd-keys { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 0.375rem 0.5rem; align-items: center; font-size: 0.78125rem; } .tc-fd-keys > b { font-weight: 400; color: var(--fg); text-align: right; font-variant-numeric: tabular-nums; } .tc-fd-keys > span { color: var(--fg-muted); } -.tc-fd-list { display: flex; flex-direction: column; margin: 0 -8px; } -.tc-fd-item { display: grid; grid-template-columns: 16px minmax(0, 1fr) auto; align-items: center; gap: 8px; min-height: 30px; padding: 4px 8px; border-radius: var(--radius-sm); font-size: 13px; color: var(--fg); text-decoration: none !important; } +.tc-fd-list { display: flex; flex-direction: column; margin: 0 -0.5rem; } +.tc-fd-item { display: grid; grid-template-columns: 1rem minmax(0, 1fr) auto; align-items: center; gap: 0.5rem; min-height: 1.875rem; padding: 0.25rem 0.5rem; border-radius: var(--radius-sm); font-size: 0.8125rem; color: var(--fg); text-decoration: none !important; } .tc-fd-item:hover { background: var(--hover); } -.tc-fd-item > .tc-icon { width: 15px; height: 15px; color: var(--fg-muted); } +.tc-fd-item > .tc-icon { width: 0.9375rem; height: 0.9375rem; color: var(--fg-muted); } .tc-fd-item > span:nth-child(2) { display: flex; flex-direction: column; min-width: 0; } .tc-fd-item > span:nth-child(2) > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-fd-item > span:nth-child(2) > small { font-size: 11.5px; color: var(--fg-muted); } -.tc-fd-item > b { font-weight: 400; font-size: 12.5px; color: var(--fg-muted); font-variant-numeric: tabular-nums; } -.tc-fd-item .tc-bar { margin-top: 5px; height: 4px; } -.tc-fd-facts { display: grid; grid-template-columns: 84px minmax(0, 1fr); gap: 6px 10px; margin: 0; font-size: 12.5px; line-height: 18px; } +.tc-fd-item > span:nth-child(2) > small { font-size: 0.71875rem; color: var(--fg-muted); } +.tc-fd-item > b { font-weight: 400; font-size: 0.78125rem; color: var(--fg-muted); font-variant-numeric: tabular-nums; } +.tc-fd-item .tc-bar { margin-top: 0.3125rem; height: 0.25rem; } +.tc-fd-facts { display: grid; grid-template-columns: 5.25rem minmax(0, 1fr); gap: 0.375rem 0.625rem; margin: 0; font-size: 0.78125rem; line-height: 1.125rem; } .tc-fd-facts dt { color: var(--fg-muted); } -.tc-fd-facts dd { margin: 0; min-width: 0; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; } -.tc-fd-facts code { font-size: 12px; } -.tc-fd-facts .tc-dot { width: 6px; height: 6px; } -.tc-fd-foot { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; padding: 12px 16px 14px; border-top: 1px solid var(--hairline); } +.tc-fd-facts dd { margin: 0; min-width: 0; display: flex; align-items: center; gap: 0.375rem; flex-wrap: wrap; } +.tc-fd-facts code { font-size: 0.75rem; } +.tc-fd-facts .tc-dot { width: 0.375rem; height: 0.375rem; } +.tc-fd-foot { display: flex; align-items: center; gap: 0.375rem; flex-wrap: wrap; padding: 0.75rem 1rem 0.875rem; border-top: 1px solid var(--hairline); } .tc-fd-foot .tc-btn--primary { flex: 1 1 auto; } /* Preview inside the details panel. */ -.tc-fprev { position: relative; margin: 0; padding: 10px 0; border-radius: var(--radius-lg); border: 1px solid var(--border); background: var(--surface-sunken); font: 400 11.5px/19px var(--font-mono); color: var(--fg); max-height: 288px; overflow: hidden; counter-reset: ln; } -.tc-fprev > span { display: grid; grid-template-columns: 34px minmax(0, 1fr); padding-right: 10px; white-space: pre; overflow: hidden; text-overflow: ellipsis; } -.tc-fprev > span::before { counter-increment: ln; content: counter(ln); padding-right: 10px; text-align: right; color: var(--fg-subtle); user-select: none; } +.tc-fprev { position: relative; margin: 0; padding: 0.625rem 0; border-radius: var(--radius-lg); border: 1px solid var(--border); background: var(--surface-sunken); font: 400 0.71875rem/1.1875rem var(--font-mono); color: var(--fg); max-height: 18rem; overflow: hidden; counter-reset: ln; } +.tc-fprev > span { display: grid; grid-template-columns: 2.125rem minmax(0, 1fr); padding-right: 0.625rem; white-space: pre; overflow: hidden; text-overflow: ellipsis; } +.tc-fprev > span::before { counter-increment: ln; content: counter(ln); padding-right: 0.625rem; text-align: right; color: var(--fg-subtle); user-select: none; } .tc-fprev .k { color: var(--accent-text); } [data-theme="dark"] .tc-fprev .k, [data-theme="dark"] .tc-ed .k { color: color-mix(in srgb, var(--accent-text) 55%, white); } .tc-fprev .s { color: var(--ok-text); } .tc-fprev .m { color: var(--fg-muted); } -.tc-fprev::after { content: ""; position: absolute; left: 1px; right: 1px; bottom: 1px; height: 48px; border-radius: 0 0 var(--radius-lg) var(--radius-lg); background: linear-gradient(to bottom, transparent, var(--surface-sunken)); } +.tc-fprev::after { content: ""; position: absolute; left: 1px; right: 1px; bottom: 1px; height: 3rem; border-radius: 0 0 var(--radius-lg) var(--radius-lg); background: linear-gradient(to bottom, transparent, var(--surface-sunken)); } .tc-fprev-img { display: grid; place-items: center; aspect-ratio: 16 / 10; border-radius: var(--radius-lg); border: 1px solid var(--border); overflow: hidden; background: conic-gradient(color-mix(in srgb, var(--fg) 5%, transparent) 25%, transparent 0 50%, color-mix(in srgb, var(--fg) 5%, transparent) 0 75%, transparent 0) 0 0 / 16px 16px; } /* ------------------------------------------------------------ sizes --- */ -.tc-tree { --tree-cols: minmax(0, 1fr) minmax(120px, 0.7fr) 76px 52px 40px; } +.tc-tree { --tree-cols: minmax(0, 1fr) minmax(7.5rem, 0.7fr) 4.75rem 3.25rem 2.5rem; } .tc-tree .tc-fl-head, .tc-tree .tc-fl-row { grid-template-columns: var(--tree-cols); } -.tc-tree .tc-fl-row { min-height: 38px; } -.tc-tnode { display: flex; align-items: center; gap: 6px; min-width: 0; padding-left: calc(var(--depth, 0) * 20px); } -.tc-tnode > button { display: grid; place-items: center; width: 20px; height: 20px; flex: none; border: 0; border-radius: 4px; background: none; color: var(--fg-muted); cursor: pointer; padding: 0; } +.tc-tree .tc-fl-row { min-height: 2.375rem; } +.tc-tnode { display: flex; align-items: center; gap: 0.375rem; min-width: 0; padding-left: calc(var(--depth, 0) * 20px); } +.tc-tnode > button { display: grid; place-items: center; width: 1.25rem; height: 1.25rem; flex: none; border: 0; border-radius: 0.25rem; background: none; color: var(--fg-muted); cursor: pointer; padding: 0; } .tc-tnode > button:hover { background: var(--hover); color: var(--fg); } -.tc-tnode > button .tc-icon { width: 14px; height: 14px; } -.tc-tnode > i { width: 20px; flex: none; } -.tc-tnode > .tc-fl-icon { width: 16px; height: 16px; } -.tc-tnode > b { font-weight: 400; font-size: 13.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-tree .tc-bar { height: 8px; border-radius: 4px; } -.tc-tpct { font-size: 12px; color: var(--fg-muted); text-align: right; font-variant-numeric: tabular-nums; } +.tc-tnode > button .tc-icon { width: 0.875rem; height: 0.875rem; } +.tc-tnode > i { width: 1.25rem; flex: none; } +.tc-tnode > .tc-fl-icon { width: 1rem; height: 1rem; } +.tc-tnode > b { font-weight: 400; font-size: 0.84375rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.tc-tree .tc-bar { height: 0.5rem; border-radius: 0.25rem; } +.tc-tpct { font-size: 0.75rem; color: var(--fg-muted); text-align: right; font-variant-numeric: tabular-nums; } .tc-tree .tc-fl-row[data-depth="0"] .tc-tnode > b { font-weight: 500; } /* ---------------------------------------------------------- editor ---- */ -.tc-layer--sheet > .tc-sheet--editor { width: 760px; } -.tc-ed-head { display: flex; align-items: center; gap: 12px; padding: 14px 12px 12px 18px; border-bottom: 1px solid var(--hairline); } +.tc-layer--sheet > .tc-sheet--editor { width: 47.5rem; } +.tc-ed-head { display: flex; align-items: center; gap: 0.75rem; padding: 0.875rem 0.75rem 0.75rem 1.125rem; border-bottom: 1px solid var(--hairline); } .tc-ed-head > div { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1; } -.tc-ed-head strong { font: 500 14px/20px var(--font-mono); } -.tc-ed-head small { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--fg-muted); } -.tc-ed-bar { display: flex; align-items: center; gap: 8px; padding: 8px 12px 8px 18px; border-bottom: 1px solid var(--hairline); font-size: 12px; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 1.5%, transparent); } -.tc-ed { flex: 1; min-height: 0; overflow: hidden; padding: 12px 0; font: 400 13px/22px var(--font-mono); color: var(--fg); background: var(--surface-sunken); counter-reset: ln; } -.tc-ed > span { display: grid; grid-template-columns: 48px minmax(0, 1fr); padding-right: 16px; white-space: pre-wrap; } -.tc-ed > span::before { counter-increment: ln; content: counter(ln); padding-right: 14px; text-align: right; color: var(--fg-subtle); } +.tc-ed-head strong { font: 500 0.875rem/1.25rem var(--font-mono); } +.tc-ed-head small { display: flex; align-items: center; gap: 0.375rem; font-size: 0.75rem; color: var(--fg-muted); } +.tc-ed-bar { display: flex; align-items: center; gap: 0.5rem; padding: 0.5rem 0.75rem 0.5rem 1.125rem; border-bottom: 1px solid var(--hairline); font-size: 0.75rem; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 1.5%, transparent); } +.tc-ed { flex: 1; min-height: 0; overflow: hidden; padding: 0.75rem 0; font: 400 0.8125rem/1.375rem var(--font-mono); color: var(--fg); background: var(--surface-sunken); counter-reset: ln; } +.tc-ed > span { display: grid; grid-template-columns: 3rem minmax(0, 1fr); padding-right: 1rem; white-space: pre-wrap; } +.tc-ed > span::before { counter-increment: ln; content: counter(ln); padding-right: 0.875rem; text-align: right; color: var(--fg-subtle); } .tc-ed > span[data-cur] { background: color-mix(in srgb, var(--accent) 6%, transparent); } .tc-ed > span[data-cur]::before { color: var(--fg); } -.tc-ed .caret { display: inline-block; width: 2px; height: 17px; margin-bottom: -3px; background: var(--accent); } +.tc-ed .caret { display: inline-block; width: 2px; height: 1.0625rem; margin-bottom: -0.1875rem; background: var(--accent); } .tc-ed .m { color: var(--fg-muted); } .tc-ed .k { color: var(--accent-text); } .tc-ed .mask { letter-spacing: 1px; color: var(--fg-muted); } -.tc-ed-foot { display: flex; align-items: center; gap: 8px; padding: 12px 16px 12px 18px; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } -.tc-ed-foot .tc-hint { margin: 0; display: inline-flex; align-items: center; gap: 6px; } +.tc-ed-foot { display: flex; align-items: center; gap: 0.5rem; padding: 0.75rem 1rem 0.75rem 1.125rem; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } +.tc-ed-foot .tc-hint { margin: 0; display: inline-flex; align-items: center; gap: 0.375rem; } /* ----------------------------------------------------------- dialogs --- */ -.tc-fdlg { position: relative; z-index: 1; width: 560px; max-width: 100%; max-height: 100%; display: flex; flex-direction: column; border-radius: var(--radius-2xl); overflow: hidden; +.tc-fdlg { position: relative; z-index: 1; width: 35rem; max-width: 100%; max-height: 100%; display: flex; flex-direction: column; border-radius: var(--radius-2xl); overflow: hidden; background: var(--surface-raised); border: 1px solid var(--border); box-shadow: var(--shadow-dialog); } -.tc-fdlg--wide { width: 680px; } -.tc-fdlg-head { display: flex; align-items: flex-start; gap: 12px; padding: 20px 16px 4px 22px; } -.tc-fdlg-head > div { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; } -.tc-fdlg-head h2 { margin: 0; font-size: 17px; line-height: 24px; font-weight: 600; } -.tc-fdlg-head p { margin: 0; font-size: 13.5px; line-height: 20px; color: var(--fg-muted); } -.tc-fdlg-body { display: flex; flex-direction: column; gap: 14px; padding: 14px 22px 18px; min-height: 0; overflow: hidden; } -.tc-fdlg-foot { display: flex; align-items: center; gap: 8px; padding: 14px 16px 14px 22px; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } -.tc-fdlg-foot .tc-hint { margin: 0; display: inline-flex; align-items: center; gap: 6px; } -.tc-fdlg-foot .tc-hint .tc-icon { width: 14px; height: 14px; } -.tc-fdlg-mark { width: 36px; height: 36px; flex: none; display: grid; place-items: center; border-radius: var(--radius-md); border: 1px solid var(--border); background: var(--surface); color: var(--fg); box-shadow: var(--shadow-xs); } +.tc-fdlg--wide { width: 42.5rem; } +.tc-fdlg-head { display: flex; align-items: flex-start; gap: 0.75rem; padding: 1.25rem 1rem 0.25rem 1.375rem; } +.tc-fdlg-head > div { display: flex; flex-direction: column; gap: 0.25rem; flex: 1; min-width: 0; } +.tc-fdlg-head h2 { margin: 0; font-size: 1.0625rem; line-height: 1.5rem; font-weight: 600; } +.tc-fdlg-head p { margin: 0; font-size: 0.84375rem; line-height: 1.25rem; color: var(--fg-muted); } +.tc-fdlg-body { display: flex; flex-direction: column; gap: 0.875rem; padding: 0.875rem 1.375rem 1.125rem; min-height: 0; overflow: hidden; } +.tc-fdlg-foot { display: flex; align-items: center; gap: 0.5rem; padding: 0.875rem 1rem 0.875rem 1.375rem; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } +.tc-fdlg-foot .tc-hint { margin: 0; display: inline-flex; align-items: center; gap: 0.375rem; } +.tc-fdlg-foot .tc-hint .tc-icon { width: 0.875rem; height: 0.875rem; } +.tc-fdlg-mark { width: 2.25rem; height: 2.25rem; flex: none; display: grid; place-items: center; border-radius: var(--radius-md); border: 1px solid var(--border); background: var(--surface); color: var(--fg); box-shadow: var(--shadow-xs); } .tc-fdlg-mark[data-tone="danger"] { color: var(--danger-text); background: var(--danger-soft); border-color: color-mix(in srgb, var(--danger) 26%, transparent); box-shadow: none; } .tc-fdlg-mark[data-tone="warn"] { color: var(--warn-text); background: var(--warn-soft); border-color: color-mix(in srgb, var(--warn) 30%, transparent); box-shadow: none; } -.tc-fdlg-mark .tc-icon { width: 18px; height: 18px; } -.tc-stat { display: flex; align-items: baseline; gap: 8px; } -.tc-stat strong { font-size: 26px; line-height: 32px; font-weight: 600; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; } -.tc-stat span { font-size: 13px; color: var(--fg-muted); } +.tc-fdlg-mark .tc-icon { width: 1.125rem; height: 1.125rem; } +.tc-stat { display: flex; align-items: baseline; gap: 0.5rem; } +.tc-stat strong { font-size: 1.625rem; line-height: 2rem; font-weight: 600; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; } +.tc-stat span { font-size: 0.8125rem; color: var(--fg-muted); } /* Option rows: a checkbox, a title with its consequence, a size. */ .tc-opts { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: var(--radius-xl); overflow: hidden; } -.tc-opt { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; gap: 2px 12px; align-items: start; padding: 11px 14px; cursor: pointer; } +.tc-opt { display: grid; grid-template-columns: 1.125rem minmax(0, 1fr) auto; gap: 2px 0.75rem; align-items: start; padding: 0.6875rem 0.875rem; cursor: pointer; } .tc-opt + .tc-opt { border-top: 1px solid var(--hairline); } .tc-opt .tc-checkbox, .tc-opt input[type="radio"] { margin-top: 2px; } .tc-opt > span:nth-child(2) { display: flex; flex-direction: column; gap: 2px; min-width: 0; } -.tc-opt strong { display: flex; align-items: center; gap: 8px; font-size: 13.5px; line-height: 20px; font-weight: 500; } -.tc-opt strong code { font-size: 12.5px; font-weight: 400; } -.tc-opt small { font-size: 12px; line-height: 17px; color: var(--fg-muted); } -.tc-opt small code { font-size: 11.5px; } -.tc-opt > b { font-size: 13px; font-weight: 400; color: var(--fg); font-variant-numeric: tabular-nums; white-space: nowrap; padding-top: 1px; } +.tc-opt strong { display: flex; align-items: center; gap: 0.5rem; font-size: 0.84375rem; line-height: 1.25rem; font-weight: 500; } +.tc-opt strong code { font-size: 0.78125rem; font-weight: 400; } +.tc-opt small { font-size: 0.75rem; line-height: 1.0625rem; color: var(--fg-muted); } +.tc-opt small code { font-size: 0.71875rem; } +.tc-opt > b { font-size: 0.8125rem; font-weight: 400; color: var(--fg); font-variant-numeric: tabular-nums; white-space: nowrap; padding-top: 1px; } .tc-opt[data-off] > b, .tc-opt[data-off] strong { color: var(--fg-muted); } -.tc-opt .tc-opt-warn { display: flex; align-items: flex-start; gap: 6px; margin-top: 4px; font-size: 12px; line-height: 17px; color: var(--warn-text); } -.tc-opt-warn .tc-icon { width: 13px; height: 13px; flex: none; margin-top: 2px; } -.tc-opts-group { padding: 7px 14px; font-size: 12px; font-weight: 500; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2.5%, transparent); border-top: 1px solid var(--hairline); } +.tc-opt .tc-opt-warn { display: flex; align-items: flex-start; gap: 0.375rem; margin-top: 0.25rem; font-size: 0.75rem; line-height: 1.0625rem; color: var(--warn-text); } +.tc-opt-warn .tc-icon { width: 0.8125rem; height: 0.8125rem; flex: none; margin-top: 2px; } +.tc-opts-group { padding: 0.4375rem 0.875rem; font-size: 0.75rem; font-weight: 500; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2.5%, transparent); border-top: 1px solid var(--hairline); } .tc-opts-group:first-child { border-top: 0; } -.tc-radio { appearance: none; -webkit-appearance: none; width: 16px; height: 16px; margin: 2px 0 0; flex: none; border-radius: 50%; border: 1px solid var(--border-strong); background: var(--bg); box-shadow: var(--shadow-xs); } +.tc-radio { appearance: none; -webkit-appearance: none; width: 1rem; height: 1rem; margin: 2px 0 0; flex: none; border-radius: 50%; border: 1px solid var(--border-strong); background: var(--bg); box-shadow: var(--shadow-xs); } .tc-radio:checked { border: 5px solid var(--accent); background: #fff; } /* Risk list in the delete review. */ .tc-risks { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: var(--radius-xl); overflow: hidden; } -.tc-risk { display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; gap: 2px 12px; padding: 12px 14px; align-items: start; } +.tc-risk { display: grid; grid-template-columns: 1.25rem minmax(0, 1fr) auto; gap: 2px 0.75rem; padding: 0.75rem 0.875rem; align-items: start; } .tc-risk + .tc-risk { border-top: 1px solid var(--hairline); } -.tc-risk > .tc-icon { width: 16px; height: 16px; margin-top: 2px; color: var(--fg-muted); } +.tc-risk > .tc-icon { width: 1rem; height: 1rem; margin-top: 2px; color: var(--fg-muted); } .tc-risk[data-tone="danger"] > .tc-icon { color: var(--danger); } .tc-risk[data-tone="warn"] > .tc-icon { color: var(--warn); } -.tc-risk > div { display: flex; flex-direction: column; gap: 4px; min-width: 0; } -.tc-risk strong { font-size: 13.5px; line-height: 20px; font-weight: 500; } -.tc-risk small { font-size: 12px; line-height: 17px; color: var(--fg-muted); } +.tc-risk > div { display: flex; flex-direction: column; gap: 0.25rem; min-width: 0; } +.tc-risk strong { font-size: 0.84375rem; line-height: 1.25rem; font-weight: 500; } +.tc-risk small { font-size: 0.75rem; line-height: 1.0625rem; color: var(--fg-muted); } .tc-risk ul { list-style: none; margin: 2px 0 0; padding: 0; display: flex; flex-direction: column; gap: 2px; } -.tc-risk li { display: flex; align-items: center; gap: 8px; font-size: 12px; line-height: 18px; color: var(--fg); min-width: 0; } -.tc-risk li code { font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.tc-risk li { display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; line-height: 1.125rem; color: var(--fg); min-width: 0; } +.tc-risk li code { font-size: 0.71875rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tc-risk li .tc-muted { white-space: nowrap; } .tc-risk > .tc-btn { align-self: center; } -.tc-typeconfirm { display: flex; flex-direction: column; gap: 6px; } -.tc-typeconfirm label { font-size: 13px; color: var(--fg); } -.tc-typeconfirm label code { font-size: 12.5px; padding: 1px 5px; border-radius: 4px; background: color-mix(in srgb, var(--fg) 6%, transparent); } -.tc-typeconfirm .tc-input { height: 34px; font: 400 13px/1 var(--font-mono); } +.tc-typeconfirm { display: flex; flex-direction: column; gap: 0.375rem; } +.tc-typeconfirm label { font-size: 0.8125rem; color: var(--fg); } +.tc-typeconfirm label code { font-size: 0.78125rem; padding: 1px 0.3125rem; border-radius: 0.25rem; background: color-mix(in srgb, var(--fg) 6%, transparent); } +.tc-typeconfirm .tc-input { height: 2.125rem; font: 400 0.8125rem/1 var(--font-mono); } /* Conflict rows: existing vs incoming, one choice each. */ -.tc-conf { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 6px 12px; padding: 12px 14px; align-items: center; } +.tc-conf { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.375rem 0.75rem; padding: 0.75rem 0.875rem; align-items: center; } .tc-conf + .tc-conf { border-top: 1px solid var(--hairline); } -.tc-conf > div:first-child { display: flex; flex-direction: column; gap: 3px; min-width: 0; } -.tc-conf strong { display: flex; align-items: center; gap: 8px; font: 500 13px/20px var(--font-mono); } -.tc-conf strong .tc-icon { width: 15px; height: 15px; color: var(--fg-muted); } -.tc-conf small { display: grid; grid-template-columns: 64px auto; gap: 0 8px; font-size: 12px; line-height: 17px; color: var(--fg-muted); } +.tc-conf > div:first-child { display: flex; flex-direction: column; gap: 0.1875rem; min-width: 0; } +.tc-conf strong { display: flex; align-items: center; gap: 0.5rem; font: 500 0.8125rem/1.25rem var(--font-mono); } +.tc-conf strong .tc-icon { width: 0.9375rem; height: 0.9375rem; color: var(--fg-muted); } +.tc-conf small { display: grid; grid-template-columns: 4rem auto; gap: 0 0.5rem; font-size: 0.75rem; line-height: 1.0625rem; color: var(--fg-muted); } .tc-conf small b { font-weight: 400; color: var(--fg); } -.tc-conf .tc-seg button { height: 24px; font-size: 12px; } +.tc-conf .tc-seg button { height: 1.5rem; font-size: 0.75rem; } /* Folder picker. */ .tc-picker { border: 1px solid var(--border); border-radius: var(--radius-xl); overflow: hidden; display: flex; flex-direction: column; } -.tc-picker-places { display: flex; gap: 4px; padding: 8px; border-bottom: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2%, transparent); } -.tc-pick-row { display: grid; grid-template-columns: auto 16px minmax(0, 1fr) auto; align-items: center; gap: 6px; min-height: 32px; padding: 0 10px 0 calc(10px + var(--depth, 0) * 18px); font-size: 13px; } +.tc-picker-places { display: flex; gap: 0.25rem; padding: 0.5rem; border-bottom: 1px solid var(--hairline); background: color-mix(in srgb, var(--fg) 2%, transparent); } +.tc-pick-row { display: grid; grid-template-columns: auto 1rem minmax(0, 1fr) auto; align-items: center; gap: 0.375rem; min-height: 2rem; padding: 0 10px 0 calc(10px + var(--depth, 0) * 18px); font-size: 0.8125rem; } .tc-pick-row[aria-selected="true"] { background: color-mix(in srgb, var(--accent) 9%, transparent); box-shadow: inset 2px 0 0 var(--accent); } -.tc-pick-row > button { display: grid; place-items: center; width: 18px; height: 18px; border: 0; background: none; color: var(--fg-muted); padding: 0; } -.tc-pick-row > button .tc-icon { width: 13px; height: 13px; } -.tc-pick-row > i { width: 18px; } -.tc-pick-row > .tc-icon { width: 15px; height: 15px; color: color-mix(in srgb, var(--fg) 58%, transparent); } -.tc-pick-row > small { font-size: 11.5px; color: var(--fg-muted); } +.tc-pick-row > button { display: grid; place-items: center; width: 1.125rem; height: 1.125rem; border: 0; background: none; color: var(--fg-muted); padding: 0; } +.tc-pick-row > button .tc-icon { width: 0.8125rem; height: 0.8125rem; } +.tc-pick-row > i { width: 1.125rem; } +.tc-pick-row > .tc-icon { width: 0.9375rem; height: 0.9375rem; color: color-mix(in srgb, var(--fg) 58%, transparent); } +.tc-pick-row > small { font-size: 0.71875rem; color: var(--fg-muted); } .tc-pick-row[data-disabled] { color: var(--fg-muted); } -.tc-dest { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--fg-muted); } -.tc-dest code { font-size: 12px; color: var(--fg); } +.tc-dest { display: flex; align-items: center; gap: 0.5rem; font-size: 0.78125rem; color: var(--fg-muted); } +.tc-dest code { font-size: 0.75rem; color: var(--fg); } /* ------------------------------------------------------ drop + tray --- */ .tc-drop { position: absolute; inset: 0; z-index: 5; display: grid; place-items: center; border-radius: var(--radius-xl); border: 2px dashed var(--accent); background: color-mix(in srgb, var(--accent) 7%, color-mix(in srgb, var(--bg) 82%, transparent)); -webkit-backdrop-filter: blur(1.5px); backdrop-filter: blur(1.5px); } [data-theme="dark"] .tc-drop { background: color-mix(in srgb, var(--accent) 14%, color-mix(in srgb, var(--bg) 80%, transparent)); } -.tc-drop > div { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; } -.tc-drop-mark { width: 52px; height: 52px; display: grid; place-items: center; border-radius: 16px; background: var(--accent); color: var(--on-accent); box-shadow: 0 12px 32px -8px color-mix(in srgb, var(--accent) 60%, transparent); margin-bottom: 8px; } -.tc-drop-mark .tc-icon { width: 24px; height: 24px; } -.tc-drop strong { font-size: 16px; line-height: 22px; font-weight: 600; } -.tc-drop strong code { font-size: 15px; } -.tc-drop span { font-size: 13px; color: var(--fg-muted); } - -.tc-tray { position: absolute; right: 24px; bottom: 20px; z-index: 30; width: 392px; display: flex; flex-direction: column; border-radius: var(--radius-xl); overflow: hidden; +.tc-drop > div { display: flex; flex-direction: column; align-items: center; gap: 0.375rem; text-align: center; } +.tc-drop-mark { width: 3.25rem; height: 3.25rem; display: grid; place-items: center; border-radius: 1rem; background: var(--accent); color: var(--on-accent); box-shadow: 0 12px 32px -8px color-mix(in srgb, var(--accent) 60%, transparent); margin-bottom: 0.5rem; } +.tc-drop-mark .tc-icon { width: 1.5rem; height: 1.5rem; } +.tc-drop strong { font-size: 1rem; line-height: 1.375rem; font-weight: 600; } +.tc-drop strong code { font-size: 0.9375rem; } +.tc-drop span { font-size: 0.8125rem; color: var(--fg-muted); } + +.tc-tray { position: absolute; right: 1.5rem; bottom: 1.25rem; z-index: 30; width: 24.5rem; display: flex; flex-direction: column; border-radius: var(--radius-xl); overflow: hidden; background: var(--surface-raised); border: 1px solid var(--border); box-shadow: var(--shadow-popup); } -.tc-tray-head { display: flex; align-items: center; gap: 10px; padding: 10px 8px 10px 14px; border-bottom: 1px solid var(--hairline); } +.tc-tray-head { display: flex; align-items: center; gap: 0.625rem; padding: 0.625rem 0.5rem 0.625rem 0.875rem; border-bottom: 1px solid var(--hairline); } .tc-tray-head > div { display: flex; flex-direction: column; flex: 1; min-width: 0; } -.tc-tray-head strong { font-size: 13.5px; line-height: 20px; font-weight: 600; } -.tc-tray-head small { font-size: 12px; color: var(--fg-muted); } -.tc-tray-head .tc-progress { margin-top: 6px; } -.tc-tray-item { display: grid; grid-template-columns: 18px minmax(0, 1fr) auto; gap: 2px 10px; align-items: center; padding: 10px 8px 10px 14px; } +.tc-tray-head strong { font-size: 0.84375rem; line-height: 1.25rem; font-weight: 600; } +.tc-tray-head small { font-size: 0.75rem; color: var(--fg-muted); } +.tc-tray-head .tc-progress { margin-top: 0.375rem; } +.tc-tray-item { display: grid; grid-template-columns: 1.125rem minmax(0, 1fr) auto; gap: 2px 0.625rem; align-items: center; padding: 0.625rem 0.5rem 0.625rem 0.875rem; } .tc-tray-item + .tc-tray-item { border-top: 1px solid var(--hairline); } -.tc-tray-item > .tc-icon { width: 16px; height: 16px; color: var(--fg-muted); } -.tc-tray-item > div { display: flex; flex-direction: column; gap: 3px; min-width: 0; } -.tc-tray-item b { font: 400 12.5px/18px var(--font-mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-tray-item small { display: flex; align-items: center; gap: 6px; font-size: 11.5px; line-height: 16px; color: var(--fg-muted); white-space: nowrap; } -.tc-tray-item small .tc-icon { width: 12px; height: 12px; } -.tc-tray-item .tc-progress { height: 3px; } +.tc-tray-item > .tc-icon { width: 1rem; height: 1rem; color: var(--fg-muted); } +.tc-tray-item > div { display: flex; flex-direction: column; gap: 0.1875rem; min-width: 0; } +.tc-tray-item b { font: 400 0.78125rem/1.125rem var(--font-mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.tc-tray-item small { display: flex; align-items: center; gap: 0.375rem; font-size: 0.71875rem; line-height: 1rem; color: var(--fg-muted); white-space: nowrap; } +.tc-tray-item small .tc-icon { width: 0.75rem; height: 0.75rem; } +.tc-tray-item .tc-progress { height: 0.1875rem; } .tc-tray-item[data-state="done"] > .tc-icon { color: var(--ok); } .tc-tray-item[data-state="warn"] > .tc-icon { color: var(--warn); } .tc-tray-item[data-state="warn"] small { color: var(--warn-text); } .tc-tray-item > span:last-child { display: flex; gap: 2px; } -.tc-tray-sub { display: flex; align-items: center; gap: 8px; margin-top: 2px; font-size: 12px; color: var(--fg); } -.tc-tray-sub .tc-checkbox { width: 14px; height: 14px; margin: 0; } -.tc-tray-foot { display: flex; align-items: center; gap: 8px; padding: 9px 14px; border-top: 1px solid var(--hairline); font-size: 11.5px; line-height: 16px; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2%, transparent); } -.tc-tray-foot .tc-icon { width: 13px; height: 13px; flex: none; } +.tc-tray-sub { display: flex; align-items: center; gap: 0.5rem; margin-top: 2px; font-size: 0.75rem; color: var(--fg); } +.tc-tray-sub .tc-checkbox { width: 0.875rem; height: 0.875rem; margin: 0; } +.tc-tray-foot { display: flex; align-items: center; gap: 0.5rem; padding: 0.5625rem 0.875rem; border-top: 1px solid var(--hairline); font-size: 0.71875rem; line-height: 1rem; color: var(--fg-muted); background: color-mix(in srgb, var(--fg) 2%, transparent); } +.tc-tray-foot .tc-icon { width: 0.8125rem; height: 0.8125rem; flex: none; } /* ------------------------------------------------------------ banners --- */ -.tc-fbanner { display: flex; align-items: center; gap: 12px; padding: 11px 12px 11px 14px; border-radius: var(--radius-xl); border: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2%, transparent); } -.tc-fbanner > .tc-icon { width: 18px; height: 18px; flex: none; color: var(--fg-muted); } +.tc-fbanner { display: flex; align-items: center; gap: 0.75rem; padding: 0.6875rem 0.75rem 0.6875rem 0.875rem; border-radius: var(--radius-xl); border: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2%, transparent); } +.tc-fbanner > .tc-icon { width: 1.125rem; height: 1.125rem; flex: none; color: var(--fg-muted); } .tc-fbanner > div { display: flex; flex-direction: column; gap: 1px; flex: 1; min-width: 0; } -.tc-fbanner strong { font-size: 13.5px; line-height: 20px; font-weight: 500; } -.tc-fbanner span { font-size: 12.5px; line-height: 18px; color: var(--fg-muted); } +.tc-fbanner strong { font-size: 0.84375rem; line-height: 1.25rem; font-weight: 500; } +.tc-fbanner span { font-size: 0.78125rem; line-height: 1.125rem; color: var(--fg-muted); } .tc-fbanner span a { color: var(--fg); text-decoration: underline; text-decoration-color: var(--border-strong); text-underline-offset: 3px; } .tc-fbanner[data-tone="managed"] > .tc-icon { color: var(--fg); } .tc-fbanner[data-tone="warn"] { border-color: color-mix(in srgb, var(--warn) 32%, transparent); background: var(--warn-soft); } @@ -2524,76 +2530,76 @@ button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointe .tc-fbanner .tc-btn { flex: none; } /* ------------------------------------------------------- menus, etc --- */ -.tc-ctx { position: absolute; z-index: 40; width: 260px; } -.tc-menu-item .tc-menu-lock { margin-left: auto; width: 12px; height: 12px; color: var(--fg-subtle); } -.tc-menu-item .tc-kbd { margin-left: auto; height: 18px; min-width: 18px; font-size: 11px; background: transparent; border: 0; box-shadow: none; color: var(--fg-muted); padding: 0 2px; letter-spacing: 0.04em; } +.tc-ctx { position: absolute; z-index: 40; width: 16.25rem; } +.tc-menu-item .tc-menu-lock { margin-left: auto; width: 0.75rem; height: 0.75rem; color: var(--fg-subtle); } +.tc-menu-item .tc-kbd { margin-left: auto; height: 1.125rem; min-width: 1.125rem; font-size: 0.6875rem; background: transparent; border: 0; box-shadow: none; color: var(--fg-muted); padding: 0 2px; letter-spacing: 0.04em; } .tc-menu-item--danger .tc-kbd { color: color-mix(in srgb, var(--danger-text) 70%, transparent); } .tc-menu-item[data-active] { background: var(--hover); } -.tc-rename { display: flex; flex-direction: column; gap: 4px; min-width: 0; flex: 1; position: relative; } -.tc-rename .tc-input { height: 28px; font: 400 13px/1 var(--font-mono); padding: 0 8px; } -.tc-rename-err { position: absolute; top: calc(100% + 4px); left: 0; z-index: 5; display: flex; align-items: center; gap: 6px; padding: 5px 9px; border-radius: var(--radius-md); - background: var(--danger-text); color: #fff; font-size: 12px; line-height: 16px; white-space: nowrap; box-shadow: var(--shadow-popup); } -.tc-rename-err .tc-icon { width: 13px; height: 13px; } +.tc-rename { display: flex; flex-direction: column; gap: 0.25rem; min-width: 0; flex: 1; position: relative; } +.tc-rename .tc-input { height: 1.75rem; font: 400 0.8125rem/1 var(--font-mono); padding: 0 0.5rem; } +.tc-rename-err { position: absolute; top: calc(100% + 4px); left: 0; z-index: 5; display: flex; align-items: center; gap: 0.375rem; padding: 0.3125rem 0.5625rem; border-radius: var(--radius-md); + background: var(--danger-text); color: #fff; font-size: 0.75rem; line-height: 1rem; white-space: nowrap; box-shadow: var(--shadow-popup); } +.tc-rename-err .tc-icon { width: 0.8125rem; height: 0.8125rem; } -.tc-suggest { position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 40; padding: 4px; } +.tc-suggest { position: absolute; top: calc(100% + 6px); left: 0; right: 0; z-index: 40; padding: 0.25rem; } .tc-suggest .tc-menu-label { display: flex; align-items: center; justify-content: space-between; } -.tc-sug { display: grid; grid-template-columns: 16px minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 32px; padding: 0 8px; border-radius: var(--radius-sm); font-size: 13px; } +.tc-sug { display: grid; grid-template-columns: 1rem minmax(0, 1fr) auto; align-items: center; gap: 0.625rem; min-height: 2rem; padding: 0 0.5rem; border-radius: var(--radius-sm); font-size: 0.8125rem; } .tc-sug[data-active] { background: var(--hover); } -.tc-sug > .tc-icon { width: 15px; height: 15px; color: color-mix(in srgb, var(--fg) 58%, transparent); } -.tc-sug > span { display: flex; align-items: center; gap: 8px; min-width: 0; font-family: var(--font-mono); font-size: 12.5px; } +.tc-sug > .tc-icon { width: 0.9375rem; height: 0.9375rem; color: color-mix(in srgb, var(--fg) 58%, transparent); } +.tc-sug > span { display: flex; align-items: center; gap: 0.5rem; min-width: 0; font-family: var(--font-mono); font-size: 0.78125rem; } .tc-sug > span mark { background: none; color: var(--fg); font-weight: 600; } .tc-sug > span .tc-ftag { font-family: var(--font-sans); } -.tc-sug > small { font-size: 12px; color: var(--fg-muted); } -.tc-sug-foot { display: flex; align-items: center; gap: 14px; padding: 8px 8px 4px; margin-top: 4px; border-top: 1px solid var(--hairline); font-size: 11.5px; color: var(--fg-muted); } -.tc-sug-foot .tc-kbd { height: 18px; min-width: 18px; font-size: 10.5px; } +.tc-sug > small { font-size: 0.75rem; color: var(--fg-muted); } +.tc-sug-foot { display: flex; align-items: center; gap: 0.875rem; padding: 0.5rem 0.5rem 0.25rem; margin-top: 0.25rem; border-top: 1px solid var(--hairline); font-size: 0.71875rem; color: var(--fg-muted); } +.tc-sug-foot .tc-kbd { height: 1.125rem; min-width: 1.125rem; font-size: 0.65625rem; } /* Search filters. */ -.tc-ffilters { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; } -.tc-fchip { display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 10px; border-radius: var(--radius-full); border: 1px solid var(--border-strong); background: var(--surface); font: inherit; font-size: 12.5px; color: var(--fg); cursor: pointer; white-space: nowrap; } -[data-theme="dark"] .tc-fchip { background: oklch(1 0 0 / 0.03); } +.tc-ffilters { display: flex; align-items: center; gap: 0.375rem; flex-wrap: wrap; } +.tc-fchip { display: inline-flex; align-items: center; gap: 0.375rem; height: 1.75rem; padding: 0 0.625rem; border-radius: var(--radius-full); border: 1px solid var(--border-strong); background: var(--surface); font: inherit; font-size: 0.78125rem; color: var(--fg); cursor: pointer; white-space: nowrap; } +[data-theme="dark"] .tc-fchip { background: color-mix(in srgb, var(--fg) 3%, transparent); } .tc-fchip > span { color: var(--fg-muted); } -.tc-fchip .tc-icon { width: 13px; height: 13px; color: var(--fg-muted); } +.tc-fchip .tc-icon { width: 0.8125rem; height: 0.8125rem; color: var(--fg-muted); } .tc-fchip[data-on] { border-color: color-mix(in srgb, var(--accent) 45%, transparent); background: color-mix(in srgb, var(--accent) 8%, var(--surface)); } .tc-fchip[data-on] > span { color: var(--fg); } -.tc-fchip--scope { padding-right: 4px; } -.tc-fchip--scope button { display: grid; place-items: center; width: 20px; height: 20px; border: 0; border-radius: 50%; background: none; color: var(--fg-muted); padding: 0; } -.tc-fchip--scope button .tc-icon { width: 12px; height: 12px; } -.tc-hit { font: 400 11.5px/16px var(--font-mono); color: var(--fg-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } +.tc-fchip--scope { padding-right: 0.25rem; } +.tc-fchip--scope button { display: grid; place-items: center; width: 1.25rem; height: 1.25rem; border: 0; border-radius: 50%; background: none; color: var(--fg-muted); padding: 0; } +.tc-fchip--scope button .tc-icon { width: 0.75rem; height: 0.75rem; } +.tc-hit { font: 400 0.71875rem/1rem var(--font-mono); color: var(--fg-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .tc-hit mark { background: color-mix(in srgb, var(--warn) 30%, transparent); color: inherit; border-radius: 2px; } .tc-fname mark { background: color-mix(in srgb, var(--warn) 30%, transparent); color: inherit; border-radius: 2px; } -.tc-skel-row { display: grid; grid-template-columns: 18px minmax(0, 1fr) 96px 56px; align-items: center; gap: 12px; height: 40px; padding: 0 16px; border-top: 1px solid var(--hairline); } +.tc-skel-row { display: grid; grid-template-columns: 1.125rem minmax(0, 1fr) 6rem 3.5rem; align-items: center; gap: 0.75rem; height: 2.5rem; padding: 0 1rem; border-top: 1px solid var(--hairline); } .tc-skel-row:first-child { border-top: 0; } -.tc-keys-grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px 16px; padding: 16px 18px; font-size: 12.5px; align-items: center; } +.tc-keys-grid { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.4375rem 1rem; padding: 1rem 1.125rem; font-size: 0.78125rem; align-items: center; } .tc-keys-grid > span { color: var(--fg); } -.tc-keys-grid > span:nth-child(even) { display: inline-flex; gap: 4px; justify-content: flex-end; } -.tc-keys-grid .tc-kbd { height: 20px; min-width: 20px; font-size: 11px; } +.tc-keys-grid > span:nth-child(even) { display: inline-flex; gap: 0.25rem; justify-content: flex-end; } +.tc-keys-grid .tc-kbd { height: 1.25rem; min-width: 1.25rem; font-size: 0.6875rem; } -.tc-pcrumbs { display: flex; align-items: center; gap: 2px; overflow: hidden; white-space: nowrap; font-size: 15px; flex: none; } -.tc-pcrumbs .tc-crumb { font-size: 15px; height: 32px; padding: 0 6px; } -.tc-plist .tc-prow-file { display: grid; grid-template-columns: 22px minmax(0, 1fr) auto; align-items: center; gap: 4px 12px; min-height: 60px; padding: 10px 14px; color: inherit; text-decoration: none !important; } +.tc-pcrumbs { display: flex; align-items: center; gap: 2px; overflow: hidden; white-space: nowrap; font-size: 0.9375rem; flex: none; } +.tc-pcrumbs .tc-crumb { font-size: 0.9375rem; height: 2rem; padding: 0 0.375rem; } +.tc-plist .tc-prow-file { display: grid; grid-template-columns: 1.375rem minmax(0, 1fr) auto; align-items: center; gap: 0.25rem 0.75rem; min-height: 3.75rem; padding: 0.625rem 0.875rem; color: inherit; text-decoration: none !important; } .tc-plist .tc-prow-file + .tc-prow-file { border-top: 1px solid var(--hairline); } -.tc-prow-file > .tc-fl-icon { width: 20px; height: 20px; } +.tc-prow-file > .tc-fl-icon { width: 1.25rem; height: 1.25rem; } .tc-prow-file > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; } -.tc-prow-file > div > span { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 16px; line-height: 22px; } +.tc-prow-file > div > span { display: flex; align-items: center; gap: 0.5rem; min-width: 0; font-size: 1rem; line-height: 1.375rem; } .tc-prow-file > div > span b { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-prow-file > div > small { display: flex; align-items: center; gap: 6px; font-size: 13px; line-height: 18px; color: var(--fg-muted); white-space: nowrap; overflow: hidden; } -.tc-prow-file > b { font-size: 14px; font-weight: 400; color: var(--fg-muted); font-variant-numeric: tabular-nums; } -.tc-prow-file .tc-bar { width: 100%; height: 4px; margin-top: 4px; } +.tc-prow-file > div > small { display: flex; align-items: center; gap: 0.375rem; font-size: 0.8125rem; line-height: 1.125rem; color: var(--fg-muted); white-space: nowrap; overflow: hidden; } +.tc-prow-file > b { font-size: 0.875rem; font-weight: 400; color: var(--fg-muted); font-variant-numeric: tabular-nums; } +.tc-prow-file .tc-bar { width: 100%; height: 0.25rem; margin-top: 0.25rem; } .tc-prow-file[aria-selected="true"] { background: color-mix(in srgb, var(--accent) 8%, transparent); } -.tc-prow-file .tc-checkbox { width: 22px; height: 22px; margin: 0; border-radius: 6px; } +.tc-prow-file .tc-checkbox { width: 1.375rem; height: 1.375rem; margin: 0; border-radius: 0.375rem; } .tc-prow-file .tc-checkbox:checked { background-size: 14px; } -#files-browser .tc-prow-file > .tc-btn { min-width: 44px; min-height: 44px; } -.tc-pselbar { flex: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 4px; padding: 8px 8px 26px; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--bg) 86%, transparent); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); } -.tc-pselbar button { display: flex; flex-direction: column; align-items: center; gap: 4px; height: 52px; justify-content: center; border: 0; border-radius: 10px; background: none; color: var(--fg); font: inherit; font-size: 12px; } -.tc-pselbar button .tc-icon { width: 20px; height: 20px; } +#files-browser .tc-prow-file > .tc-btn { min-width: var(--touch); min-height: var(--touch); } +.tc-pselbar { flex: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.25rem; padding: 0.5rem 0.5rem 1.625rem; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--bg) 86%, transparent); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); } +.tc-pselbar button { display: flex; flex-direction: column; align-items: center; gap: 0.25rem; height: 3.25rem; justify-content: center; border: 0; border-radius: 0.625rem; background: none; color: var(--fg); font: inherit; font-size: 0.75rem; } +.tc-pselbar button .tc-icon { width: 1.25rem; height: 1.25rem; } .tc-pselbar button[data-danger] { color: var(--danger-text); } -.tc-psheet-list { display: flex; flex-direction: column; border-radius: 14px; border: 1px solid var(--border); overflow: hidden; } -.tc-psheet-item { display: flex; align-items: center; gap: 14px; min-height: 50px; padding: 0 16px; font-size: 16px; color: var(--fg); } +.tc-psheet-list { display: flex; flex-direction: column; border-radius: 0.875rem; border: 1px solid var(--border); overflow: hidden; } +.tc-psheet-item { display: flex; align-items: center; gap: 0.875rem; min-height: 3.125rem; padding: 0 1rem; font-size: 1rem; color: var(--fg); } .tc-psheet-item + .tc-psheet-item { border-top: 1px solid var(--hairline); } -.tc-psheet-item .tc-icon { width: 20px; height: 20px; color: var(--fg-muted); } -.tc-psheet-item small { margin-left: auto; font-size: 14px; color: var(--fg-muted); } +.tc-psheet-item .tc-icon { width: 1.25rem; height: 1.25rem; color: var(--fg-muted); } +.tc-psheet-item small { margin-left: auto; font-size: 0.875rem; color: var(--fg-muted); } .tc-psheet-item[data-danger] { color: var(--danger-text); } .tc-psheet-item[data-danger] .tc-icon { color: var(--danger-text); } .tc-fmeta .tc-muted { color: var(--fg-subtle); } @@ -2605,20 +2611,20 @@ button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointe .tc-fcard > .tc-fl-foot { border-top: 1px solid var(--border); } .tc-btn[data-on] { background: var(--hover); color: var(--fg); } /* One-line "largest" items: name, bar, size. */ -.tc-fd-item { grid-template-columns: 16px minmax(0, 1fr) 56px 56px; } -.tc-fd-item > .tc-bar { margin: 0; height: 4px; } +.tc-fd-item { grid-template-columns: 1rem minmax(0, 1fr) 3.5rem 3.5rem; } +.tc-fd-item > .tc-bar { margin: 0; height: 0.25rem; } .tc-fd-item > b { text-align: right; } .tc-fd-big .tc-spacer + .tc-btn { align-self: center; } /* Code lines: one block per line, the number drawn in a fixed gutter, so highlighted spans inside a line stay inline. */ -.tc-fprev > span { display: block; position: relative; padding-left: 44px; } -.tc-fprev > span::before { position: absolute; left: 0; width: 34px; } -.tc-ed > span { display: block; position: relative; padding-left: 62px; } -.tc-ed > span::before { position: absolute; left: 0; width: 48px; } +.tc-fprev > span { display: block; position: relative; padding-left: 2.75rem; } +.tc-fprev > span::before { position: absolute; left: 0; width: 2.125rem; } +.tc-ed > span { display: block; position: relative; padding-left: 3.875rem; } +.tc-ed > span::before { position: absolute; left: 0; width: 3rem; } .tc-opts--scroll { -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 32px), transparent); mask-image: linear-gradient(to bottom, #000 calc(100% - 32px), transparent); } -.tc-sug-foot > span { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; } -.tc-keys-grid--2 { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto; column-gap: 12px; row-gap: 12px; padding: 18px; } -.tc-keys-grid--2 > span:nth-child(4n+2) { padding-right: 12px; border-right: 1px solid var(--hairline); } +.tc-sug-foot > span { display: inline-flex; align-items: center; gap: 0.25rem; white-space: nowrap; } +.tc-keys-grid--2 { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto; column-gap: 0.75rem; row-gap: 0.75rem; padding: 1.125rem; } +.tc-keys-grid--2 > span:nth-child(4n+2) { padding-right: 0.75rem; border-right: 1px solid var(--hairline); } /* Phone: search row, full sheet */ @@ -2627,7 +2633,7 @@ button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointe .tc-layer--center > .tc-fdlg { animation: tc-pop var(--dur-base) ease-out; max-height: min(860px, calc(100dvh - 48px)); } .tc-layer--sheet > .tc-sheet--editor { width: min(760px, calc(100vw - 16px)); } /* The context menu opens at the pointer; Kit.menu positions it. */ -.tc-layer--menu > .tc-menu.tc-ctx { width: 260px; } +.tc-layer--menu > .tc-menu.tc-ctx { width: 16.25rem; } /* ------------------------------------------------- below 1024px ---- */ /* Kit.isPhone() is true below 1024px: the shell shows its phone bar, and @@ -2639,10 +2645,10 @@ button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointe #page-files { padding-top: 0; } .tc-layer--center > .tc-fdlg { width: 100%; max-width: none; max-height: 88%; border-radius: var(--radius-2xl) var(--radius-2xl) 0 0; border-bottom: 0; animation: tc-rise-sheet 300ms cubic-bezier(0.32, 0.72, 0, 1); } - .tc-layer--center > .tc-fdlg::before { content: ""; display: block; flex: none; width: 36px; height: 4px; margin: 8px auto 0; border-radius: 2px; background: var(--border-strong); } - .tc-layer--center > .tc-fdlg.tc-fdlg--full { position: absolute; left: 0; right: 0; bottom: 0; top: 44px; max-height: none; } + .tc-layer--center > .tc-fdlg::before { content: ""; display: block; flex: none; width: 2.25rem; height: 0.25rem; margin: 0.5rem auto 0; border-radius: 2px; background: var(--border-strong); } + .tc-layer--center > .tc-fdlg.tc-fdlg--full { position: absolute; left: 0; right: 0; bottom: 0; top: 2.75rem; max-height: none; } .tc-fdlg-foot { flex-direction: column-reverse; align-items: stretch; padding: 12px 16px calc(16px + env(safe-area-inset-bottom, 0px)); } - .tc-fdlg-foot .tc-btn { width: 100%; min-height: 44px; } + .tc-fdlg-foot .tc-btn { width: 100%; min-height: var(--touch); } .tc-fdlg-foot .tc-spacer, .tc-fdlg-foot .tc-hint { display: none; } .tc-fx { grid-template-columns: minmax(0, 1fr); } .tc-fx > .tc-fd { display: none; } @@ -2652,262 +2658,262 @@ button.tc-dv-hunk { width: 100%; border-left: 0; border-right: 0; cursor: pointe /* Below 640px the page renders its phone markup: gate it with matchMedia('(max-width: 639.98px)'), as client/skill-update.js does. */ @media (max-width: 639.98px) { - .tc-fp-head { display: flex; flex-direction: column; gap: 12px; padding: 4px 16px 0; flex: none; } - .tc-segfull { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); padding: 3px; gap: 3px; border-radius: 10px; background: var(--surface-sunken); border: 1px solid color-mix(in srgb, var(--border) 60%, transparent); } - .tc-segfull button { height: 32px; border: 0; border-radius: 8px; background: none; font: inherit; font-size: 14px; font-weight: 500; color: var(--fg-muted); display: inline-flex; align-items: center; justify-content: center; gap: 6px; } + .tc-fp-head { display: flex; flex-direction: column; gap: 0.75rem; padding: 0.25rem 1rem 0; flex: none; } + .tc-segfull { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); padding: 0.1875rem; gap: 0.1875rem; border-radius: 0.625rem; background: var(--surface-sunken); border: 1px solid color-mix(in srgb, var(--border) 60%, transparent); } + .tc-segfull button { height: 2rem; border: 0; border-radius: 0.5rem; background: none; font: inherit; font-size: 0.875rem; font-weight: 500; color: var(--fg-muted); display: inline-flex; align-items: center; justify-content: center; gap: 0.375rem; } .tc-segfull button[aria-pressed="true"] { background: var(--surface); color: var(--fg); box-shadow: 0 1px 2px rgb(0 0 0 / 0.08), 0 0 0 1px color-mix(in srgb, var(--border) 80%, transparent); } - [data-theme="dark"] .tc-segfull button[aria-pressed="true"] { background: oklch(1 0 0 / 0.08); box-shadow: none; } - .tc-segfull button small { font-size: 12px; color: var(--fg-muted); font-weight: 400; } - .tc-sheet--bottom .tc-pbody { padding: 6px 16px 16px; display: flex; flex-direction: column; gap: 14px; overflow: hidden; } - .tc-pfoot { flex: none; display: flex; flex-direction: column; gap: 10px; padding: 12px 16px 28px; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } - .tc-pfoot .tc-btn { height: 44px; font-size: 16px; } - .tc-pfoot .tc-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; } - .tc-psum { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; } - .tc-psum .tc-fsum-lead strong { font-size: 20px; } - .tc-fab { position: absolute; right: 16px; bottom: 30px; z-index: 6; height: 48px; padding: 0 18px 0 14px; border-radius: 24px; font-size: 16px; box-shadow: 0 10px 28px -8px color-mix(in srgb, var(--accent) 70%, transparent); } - .tc-fab .tc-icon { width: 20px; height: 20px; } - .tc-psearch { display: flex; gap: 8px; } + [data-theme="dark"] .tc-segfull button[aria-pressed="true"] { background: color-mix(in srgb, var(--border-strong) 72%, transparent); box-shadow: none; } + .tc-segfull button small { font-size: 0.75rem; color: var(--fg-muted); font-weight: 400; } + .tc-sheet--bottom .tc-pbody { padding: 0.375rem 1rem 1rem; display: flex; flex-direction: column; gap: 0.875rem; overflow: hidden; } + .tc-pfoot { flex: none; display: flex; flex-direction: column; gap: 0.625rem; padding: 0.75rem 1rem 1.75rem; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--fg) 2.5%, transparent); } + .tc-pfoot .tc-btn { height: var(--touch); font-size: 1rem; } + .tc-pfoot .tc-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; } + .tc-psum { display: flex; flex-direction: column; gap: 0.5rem; padding: 0.75rem 0.875rem; } + .tc-psum .tc-fsum-lead strong { font-size: 1.25rem; } + .tc-fab { position: absolute; right: 1rem; bottom: 1.875rem; z-index: 6; height: 3rem; padding: 0 1.125rem 0 0.875rem; border-radius: 1.5rem; font-size: 1rem; box-shadow: 0 10px 28px -8px color-mix(in srgb, var(--accent) 70%, transparent); } + .tc-fab .tc-icon { width: 1.25rem; height: 1.25rem; } + .tc-psearch { display: flex; gap: 0.5rem; } .tc-psearch .tc-sk-search { flex: 1; min-width: 0; } - .tc-psearch .tc-sk-search > .tc-input { height: 40px; font-size: 16px; border-radius: 10px; } - .tc-psearch .tc-btn--icon { width: 40px; height: 40px; border-radius: 10px; flex: none; } + .tc-psearch .tc-sk-search > .tc-input { height: 2.5rem; font-size: 1rem; border-radius: 0.625rem; } + .tc-psearch .tc-btn--icon { width: 2.5rem; height: 2.5rem; border-radius: 0.625rem; flex: none; } .tc-plist .tc-prow-file > .tc-ftile, .tc-prow-file > .tc-fl-icon { color: var(--fg-muted); } - .tc-prow-file > div > small .tc-icon { width: 13px; height: 13px; flex: none; } + .tc-prow-file > div > small .tc-icon { width: 0.8125rem; height: 0.8125rem; flex: none; } .tc-prow-file > div > small .w { color: var(--warn-text); } - .tc-prow-file > div > small code { font-size: 12.5px; } - .tc-sheet--bottom .tc-pbody:last-child { padding-bottom: 30px; } + .tc-prow-file > div > small code { font-size: 0.78125rem; } + .tc-sheet--bottom .tc-pbody:last-child { padding-bottom: 1.875rem; } .tc-risk .tc-btn { align-self: center; } #page-files { padding-bottom: calc(88px + env(safe-area-inset-bottom, 0px)); } .tc-fab { position: fixed; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); z-index: var(--z-sticky); } - .tc-pfoot .tc-btn, .tc-fdlg-foot .tc-btn { height: 44px; font-size: 16px; } + .tc-pfoot .tc-btn, .tc-fdlg-foot .tc-btn { height: var(--touch); font-size: 1rem; } } /* Files' runtime ownership, missing-data states and responsive adaptations. */ #files-browser { min-width: 0; } -#files-browser > .tc-tabs { margin-top: 16px; } -#files-browser .tc-fl--projects[data-no-threads] { --fl-cols: 32px minmax(0, 1fr) 168px 84px 32px; } -#files-browser .tc-fl-head .tc-sort { display: inline-flex; align-items: center; gap: 4px; height: 24px; margin-left: -6px; padding: 0 6px; border: 0; border-radius: var(--radius-sm); background: none; color: inherit; font: inherit; cursor: pointer; } -#files-browser .tc-sort .tc-icon { width: 12px; height: 12px; } +#files-browser > .tc-tabs { margin-top: 1rem; } +#files-browser .tc-fl--projects[data-no-threads] { --fl-cols: 2rem minmax(0, 1fr) 10.5rem 5.25rem 2rem; } +#files-browser .tc-fl-head .tc-sort { display: inline-flex; align-items: center; gap: 0.25rem; height: 1.5rem; margin-left: -0.375rem; padding: 0 0.375rem; border: 0; border-radius: var(--radius-sm); background: none; color: inherit; font: inherit; cursor: pointer; } +#files-browser .tc-sort .tc-icon { width: 0.75rem; height: 0.75rem; } #files-browser .tc-fl-head [aria-sort]:not([aria-sort="none"]) { color: var(--fg); } #files-browser .tc-fl-row:focus-visible, #files-browser .tc-prow-file:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; } #files-browser .tc-fl-row:focus-within .tc-checkbox, #files-browser .tc-fl-row:focus-within .tc-fmenu { opacity: 1; } -.tc-files-skeleton { display: inline-block; width: 100%; min-width: 24px; height: 6px; max-width: 100%; border-radius: 3px; background: color-mix(in srgb, var(--fg) 9%, transparent); animation: tc-files-pulse 1.8s ease-in-out infinite; } -.tc-comp.tc-files-skeleton { height: 10px; } -.tc-fsize > b .tc-files-skeleton { width: 42px; vertical-align: middle; } +.tc-files-skeleton { display: inline-block; width: 100%; min-width: 1.5rem; height: 0.375rem; max-width: 100%; border-radius: 0.1875rem; background: color-mix(in srgb, var(--fg) 9%, transparent); animation: tc-files-pulse 1.8s ease-in-out infinite; } +.tc-comp.tc-files-skeleton { height: 0.625rem; } +.tc-fsize > b .tc-files-skeleton { width: 2.625rem; vertical-align: middle; } @keyframes tc-files-pulse { 50% { opacity: .4; } } @media (prefers-reduced-motion: reduce) { .tc-files-skeleton { animation: none; } } -.tc-files-state { display: flex; align-items: center; flex-direction: column; gap: 10px; padding: 48px 24px; text-align: center; } -.tc-files-state > .tc-icon { width: 30px; height: 30px; color: var(--fg-subtle); margin-bottom: 4px; } -.tc-files-state h2 { margin: 0; font-size: 16px; font-weight: 600; } -.tc-files-state p { margin: 0; max-width: 380px; color: var(--fg-muted); font-size: 13px; line-height: 1.6; overflow-wrap: anywhere; } -.tc-files-state .tc-btn { margin-top: 6px; } -.tc-files-detail-empty, .tc-files-preview-loading { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; min-height: 160px; padding: 24px; color: var(--fg-muted); text-align: center; font-size: 13px; } -.tc-files-detail-empty > .tc-icon { width: 26px; height: 26px; color: var(--fg-subtle); } +.tc-files-state { display: flex; align-items: center; flex-direction: column; gap: 0.625rem; padding: 3rem 1.5rem; text-align: center; } +.tc-files-state > .tc-icon { width: 1.875rem; height: 1.875rem; color: var(--fg-subtle); margin-bottom: 0.25rem; } +.tc-files-state h2 { margin: 0; font-size: 1rem; font-weight: 600; } +.tc-files-state p { margin: 0; max-width: 23.75rem; color: var(--fg-muted); font-size: 0.8125rem; line-height: 1.6; overflow-wrap: anywhere; } +.tc-files-state .tc-btn { margin-top: 0.375rem; } +.tc-files-detail-empty, .tc-files-preview-loading { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.75rem; min-height: 10rem; padding: 1.5rem; color: var(--fg-muted); text-align: center; font-size: 0.8125rem; } +.tc-files-detail-empty > .tc-icon { width: 1.625rem; height: 1.625rem; color: var(--fg-subtle); } .tc-files-path-wrap { white-space: normal; overflow-wrap: anywhere; } -.tc-files-image { display: grid; place-items: center; min-height: 180px; max-height: 360px; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius-lg); background: repeating-conic-gradient(var(--surface-sunken) 0 25%, var(--surface) 0 50%) 0 / 16px 16px; overflow: hidden; } -.tc-files-image img { max-height: 320px; max-width: 100%; object-fit: contain; } -.tc-files-pdf { width: 100%; height: 360px; border: 1px solid var(--border); border-radius: var(--radius-lg); } -.tc-files-preview-fallback { font-size: 13px; color: var(--fg-muted); line-height: 1.6; } -.tc-files-secret, .tc-files-secret > span { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--fg-muted); } +.tc-files-image { display: grid; place-items: center; min-height: 11.25rem; max-height: 22.5rem; padding: 0.75rem; border: 1px solid var(--border); border-radius: var(--radius-lg); background: repeating-conic-gradient(var(--surface-sunken) 0 25%, var(--surface) 0 50%) 0 / 16px 16px; overflow: hidden; } +.tc-files-image img { max-height: 20rem; max-width: 100%; object-fit: contain; } +.tc-files-pdf { width: 100%; height: 22.5rem; border: 1px solid var(--border); border-radius: var(--radius-lg); } +.tc-files-preview-fallback { font-size: 0.8125rem; color: var(--fg-muted); line-height: 1.6; } +.tc-files-secret, .tc-files-secret > span { display: flex; align-items: center; gap: 0.375rem; font-size: 0.75rem; color: var(--fg-muted); } .tc-files-secret { justify-content: space-between; } -.tc-files-secret .tc-icon { width: 14px; height: 14px; } -.tc-files-more, .tc-files-search-status, .tc-files-tree-status { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 12px 16px; font-size: 12px; color: var(--fg-muted); flex-wrap: wrap; } -.tc-files-search-status { justify-content: flex-start; padding: 0 4px; } -.tc-files-notice { margin: 0; padding: 12px 16px; font-size: 12px; color: var(--fg-muted); line-height: 1.6; } +.tc-files-secret .tc-icon { width: 0.875rem; height: 0.875rem; } +.tc-files-more, .tc-files-search-status, .tc-files-tree-status { display: flex; align-items: center; justify-content: center; gap: 0.625rem; padding: 0.75rem 1rem; font-size: 0.75rem; color: var(--fg-muted); flex-wrap: wrap; } +.tc-files-search-status { justify-content: flex-start; padding: 0 0.25rem; } +.tc-files-notice { margin: 0; padding: 0.75rem 1rem; font-size: 0.75rem; color: var(--fg-muted); line-height: 1.6; } .tc-files-tree-more > span:first-child { min-width: 0; } -.tc-files-goto { width: 600px; } -.tc-files-goto .tc-fdlg-body { display: flex; flex-direction: column; gap: 10px; } +.tc-files-goto { width: 37.5rem; } +.tc-files-goto .tc-fdlg-body { display: flex; flex-direction: column; gap: 0.625rem; } .tc-files-goto #files-suggestions { display: flex; flex-direction: column; gap: 2px; } -.tc-files-suggestion { display: flex; align-items: center; gap: 10px; border: 0; background: none; color: var(--fg); min-height: 36px; padding: 6px 8px; border-radius: var(--radius-md); text-align: left; cursor: pointer; } +.tc-files-suggestion { display: flex; align-items: center; gap: 0.625rem; border: 0; background: none; color: var(--fg); min-height: 2.25rem; padding: 0.375rem 0.5rem; border-radius: var(--radius-md); text-align: left; cursor: pointer; } .tc-files-suggestion:hover, .tc-files-suggestion[aria-selected="true"] { background: var(--hover); } -.tc-files-suggestion > .tc-icon { width: 16px; height: 16px; flex: none; color: var(--fg-muted); } -.tc-files-suggestion code { min-width: 0; overflow: hidden; text-overflow: ellipsis; font-size: 12px; } -.tc-files-suggestion > span:last-child { margin-left: auto; color: var(--fg-muted); font-size: 12px; white-space: nowrap; } -.tc-files-recent-label { font-size: 12px; font-weight: 500; color: var(--fg-muted); padding: 4px 8px; } +.tc-files-suggestion > .tc-icon { width: 1rem; height: 1rem; flex: none; color: var(--fg-muted); } +.tc-files-suggestion code { min-width: 0; overflow: hidden; text-overflow: ellipsis; font-size: 0.75rem; } +.tc-files-suggestion > span:last-child { margin-left: auto; color: var(--fg-muted); font-size: 0.75rem; white-space: nowrap; } +.tc-files-recent-label { font-size: 0.75rem; font-weight: 500; color: var(--fg-muted); padding: 0.25rem 0.5rem; } .tc-files-crumbs { display: flex; align-items: center; gap: 2px; min-width: 0; overflow: auto; scrollbar-width: none; } -.tc-files-crumbs > .tc-icon { width: 15px; height: 15px; color: var(--fg-muted); flex: none; } +.tc-files-crumbs > .tc-icon { width: 0.9375rem; height: 0.9375rem; color: var(--fg-muted); flex: none; } .tc-files-crumbs > button { flex: none; } .tc-files-crumbs > button:last-child { overflow: hidden; text-overflow: ellipsis; } -.tc-files-phone-body { padding: 0 16px; } -.tc-files-phone-selection { position: fixed; bottom: 0; left: 0; right: 0; z-index: var(--z-sticky); display: flex; flex-direction: column; gap: 4px; padding: 8px 8px calc(8px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--border); background: var(--surface-raised); box-shadow: var(--shadow-popup); font-size: 14px; } -.tc-files-phone-selection-head { display: flex; align-items: center; justify-content: space-between; min-height: 44px; } -.tc-files-phone-selection-head strong { font-size: 12px; font-weight: 500; } -#files-browser .tc-files-phone-selection-head .tc-btn { min-height: 44px; } -.tc-files-phone-actions.tc-pselbar { grid-template-columns: repeat(auto-fit,minmax(60px,1fr)); padding: 0; border: 0; background: none; -webkit-backdrop-filter: none; backdrop-filter: none; } -#files-browser .tc-files-phone-actions > .tc-btn { width: 100%; min-width: 0; height: 52px; padding: 0 4px; box-shadow: none; } +.tc-files-phone-body { padding: 0 1rem; } +.tc-files-phone-selection { position: fixed; bottom: 0; left: 0; right: 0; z-index: var(--z-sticky); display: flex; flex-direction: column; gap: 0.25rem; padding: 8px 8px calc(8px + env(safe-area-inset-bottom, 0px)); border-top: 1px solid var(--border); background: var(--surface-raised); box-shadow: var(--shadow-popup); font-size: 0.875rem; } +.tc-files-phone-selection-head { display: flex; align-items: center; justify-content: space-between; min-height: var(--touch); } +.tc-files-phone-selection-head strong { font-size: 0.75rem; font-weight: 500; } +#files-browser .tc-files-phone-selection-head .tc-btn { min-height: var(--touch); } +.tc-files-phone-actions.tc-pselbar { grid-template-columns: repeat(auto-fit,minmax(3.75rem,1fr)); padding: 0; border: 0; background: none; -webkit-backdrop-filter: none; backdrop-filter: none; } +#files-browser .tc-files-phone-actions > .tc-btn { width: 100%; min-width: 0; height: 3.25rem; padding: 0 0.25rem; box-shadow: none; } #files-browser .tc-files-phone-actions > .tc-btn .tc-icon { flex: none; } #files-browser .tc-files-phone-actions > .tc-btn:disabled { color: var(--fg-muted); } @media (max-width:639.98px) { body[data-console-route="files"]:has(.tc-files-phone-selection) .tc-toaster { bottom: calc(132px + env(safe-area-inset-bottom, 0px)); } } .tc-files-detail-sheet { max-height: 90dvh; overflow-y: auto; } -.tc-files-detail-sheet .tc-fd-head { padding-top: 24px; } -@media (min-width: 640px) and (max-width: 1023.98px) { #files-browser .tc-fsearch { flex-basis: 180px; } #files-browser .tc-fl--projects { --fl-cols: 32px minmax(0, 1fr) 150px 80px 72px 32px; } } +.tc-files-detail-sheet .tc-fd-head { padding-top: 1.5rem; } +@media (min-width: 640px) and (max-width: 1023.98px) { #files-browser .tc-fsearch { flex-basis: 11.25rem; } #files-browser .tc-fl--projects { --fl-cols: 2rem minmax(0, 1fr) 9.375rem 5rem 4.5rem 2rem; } } @media (max-width: 639.98px) { #files-browser .tc-psearch .tc-fsearch { flex: 1; min-width: 0; } - #files-browser .tc-psearch .tc-fsearch > .tc-input { height: 40px; font-size: 16px; } + #files-browser .tc-psearch .tc-fsearch > .tc-input { height: 2.5rem; font-size: 1rem; } #files-browser .tc-fsearch .tc-kbd { display: none; } - #files-browser .tc-fsum-keys { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12px; } + #files-browser .tc-fsum-keys { display: flex; flex-wrap: wrap; gap: 0.375rem 0.875rem; font-size: 0.75rem; } #files-browser .tc-fsum-legend .tc-key { white-space: normal; } - #files-browser .tc-fl-foot { flex-wrap: wrap; padding: 10px 12px; gap: 6px; } + #files-browser .tc-fl-foot { flex-wrap: wrap; padding: 0.625rem 0.75rem; gap: 0.375rem; } #files-browser .tc-fl-foot .tc-spacer { display: none; } - #files-browser .tc-prow-file { min-height: 72px; } - #files-browser .tc-prow-file .tc-mono-name { font-family: var(--font-mono); font-size: 13px; } - #files-browser .tc-prow-file > div > span { flex-wrap: wrap; gap: 4px 8px; } - #files-browser .tc-prow-file .tc-ftag { font-size: 10px; } - .tc-files-suggestion { min-height: 44px; } - .tc-files-detail-sheet .tc-fd-foot .tc-btn { min-height: 44px; } - #files-browser .tc-tree { --tree-cols: minmax(0, 1fr) 64px 52px; } + #files-browser .tc-prow-file { min-height: 4.5rem; } + #files-browser .tc-prow-file .tc-mono-name { font-family: var(--font-mono); font-size: 0.8125rem; } + #files-browser .tc-prow-file > div > span { flex-wrap: wrap; gap: 0.25rem 0.5rem; } + #files-browser .tc-prow-file .tc-ftag { font-size: 0.625rem; } + .tc-files-suggestion { min-height: var(--touch); } + .tc-files-detail-sheet .tc-fd-foot .tc-btn { min-height: var(--touch); } + #files-browser .tc-tree { --tree-cols: minmax(0, 1fr) 4rem 3.25rem; } #files-browser .tc-tree .tc-fl-head > :nth-child(2), #files-browser .tc-tree .tc-fl-row > :nth-child(2), #files-browser .tc-tree .tc-fl-head > :nth-child(5), #files-browser .tc-tree .tc-fl-row > :nth-child(5) { display: none; } #files-browser .tc-tree .tc-tnode .tc-ftag { display: none; } - #files-browser .tc-tree .tc-fl-row { min-height: 44px; } + #files-browser .tc-tree .tc-fl-row { min-height: var(--touch); } } /* Data keys in Files are a legend, independent of MCP's credential chips. */ :is(#files-browser, .tc-files-detail-sheet, .tc-fdlg) .tc-key { height: auto; padding: 0; border: 0; border-radius: 0; background: none; font-family: var(--font-sans); font-size: inherit; color: var(--fg-muted); } .tc-fsum-keys strong { color: var(--fg); font-weight: 500; } -#files-browser .tc-tab-count { margin-left: 4px; } +#files-browser .tc-tab-count { margin-left: 0.25rem; } button.tc-fd-item { border: 0; background: none; text-align: left; font-family: inherit; cursor: pointer; width: 100%; } button.tc-fd-item:hover { background: var(--hover); } #files-browser .tc-fsum-legend { grid-column: 1 / -1; } #files-browser .tc-prow-file > div > .tc-bar { flex-wrap: nowrap; gap: 0; } #files-browser .tc-prow-file > div > .tc-bar > span { flex-shrink: 0; } @media (max-width: 639.98px) { - #files-browser .tc-segfull button { height: 44px; } - #files-browser .tc-psearch .tc-fsearch > .tc-input { height: 44px; } - #files-browser .tc-psearch .tc-btn--icon { width: 44px; height: 44px; } - #files-browser .tc-fl-foot .tc-btn { min-height: 44px; } - #files-browser .tc-pcrumbs .tc-crumb { min-height: 44px; } - #files-browser .tc-fsum-legend { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 12px; } - #files-browser .tc-tree .tc-tnode > button { width: 44px; height: 44px; } -} -.tc-files-largest { grid-template-columns: 16px minmax(0, 1fr) auto; min-height: 44px; } -.tc-files-largest .tc-mono-name { font: 12px var(--font-mono); } -.tc-files-filters { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; } -.tc-files-filter-check { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; color: var(--fg-muted); cursor: pointer; min-height: 32px; } -@media (max-width: 639.98px) { .tc-files-filters > button, .tc-files-filter-check { min-height: 44px; } } + #files-browser .tc-segfull button { height: var(--touch); } + #files-browser .tc-psearch .tc-fsearch > .tc-input { height: var(--touch); } + #files-browser .tc-psearch .tc-btn--icon { width: var(--touch); height: var(--touch); } + #files-browser .tc-fl-foot .tc-btn { min-height: var(--touch); } + #files-browser .tc-pcrumbs .tc-crumb { min-height: var(--touch); } + #files-browser .tc-fsum-legend { display: flex; flex-wrap: wrap; gap: 0.375rem 0.875rem; font-size: 0.75rem; } + #files-browser .tc-tree .tc-tnode > button { width: var(--touch); height: var(--touch); } +} +.tc-files-largest { grid-template-columns: 1rem minmax(0, 1fr) auto; min-height: var(--touch); } +.tc-files-largest .tc-mono-name { font: 0.75rem var(--font-mono); } +.tc-files-filters { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; } +.tc-files-filter-check { display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; color: var(--fg-muted); cursor: pointer; min-height: 2rem; } +@media (max-width: 639.98px) { .tc-files-filters > button, .tc-files-filter-check { min-height: var(--touch); } } @media (min-width: 640px) and (max-width: 1023.98px) { #files-browser .tc-fl-row .tc-checkbox { opacity: 1; } - #files-browser .tc-fl-row { min-height: 48px; } + #files-browser .tc-fl-row { min-height: 3rem; } } #files-browser .tc-tnode { padding-left: min(calc(var(--depth, 0) * 20px), 40%); } @media (max-width: 639.98px) { - .tc-files-detail-sheet button.tc-btn { min-width: 44px; min-height: 44px; } + .tc-files-detail-sheet button.tc-btn { min-width: var(--touch); min-height: var(--touch); } .tc-files-detail-sheet .tc-key { white-space: normal; } } -.tc-files-preview-fallback { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; margin: 0; } +.tc-files-preview-fallback { display: flex; flex-direction: column; align-items: flex-start; gap: 0.625rem; margin: 0; } @media (max-width: 639.98px) { #files-browser .tc-fp-head, #files-browser .tc-files-phone-body { padding-left: 0; padding-right: 0; } } .tc-fbanner[data-tone="info"] { border-color: color-mix(in srgb, var(--info) 28%, transparent); background: var(--info-soft); } .tc-fbanner[data-tone="info"] > .tc-icon { color: var(--info-text); } -@media (max-width: 639.98px) { #files-browser .tc-psum .tc-btn { min-height: 44px; } } +@media (max-width: 639.98px) { #files-browser .tc-psum .tc-btn { min-height: var(--touch); } } .tc-fd-facts dd, .tc-fd-facts code { overflow-wrap: anywhere; max-width: 100%; } -.tc-files-size-unknown { width: 96px; height: 20px; vertical-align: middle; } +.tc-files-size-unknown { width: 6rem; height: 1.25rem; vertical-align: middle; } /* The outer Files card owns the border; its phone grid has rows only. */ #files-browser .tc-fcard > .tc-plist { border: 0; border-radius: 0; box-shadow: none; background: none; } .tc-files-goto--anchored { position: fixed; margin: 0; overflow-y: auto; box-shadow: var(--shadow-popup); } -.tc-files-goto--anchored .tc-fdlg-body { padding: 6px; gap: 6px; } -.tc-files-goto--anchored #files-goto-input { margin-bottom: 4px; } -.tc-files-goto--anchored .tc-fdlg-foot { padding: 8px 12px; font-size: 11px; } -.tc-files-goto--anchored .tc-fdlg-foot .tc-hint { max-width: 180px; } +.tc-files-goto--anchored .tc-fdlg-body { padding: 0.375rem; gap: 0.375rem; } +.tc-files-goto--anchored #files-goto-input { margin-bottom: 0.25rem; } +.tc-files-goto--anchored .tc-fdlg-foot { padding: 0.5rem 0.75rem; font-size: 0.6875rem; } +.tc-files-goto--anchored .tc-fdlg-foot .tc-hint { max-width: 11.25rem; } .tc-layer--menu > .tc-files-goto--anchored { pointer-events: auto; } /* Files editor: the native textarea owns input; the mirror paints only the visible lines, keeping 5 MiB documents out of the DOM's patch work. */ .tc-files-editor { overflow: hidden; } -.tc-files-editor-workspace { position: relative; flex: 1; min-height: 180px; overflow: hidden; background: var(--surface-sunken); } -.tc-files-editor-mirror, .tc-files-editor-input { position: absolute; inset: 0; margin: 0; padding: 12px 16px 12px 0; font: 400 13px/22px var(--font-mono); tab-size: 2; letter-spacing: 0; border: 0; border-radius: 0; } +.tc-files-editor-workspace { position: relative; flex: 1; min-height: 11.25rem; overflow: hidden; background: var(--surface-sunken); } +.tc-files-editor-mirror, .tc-files-editor-input { position: absolute; inset: 0; margin: 0; padding: 0.75rem 1rem 0.75rem 0; font: 400 0.8125rem/1.375rem var(--font-mono); tab-size: 2; letter-spacing: 0; border: 0; border-radius: 0; } .tc-files-editor-mirror { overflow: hidden; pointer-events: none; white-space: pre; color: var(--fg); } -.tc-files-editor-line { display: block; position: relative; min-width: 100%; width: max-content; height: 22px; padding-left: 48px; } -.tc-files-editor-line > i { position: sticky; left: 0; display: inline-block; width: 42px; margin-left: -48px; padding-right: 12px; font-style: normal; text-align: right; color: var(--fg-subtle); user-select: none; background: var(--surface-sunken); } +.tc-files-editor-line { display: block; position: relative; min-width: 100%; width: max-content; height: 1.375rem; padding-left: 3rem; } +.tc-files-editor-line > i { position: sticky; left: 0; display: inline-block; width: 2.625rem; margin-left: -3rem; padding-right: 0.75rem; font-style: normal; text-align: right; color: var(--fg-subtle); user-select: none; background: var(--surface-sunken); } .tc-files-editor-line[data-cur] { background: color-mix(in srgb, var(--accent) 6%, transparent); } .tc-files-editor-line[data-cur] > i { color: var(--fg); background: color-mix(in srgb, var(--accent) 6%, var(--surface-sunken)); } -.tc-files-editor-line code { font: inherit; padding-left: 6px; } +.tc-files-editor-line code { font: inherit; padding-left: 0.375rem; } .tc-files-editor-line .c { color: var(--fg-muted); } .tc-files-editor-line .s { color: var(--ok-text); } .tc-files-editor-line .k { color: var(--accent-text); } -.tc-files-editor-input { padding-left: 48px; width: 100%; height: 100%; resize: none; color: transparent; -webkit-text-fill-color: transparent; caret-color: var(--accent); background: transparent; overflow: auto; outline: none; white-space: pre; } +.tc-files-editor-input { padding-left: 3rem; width: 100%; height: 100%; resize: none; color: transparent; -webkit-text-fill-color: transparent; caret-color: var(--accent); background: transparent; overflow: auto; outline: none; white-space: pre; } .tc-files-editor-input::selection { background: color-mix(in srgb, var(--accent) 20%, transparent); } .tc-files-editor-input:focus-visible { box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--accent) 45%, transparent); } .tc-files-editor-status { flex: none; border-top: 1px solid var(--hairline); border-bottom: 0; } -.tc-files-editor-status > .tc-icon { flex: none; width: 14px; height: 14px; } +.tc-files-editor-status > .tc-icon { flex: none; width: 0.875rem; height: 0.875rem; } .tc-files-editor .tc-ed-foot { flex: none; } .tc-files-editor .tc-ed-head code { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tc-files-editor .tc-ed-head small { min-width: 0; } -.tc-files-editor-find { display: flex; align-items: center; gap: 6px; padding: 8px 12px; border-bottom: 1px solid var(--border); } +.tc-files-editor-find { display: flex; align-items: center; gap: 0.375rem; padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--border); } .tc-files-editor-find .tc-input { flex: 1; min-width: 0; } -.tc-files-editor-find > span { white-space: nowrap; font-size: 12px; color: var(--fg-muted); } -.tc-files-editor-message { margin: 0; padding: 10px 18px; font-size: 13px; color: var(--danger-text); border-bottom: 1px solid var(--hairline); } -.tc-files-editor-state { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; padding: 32px; text-align: center; } +.tc-files-editor-find > span { white-space: nowrap; font-size: 0.75rem; color: var(--fg-muted); } +.tc-files-editor-message { margin: 0; padding: 0.625rem 1.125rem; font-size: 0.8125rem; color: var(--danger-text); border-bottom: 1px solid var(--hairline); } +.tc-files-editor-state { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.875rem; padding: 2rem; text-align: center; } .tc-files-editor-state p { max-width: 40ch; color: var(--fg-muted); } -.tc-files-editor .tc-fbanner { flex: none; margin: 12px 12px 0; } +.tc-files-editor .tc-fbanner { flex: none; margin: 0.75rem 0.75rem 0; } .tc-files-compare { display: flex; flex: 1; min-height: 0; flex-direction: column; } .tc-files-compare .tc-dv-pane { flex: 1; overflow: auto; } -.tc-files-compare-limit { display: flex; flex: 1; min-height: 0; flex-direction: column; gap: 12px; padding: 16px; } -.tc-files-compare-limit textarea { flex: 1; min-height: 180px; resize: none; } -.tc-files-compare-limit p { margin: 0; font-size: 13px; color: var(--fg-muted); } +.tc-files-compare-limit { display: flex; flex: 1; min-height: 0; flex-direction: column; gap: 0.75rem; padding: 1rem; } +.tc-files-compare-limit textarea { flex: 1; min-height: 11.25rem; resize: none; } +.tc-files-compare-limit p { margin: 0; font-size: 0.8125rem; color: var(--fg-muted); } @media (max-width: 639.98px) { .tc-layer--sheet > .tc-sheet--editor { width: 100%; height: 100dvh; max-height: 100dvh; margin: 0; border-radius: 0; } - .tc-files-editor .tc-ed-head { padding-top: max(14px, env(safe-area-inset-top)); } - .tc-files-editor .tc-ed-bar { flex-wrap: wrap; gap: 4px 8px; } + .tc-files-editor .tc-ed-head { padding-top: max(0.875rem, env(safe-area-inset-top)); } + .tc-files-editor .tc-ed-bar { flex-wrap: wrap; gap: 0.25rem 0.5rem; } .tc-files-editor .tc-ed-bar > .tc-spacer { display: none; } - .tc-files-editor .tc-btn { min-height: 44px; } - .tc-files-editor .tc-btn--icon { min-width: 44px; } - .tc-files-editor-input, .tc-files-editor-mirror { font-size: 16px; line-height: 24px; } - .tc-files-editor-line { height: 24px; } - .tc-files-editor .tc-ed-foot { flex-wrap: wrap; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); gap: 8px; } + .tc-files-editor .tc-btn { min-height: var(--touch); } + .tc-files-editor .tc-btn--icon { min-width: var(--touch); } + .tc-files-editor-input, .tc-files-editor-mirror { font-size: 1rem; line-height: 1.5rem; } + .tc-files-editor-line { height: 1.5rem; } + .tc-files-editor .tc-ed-foot { flex-wrap: wrap; padding: 10px 12px calc(10px + env(safe-area-inset-bottom)); gap: 0.5rem; } .tc-files-editor .tc-ed-foot .tc-hint { flex-basis: 100%; } - .tc-files-editor-status { font-size: 11px; } + .tc-files-editor-status { font-size: 0.6875rem; } } /* Files changes use the same row and layer primitives at every breakpoint. */ #files-browser { position: relative; } #files-browser [data-files-row][aria-busy="true"] { opacity: .55; cursor: progress; pointer-events: none; } #files-browser [data-files-row][data-drop="true"] { background: var(--accent-soft); box-shadow: inset 0 0 0 2px var(--accent); } -.tc-files-rename-row { display: grid; grid-template-columns: 32px minmax(0,1fr); gap: 8px; align-items: start; padding: 10px 12px; background: color-mix(in srgb,var(--accent) 5%,transparent); border-top: 1px solid var(--hairline); } -.tc-files-rename-row > span { padding: 8px; color: var(--fg-muted); } -.tc-files-rename-controls { display: flex; align-items: center; gap: 6px; max-width: 440px; } +.tc-files-rename-row { display: grid; grid-template-columns: 2rem minmax(0,1fr); gap: 0.5rem; align-items: start; padding: 0.625rem 0.75rem; background: color-mix(in srgb,var(--accent) 5%,transparent); border-top: 1px solid var(--hairline); } +.tc-files-rename-row > span { padding: 0.5rem; color: var(--fg-muted); } +.tc-files-rename-controls { display: flex; align-items: center; gap: 0.375rem; max-width: 27.5rem; } .tc-files-rename-controls .tc-input { flex: 1; min-width: 0; } .tc-files-rename-controls .tc-input[aria-invalid="true"] { border-color: var(--danger); } -.tc-files-rename-row .tc-field-error { margin: 6px 0 0; font-size: 12px; } -.tc-files-upload-fab { position: fixed; right: 16px; bottom: calc(22px + env(safe-area-inset-bottom)); z-index: var(--z-sticky); border-radius: var(--radius-full); min-height: 48px; padding: 10px 18px; box-shadow: var(--shadow-popup); } -.tc-files-drop { position: fixed; inset: 230px 40px 90px 280px; z-index: var(--z-sticky); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; min-height: 140px; padding: 24px; pointer-events: none; border: 2px dashed var(--accent); border-radius: var(--radius-xl); background: color-mix(in srgb,var(--surface-raised) 94%,var(--accent)); color: var(--fg); box-shadow: var(--shadow-popup); } -.tc-files-drop > .tc-icon { width: 40px; height: 40px; color: var(--accent); } -.tc-files-drop strong { font-size: 18px; font-weight: 600; } -.tc-files-drop > span { font-size: 13px; color: var(--fg-muted); } +.tc-files-rename-row .tc-field-error { margin: 0.375rem 0 0; font-size: 0.75rem; } +.tc-files-upload-fab { position: fixed; right: 1rem; bottom: calc(22px + env(safe-area-inset-bottom)); z-index: var(--z-sticky); border-radius: var(--radius-full); min-height: 3rem; padding: 0.625rem 1.125rem; box-shadow: var(--shadow-popup); } +.tc-files-drop { position: fixed; inset: 230px 40px 90px 280px; z-index: var(--z-sticky); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.75rem; min-height: 8.75rem; padding: 1.5rem; pointer-events: none; border: 2px dashed var(--accent); border-radius: var(--radius-xl); background: color-mix(in srgb,var(--surface-raised) 94%,var(--accent)); color: var(--fg); box-shadow: var(--shadow-popup); } +.tc-files-drop > .tc-icon { width: 2.5rem; height: 2.5rem; color: var(--accent); } +.tc-files-drop strong { font-size: 1.125rem; font-weight: 600; } +.tc-files-drop > span { font-size: 0.8125rem; color: var(--fg-muted); } .tc-files-conflicts .tc-fdlg-body, .tc-files-move .tc-fdlg-body, .tc-files-in-use .tc-fdlg-body { overflow-y: auto; } -.tc-files-apply-all { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; font-size: 13px; color: var(--fg-muted); } -.tc-files-conflicts .tc-conf { gap: 12px; } -.tc-files-conflicts .tc-conf strong { display: flex; align-items: center; gap: 8px; font-weight: 500; } -.tc-files-conflicts .tc-conf strong > .tc-icon { width: 16px; height: 16px; color: var(--fg-muted); } +.tc-files-apply-all { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; font-size: 0.8125rem; color: var(--fg-muted); } +.tc-files-conflicts .tc-conf { gap: 0.75rem; } +.tc-files-conflicts .tc-conf strong { display: flex; align-items: center; gap: 0.5rem; font-weight: 500; } +.tc-files-conflicts .tc-conf strong > .tc-icon { width: 1rem; height: 1rem; color: var(--fg-muted); } .tc-files-conflicts .tc-conf > div { min-width: 0; } .tc-files-conflicts .tc-conf small { display: block; overflow-wrap: anywhere; } .tc-files-conflicts .tc-conf code { overflow-wrap: anywhere; } -.tc-files-conflicts .tc-hint { display: flex; align-items: center; gap: 8px; margin: 0; } -.tc-files-conflicts .tc-hint > .tc-icon { width: 16px; height: 16px; flex: none; } +.tc-files-conflicts .tc-hint { display: flex; align-items: center; gap: 0.5rem; margin: 0; } +.tc-files-conflicts .tc-hint > .tc-icon { width: 1rem; height: 1rem; flex: none; } .tc-files-stop-option { border: 1px solid var(--border); border-radius: var(--radius-xl); } .tc-files-stop-option .tc-checkbox { margin-top: 2px; } -.tc-files-name-dialog .tc-fdlg-body { gap: 8px; } -.tc-files-name-dialog .tc-fdlg-head { padding-bottom: 6px; } +.tc-files-name-dialog .tc-fdlg-body { gap: 0.5rem; } +.tc-files-name-dialog .tc-fdlg-head { padding-bottom: 0.375rem; } .tc-files-name-dialog .tc-field-error:empty { display: none; } -.tc-files-move { width: 560px; } -.tc-files-picker-tree { min-height: 140px; max-height: 340px; overflow: auto; padding: 6px 0; } +.tc-files-move { width: 35rem; } +.tc-files-picker-tree { min-height: 8.75rem; max-height: 21.25rem; overflow: auto; padding: 0.375rem 0; } .tc-files-picker-tree .tc-pick-row { cursor: pointer; } .tc-files-picker-tree .tc-pick-row[aria-disabled="true"] { opacity: .5; cursor: default; } .tc-files-picker-tree .tc-pick-row:focus-visible { outline: 2px solid var(--accent); outline-offset: -3px; } .tc-files-picker-tree .tc-pick-row > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-files-picker-status { margin: 0; padding: 8px 14px; font-size: 12px; color: var(--fg-muted); } -.tc-files-picker-more { margin-left: 20px; } -.tc-files-picker-path { display: flex; align-items: center; gap: 8px; } -.tc-files-picker-path > input { flex: 1; min-width: 0; font-size: 12px; } -.tc-files-move-dest { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; font-size: 12px; color: var(--fg-muted); } -.tc-files-move-dest > .tc-icon { width: 14px; height: 14px; flex: none; } +.tc-files-picker-status { margin: 0; padding: 0.5rem 0.875rem; font-size: 0.75rem; color: var(--fg-muted); } +.tc-files-picker-more { margin-left: 1.25rem; } +.tc-files-picker-path { display: flex; align-items: center; gap: 0.5rem; } +.tc-files-picker-path > input { flex: 1; min-width: 0; font-size: 0.75rem; } +.tc-files-move-dest { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.5rem; font-size: 0.75rem; color: var(--fg-muted); } +.tc-files-move-dest > .tc-icon { width: 0.875rem; height: 0.875rem; flex: none; } .tc-files-move-dest code { color: var(--fg); overflow-wrap: anywhere; } -.tc-files-move-dest small { margin-left: auto; font-size: 11px; } -.tc-fl--trash { --fl-cols: 32px minmax(130px,1.3fr) minmax(90px,1fr) 80px 72px 80px 86px; } -.tc-files-trash-name { display: flex; align-items: center; gap: 10px; min-width: 0; } +.tc-files-move-dest small { margin-left: auto; font-size: 0.6875rem; } +.tc-fl--trash { --fl-cols: 2rem minmax(8.125rem,1.3fr) minmax(5.625rem,1fr) 5rem 4.5rem 5rem 5.375rem; } +.tc-files-trash-name { display: flex; align-items: center; gap: 0.625rem; min-width: 0; } .tc-files-trash-name > span { display: flex; flex-direction: column; min-width: 0; } .tc-files-trash-name strong { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-files-trash-name small { font-size: 11px; color: var(--fg-muted); } -#files-transfers .tc-tray { position: fixed; right: 24px; bottom: 20px; z-index: var(--z-sticky); max-width: calc(100vw - 32px); } -.tc-files-transfer-list { max-height: min(520px,65dvh); overflow-y: auto; } +.tc-files-trash-name small { font-size: 0.6875rem; color: var(--fg-muted); } +#files-transfers .tc-tray { position: fixed; right: 1.5rem; bottom: 1.25rem; z-index: var(--z-sticky); max-width: calc(100vw - 32px); } +.tc-files-transfer-list { max-height: min(32.5rem,65dvh); overflow-y: auto; } .tc-files-transfer-list .tc-tray-item small { white-space: normal; overflow-wrap: anywhere; } .tc-files-transfer-list .tc-tray-item b { max-width: 100%; } .tc-files-transfer-list .tc-btn--link[data-transfer-action="show"] { align-self: flex-start; min-width: 0; max-width: 100%; } @@ -2916,42 +2922,42 @@ button.tc-fd-item:hover { background: var(--hover); } the whole window. Dates and thread counts remain available in Details. */ #files-browser .tc-fl--projects { container: files-projects / inline-size; } @container files-projects (max-width: 560px) { - #files-browser .tc-fl--projects :is(.tc-fl-head, .tc-fl-row) { grid-template-columns: 24px minmax(0, 1fr) 112px 28px; } + #files-browser .tc-fl--projects :is(.tc-fl-head, .tc-fl-row) { grid-template-columns: 1.5rem minmax(0, 1fr) 7rem 1.75rem; } #files-browser .tc-fl--projects :is(.tc-fl-head, .tc-fl-row) > :nth-child(4), #files-browser .tc-fl--projects:not([data-no-threads]) :is(.tc-fl-head, .tc-fl-row) > :nth-child(5) { display: none; } } -.tc-files-transfer-pill { position: fixed; left: 16px; bottom: calc(22px + env(safe-area-inset-bottom)); z-index: var(--z-sticky); display: inline-flex; align-items: center; gap: 8px; min-height: 48px; padding: 10px 14px; border: 1px solid var(--border); border-radius: var(--radius-full); background: var(--surface-raised); box-shadow: var(--shadow-popup); color: var(--fg); font-size: 13px; } -.tc-files-transfer-pill > .tc-icon { width: 18px; height: 18px; } -.tc-files-transfer-sheet .tc-tray-head { padding-top: 18px; } +.tc-files-transfer-pill { position: fixed; left: 1rem; bottom: calc(22px + env(safe-area-inset-bottom)); z-index: var(--z-sticky); display: inline-flex; align-items: center; gap: 0.5rem; min-height: 3rem; padding: 0.625rem 0.875rem; border: 1px solid var(--border); border-radius: var(--radius-full); background: var(--surface-raised); box-shadow: var(--shadow-popup); color: var(--fg); font-size: 0.8125rem; } +.tc-files-transfer-pill > .tc-icon { width: 1.125rem; height: 1.125rem; } +.tc-files-transfer-sheet .tc-tray-head { padding-top: 1.125rem; } .tc-files-transfer-sheet .tc-files-transfer-list { max-height: 70dvh; } .tc-files-transfer-sheet .tc-tray-foot { padding-bottom: calc(16px + env(safe-area-inset-bottom)); } @media (max-width: 639.98px) { - .tc-files-rename-row { grid-template-columns: 20px minmax(0,1fr); padding: 12px 8px; } - .tc-files-rename-controls .tc-input { font-size: 16px; min-height: 44px; } - .tc-files-rename-controls .tc-btn { min-height: 44px; min-width: 44px; } - .tc-files-rename-row > span { padding: 12px 0; } + .tc-files-rename-row { grid-template-columns: 1.25rem minmax(0,1fr); padding: 0.75rem 0.5rem; } + .tc-files-rename-controls .tc-input { font-size: 1rem; min-height: var(--touch); } + .tc-files-rename-controls .tc-btn { min-height: var(--touch); min-width: var(--touch); } + .tc-files-rename-row > span { padding: 0.75rem 0; } .tc-files-conflicts .tc-conf { grid-template-columns: minmax(0,1fr); } .tc-files-conflicts .tc-conf > .tc-seg { justify-self: start; } - .tc-files-conflicts .tc-btn, .tc-files-conflicts .tc-seg > button, .tc-files-in-use .tc-btn, .tc-files-move .tc-btn { min-height: 44px; } - .tc-files-conflicts .tc-seg > button { min-width: 56px; } - .tc-files-move .tc-pick-row { min-height: 44px; gap: 4px; padding-left: calc(6px + min(var(--depth,0),5) * 12px); } - .tc-files-move .tc-pick-row > button { width: 44px; height: 44px; } - .tc-files-move .tc-pick-row > small { max-width: 60px; font-size: 10px; white-space: normal; } - .tc-files-move .tc-picker-places .tc-btn { padding-inline: 6px; } - .tc-files-move .tc-input, .tc-files-name-dialog .tc-input { font-size: 16px; min-height: 44px; } - .tc-files-move .tc-fdlg-body { padding: 12px 16px; gap: 10px; } - .tc-files-transfer-sheet .tc-btn { min-height: 44px; } - .tc-files-transfer-sheet .tc-btn--icon { min-width: 44px; } - .tc-files-transfer-list .tc-tray-item { grid-template-columns: 18px minmax(0,1fr) auto; padding-inline: 12px; } + .tc-files-conflicts .tc-btn, .tc-files-conflicts .tc-seg > button, .tc-files-in-use .tc-btn, .tc-files-move .tc-btn { min-height: var(--touch); } + .tc-files-conflicts .tc-seg > button { min-width: 3.5rem; } + .tc-files-move .tc-pick-row { min-height: var(--touch); gap: 0.25rem; padding-left: calc(6px + min(var(--depth,0),5) * 12px); } + .tc-files-move .tc-pick-row > button { width: var(--touch); height: var(--touch); } + .tc-files-move .tc-pick-row > small { max-width: 3.75rem; font-size: 0.625rem; white-space: normal; } + .tc-files-move .tc-picker-places .tc-btn { padding-inline: 0.375rem; } + .tc-files-move .tc-input, .tc-files-name-dialog .tc-input { font-size: 1rem; min-height: var(--touch); } + .tc-files-move .tc-fdlg-body { padding: 0.75rem 1rem; gap: 0.625rem; } + .tc-files-transfer-sheet .tc-btn { min-height: var(--touch); } + .tc-files-transfer-sheet .tc-btn--icon { min-width: var(--touch); } + .tc-files-transfer-list .tc-tray-item { grid-template-columns: 1.125rem minmax(0,1fr) auto; padding-inline: 0.75rem; } } /* Navigation gets a complete row. Search, display controls and creation actions share the next row in deliberate groups, sized by the console's own width. */ #files-browser .tc-ftb { container: files-toolbar / inline-size; flex-direction: column; align-items: stretch; } #files-browser .tc-path { flex: none; } #files-browser .tc-path-real { max-width: 24ch; overflow: hidden; text-overflow: ellipsis; } -#files-browser .tc-files-toolbar-commands { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-width: 0; } -#files-browser .tc-fsearch { flex: 1 1 180px; min-width: 0; max-width: 360px; } -.tc-files-toolbar-view, .tc-files-toolbar-create { display: flex; align-items: center; gap: 8px; flex: none; } +#files-browser .tc-files-toolbar-commands { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; min-width: 0; } +#files-browser .tc-fsearch { flex: 1 1 180px; min-width: 0; max-width: 22.5rem; } +.tc-files-toolbar-view, .tc-files-toolbar-create { display: flex; align-items: center; gap: 0.5rem; flex: none; } .tc-files-toolbar-create { margin-left: auto; } @container files-toolbar (max-width: 920px) { .tc-files-toolbar-view .tc-segicons { display: none; } @@ -2967,46 +2973,46 @@ button.tc-fd-item:hover { background: var(--hover); } #files-browser .tc-split > .tc-btn:last-child { background: var(--accent); color: var(--on-accent); border-color: var(--accent); margin-left: 0; box-shadow: inset 1px 0 0 color-mix(in srgb,var(--on-accent) 24%,transparent); } /* Names have their own line. Ownership and status can wrap below them without borrowing space from the Size column or collapsing the filename. */ -#files-browser .tc-fl--files .tc-fl-row { padding-block: 7px; } -#files-browser .tc-files-row-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; min-width: 0; } +#files-browser .tc-fl--files .tc-fl-row { padding-block: 0.4375rem; } +#files-browser .tc-files-row-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem 0.375rem; min-width: 0; } #files-browser .tc-files-row-meta:empty { display: none; } -#files-browser .tc-files-row-meta > small { display: flex; align-items: center; gap: 6px; min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--fg-muted); font-size: 12px; line-height: 18px; } -#files-browser .tc-files-row-meta > small .tc-icon { width: 12px; height: 12px; flex: none; } -#files-browser .tc-files-row-meta > small code { font-size: 11.5px; } +#files-browser .tc-files-row-meta > small { display: flex; align-items: center; gap: 0.375rem; min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--fg-muted); font-size: 0.75rem; line-height: 1.125rem; } +#files-browser .tc-files-row-meta > small .tc-icon { width: 0.75rem; height: 0.75rem; flex: none; } +#files-browser .tc-files-row-meta > small code { font-size: 0.71875rem; } #files-browser .tc-files-row-meta .w { color: var(--warn-text); } #files-browser .tc-files-row-meta .tc-ftag { min-width: 0; max-width: 100%; } #files-browser .tc-files-tag-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } #files-browser .tc-ftag .tc-icon { flex: none; } #files-browser .tc-prow-file > div > span:first-child > b { flex: 1; min-width: 0; } -#files-browser .tc-tnode { display: grid; grid-template-columns: 20px 16px minmax(0, 1fr); gap: 4px 6px; } +#files-browser .tc-tnode { display: grid; grid-template-columns: 1.25rem 1rem minmax(0, 1fr); gap: 0.25rem 0.375rem; } #files-browser .tc-tnode > :is(button, .tc-tspacer) { grid-column: 1; grid-row: 1; } #files-browser .tc-tnode > .tc-fl-icon { grid-column: 2; grid-row: 1; } #files-browser .tc-tnode > b { grid-column: 3; grid-row: 1; min-width: 0; } #files-browser .tc-tnode > .tc-ftag { grid-column: 3; grid-row: 2; justify-self: start; max-width: 100%; min-width: 0; } @media (min-width: 640px) { #files-browser .tc-tree { container: files-tree / inline-size; } - #files-browser .tc-tree .tc-fl-row { padding-block: 6px; } + #files-browser .tc-tree .tc-fl-row { padding-block: 0.375rem; } @container files-tree (max-width: 640px) { - .tc-tree :is(.tc-fl-head, .tc-fl-row) { grid-template-columns: minmax(0, 1fr) 80px 72px 28px; column-gap: 8px; } + .tc-tree :is(.tc-fl-head, .tc-fl-row) { grid-template-columns: minmax(0, 1fr) 5rem 4.5rem 1.75rem; column-gap: 0.5rem; } .tc-tree :is(.tc-fl-head, .tc-fl-row) > :nth-child(4) { display: none; } } @container files-tree (max-width: 480px) { - .tc-tree :is(.tc-fl-head, .tc-fl-row) { grid-template-columns: minmax(0, 1fr) 72px 28px; } + .tc-tree :is(.tc-fl-head, .tc-fl-row) { grid-template-columns: minmax(0, 1fr) 4.5rem 1.75rem; } .tc-tree :is(.tc-fl-head, .tc-fl-row) > :nth-child(2) { display: none; } } } @media (max-width: 639.98px) { - #files-browser .tc-tnode { grid-template-columns: 44px 16px minmax(0, 1fr); } + #files-browser .tc-tnode { grid-template-columns: var(--touch) 1rem minmax(0, 1fr); } #files-browser .tc-fsum-lead > strong { flex: none; white-space: nowrap; } } /* Folder lists need the same protection as Projects when Details is open. Modification dates remain in Details when the table's lane is narrow. */ #files-browser .tc-fl--files { container: files-list / inline-size; } @container files-list (max-width: 640px) { - .tc-fl--files :is(.tc-fl-head, .tc-fl-row) { grid-template-columns: 24px minmax(0, 1fr) 128px 80px 28px; column-gap: 8px; } + .tc-fl--files :is(.tc-fl-head, .tc-fl-row) { grid-template-columns: 1.5rem minmax(0, 1fr) 8rem 5rem 1.75rem; column-gap: 0.5rem; } } @container files-list (max-width: 560px) { - .tc-fl--files :is(.tc-fl-head, .tc-fl-row) { grid-template-columns: 24px minmax(0, 1fr) 112px 28px; } + .tc-fl--files :is(.tc-fl-head, .tc-fl-row) { grid-template-columns: 1.5rem minmax(0, 1fr) 7rem 1.75rem; } .tc-fl--files :is(.tc-fl-head, .tc-fl-row) > :nth-child(4) { display: none; } } /* Owned Files layers also hide notices while the main route is changing. */ @@ -3014,125 +3020,140 @@ button.tc-fd-item:hover { background: var(--hover); } @media(max-width:639.98px) { body[data-console-route="files"] .tc-toaster { bottom: calc(86px + env(safe-area-inset-bottom)); } } body[data-console-route="files"]:has(.tc-layer) .tc-toaster { visibility: hidden; } @media(min-width:1024px) and (max-width:1360px) { - #files-browser .tc-fl--projects { --fl-cols: 24px minmax(0,1fr) 112px 58px 72px 28px; } - #files-browser .tc-fl--projects[data-no-threads] { --fl-cols: 24px minmax(0,1fr) 112px 72px 28px; } + #files-browser .tc-fl--projects { --fl-cols: 1.5rem minmax(0,1fr) 7rem 3.625rem 4.5rem 1.75rem; } + #files-browser .tc-fl--projects[data-no-threads] { --fl-cols: 1.5rem minmax(0,1fr) 7rem 4.5rem 1.75rem; } } @media(max-width:639.98px) { #files-browser .tc-fbanner { flex-wrap: wrap; align-items: flex-start; } #files-browser .tc-fbanner > div { flex: 1 1 calc(100% - 32px); } #files-browser .tc-fbanner > .tc-btn { flex: 1 1 calc(50% - 6px); justify-content: center; } } -.tc-files-transfer-keep { display: flex; align-items: center; gap: 12px; margin: 14px 16px 16px; padding: 12px; border: 1px solid color-mix(in srgb,var(--info) 26%,transparent); border-radius: var(--radius-xl); background: var(--info-soft); } -.tc-files-transfer-keep > .tc-icon { flex: none; width: 18px; height: 18px; color: var(--info-text); } -.tc-files-transfer-keep > div { display: flex; flex-direction: column; gap: 4px; } -.tc-files-transfer-keep strong { font-size: 13px; font-weight: 500; } -.tc-files-transfer-keep small { font-size: 12px; line-height: 17px; color: var(--fg-muted); } -.tc-files-transfer-actions { display: flex; gap: 8px; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); border-top: 1px solid var(--border); background: var(--surface-sunken); } +.tc-files-transfer-keep { display: flex; align-items: center; gap: 0.75rem; margin: 0.875rem 1rem 1rem; padding: 0.75rem; border: 1px solid color-mix(in srgb,var(--info) 26%,transparent); border-radius: var(--radius-xl); background: var(--info-soft); } +.tc-files-transfer-keep > .tc-icon { flex: none; width: 1.125rem; height: 1.125rem; color: var(--info-text); } +.tc-files-transfer-keep > div { display: flex; flex-direction: column; gap: 0.25rem; } +.tc-files-transfer-keep strong { font-size: 0.8125rem; font-weight: 500; } +.tc-files-transfer-keep small { font-size: 0.75rem; line-height: 1.0625rem; color: var(--fg-muted); } +.tc-files-transfer-actions { display: flex; gap: 0.5rem; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); border-top: 1px solid var(--border); background: var(--surface-sunken); } .tc-files-transfer-actions > .tc-btn { flex: 1; } .tc-files-name-dialog .tc-field-error:empty { display: none; } @media(max-width:639.98px) { - .tc-files-transfer-sheet .tc-files-transfer-list { margin: 0 16px; max-height: 45dvh; border: 1px solid var(--border); border-radius: var(--radius-xl); } - .tc-files-transfer-sheet .tc-tray-head { padding: 18px 16px 12px; } - .tc-files-transfer-sheet .tc-tray-item { min-height: 78px; } - .tc-files-transfer-sheet .tc-tray-item small { font-size: 12px; line-height: 17px; } + .tc-files-transfer-sheet .tc-files-transfer-list { margin: 0 1rem; max-height: 45dvh; border: 1px solid var(--border); border-radius: var(--radius-xl); } + .tc-files-transfer-sheet .tc-tray-head { padding: 1.125rem 1rem 0.75rem; } + .tc-files-transfer-sheet .tc-tray-item { min-height: 4.875rem; } + .tc-files-transfer-sheet .tc-tray-item small { font-size: 0.75rem; line-height: 1.0625rem; } } -.tc-files-transfer-pages { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 12px; color: var(--fg-muted); font-size: 12px; border-top: 1px solid var(--hairline); } +.tc-files-transfer-pages { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; padding: 0.5rem 0.75rem; color: var(--fg-muted); font-size: 0.75rem; border-top: 1px solid var(--hairline); } /* Files reviews share one visual language and keep their primary actions in view while lists, paths and risk detail scroll within the body. */ :is(.tc-files-zip,.tc-files-extract,.tc-files-clean,.tc-files-delete) .tc-fdlg-head, :is(.tc-files-zip,.tc-files-extract,.tc-files-clean,.tc-files-delete) .tc-fdlg-foot { flex: none; } :is(.tc-files-zip,.tc-files-extract,.tc-files-clean,.tc-files-delete) .tc-fdlg-body { overflow-y: auto; overscroll-behavior: contain; } -.tc-files-review-error { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; padding: 12px; border: 1px solid color-mix(in srgb,var(--warn) 28%,transparent); border-radius: var(--radius-lg); background: var(--warn-soft); color: var(--warn-text); } -.tc-files-review-error p { flex: 1 1 240px; margin: 0; font-size: 13px; line-height: 19px; } +.tc-files-review-error { display: flex; align-items: center; flex-wrap: wrap; gap: 0.625rem; padding: 0.75rem; border: 1px solid color-mix(in srgb,var(--warn) 28%,transparent); border-radius: var(--radius-lg); background: var(--warn-soft); color: var(--warn-text); } +.tc-files-review-error p { flex: 1 1 240px; margin: 0; font-size: 0.8125rem; line-height: 1.1875rem; } .tc-files-review-error .tc-btn { flex: none; } -.tc-files-zip-estimate { display: flex; align-items: center; gap: 10px; min-height: 52px; padding: 0 2px; color: var(--fg-muted); font-size: 13px; } -.tc-files-zip-estimate > .tc-icon { width: 22px; height: 22px; flex: none; } -.tc-files-zip-estimate > div { display: flex; flex-direction: column; gap: 3px; } -.tc-files-zip-estimate strong { color: var(--fg); font-size: 24px; line-height: 1.2; letter-spacing: -.035em; font-weight: 650; } -.tc-files-zip-estimate small { font-size: 12px; line-height: 18px; } -.tc-files-archive-contents { display: grid; gap: 8px; } -.tc-files-archive-contents > div { display: flex; flex-wrap: wrap; gap: 6px 14px; padding: 12px; border: 1px solid var(--border); border-radius: var(--radius-lg); } -.tc-files-archive-contents span:not(.tc-small) { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; } -.tc-files-archive-contents .tc-icon { width: 14px; height: 14px; color: var(--fg-muted); } -.tc-files-extract-name { padding: 0 14px 12px 44px; border-bottom: 1px solid var(--hairline); } -.tc-files-skipped { margin: 10px 0 0; padding: 0; list-style: none; max-height: 140px; overflow-y: auto; } -.tc-files-skipped li { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 12px; padding: 4px 0; font-size: 11px; } +.tc-files-zip-estimate { display: flex; align-items: center; gap: 0.625rem; min-height: 3.25rem; padding: 0 2px; color: var(--fg-muted); font-size: 0.8125rem; } +.tc-files-zip-estimate > .tc-icon { width: 1.375rem; height: 1.375rem; flex: none; } +.tc-files-zip-estimate > div { display: flex; flex-direction: column; gap: 0.1875rem; } +.tc-files-zip-estimate strong { color: var(--fg); font-size: 1.5rem; line-height: 1.2; letter-spacing: -.035em; font-weight: 650; } +.tc-files-zip-estimate small { font-size: 0.75rem; line-height: 1.125rem; } +.tc-files-archive-contents { display: grid; gap: 0.5rem; } +.tc-files-archive-contents > div { display: flex; flex-wrap: wrap; gap: 0.375rem 0.875rem; padding: 0.75rem; border: 1px solid var(--border); border-radius: var(--radius-lg); } +.tc-files-archive-contents span:not(.tc-small) { display: inline-flex; align-items: center; gap: 0.375rem; font-size: 0.75rem; } +.tc-files-archive-contents .tc-icon { width: 0.875rem; height: 0.875rem; color: var(--fg-muted); } +.tc-files-extract-name { padding: 0 0.875rem 0.75rem 2.75rem; border-bottom: 1px solid var(--hairline); } +.tc-files-skipped { margin: 0.625rem 0 0; padding: 0; list-style: none; max-height: 8.75rem; overflow-y: auto; } +.tc-files-skipped li { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 0.75rem; padding: 0.25rem 0; font-size: 0.6875rem; } .tc-files-skipped code { overflow-wrap: anywhere; } -.tc-files-skipped span { color: var(--fg-muted); font-size: 11px; } -.tc-files-extract summary { margin-top: 7px; cursor: pointer; font-size: 12px; } +.tc-files-skipped span { color: var(--fg-muted); font-size: 0.6875rem; } +.tc-files-extract summary { margin-top: 0.4375rem; cursor: pointer; font-size: 0.75rem; } .tc-files-clean-projects { border: 1px solid var(--border); border-radius: var(--radius-xl); overflow: hidden; } .tc-files-clean-project + .tc-files-clean-project { border-top: 1px solid var(--border); } -.tc-files-clean-project-head { display: grid; grid-template-columns: 18px minmax(0,1fr) auto; align-items: center; gap: 10px; padding: 10px 14px; } -.tc-files-clean-disclosure { display: inline-flex; align-items: center; justify-content: flex-start; gap: 7px; min-width: 0; padding: 0; } -.tc-files-clean-disclosure > strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13.5px; font-weight: 500; } -.tc-files-clean-project-head > span { color: var(--fg-muted); font-size: 12px; white-space: nowrap; } -.tc-files-clean-item { display: grid; grid-template-columns: 18px minmax(0,1fr) auto; align-items: start; gap: 10px; padding: 10px 14px 10px 42px; border-top: 1px solid var(--hairline); cursor: pointer; } -.tc-files-clean-item > span:nth-child(2) { display: flex; flex-direction: column; gap: 3px; min-width: 0; } -.tc-files-clean-item strong { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; font-size: 12px; font-weight: 400; } +.tc-files-clean-project-head { display: grid; grid-template-columns: 1.125rem minmax(0,1fr) auto; align-items: center; gap: 0.625rem; padding: 0.625rem 0.875rem; } +.tc-files-clean-disclosure { display: inline-flex; align-items: center; justify-content: flex-start; gap: 0.4375rem; min-width: 0; padding: 0; } +.tc-files-clean-disclosure > strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.84375rem; font-weight: 500; } +.tc-files-clean-project-head > span { color: var(--fg-muted); font-size: 0.75rem; white-space: nowrap; } +.tc-files-clean-item { display: grid; grid-template-columns: 1.125rem minmax(0,1fr) auto; align-items: start; gap: 0.625rem; padding: 0.625rem 0.875rem 0.625rem 2.625rem; border-top: 1px solid var(--hairline); cursor: pointer; } +.tc-files-clean-item > span:nth-child(2) { display: flex; flex-direction: column; gap: 0.1875rem; min-width: 0; } +.tc-files-clean-item strong { display: flex; align-items: center; flex-wrap: wrap; gap: 0.4375rem; font-size: 0.75rem; font-weight: 400; } .tc-files-clean-item code { overflow-wrap: anywhere; } -.tc-files-clean-item small { font-size: 12px; line-height: 17px; color: var(--fg-muted); } +.tc-files-clean-item small { font-size: 0.75rem; line-height: 1.0625rem; color: var(--fg-muted); } .tc-files-clean-item .tc-files-clean-warning { color: var(--warn-text); } -.tc-files-clean-item > span:last-child { font-size: 12px; color: var(--fg-muted); white-space: nowrap; } -.tc-files-clean-kept { font-size: 13px; color: var(--fg-muted); } -.tc-files-clean-kept summary { cursor: pointer; padding: 4px 0; } -.tc-files-clean-kept > div { display: grid; gap: 3px; padding: 8px 0; border-bottom: 1px solid var(--hairline); } -.tc-files-clean-kept code { font-size: 12px; overflow-wrap: anywhere; } -.tc-files-clean-kept small { font-size: 12px; line-height: 17px; } -.tc-files-clean-total { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px; margin: 0; font-size: 13px; } -.tc-files-clean-total strong { font-size: 24px; line-height: 1.2; font-weight: 650; letter-spacing: -.035em; } -.tc-files-clean-total > span { font-size: 12px; color: var(--fg-muted); } -.tc-files-review-empty, .tc-files-review-progress { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 28px 8px; text-align: center; } -.tc-files-review-empty > .tc-icon { width: 28px; height: 28px; color: var(--ok-text); } -.tc-files-review-progress > .tc-spinner { width: 24px; height: 24px; } -.tc-files-review-progress .tc-progress { width: min(100%,320px); } +.tc-files-clean-item > span:last-child { font-size: 0.75rem; color: var(--fg-muted); white-space: nowrap; } +.tc-files-clean-kept { font-size: 0.8125rem; color: var(--fg-muted); } +.tc-files-clean-kept summary { cursor: pointer; padding: 0.25rem 0; } +.tc-files-clean-kept > div { display: grid; gap: 0.1875rem; padding: 0.5rem 0; border-bottom: 1px solid var(--hairline); } +.tc-files-clean-kept code { font-size: 0.75rem; overflow-wrap: anywhere; } +.tc-files-clean-kept small { font-size: 0.75rem; line-height: 1.0625rem; } +.tc-files-clean-total { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.5rem; margin: 0; font-size: 0.8125rem; } +.tc-files-clean-total strong { font-size: 1.5rem; line-height: 1.2; font-weight: 650; letter-spacing: -.035em; } +.tc-files-clean-total > span { font-size: 0.75rem; color: var(--fg-muted); } +.tc-files-review-empty, .tc-files-review-progress { display: flex; flex-direction: column; align-items: center; gap: 0.625rem; padding: 1.75rem 0.5rem; text-align: center; } +.tc-files-review-empty > .tc-icon { width: 1.75rem; height: 1.75rem; color: var(--ok-text); } +.tc-files-review-progress > .tc-spinner { width: 1.5rem; height: 1.5rem; } +.tc-files-review-progress .tc-progress { width: min(100%,20rem); } .tc-files-review-empty :is(h3,p), .tc-files-review-progress :is(h3,p) { margin: 0; } -.tc-files-review-progress small { font-size: 12px; line-height: 18px; color: var(--fg-muted); } -.tc-files-delete { width: 600px; } -.tc-files-delete-label { font-size: 13px; } +.tc-files-review-progress small { font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); } +.tc-files-delete { width: 37.5rem; } +.tc-files-delete-label { font-size: 0.8125rem; } .tc-files-delete .tc-risk small { overflow-wrap: anywhere; } .tc-files-delete .tc-risk li > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } -.tc-files-archive-preview { display: grid; gap: 14px; } -.tc-files-archive-preview > div { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; } +.tc-files-archive-preview { display: grid; gap: 0.875rem; } +.tc-files-archive-preview > div { display: flex; flex-wrap: wrap; align-items: center; gap: 0.375rem; } .tc-files-archive-preview > div .tc-icon { color: var(--fg-muted); } -.tc-files-archive-preview > div strong { font-size: 18px; font-weight: 600; } -.tc-files-archive-preview > div span { color: var(--fg-muted); font-size: 12px; } -.tc-files-archive-preview ul { list-style: none; display: grid; gap: 8px; margin: 0; padding: 0; } -.tc-files-archive-preview li { display: flex; align-items: center; gap: 8px; font-size: 12px; } -.tc-files-archive-preview li .tc-icon { width: 15px; height: 15px; color: var(--fg-muted); } +.tc-files-archive-preview > div strong { font-size: 1.125rem; font-weight: 600; } +.tc-files-archive-preview > div span { color: var(--fg-muted); font-size: 0.75rem; } +.tc-files-archive-preview ul { list-style: none; display: grid; gap: 0.5rem; margin: 0; padding: 0; } +.tc-files-archive-preview li { display: flex; align-items: center; gap: 0.5rem; font-size: 0.75rem; } +.tc-files-archive-preview li .tc-icon { width: 0.9375rem; height: 0.9375rem; color: var(--fg-muted); } .tc-files-archive-preview code { overflow-wrap: anywhere; } -.tc-storage-data-row:has(a) { grid-template-columns: minmax(0,1fr) auto auto; gap: 12px; } +.tc-storage-data-row:has(a) { grid-template-columns: minmax(0,1fr) auto auto; gap: 0.75rem; } +@container (max-width: 24rem) { + .tc-storage-data-row:has(a) { grid-template-columns: minmax(0,1fr) auto; } + .tc-storage-data-row > a { grid-column: 1 / -1; justify-self: start; } +} + @media(max-width:639.98px) { - :is(.tc-files-zip,.tc-files-extract,.tc-files-clean,.tc-files-delete) .tc-fdlg-head { padding: 14px 16px 4px; } - :is(.tc-files-zip,.tc-files-extract,.tc-files-clean,.tc-files-delete) .tc-fdlg-body { padding: 14px 16px 18px; } - :is(.tc-files-zip,.tc-files-extract,.tc-files-clean,.tc-files-delete) .tc-btn { min-height: 44px; } - .tc-files-clean-project-head { padding: 10px; gap: 8px; } - .tc-files-clean-project-head > span { font-size: 11px; } - .tc-files-clean-item { padding: 12px 10px 12px 18px; gap: 8px; } - .tc-files-clean-disclosure strong { font-size: 13px; } - .tc-files-zip .tc-opt { padding: 12px; gap: 10px; } - .tc-files-extract .tc-input, .tc-files-delete .tc-input { min-height: 44px; font-size: 16px; } - .tc-files-delete .tc-risk { grid-template-columns: 18px minmax(0,1fr); padding: 12px; gap: 8px; } + :is(.tc-files-zip,.tc-files-extract,.tc-files-clean,.tc-files-delete) .tc-fdlg-head { padding: 0.875rem 1rem 0.25rem; } + :is(.tc-files-zip,.tc-files-extract,.tc-files-clean,.tc-files-delete) .tc-fdlg-body { padding: 0.875rem 1rem 1.125rem; } + :is(.tc-files-zip,.tc-files-extract,.tc-files-clean,.tc-files-delete) .tc-btn { min-height: var(--touch); } + .tc-files-clean-project-head { padding: 0.625rem; gap: 0.5rem; } + .tc-files-clean-project-head > span { font-size: 0.6875rem; } + .tc-files-clean-item { padding: 0.75rem 0.625rem 0.75rem 1.125rem; gap: 0.5rem; } + .tc-files-clean-disclosure strong { font-size: 0.8125rem; } + .tc-files-zip .tc-opt { padding: 0.75rem; gap: 0.625rem; } + .tc-files-extract .tc-input, .tc-files-delete .tc-input { min-height: var(--touch); font-size: 1rem; } + .tc-files-delete .tc-risk { grid-template-columns: 1.125rem minmax(0,1fr); padding: 0.75rem; gap: 0.5rem; } .tc-files-delete .tc-risk > .tc-btn { grid-column: 2; justify-self: start; } .tc-storage-data-row:has(a) { grid-template-columns: minmax(0,1fr) auto; } .tc-storage-data-row > a { grid-column: 1 / -1; justify-self: start; } } -.tc-files-clean-disclosure>span{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:3px;text-align:left} +.tc-files-clean-disclosure>span{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:0.1875rem;text-align:left} .tc-files-clean-disclosure>span>strong{font-weight:550} -.tc-files-clean-disclosure small{font-size:11px;font-weight:400;color:var(--fg-muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} +.tc-files-clean-disclosure small{font-size:0.6875rem;font-weight:400;color:var(--fg-muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .tc-files-clean-project-head{background:var(--surface-sunken)} .tc-files-clean-project-head>span{white-space:nowrap} -.tc-files-transfer-extract{display:flex;align-items:flex-start;gap:8px;margin-top:7px;font-size:12px;overflow-wrap:anywhere;cursor:pointer} +.tc-files-transfer-extract{display:flex;align-items:flex-start;gap:0.5rem;margin-top:0.4375rem;font-size:0.75rem;overflow-wrap:anywhere;cursor:pointer} .tc-files-transfer-extract input{flex:0 0 auto;margin-top:2px} -@media(max-width:639.98px){.tc-files-clean-total>strong{font-size:23px}.tc-files-clean-project-head{gap:8px}.tc-files-clean-disclosure{gap:6px}.tc-files-clean-project-head>span{white-space:normal;text-align:right;font-size:11px}.tc-files-transfer-extract{min-height:44px;align-items:center}} +@media(max-width:639.98px){.tc-files-clean-total>strong{font-size:1.4375rem}.tc-files-clean-project-head{gap:0.5rem}.tc-files-clean-disclosure{gap:0.375rem}.tc-files-clean-project-head>span{white-space:normal;text-align:right;font-size:0.6875rem}.tc-files-transfer-extract{min-height:2.75rem;align-items:center}} /* The body owns scrolling; flex children must retain their full contents. */ :is(.tc-files-zip,.tc-files-extract,.tc-files-clean,.tc-files-delete) .tc-fdlg-body > * { flex: none; } :is(.tc-files-zip,.tc-files-extract,.tc-files-clean,.tc-files-delete) .tc-fdlg-head h2, .tc-files-delete-label { overflow-wrap: anywhere; } -.tc-files-risk-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; } +.tc-files-risk-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.375rem 1rem; } .tc-files-delete .tc-risk .tc-files-risk-actions .tc-btn { width: auto; padding-inline: 0; align-self: flex-start; } -.tc-files-zip-option-size { flex: none; white-space: nowrap; font-size: 12px; color: var(--fg-muted); font-style: normal; } +.tc-files-zip-option-size { flex: none; white-space: nowrap; font-size: 0.75rem; color: var(--fg-muted); font-style: normal; } .tc-files-zip .tc-opt small { overflow-wrap: anywhere; } .tc-files-archive-contents span:not(.tc-small) { max-width: 100%; min-width: 0; } .tc-files-archive-contents code { min-width: 0; overflow-wrap: anywhere; } + +/* The Settings breadcrumb stays with the page while its content scrolls. */ +.tc-console-topbar { flex: none; height: var(--topbar); min-height: var(--topbar); border-bottom: 1px solid var(--border); padding-inline: var(--space-4); background: var(--bg); } +.tc-console-topbar .tc-crumbs { gap: var(--space-3); } +.tc-console-topbar .tc-crumbs a { color: var(--fg-muted); } +.tc-console-topbar .tc-crumbs > li { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } +.tc-console-topbar .tc-crumbs > li + li::before { margin-right: var(--space-3); } +.tc-console-topbar .tc-embed-close { background: transparent; } +.tc-nav-group > .tc-nav-label { font-size: 0.75rem; font-weight: 500; } +@media (max-width: 1023.98px) { .tc-console-topbar { display: none; } } diff --git a/docker/setup/design/README.md b/docker/setup/design/README.md index edc3bad..5cae0ec 100644 --- a/docker/setup/design/README.md +++ b/docker/setup/design/README.md @@ -1,18 +1,86 @@ -# Vendored design system +# Setup design system -These three files come from the T3 Code Console design handoff -(`t3code-console-handoff/design-system/`). They are the component layer the -console is built from, and are kept as close to the handoff as possible so a -newer handoff can be dropped in and diffed: +Setup uses the existing vanilla JavaScript Kit and `tc-` components. Its shared +appearance follows native T3 Code Settings. The current reference is **T3 0.1.4**, +[commit 783581d](https://github.com/pingdotgg/t3code/tree/783581d461dc72cdd8f78fc8abb4ad536dfc4547/apps/web/src). +The shared UI at `0.1.5-nightly.20261029.3867` uses the same recipes. -| File | From | Notes | -| --- | --- | --- | -| `tokens.css` | `tokens.css` | The custom properties only; the generated type classes (`.display`, `.title`, `.body`…) are left out because they are too generic for a page. | -| `components.css` | `components/bundle.css` | Verbatim except the fixes below. | -| `ui.js` | `components/bundle.js` | Verbatim except the fixes below. Exposes `window.T3C`. | +| File | Responsibility | +| --- | --- | +| `tokens.css` | Standalone native light/dark defaults, semantic roles, rem geometry and density. | +| `components.css` | Shared controls, rows, groups, typography, navigation and feedback. | +| `ui.js` | Existing `window.T3C` icons, provider marks and shared behavior. | +| `../console.css` | Console composition, page layouts, overlays and responsive navigation. | +| `../client/appearance.js` | Validated native appearance messages mapped to Kit tokens. | -The page's own layout (the shell, the phone bar, overlays, the toaster) lives in -`../console.css`, never here. +These files started with `t3code-console-handoff/design-system/`. They are now +maintained here, rather than replaced by an unreviewed handoff bundle. Preserve +the fixes and additions below when updating recipes. + +## Following native T3 + +Compare `apps/web/src/index.css`, `themePalette.ts`, `appearanceFonts.ts`, +`components/ui`, `components/AppRouteModal.tsx` and `components/settings` in the +pinned native source. The console uses its neutral canvas, foreground/muted text, +40% card fills, 60% card borders, control radius, switches and inset focus rings. +The sidebar is 15rem and the breadcrumb header is 3rem. Embedded modal bounds +match native Settings: 80rem by 60rem, 1.5rem gutters, 2.5rem on large screens, +and full screen below 640px. + +Native `primary` maps to Setup `--accent`, the action color. Native `accent` +is a neutral interactive surface and maps to `--hover`/`--pressed`. Warning, +error, success and information keep separate semantic colors. Do not use the +primary color for all status indicators or hardcode blue in action recipes. + +`setup-bridge.js` sends a versioned appearance snapshot on the existing trusted +ready/theme exchange. It reads resolved semantic values, including native +contrast adjustments, font families, smoothing, interface size and control +radius. Root class/style/theme mutations are coalesced per animation frame; +identical snapshots are skipped. The receiver accepts only allowlisted, +browser-supported literal values from its same-origin parent. There are no +arbitrary CSS selectors, URLs, font downloads or configuration writes. + +Palette-only changes update CSS without rendering the application, preserving +drafts, menus, selection and focus. Missing roles fall back to native standalone +defaults; theme-only legacy messages clear previous overrides. The unlock page +uses the same receiver. Standalone Setup retains its own Light/Dark/System +selector. Native interface size is bounded to its supported 12px to 20px range; +rem geometry follows it while hairlines, switch end insets and minimum 44px +touch targets retain their physical size. + +The mobile information architecture intentionally stays specific to Setup: +primary bottom tabs, More, and focused Files/Skills/MCP screens. Keeping these +flows avoids compressing twelve sections and management tables into the native +phone settings icon rail. The desktop sidebar switches at 1024px to leave room +for these data-heavy pages. Colors and controls remain shared across both modes. + +### Font asset + +`fonts/inter-latin-variable.woff2` is the unmodified 48,256-byte Latin variable +Inter asset from the official T3 0.1.4 ARM64 client archive +(`client/assets/inter-latin-wght-normal-Dx4kXJAl.woff2`). `fonts/OFL.txt` contains +the [Inter SIL Open Font License](https://github.com/rsms/inter/blob/v4.1/LICENSE.txt). +`page.mjs` inlines the font once with the styles, preserving the console's single +HTML response and offline operation. CSP permits `font-src data:` only. System +and non-Latin fallback stacks match native T3. No runtime font dependency or +external font service is needed. + +### Verification when syncing + +`tests/fixtures/native-appearance.json` records the measured reference version, +commit and light/dark roles. `tests/appearance.test.mjs` covers the transport, +validation, legacy fallback and self-contained font delivery. + +`node scripts/appearance-ui-audit.js URL KEY` compares the real standalone +console with those roles in light/dark at 360px, 820px and 1440px. It checks +loaded fonts, focus, forced colors, header navigation and page containment. +`scripts/setup-bridge-audit.js` additionally checks live native role parity, +custom palette/contrast/font changes, draft and focus preservation, coalescing, +legacy fallback and message source guards through a real native T3 frame. +Run the existing shared geometry, row and feature audits from CONTRIBUTING as +well. Capture source and implementation at the same viewport, then inspect +combined comparisons. Include representative light, dark, phone and embedded +screenshots in the PR, with its scoped visual QA findings. ## Local fixes @@ -20,7 +88,7 @@ Each of these is a bug in the handoff, not a restyle. Keep them when syncing. 1. **`--sidebar` meant two things.** The handoff's `tokens.css` declares `--sidebar` as the sidebar's colour in each theme block and again as the - 256px layout width in `:root`. With `data-theme` on `` both selectors + sidebar layout width in `:root`. With `data-theme` on `` both selectors match the same element with equal specificity, so the width won and the sidebar lost its background in both themes. The width is now `--sidebar-w`, in `tokens.css` and in `.tc-app`'s grid in `components.css`. (The handoff's diff --git a/docker/setup/design/components.css b/docker/setup/design/components.css index 831e6a2..f4dc375 100644 --- a/docker/setup/design/components.css +++ b/docker/setup/design/components.css @@ -1,33 +1,32 @@ -/* T3 Code Console v2.1 — component stylesheet. +/* T3 Code Console component stylesheet, aligned with native T3 0.1.4. Geometry and recipes follow upstream T3 Code (pingdotgg/t3code apps/web, components/ui/*): coss-ui controls on base-ui, zinc/neutral surfaces, one - T3 blue. Every colour, length and duration comes from tokens.css. */ + semantic action color. Shared appearance values come from tokens.css. */ /* ------------------------------------------------------------ base ---- */ .tc-root, .tc-root *, .tc-root *::before, .tc-root *::after { box-sizing: border-box; } .tc-root { font-family: var(--font-sans); - font-size: 14px; line-height: 20px; + font-size: 0.875rem; line-height: 1.25rem; color: var(--fg); background-color: var(--bg); - background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E"); background-size: 256px 256px; - -webkit-font-smoothing: antialiased; + -webkit-font-smoothing: var(--font-smoothing, antialiased); } :where(.tc-root) :focus-visible { outline: 2px solid var(--focus); outline-offset: 1px; } :where(.tc-root a) { color: var(--accent-text); text-decoration: none; } :where(.tc-root a:hover) { text-decoration: underline; text-underline-offset: 4px; } -.tc-mono, .tc-root code { font-family: var(--font-mono); font-size: 12px; font-variant-numeric: tabular-nums; } -.tc-mono--body { font-size: 13px; } +.tc-mono, .tc-root code { font-family: var(--font-mono); font-size: 0.75rem; font-variant-numeric: tabular-nums; } +.tc-mono--body { font-size: 0.8125rem; } .tc-num { font-variant-numeric: tabular-nums; } -.tc-small { font-size: 12px; line-height: 18px; } +.tc-small { font-size: 0.75rem; line-height: 1.125rem; } .tc-muted { color: var(--fg-muted); } .tc-subtle { color: var(--fg-subtle); } .tc-truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; } .tc-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } -.tc-eyebrow { font-size: 11px; line-height: 14px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--fg-muted); } +.tc-eyebrow { font-size: 0.6875rem; line-height: 0.875rem; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--fg-muted); } .tc-icon { width: var(--icon); height: var(--icon); flex: none; stroke-width: 2; display: inline-block; vertical-align: middle; } -.tc-icon--sm { width: 14px; height: 14px; } -.tc-icon--xs { width: 12px; height: 12px; } -.tc-icon--lg { width: 18px; height: 18px; } +.tc-icon--sm { width: 0.875rem; height: 0.875rem; } +.tc-icon--xs { width: 0.75rem; height: 0.75rem; } +.tc-icon--lg { width: 1.125rem; height: 1.125rem; } .tc-stack { display: flex; flex-direction: column; gap: var(--space-2); min-width: 0; } .tc-cluster { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); } .tc-spacer { flex: 1 1 auto; } @@ -35,19 +34,19 @@ /* ------------------------------------------------------------- brand -- */ /* The console's own app icon (blue gradient on the 4/16px grid). */ -.tc-mark { width: 24px; height: 24px; flex: none; border-radius: 6px; display: inline-block; +.tc-mark { width: 1.5rem; height: 1.5rem; flex: none; border-radius: 0.375rem; display: inline-block; background: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgdmlld0JveD0iMCAwIDEyOCAxMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJUMyBDb2RlIj4KICA8dGl0bGU+VDMgQ29kZTwvdGl0bGU+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQgaWQ9InQzLXBhcGVyIiB4MT0iMzYiIHkxPSIwIiB4Mj0iOTIiIHkyPSIxMjgiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzY3QzJGRiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjAuNDQiIHN0b3AtY29sb3I9IiMzNDdGRjgiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMTUzOEQwIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPHJhZGlhbEdyYWRpZW50IGlkPSJ0My1nbG93IiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIgogICAgICBncmFkaWVudFRyYW5zZm9ybT0idHJhbnNsYXRlKDkyIDIyKSByb3RhdGUoMTM3KSBzY2FsZSg3OCA3MCkiPgogICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjRDRGNkZGIiBzdG9wLW9wYWNpdHk9IjAuNjIiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIwLjUyIiBzdG9wLWNvbG9yPSIjNjVDOEZGIiBzdG9wLW9wYWNpdHk9IjAuMjQiLz4KICAgICAgPHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMjc2QUYxIiBzdG9wLW9wYWNpdHk9IjAiLz4KICAgIDwvcmFkaWFsR3JhZGllbnQ+CiAgICA8cGF0dGVybiBpZD0idDMtbWlub3IiIHdpZHRoPSI0IiBoZWlnaHQ9IjQiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPgogICAgICA8cGF0aCBkPSJNNCAwSDBWNCIgc3Ryb2tlPSIjRDlGN0ZGIiBzdHJva2Utd2lkdGg9IjAuMTgiIG9wYWNpdHk9IjAuMzgiLz4KICAgIDwvcGF0dGVybj4KICAgIDxwYXR0ZXJuIGlkPSJ0My1tYWpvciIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBwYXR0ZXJuVW5pdHM9InVzZXJTcGFjZU9uVXNlIj4KICAgICAgPHJlY3Qgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBmaWxsPSJ1cmwoI3QzLW1pbm9yKSIvPgogICAgICA8cGF0aCBkPSJNMTYgMEgwVjE2IiBzdHJva2U9IiNGMEZDRkYiIHN0cm9rZS13aWR0aD0iMC4zNCIgb3BhY2l0eT0iMC41MiIvPgogICAgPC9wYXR0ZXJuPgogICAgPGNsaXBQYXRoIGlkPSJ0My1mcmFtZSI+CiAgICAgIDxyZWN0IHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiByeD0iMTAiLz4KICAgIDwvY2xpcFBhdGg+CiAgPC9kZWZzPgogIDxnIGNsaXAtcGF0aD0idXJsKCN0My1mcmFtZSkiPgogICAgPHJlY3Qgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiIGZpbGw9InVybCgjdDMtcGFwZXIpIi8+CiAgICA8cmVjdCB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgZmlsbD0idXJsKCN0My1nbG93KSIvPgogICAgPHJlY3QgeD0iNCIgeT0iNCIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIxMjAiIGZpbGw9InVybCgjdDMtbWFqb3IpIiBvcGFjaXR5PSIwLjk2Ii8+CiAgICA8cGF0aCBkPSJNNjQgNFYxMjRNNCA2NEgxMjQiIHN0cm9rZT0iI0YwRkNGRiIgc3Ryb2tlLXdpZHRoPSIwLjMiIG9wYWNpdHk9IjAuNDYiLz4KICAgIDxyZWN0IHg9IjUuNzUiIHk9IjUuNzUiIHdpZHRoPSIxMTYuNSIgaGVpZ2h0PSIxMTYuNSIgcng9IjUuNSIgc3Ryb2tlPSIjRjFGQ0ZGIiBzdHJva2Utd2lkdGg9IjAuNSIgb3BhY2l0eT0iMC42NiIvPgogIDwvZz4KICA8cGF0aCBkPSJNMzMuNDUwOSA5M1Y0Ny41NkgxNS41MzA5VjM3SDY0LjMzMDlWNDcuNTZINDYuNDEwOVY5M0gzMy40NTA5Wk04Ni43MjUzIDkzLjk2QzgyLjgzMiA5My45NiA3OC45NjUzIDkzLjQ1MzMgNzUuMTI1MyA5Mi40NEM3MS4yODUzIDkxLjM3MzMgNjguMDMyIDg5Ljg4IDY1LjM2NTMgODcuOTZMNzAuNDA1MyA3OC4wNEM3Mi41Mzg2IDc5LjU4NjcgNzUuMDE4NiA4MC44MTMzIDc3Ljg0NTMgODEuNzJDODAuNjcyIDgyLjYyNjcgODMuNTI1MyA4My4wOCA4Ni40MDUzIDgzLjA4Qzg5LjY1ODYgODMuMDggOTIuMjE4NiA4Mi40NCA5NC4wODUzIDgxLjE2Qzk1Ljk1MiA3OS44OCA5Ni44ODUzIDc4LjEyIDk2Ljg4NTMgNzUuODhDOTYuODg1MyA3My43NDY3IDk2LjA1ODYgNzIuMDY2NyA5NC40MDUzIDcwLjg0QzkyLjc1MiA2OS42MTMzIDkwLjA4NTMgNjkgODYuNDA1MyA2OUg4MC40ODUzVjYwLjQ0TDk2LjA4NTMgNDIuNzZMOTcuNTI1MyA0Ny40SDY4LjE2NTNWMzdIMTA3LjM2NVY0NS40TDkxLjg0NTMgNjMuMDhMODUuMjg1MyA1OS4zMkg4OS4wNDUzQzk1LjkyNTMgNTkuMzIgMTAxLjEyNSA2MC44NjY3IDEwNC42NDUgNjMuOTZDMTA4LjE2NSA2Ny4wNTMzIDEwOS45MjUgNzEuMDI2NyAxMDkuOTI1IDc1Ljg4QzEwOS45MjUgNzkuMDI2NyAxMDkuMDk5IDgxLjk4NjcgMTA3LjQ0NSA4NC43NkMxMDUuNzkyIDg3LjQ4IDEwMy4yNTkgODkuNjkzMyA5OS44NDUzIDkxLjRDOTYuNDMyIDkzLjEwNjcgOTIuMDU4NiA5My45NiA4Ni43MjUzIDkzLjk2WiIgZmlsbD0iI2ZmZmZmZiIvPgo8L3N2Zz4K") center / cover no-repeat; } -.tc-mark--lg { width: 40px; height: 40px; border-radius: 10px; } -.tc-mark--xl { width: 56px; height: 56px; border-radius: 14px; } +.tc-mark--lg { width: 2.5rem; height: 2.5rem; border-radius: 0.625rem; } +.tc-mark--xl { width: 3.5rem; height: 3.5rem; border-radius: 0.875rem; } /* Upstream sidebar brand: the T3 glyphs at cap height, "Code" muted. */ -.tc-wordmark { display: inline-flex; align-items: baseline; gap: 4px; font-size: 14px; font-weight: 500; letter-spacing: -0.01em; color: var(--fg); white-space: nowrap; } -.tc-wordmark::before { content: ""; width: 13.5px; height: 8.2px; background: currentColor; +.tc-wordmark { display: inline-flex; align-items: baseline; gap: 0.25rem; font-size: 0.875rem; font-weight: 500; letter-spacing: -0.01em; color: var(--fg); white-space: nowrap; } +.tc-wordmark::before { content: ""; width: 0.84375rem; height: 0.5125rem; background: currentColor; -webkit-mask: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjE1LjUzMDkgMzcgOTQuMzk0MSA1Ni45NiI+PHBhdGggZD0iTTMzLjQ1MDkgOTNWNDcuNTZIMTUuNTMwOVYzN0g2NC4zMzA5VjQ3LjU2SDQ2LjQxMDlWOTNIMzMuNDUwOVpNODYuNzI1MyA5My45NkM4Mi44MzIgOTMuOTYgNzguOTY1MyA5My40NTMzIDc1LjEyNTMgOTIuNDRDNzEuMjg1MyA5MS4zNzMzIDY4LjAzMiA4OS44OCA2NS4zNjUzIDg3Ljk2TDcwLjQwNTMgNzguMDRDNzIuNTM4NiA3OS41ODY3IDc1LjAxODYgODAuODEzMyA3Ny44NDUzIDgxLjcyQzgwLjY3MiA4Mi42MjY3IDgzLjUyNTMgODMuMDggODYuNDA1MyA4My4wOEM4OS42NTg2IDgzLjA4IDkyLjIxODYgODIuNDQgOTQuMDg1MyA4MS4xNkM5NS45NTIgNzkuODggOTYuODg1MyA3OC4xMiA5Ni44ODUzIDc1Ljg4Qzk2Ljg4NTMgNzMuNzQ2NyA5Ni4wNTg2IDcyLjA2NjcgOTQuNDA1MyA3MC44NEM5Mi43NTIgNjkuNjEzMyA5MC4wODUzIDY5IDg2LjQwNTMgNjlIODAuNDg1M1Y2MC40NEw5Ni4wODUzIDQyLjc2TDk3LjUyNTMgNDcuNEg2OC4xNjUzVjM3SDEwNy4zNjVWNDUuNEw5MS44NDUzIDYzLjA4TDg1LjI4NTMgNTkuMzJIODkuMDQ1M0M5NS45MjUzIDU5LjMyIDEwMS4xMjUgNjAuODY2NyAxMDQuNjQ1IDYzLjk2QzEwOC4xNjUgNjcuMDUzMyAxMDkuOTI1IDcxLjAyNjcgMTA5LjkyNSA3NS44OEMxMDkuOTI1IDc5LjAyNjcgMTA5LjA5OSA4MS45ODY3IDEwNy40NDUgODQuNzZDMTA1Ljc5MiA4Ny40OCAxMDMuMjU5IDg5LjY5MzMgOTkuODQ1MyA5MS40Qzk2LjQzMiA5My4xMDY3IDkyLjA1ODYgOTMuOTYgODYuNzI1MyA5My45NloiIGZpbGw9IiMwMDAiLz48L3N2Zz4=") center / contain no-repeat; mask: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjE1LjUzMDkgMzcgOTQuMzk0MSA1Ni45NiI+PHBhdGggZD0iTTMzLjQ1MDkgOTNWNDcuNTZIMTUuNTMwOVYzN0g2NC4zMzA5VjQ3LjU2SDQ2LjQxMDlWOTNIMzMuNDUwOVpNODYuNzI1MyA5My45NkM4Mi44MzIgOTMuOTYgNzguOTY1MyA5My40NTMzIDc1LjEyNTMgOTIuNDRDNzEuMjg1MyA5MS4zNzMzIDY4LjAzMiA4OS44OCA2NS4zNjUzIDg3Ljk2TDcwLjQwNTMgNzguMDRDNzIuNTM4NiA3OS41ODY3IDc1LjAxODYgODAuODEzMyA3Ny44NDUzIDgxLjcyQzgwLjY3MiA4Mi42MjY3IDgzLjUyNTMgODMuMDggODYuNDA1MyA4My4wOEM4OS42NTg2IDgzLjA4IDkyLjIxODYgODIuNDQgOTQuMDg1MyA4MS4xNkM5NS45NTIgNzkuODggOTYuODg1MyA3OC4xMiA5Ni44ODUzIDc1Ljg4Qzk2Ljg4NTMgNzMuNzQ2NyA5Ni4wNTg2IDcyLjA2NjcgOTQuNDA1MyA3MC44NEM5Mi43NTIgNjkuNjEzMyA5MC4wODUzIDY5IDg2LjQwNTMgNjlIODAuNDg1M1Y2MC40NEw5Ni4wODUzIDQyLjc2TDk3LjUyNTMgNDcuNEg2OC4xNjUzVjM3SDEwNy4zNjVWNDUuNEw5MS44NDUzIDYzLjA4TDg1LjI4NTMgNTkuMzJIODkuMDQ1M0M5NS45MjUzIDU5LjMyIDEwMS4xMjUgNjAuODY2NyAxMDQuNjQ1IDYzLjk2QzEwOC4xNjUgNjcuMDUzMyAxMDkuOTI1IDcxLjAyNjcgMTA5LjkyNSA3NS44OEMxMDkuOTI1IDc5LjAyNjcgMTA5LjA5OSA4MS45ODY3IDEwNy40NDUgODQuNzZDMTA1Ljc5MiA4Ny40OCAxMDMuMjU5IDg5LjY5MzMgOTkuODQ1MyA5MS40Qzk2LjQzMiA5My4xMDY3IDkyLjA1ODYgOTMuOTYgODYuNzI1MyA5My45NloiIGZpbGw9IiMwMDAiLz48L3N2Zz4=") center / contain no-repeat; align-self: center; } .tc-wordmark > span { color: var(--fg-muted); } /* Brand masthead: upstream AuthSurfaceShell (stage gradient, radial light, bottom shade) with the mark's blueprint grid drawn in stage-line. */ -.tc-masthead { position: relative; height: 96px; overflow: hidden; color: var(--on-stage); +.tc-masthead { position: relative; height: 6rem; overflow: hidden; color: var(--on-stage); background: radial-gradient(circle at 75% 25%, rgb(136 204 255 / 0.5), transparent 38%), linear-gradient(135deg, var(--stage-mid), var(--stage-bottom)); } @@ -61,10 +60,10 @@ -webkit-mask-image: linear-gradient(105deg, transparent 30%, #000 85%); mask-image: linear-gradient(105deg, transparent 30%, #000 85%); } .tc-masthead::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to bottom, transparent 20%, rgb(7 18 55 / 0.46) 100%); } .tc-masthead > * { position: relative; z-index: 1; } -.tc-masthead .tc-eyebrow { color: color-mix(in srgb, var(--on-stage) 80%, transparent); letter-spacing: 0.1em; font-size: 10px; } +.tc-masthead .tc-eyebrow { color: color-mix(in srgb, var(--on-stage) 80%, transparent); letter-spacing: 0.1em; font-size: 0.625rem; } /* Standalone page: upstream StandalonePage (radial glow at top, angled shade). */ -.tc-standalone { position: relative; overflow: hidden; background: var(--bg); display: flex; align-items: center; justify-content: center; padding: 40px 24px; } +.tc-standalone { position: relative; overflow: hidden; background: var(--bg); display: flex; align-items: center; justify-content: center; padding: 2.5rem 1.5rem; } .tc-standalone::before { content: ""; position: absolute; inset: 0; opacity: 0.8; pointer-events: none; background: radial-gradient(48rem 20rem at top, color-mix(in srgb, var(--info) 12%, transparent), transparent), @@ -74,16 +73,16 @@ radial-gradient(44rem 16rem at top, color-mix(in srgb, var(--ok) 14%, transparent), transparent), radial-gradient(28rem 18rem at left, color-mix(in srgb, oklch(0.685 0.169 237.323) 10%, transparent), transparent), linear-gradient(145deg, color-mix(in srgb, var(--bg) 90%, #000) 0%, var(--bg) 55%); } -.tc-standalone-card { position: relative; width: 100%; max-width: 576px; border-radius: var(--radius-2xl); border: 1px solid color-mix(in srgb, var(--border) 80%, transparent); +.tc-standalone-card { position: relative; width: 100%; max-width: 36rem; border-radius: var(--radius-2xl); border: 1px solid color-mix(in srgb, var(--border) 80%, transparent); background: color-mix(in srgb, var(--surface) 94%, transparent); box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.2); backdrop-filter: blur(12px); overflow: hidden; } -.tc-standalone-body { padding: 32px; display: flex; flex-direction: column; gap: 0; } -.tc-standalone-title { margin: 12px 0 0; font-size: 24px; line-height: 32px; font-weight: 600; letter-spacing: -0.025em; text-wrap: balance; } -.tc-standalone-desc { margin: 8px 0 0; font-size: 14px; line-height: 1.625; color: var(--fg-muted); } -.tc-note { border-radius: var(--radius-lg); border: 1px solid color-mix(in srgb, var(--border) 70%, transparent); background: color-mix(in srgb, var(--bg) 55%, transparent); padding: 12px; font-size: 12px; line-height: 1.625; color: var(--fg-muted); } +.tc-standalone-body { padding: 2rem; display: flex; flex-direction: column; gap: 0; } +.tc-standalone-title { margin: 0.75rem 0 0; font-size: 1.5rem; line-height: 2rem; font-weight: 600; letter-spacing: -0.025em; text-wrap: balance; } +.tc-standalone-desc { margin: 0.5rem 0 0; font-size: 0.875rem; line-height: 1.625; color: var(--fg-muted); } +.tc-note { border-radius: var(--radius-lg); border: 1px solid color-mix(in srgb, var(--border) 70%, transparent); background: color-mix(in srgb, var(--bg) 55%, transparent); padding: 0.75rem; font-size: 0.75rem; line-height: 1.625; color: var(--fg-muted); } /* Brand glow on a group (Readiness, pairing): upstream "brand" tone, contained. */ .tc-group--brand { position: relative; overflow: hidden; } -.tc-group--brand::before { content: ""; position: absolute; inset: 0 0 auto; height: 176px; pointer-events: none; +.tc-group--brand::before { content: ""; position: absolute; inset: 0 0 auto; height: 11rem; pointer-events: none; background: radial-gradient(40rem 11rem at top, color-mix(in srgb, var(--info) 12%, transparent), transparent); } .tc-group--brand > * { position: relative; } @@ -92,21 +91,21 @@ press scale .97, 2px ring offset 1px, disabled 64%. */ .tc-btn { --_h: var(--control-md); --_icon: var(--fg-muted); - position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 8px; flex: none; - height: var(--_h); padding: 0 11px; border-radius: var(--radius-md); border: 1px solid transparent; - font: inherit; font-size: 14px; font-weight: 500; line-height: 1; white-space: nowrap; + position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem; flex: none; + height: var(--_h); padding: 0 0.6875rem; border-radius: var(--radius-md); border: 1px solid transparent; + font: inherit; font-size: 0.875rem; font-weight: 500; line-height: 1; white-space: nowrap; color: var(--fg); background: transparent; cursor: pointer; user-select: none; text-decoration: none !important; transition: background-color var(--dur-fast), border-color var(--dur-fast), box-shadow var(--dur-fast), scale var(--dur-fast); } -.tc-btn .tc-icon { width: 16px; height: 16px; margin: 0 -2px; color: var(--_icon); } +.tc-btn .tc-icon { width: 1rem; height: 1rem; margin: 0 -2px; color: var(--_icon); } .tc-btn:active:not([aria-haspopup]) { scale: 0.97; } .tc-btn:disabled, .tc-btn[aria-disabled="true"] { opacity: var(--opacity-disabled); pointer-events: none; } -:where(.tc-root) .tc-btn:focus-visible { outline: none; box-shadow: 0 0 0 1px var(--bg), 0 0 0 3px var(--focus); } +:where(.tc-root) .tc-btn:focus-visible { outline: none; box-shadow: inset 0 0 0 1px var(--bg), inset 0 0 0 3px var(--focus); } /* default = upstream "outline" */ .tc-btn, .tc-btn--outline, .tc-btn--secondary { border-color: var(--border-strong); background: var(--surface); box-shadow: var(--shadow-xs); } .tc-btn:hover, .tc-btn--outline:hover, .tc-btn--secondary:hover { background: color-mix(in srgb, var(--hover) 50%, var(--surface)); } -[data-theme="dark"] .tc-btn:not(.tc-btn--primary):not(.tc-btn--ghost):not(.tc-btn--danger-solid):not(.tc-btn--link):not(.tc-btn--warning) { background: oklch(1 0 0 / 0.0256); } -[data-theme="dark"] .tc-btn:not(.tc-btn--primary):not(.tc-btn--ghost):not(.tc-btn--danger-solid):not(.tc-btn--link):not(.tc-btn--warning):hover { background: oklch(1 0 0 / 0.05); } +[data-theme="dark"] .tc-btn:not(.tc-btn--primary):not(.tc-btn--ghost):not(.tc-btn--danger-solid):not(.tc-btn--link):not(.tc-btn--warning) { background: color-mix(in srgb, var(--border-strong) 32%, transparent); } +[data-theme="dark"] .tc-btn:not(.tc-btn--primary):not(.tc-btn--ghost):not(.tc-btn--danger-solid):not(.tc-btn--link):not(.tc-btn--warning):hover { background: color-mix(in srgb, var(--border-strong) 64%, transparent); } .tc-btn--primary { border-color: var(--accent); background: var(--accent); color: var(--on-accent); box-shadow: var(--shadow-primary); --_icon: currentColor; } .tc-btn--primary:hover { background: var(--accent-hover); } .tc-btn--primary:active { box-shadow: inset 0 1px 0 rgb(0 0 0 / 0.08); } @@ -121,13 +120,13 @@ .tc-btn--warning { border-color: color-mix(in srgb, var(--warn) 32%, transparent); background: var(--warn-soft); color: var(--warn-text); box-shadow: none; --_icon: currentColor; } .tc-btn--link { border-color: transparent; background: none; box-shadow: none; padding: 0; height: auto; color: var(--fg); } .tc-btn--link:hover { text-decoration: underline !important; text-underline-offset: 4px; background: none; } -.tc-btn--xs { --_h: var(--control-xs); padding: 0 7px; gap: 4px; font-size: 12px; } -.tc-btn--xs .tc-icon { width: 14px; height: 14px; } -.tc-btn--sm { --_h: var(--control-sm); padding: 0 9px; gap: 6px; } -.tc-btn--lg { --_h: var(--control-lg); padding: 0 13px; } +.tc-btn--xs { --_h: var(--control-xs); padding: 0 0.4375rem; gap: 0.25rem; font-size: 0.75rem; } +.tc-btn--xs .tc-icon { width: 0.875rem; height: 0.875rem; } +.tc-btn--sm { --_h: var(--control-sm); padding: 0 0.5625rem; gap: 0.375rem; } +.tc-btn--lg { --_h: var(--control-lg); padding: 0 0.8125rem; } .tc-btn--icon { padding: 0; width: var(--_h); } .tc-btn--block { width: 100%; } -.tc-btn .tc-kbd { margin-right: -4px; } +.tc-btn .tc-kbd { margin-right: -0.25rem; } .tc-btn--primary .tc-kbd { background: rgb(255 255 255 / 0.16); color: var(--on-accent); } .tc-btn[data-busy] { pointer-events: none; } .tc-btn[data-busy] > .tc-icon:first-child { animation: tc-spin 0.9s linear infinite; } @@ -135,38 +134,44 @@ .tc-btngroup > .tc-btn:not(:last-child) { border-top-right-radius: 0; border-bottom-right-radius: 0; } .tc-btngroup > .tc-btn:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: -1px; } +/* Native buttons keep a 44px hit area on coarse pointers without enlarging + every visible control. This also holds at the minimum native font size. */ +@media (pointer: coarse) { + .tc-btn::after { content: ""; position: absolute; top: 50%; left: 50%; translate: -50% -50%; width: 100%; height: 100%; min-width: 44px; min-height: 44px; } +} + /* --------------------------------------------------------------- kbd -- */ /* Upstream Kbd: muted fill, no border, sans, 20px. */ -.tc-kbd { display: inline-flex; align-items: center; justify-content: center; gap: 4px; min-width: 20px; height: 20px; padding: 0 4px; - border-radius: var(--radius-xs); background: var(--surface-sunken); color: var(--fg-muted); font: 500 12px/1 var(--font-sans); } -[data-theme="dark"] .tc-kbd { background: oklch(1 0 0 / 0.06); } -.tc-kbdgroup { display: inline-flex; align-items: center; gap: 4px; } +.tc-kbd { display: inline-flex; align-items: center; justify-content: center; gap: 0.25rem; min-width: 1.25rem; height: 1.25rem; padding: 0 0.25rem; + border-radius: var(--radius-xs); background: var(--surface-sunken); color: var(--fg-muted); font: 500 0.75rem/1 var(--font-sans); } +[data-theme="dark"] .tc-kbd { background: color-mix(in srgb, var(--fg) 6%, transparent); } +.tc-kbdgroup { display: inline-flex; align-items: center; gap: 0.25rem; } /* ------------------------------------------------------------- forms -- */ -.tc-field { display: flex; flex-direction: column; gap: 8px; min-width: 0; } -.tc-label { font-size: 14px; font-weight: 500; color: var(--fg); } -.tc-label-opt { font-weight: 400; color: var(--fg-muted); margin-left: 4px; } -.tc-hint { font-size: 12px; line-height: 18px; color: var(--fg-muted); margin: 0; } +.tc-field { display: flex; flex-direction: column; gap: 0.5rem; min-width: 0; } +.tc-label { font-size: 0.875rem; font-weight: 500; color: var(--fg); } +.tc-label-opt { font-weight: 400; color: var(--fg-muted); margin-left: 0.25rem; } +.tc-hint { font-size: 0.75rem; line-height: 1.125rem; color: var(--fg-muted); margin: 0; } .tc-hint--err { color: var(--danger-text); } /* Upstream Input: 10px radius wrapper, border-input, bg-background, shadow-xs/5, 30px tall. */ .tc-input, .tc-select { - height: var(--input); width: 100%; min-width: 0; padding: 0 11px; + height: var(--input); width: 100%; min-width: 0; padding: 0 0.6875rem; border: 1px solid var(--border-strong); border-radius: var(--radius-lg); background: var(--bg); color: var(--fg); box-shadow: var(--shadow-xs); - font: inherit; font-size: 14px; transition: border-color var(--dur-fast), box-shadow var(--dur-fast); + font: inherit; font-size: 0.875rem; transition: border-color var(--dur-fast), box-shadow var(--dur-fast); } -[data-theme="dark"] .tc-input, [data-theme="dark"] .tc-select { background-color: oklch(1 0 0 / 0.0256); } -.tc-input::placeholder { color: var(--fg-muted); opacity: 0.8; } -.tc-input:focus, .tc-select:focus { outline: none; border-color: var(--focus); box-shadow: 0 0 0 3px color-mix(in srgb, var(--focus) 24%, transparent); } +[data-theme="dark"] .tc-input, [data-theme="dark"] .tc-select { background-color: color-mix(in srgb, var(--border-strong) 32%, transparent); } +.tc-input::placeholder { color: var(--fg-subtle); opacity: 1; } +.tc-input:focus, .tc-select:focus { outline: none; border-color: var(--focus); box-shadow: inset 0 0 0 3px color-mix(in srgb, var(--focus) 24%, transparent); } .tc-input[aria-invalid="true"] { border-color: color-mix(in srgb, var(--danger) 36%, transparent); } -.tc-input[aria-invalid="true"]:focus { box-shadow: 0 0 0 3px color-mix(in srgb, var(--danger) 16%, transparent); } -.tc-input--mono { font-family: var(--font-mono); font-size: 13px; } -.tc-input--lg { height: 34px; } +.tc-input[aria-invalid="true"]:focus { box-shadow: inset 0 0 0 3px color-mix(in srgb, var(--danger) 16%, transparent); } +.tc-input--mono { font-family: var(--font-mono); font-size: 0.8125rem; } +.tc-input--lg { height: 2.125rem; } .tc-inputwrap { position: relative; display: flex; align-items: center; min-width: 0; } -.tc-inputwrap > .tc-icon { position: absolute; left: 10px; color: var(--fg-muted); pointer-events: none; } -.tc-inputwrap > .tc-icon ~ .tc-input { padding-left: 32px; } -.tc-inputwrap > .tc-btn { position: absolute; right: 3px; } -.tc-select { appearance: none; padding-right: 30px; +.tc-inputwrap > .tc-icon { position: absolute; left: 0.625rem; color: var(--fg-muted); pointer-events: none; } +.tc-inputwrap > .tc-icon ~ .tc-input { padding-left: 2rem; } +.tc-inputwrap > .tc-btn { position: absolute; right: 0.1875rem; } +.tc-select { appearance: none; padding-right: 1.875rem; background-image: linear-gradient(45deg, transparent 50%, var(--fg-muted) 50%), linear-gradient(135deg, var(--fg-muted) 50%, transparent 50%); background-position: calc(100% - 15px) 50%, calc(100% - 11px) 50%; background-size: 4px 4px; background-repeat: no-repeat; } /* Native ${row.extractPending?'Reviewing extraction…':'Extract into '+F.basename(row.path).replace(/\.zip$/i,'')+'/'}`:''}${row.path&&row.phase==='done'?html``:''}
${row.phase==='conflict'?html``:row.phase==='uncertain'?control(row,'show','folder-open','Check destination'):row.file&&row.phase==='finishing'?html``:row.file&&activeStates.has(row.phase)?html`${control(row,'pause','pause','Pause '+row.label)}${control(row,'cancel','x','Cancel '+row.label)}`:row.file&&['paused','failed'].includes(row.phase)?html`${control(row,'retry','play','Resume '+row.label)}${control(row,'cancel','x','Cancel '+row.label)}`:!row.file&&['running','queued'].includes(row.phase)&&row.cancellable!==false?control(row,'cancel','x','Cancel '+row.label):control(row,'dismiss','x','Dismiss '+row.label)}
`;})}
${ordered.length>100?html`
${transferPage*100+1}–${Math.min((transferPage+1)*100,ordered.length)} of ${ordered.length}
`:''}${PHONE.matches?html`
${icon('info')}
Keep Files open until they finishPhones may pause uploads in the background. Received bytes are kept, and uploads resume when you return.
`:html`
${icon('info')}Keep this tab open until uploads finish. Server jobs carry on without it.
`}`:''}`; + return html`
Transfers${live.length?M.plural(live.length,'running'):attention.length?attention.length+' '+(attention.length===1?'needs':'need')+' your attention':'Transfers complete'}${attention.length&&live.length?' · '+attention.length+' need you':''}
${expanded?html`
${ordered.slice(transferPage*100,(transferPage+1)*100).map(row=>{const percent=progress(row),speed=rate(row),left=speed>0?(row.total-(row.sent||row.received||0))/speed:null;return html`
${icon(row.phase==='done'?'circle-check':['failed','conflict','paused','uncertain'].includes(row.phase)?'triangle-alert':row.file?'upload':({zip:'download',compress:'archive',extract:'file-archive',clean:'eraser',delete:'trash-2',move:'folder-input'})[row.kind]||'copy')}
${row.label}${!['done','cancelled','conflict','failed','uncertain'].includes(row.phase)?html`
`:''}${row.error||label(row)}${row.phase==='done'&&(row.file||row.kind==='upload')&&row.path&&F.basename(row.path)!==F.basename(row.relative||row.label)?html`Saved as ${F.basename(row.path)}`:''}${row.space?html`${M.formatBytes(row.space.requiredBytes||row.total)} needed · ${M.formatBytes(row.space.availableBytes)} available`:''}${row.file&&['uploading','retrying','paused'].includes(row.phase)?html`${M.formatBytes(row.received||0)} of ${M.formatBytes(row.total)}${speed?' · '+M.formatBytes(speed)+'/s':''}${left!==null&&left>0?' · '+Math.ceil(left)+' s left':''}${row.retryAt?' · retry in '+Math.max(0,Math.ceil((row.retryAt-Date.now())/1000))+' s':''}`:!row.file&&Number.isFinite(row.done)&&row.phase==='running'?html`${row.done.toLocaleString()}${Number.isFinite(row.total)?' of '+row.total.toLocaleString():''} ${row.unit||'files'}`:''}${row.kind==='clean'&&Number.isFinite(row.freedBytes)?html`${M.formatBytes(row.freedBytes)} freed`:''}${row.phase==='done'&&!row.skipped&&/\.zip$/i.test(row.path||'')&&(row.file||row.kind==='upload')?html``:''}${row.path&&row.phase==='done'?html``:''}
${row.phase==='conflict'?html``:row.phase==='uncertain'?control(row,'show','folder-open','Check destination'):row.file&&row.phase==='finishing'?html``:row.file&&activeStates.has(row.phase)?html`${control(row,'pause','pause','Pause '+row.label)}${control(row,'cancel','x','Cancel '+row.label)}`:row.file&&['paused','failed'].includes(row.phase)?html`${control(row,'retry','play','Resume '+row.label)}${control(row,'cancel','x','Cancel '+row.label)}`:!row.file&&['running','queued'].includes(row.phase)&&row.cancellable!==false?control(row,'cancel','x','Cancel '+row.label):control(row,'dismiss','x','Dismiss '+row.label)}
`;})}
${ordered.length>100?html`
${transferPage*100+1}–${Math.min((transferPage+1)*100,ordered.length)} of ${ordered.length}
`:''}${PHONE.matches?html`
${icon('info')}
Keep Files open until they finishPhones may pause uploads in the background. Received bytes are kept, and uploads resume when you return.
`:html`
${icon('info')}Keep this tab open until uploads finish. Server jobs carry on without it.
`}`:''}`; }; const paint=()=>{ if(frame)return;frame=requestAnimationFrame(()=>{frame=null;const mount=document.getElementById('files-transfers');if(mount)Kit.patch(mount,content());sheet?.render();}); }; const content=()=>!visible||!rows.size?'':PHONE.matches?html``:html`
${body()}
`; - const openSheet=()=>{if(sheet)return;sheet=Kit.open({kind:'bottom',panel:{class:'tc-sheet tc-sheet--bottom tc-files-transfer-sheet',role:'dialog','aria-label':'Transfers'},render:()=>body(),onClose:()=>{sheet=null;}});}; + const openSheet=()=>{if(sheet)return;sheet=Kit.open({kind:'bottom',panel:{class:'tc-sheet tc-sheet--bottom tc-files-transfer-sheet',role:'dialog','aria-label':'Transfers'},render:()=>body(true),onClose:()=>{sheet=null;}});}; const changed=()=>{paint();clearTimeout(timer);if(rows.size&&visible)timer=setTimeout(tick,1000);}; const tick=()=>{const finished=workRows().filter(row=>row.finishedAt).sort((a,b)=>b.finishedAt-a.finishedAt);for(const [index,row]of finished.entries())if(index>=100||Date.now()-row.finishedAt>10*60_000){dismissed.add(row.serverId||row.id);rows.delete(row.id);}while(dismissed.size>512)dismissed.delete(dismissed.values().next().value);for(const [path,at]of uploaded)if(Date.now()-at>60_000)uploaded.delete(path);changed();}; const pump=()=>{if(!visible)return;for(const row of rows.values()){if(active>=3)break;if(!row.file||row.phase!=='queued')continue;active++;row.phase='starting';void upload(row).finally(()=>{active--;changed();pump();});}changed();}; diff --git a/docker/setup/console.css b/docker/setup/console.css index 5c3b595..27a6282 100644 --- a/docker/setup/console.css +++ b/docker/setup/console.css @@ -2916,8 +2916,15 @@ button.tc-fd-item:hover { background: var(--hover); } .tc-files-trash-name > span { display: flex; flex-direction: column; min-width: 0; } .tc-files-trash-name strong { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tc-files-trash-name small { font-size: 0.6875rem; color: var(--fg-muted); } -#files-transfers .tc-tray { position: fixed; right: 1.5rem; bottom: 1.25rem; z-index: var(--z-sticky); max-width: calc(100vw - 32px); } -.tc-files-transfer-list { max-height: min(32.5rem,65dvh); overflow-y: auto; } +#files-transfers .tc-tray { --_tray-top: var(--topbar); --_tray-bottom: 1.25rem; + position: fixed; right: 1.5rem; bottom: var(--_tray-bottom); z-index: var(--z-sticky); max-width: calc(100vw - 32px); + max-height: calc(100dvh - var(--_tray-top) - var(--_tray-bottom) - 1.25rem); } +/* Keep the summary, collapse control and footer reachable while history scrolls. */ +:is(#files-transfers .tc-tray,.tc-files-transfer-sheet) > :is(.tc-tray-head,.tc-tray-foot) { flex: none; } +.tc-files-transfer-list { min-height: 0; max-height: min(32.5rem,65dvh); overflow-y: auto; } +@media (min-width: 640px) and (max-width: 1023.98px) { + #files-transfers .tc-tray { --_tray-top: var(--phonebar-h); --_tray-bottom: calc(var(--tabbar-h) + 1rem + env(safe-area-inset-bottom,0px)); } +} .tc-files-transfer-list .tc-tray-item small { white-space: normal; overflow-wrap: anywhere; } .tc-files-transfer-list .tc-tray-item b { max-width: 100%; } .tc-files-transfer-list .tc-btn--link[data-transfer-action="show"] { align-self: flex-start; min-width: 0; max-width: 100%; } diff --git a/docs/media/native-appearance/files-transfers-dark.png b/docs/media/native-appearance/files-transfers-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..3026804f474032f7b79c871aee7adf82f4669cf3 GIT binary patch literal 121203 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

HKTF7YzV50&fe>nCQPNI$#0em&VwzSCAbJL%PH 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 literal 0 HcmV?d00001 diff --git a/scripts/files-space-ui-audit.js b/scripts/files-space-ui-audit.js index bb1179b..e727bce 100644 --- a/scripts/files-space-ui-audit.js +++ b/scripts/files-space-ui-audit.js @@ -19,8 +19,9 @@ const variants=[['desktop',1440,900],['compact',1280,800],['tablet',834,1112],[' if(req.method()==='POST')writes.set(operation,(writes.get(operation)||0)+1);if(gate){gate.entered?.();await gate.promise;} const result=await activeFixture.respond(req.method(),url,input);if(url.pathname.endsWith('/zip/start')&&result.body?.ok)preparedDownloadToken=result.body.token;if(nearFull&&url.pathname.endsWith('/places'))Object.assign(result.body.disk,{usedPercent:94,availableBytes:60e9});if(lowSpace&&url.pathname.endsWith('/extract/preview'))Object.assign(result.body,{canExtract:false,canExtractHere:false,topLevelCount:501,freeBytes:512e6});if(result.raw)return route.fulfill({body:result.raw,headers:result.headers}); if(result.body.etag&&result.body.etag===req.headers()['if-none-match'])return route.fulfill({status:304,headers:{etag:result.body.etag}});return route.fulfill({status:result.status||200,json:result.body});}); - const target=variant.startsWith('embedded')?await framed(page,base+'?embed=t3&theme='+theme):page;if(target===page)await page.goto(base);await unlock(target,key); - const shot=async name=>page.screenshot({path:path.join(out,variant+'-'+theme+'-'+name+'.png')}); + const target=variant.startsWith('embedded')?await framed(page,base+'?embed=t3&theme='+theme):page;if(target===page)await page.goto(base);await unlock(target,key);await target.evaluate(()=>document.fonts.ready); + const settle=()=>target.evaluate(()=>new Promise(resolve=>requestAnimationFrame(()=>requestAnimationFrame(resolve)))); + const shot=async name=>{await settle();await page.screenshot({path:path.join(out,variant+'-'+theme+'-'+name+'.png')});}; const fits=async()=>{const problems=await target.evaluate(()=>{const bad=[];for(const el of document.querySelectorAll('.tc-layer:not([hidden]) .tc-fdlg,.tc-layer:not([hidden]) .tc-files-conflicts')){const r=el.getBoundingClientRect();if(r.left<-.5||r.top<-.5||r.right>innerWidth+.5||r.bottom>innerHeight+.5)bad.push(el.className);}for(const el of document.querySelectorAll('.tc-files-clean-projects,.tc-files-delete .tc-risks,.tc-files-zip .tc-opts'))if(el.scrollHeight>el.clientHeight+2)bad.push('vertically clipped '+el.className);if(document.documentElement.scrollWidth>innerWidth+1)bad.push('page overflow');for(const el of document.querySelectorAll('.tc-files-clean-project-head,.tc-files-clean-item,.tc-files-delete .tc-risk,.tc-files-zip .tc-opt'))if(el.scrollWidth>el.clientWidth+2)bad.push('content overflow '+el.className);return bad;});assert.deepEqual(problems,[],variant+' '+theme+' geometry');checks++;}; const visit=async hash=>{await target.evaluate(value=>{location.hash=value;},hash);await target.locator('#files-search').waitFor();await target.locator('#files-browser .tc-skel-row').first().waitFor({state:'detached'});}; const item=value=>target.locator('[data-files-row][data-path='+JSON.stringify(value)+']'); @@ -73,7 +74,57 @@ const variants=[['desktop',1440,900],['compact',1280,800],['tablet',834,1112],[' let finishDelete;hold={route:'/delete',promise:new Promise(resolve=>{finishDelete=resolve;})};await target.locator('[data-delete-start]').click();assert.equal(await target.locator('[data-delete-start]').isDisabled(),true);await fits();await shot('delete-pending');finishDelete();hold=null;await target.locator('.tc-files-delete').waitFor({state:'detached'});await item('/workspace/old-prototype').waitFor({state:'detached'});assert.equal(await target.locator('[data-files-row][tabindex="0"]').count(),1,'Deleting a focused row retains one keyboard entry point');checks++; // Long unbroken names must wrap in reviews, never crop the title or facts. const longName='long-project-'+ 'a'.repeat(190);await fixture.respond('POST',new URL('http://fixture/files/mkdir'),{parent:'/workspace',name:longName});await visit('files/home');await visit('files');await menu('/workspace/'+longName,'Delete permanently…');await target.locator('#files-delete-name').waitFor();await fits();assert.equal(await target.locator('.tc-files-delete .tc-fdlg-head').evaluate(el=>el.scrollWidth>el.clientWidth+1),false);await shot('delete-long-name');await target.locator('[data-delete-close]').click(); - await target.evaluate(()=>{location.hash='storage';});await target.locator('[data-cmd="storage.details"]').waitFor();await target.locator('[data-cmd="storage.details"]').click();const openFiles=target.locator('.tc-storage-data-row a[href^="#files"]').first();await openFiles.waitFor();await shot('storage-links');await fixture.respond('POST',new URL('http://fixture/files/to-trash'),{paths:['/workspace/acme-web/apps/web/README.md']});nearFull=true;await openFiles.click();await target.locator('#files-search').waitFor();await target.evaluate(()=>location.reload());await target.locator('.tc-files-disk-warning').waitFor();await fits();await shot('disk-full');await target.locator('.tc-files-disk-warning [data-cmd="files.empty-trash"]').click();await target.getByRole('button',{name:'Empty Trash',exact:true}).waitFor();assert.match(await target.getByRole('alertdialog').innerText(),/1 item/);await target.getByRole('button',{name:'Empty Trash',exact:true}).click();await target.getByText('Emptied Trash',{exact:true}).waitFor();assert.equal((await fixture.respond('GET',new URL('http://fixture/files/trash'))).body.items.length,0);checks++; + await target.evaluate(()=>{location.hash='storage';}); + await target.locator('[data-cmd="storage.details"]').waitFor(); + await target.locator('[data-cmd="storage.details"]').click(); + const openFiles=target.locator('.tc-storage-data-row a[href^="#files"]').first(); + await openFiles.waitFor();await shot('storage-links'); + await fixture.respond('POST',new URL('http://fixture/files/to-trash'),{paths:['/workspace/acme-web/apps/web/README.md']}); + nearFull=true;await openFiles.click();await target.locator('#files-search').waitFor(); + await target.evaluate(()=>location.reload());await target.locator('.tc-files-disk-warning').waitFor(); + await target.evaluate(()=>document.fonts.ready); + // History recovered after reload starts compact, so it cannot obscure the + // low-space recovery actions. Explicitly expanding it must stay usable too. + if(width>=640){ + const show=target.getByRole('button',{name:'Show transfers',exact:true});await show.waitFor(); + assert.equal(await target.locator('#files-transfers .tc-files-transfer-list').count(),0,'restored history starts collapsed'); + assert.equal(await show.getAttribute('aria-expanded'),'false'); + await fits();await shot('disk-full'); + await show.click();await target.locator('.tc-files-transfer-list').waitFor(); + await page.setViewportSize({width,height:480});await settle(); + const trayBounds=()=>target.locator('#files-transfers .tc-tray').evaluate(el=>{ + const r=el.getBoundingClientRect(),list=el.querySelector('.tc-files-transfer-list'),nav=document.querySelector('.tc-tabbar')?.getBoundingClientRect(); + const headerBottom=Math.max(0,...[...document.querySelectorAll('.tc-console-topbar,.tc-phonebar')].map(el=>el.getBoundingClientRect()).filter(r=>r.height>0).map(r=>r.bottom)); + return {belowHeader:r.top>=headerBottom+1,aboveNavigation:r.bottom<=(nav?.height?nav.top:innerHeight)-1, + chromeInside:[...el.querySelectorAll('.tc-tray-head,.tc-tray-foot,[data-transfer-action="fold"]')].every(el=>{const box=el.getBoundingClientRect();return box.top>=r.top&&box.bottom<=r.bottom&&box.left>=r.left&&box.right<=r.right;}), + historyScrolls:list.clientHeight>0&&list.scrollHeight>list.clientHeight}; + }); + const expectedTray={belowHeader:true,aboveNavigation:true,chromeInside:true,historyScrolls:true}; + assert.deepEqual(await trayBounds(),expectedTray,'expanded history keeps controls visible in short windows'); + await shot('restored-transfers-short'); + const fontSize=await target.evaluate(()=>document.documentElement.style.fontSize); + try{ + await target.evaluate(()=>{document.documentElement.style.fontSize='20px';});await settle(); + await shot('restored-transfers-short-large-text'); + assert.deepEqual(await trayBounds(),expectedTray,'expanded history fits at the maximum native interface size'); + }finally{await target.evaluate(value=>{document.documentElement.style.fontSize=value;},fontSize);await settle();} + const collapse=target.getByRole('button',{name:'Collapse transfers',exact:true});assert.equal(await collapse.getAttribute('aria-expanded'),'true'); + await collapse.click();await target.locator('.tc-files-transfer-list').waitFor({state:'detached'}); + await page.setViewportSize({width,height});await settle(); + }else{ + await target.locator('.tc-files-transfer-pill').waitFor();await fits();await shot('disk-full'); + await target.locator('.tc-files-transfer-pill').click(); + const transfers=target.getByRole('dialog',{name:'Transfers',exact:true});await transfers.waitFor(); + assert(await transfers.locator('.tc-tray-item').count()>0,'restored history is available on a phone'); + const collapse=transfers.getByRole('button',{name:'Collapse transfers',exact:true});assert.equal(await collapse.getAttribute('aria-expanded'),'true'); + await collapse.click();await transfers.waitFor({state:'detached'}); + } + const emptyTrash=target.locator('.tc-files-disk-warning [data-cmd="files.empty-trash"]'); + assert.equal(await emptyTrash.evaluate(el=>{const r=el.getBoundingClientRect();return el.contains(document.elementFromPoint(r.left+r.width/2,r.top+r.height/2));}),true,'the disk-warning recovery action is unobstructed'); + await emptyTrash.click();await target.getByRole('button',{name:'Empty Trash',exact:true}).waitFor(); + assert.match(await target.getByRole('alertdialog').innerText(),/1 item/); + await target.getByRole('button',{name:'Empty Trash',exact:true}).click();await target.getByText('Emptied Trash',{exact:true}).waitFor(); + assert.equal((await fixture.respond('GET',new URL('http://fixture/files/trash'))).body.items.length,0);checks++; if(variant==='desktop'){ activeFixture=createFilesFixtures({workspace:'/srv/projects',homeDirectory:'/srv/home',workspaceRepo:true});nearFull=false;await target.evaluate(()=>{location.hash='files';location.reload();});const workspaceRow=item('/srv/projects');await workspaceRow.waitFor();await workspaceRow.click({button:'right'});assert.equal(await target.getByRole('menuitem',{name:'Move to Trash',exact:true}).isDisabled(),true);assert.equal(await target.getByRole('menuitem',{name:'Delete permanently…',exact:true}).isDisabled(),true);await page.keyboard.press('Escape');await workspaceRow.dblclick();await item('/srv/projects/acme-web').waitFor();assert.match(await target.evaluate(()=>location.hash),/^#files\/path\/\/srv\/projects/);await fits(); await visit('files/home');await item('/srv/home/hello.txt').waitFor();await visit('files');await item('/srv/projects').waitFor();await target.locator('[data-cmd="files.new-folder"]').click();await target.locator('#files-rename-name').waitFor();await target.locator('#files-rename-name').fill('Workspace folder');await page.keyboard.press('Enter');await item('/srv/projects/Workspace folder').waitFor();await fits();checks++; From 2dae0d9394a76dffca8e07c48dccb889364bd42c Mon Sep 17 00:00:00 2001 From: Ziyang Zeng Date: Thu, 29 Oct 2026 13:48:30 +0000 Subject: [PATCH 7/7] fix: bundle current stable T3 Code 0.1.5 --- Dockerfile | 2 +- docker/setup/design/README.md | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 92f78d2..ed49ee8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -208,7 +208,7 @@ COPY --from=t3-build-node /usr/local/bin/node /usr/local/bin/node COPY docker/runtime/ /src/docker/runtime/ COPY scripts/build-t3-runtime.mjs /src/scripts/build-t3-runtime.mjs # The one bundled version pin; scripts/bump-versions.sh refreshes it. -ARG T3_VERSION=0.1.4 +ARG T3_VERSION=0.1.5 ARG TARGETARCH ENV npm_config_store_dir=/var/cache/pnpm RUN --mount=type=cache,target=/var/cache/pnpm set -eux; \ diff --git a/docker/setup/design/README.md b/docker/setup/design/README.md index 5cae0ec..f281528 100644 --- a/docker/setup/design/README.md +++ b/docker/setup/design/README.md @@ -1,9 +1,10 @@ # Setup design system Setup uses the existing vanilla JavaScript Kit and `tc-` components. Its shared -appearance follows native T3 Code Settings. The current reference is **T3 0.1.4**, +appearance follows native T3 Code Settings. The measured reference is **T3 0.1.4**, [commit 783581d](https://github.com/pingdotgg/t3code/tree/783581d461dc72cdd8f78fc8abb4ad536dfc4547/apps/web/src). -The shared UI at `0.1.5-nightly.20261029.3867` uses the same recipes. +Stable **0.1.5**, [commit 6d450a4](https://github.com/pingdotgg/t3code/tree/6d450a4284852af137b2f3407fddd89eb76e7644/apps/web/src), +and the checked `0.1.5-nightly.20261029.3867` use the same shared recipes. | File | Responsibility | | --- | --- |