:root {
  --lynn-editor-line-height: 1.55;
  --lynn-editor-control-height: 38px;
  --lynn-editor-width: 1040px;
  --lynn-editor-nav-width: 140px;
  --lynn-editor-label-width: 96px;
  --lynn-editor-preview-width: 224px;
  --lynn-editor-style-height: 52px;
  --lynn-editor-color-field-width: 130px;
  --lynn-editor-image-width: 160px;
  --lynn-editor-image-height: 90px;
  --lynn-font-weight-normal: 400;
  --lynn-font-weight-label: 500;
  --lynn-font-weight-heading: 600;
  --lynn-line-height-label: 1.35;
  --lynn-line-height-control: 1.5;
  --lynn-border-width: 1px;
  --lynn-focus-width: 2px;
  --lynn-radius-round: 50%;
  --lynn-radius-pill: 999px;
  --lynn-control-icon-size: 18px;
  --lynn-overlay-edge-gap: 8px;
  --lynn-overlay-blur: 3px;
  --lynn-z-dropdown: 1000;
  --lynn-z-floating: 1100;
  --lynn-z-dialog: 1200;
  --lynn-z-tooltip: 1300;
  --lynn-z-toast: 1400;
  --lynn-motion-ease-standard: cubic-bezier(.2,.8,.2,1);
  --lynn-motion-ease-enter: cubic-bezier(0,0,.2,1);
  --lynn-motion-ease-exit: cubic-bezier(.4,0,1,1);
  --lynn-motion-duration-spin: 800ms;
  --lynn-motion-duration-pulse: 1400ms;
  --lynn-space-1: 1px;
  --lynn-space-2: 2px;
  --lynn-space-3: 3px;
  --lynn-space-4: 4px;
  --lynn-space-6: 6px;
  --lynn-space-7: 7px;
  --lynn-space-8: 8px;
  --lynn-space-9: 9px;
  --lynn-space-10: 10px;
  --lynn-space-12: 12px;
  --lynn-space-14: 14px;
  --lynn-space-16: 16px;
  --lynn-space-18: 18px;
  --lynn-space-20: 20px;
  --lynn-space-24: 24px;
  --lynn-space-28: 28px;
  --lynn-space-32: 32px;
  --lynn-space-34: 34px;
  --lynn-space-36: 36px;
  --lynn-space-38: 38px;
  --lynn-space-40: 40px;
  --lynn-space-44: 44px;
  --lynn-space-48: 48px;
  --lynn-space-64: 64px;
  --lynn-space-160: 160px;
  --lynn-color-surface-page: #f7f3e9;
  --lynn-color-surface-card: #fefcf4;
  --lynn-color-surface-raised: #fefefd;
  --lynn-color-surface-menu: color-mix(in srgb, #fefcf4 90%, transparent);
  --lynn-color-surface-card-material: color-mix(in srgb, #fefcf4 94%, transparent);
  --lynn-color-surface-control: color-mix(in srgb, #fefefd 94%, transparent);
  --lynn-color-surface-popup: color-mix(in srgb, #fefcf4 96%, transparent);
  --lynn-surface-card-gradient: linear-gradient(135deg, color-mix(in srgb, #4f8862 4%, transparent), transparent 58%, color-mix(in srgb, #35658f 2%, transparent));
  --lynn-surface-control-gradient: linear-gradient(135deg, color-mix(in srgb, #4f8862 3%, transparent), transparent 58%, color-mix(in srgb, #35658f 2%, transparent));
  --lynn-surface-menu-gradient: linear-gradient(135deg, color-mix(in srgb, #4f8862 3%, transparent), transparent 58%, color-mix(in srgb, #35658f 2%, transparent));
  --lynn-material-filter: none;
  --lynn-material-border: color-mix(in srgb, #ffffff 72%, transparent);
  --lynn-material-highlight: 0 0 0 transparent;
  --lynn-opacity-menu: 0.9;
  --lynn-opacity-card: 0.94;
  --lynn-color-surface-muted: #fcfaf1;
  --lynn-color-text-primary: #29332f;
  --lynn-color-text-secondary: #4a5751;
  --lynn-color-text-muted: #68675e;
  --lynn-color-border-default: #e8e0ce;
  --lynn-color-border-strong: #b2ab9b;
  --lynn-color-text-page: #29332f;
  --lynn-color-text-page-muted: #68675e;
  --lynn-color-action-primary: #4b815d;
  --lynn-color-action-primary-hover: #417051;
  --lynn-color-action-primary-active: #3a6348;
  --lynn-color-action-primary-text: #4a805c;
  --lynn-color-action-on-primary: #ffffff;
  --lynn-color-action-subtle: #edf0e5;
  --lynn-color-action-on-subtle: #457756;
  --lynn-color-focus: #4b815d;
  --lynn-color-disabled: #68675e;
  --lynn-color-disabled-surface: #fcfaf1;
  --lynn-color-scrollbar-thumb: #719a7c;
  --lynn-color-scrollbar-thumb-hover: #598a68;
  --lynn-color-scrollbar-track: #f4efe3;
  --lynn-color-success: #357346;
  --lynn-color-warning: #845b17;
  --lynn-color-danger: #ae403b;
  --lynn-color-info: #35658f;
  --lynn-radius-control: 6px;
  --lynn-radius-panel: 6px;
  --lynn-control-height: 38px;
  --lynn-table-row-height: 48px;
  --lynn-space-content: 18px;
  --lynn-font-family: "Noto Sans SC", "Microsoft YaHei", "PingFang SC", system-ui, sans-serif;
  --lynn-font-family-body: "Noto Sans SC", "Microsoft YaHei", "PingFang SC", system-ui, sans-serif;
  --lynn-font-family-heading: "Noto Sans SC", "Microsoft YaHei", "PingFang SC", system-ui, sans-serif;
  --lynn-font-family-quote: "STKaiti", "KaiTi", "Kaiti SC", "Noto Serif SC", serif;
  --lynn-font-family-mono: "JetBrains Mono", "Fira Code", ui-monospace, "Cascadia Code", Consolas, monospace;
  --lynn-font-size-caption: 12px;
  --lynn-font-size-label: 13px;
  --lynn-font-size-heading: 24px;
  --lynn-font-size-body: 14px;
  --lynn-font-size-section: 18px;
  --lynn-font-size-title: 32px;
  --lynn-font-scale: 1;
  --lynn-editor-font-small: 12px;
  --lynn-editor-font-caption: 13px;
  --lynn-editor-font-body: 14px;
  --lynn-editor-font-section: 15px;
  --lynn-editor-font-title: 18px;
  --lynn-line-height-body: 1.6;
  --lynn-line-height-heading: 1.35;
  --lynn-shadow-floating: none;
  --lynn-shadow-panel: none;
  --lynn-motion-duration: 160ms;
  --lynn-material-blur: 0px;
  --lynn-motion-duration-fast: 110ms;
  --lynn-motion-duration-slow: 240ms;
  --lynn-color-overlay-scrim: color-mix(in srgb, #0c1812 50%, transparent);
  --lynn-background-image: radial-gradient(#e6ddca88 .6px, transparent .6px);
  --lynn-background-size: 5px 5px;
  --lynn-background-repeat: repeat;
  --lynn-color-success-subtle: #eaeee3;
  --lynn-color-success-on-subtle: #357346;
  --lynn-color-warning-subtle: #f2ecde;
  --lynn-color-warning-on-subtle: #845b17;
  --lynn-color-danger-subtle: #f6e9e2;
  --lynn-color-danger-on-subtle: #ae403b;
  --lynn-color-info-subtle: #eaedea;
  --lynn-color-info-on-subtle: #35658f;
  --lynn-shadow-card: none;
  --lynn-material-panel-shadow: none;
  --lynn-material-floating-shadow: none;
  --lynn-background-image-portrait: radial-gradient(#e6ddca88 .6px, transparent .6px);
  --lynn-background-position: 50% center;
}
/* Shared components consume semantic tokens; business status colors remain independent. */
.lynn-appearance-entry { display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%;padding:16px;min-height:64px;text-align:start;background:var(--lynn-color-surface-card-material);color:var(--lynn-color-text-primary);border:1px solid var(--lynn-color-border-default);border-radius:var(--lynn-radius-panel);cursor:pointer;font:inherit; }
.lynn-appearance-entry span { color:var(--lynn-color-text-secondary);font-size:.875em; }
.lynn-appearance-link { display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:8px 12px;border:1px solid var(--lynn-color-border-default);border-radius:var(--lynn-radius-control);background:var(--lynn-color-surface-card-material);color:var(--lynn-color-text-primary);font:inherit;cursor:pointer; }
.lynn-appearance-link span { display:none; }
.lynn-settings-menu { position:relative; }
.lynn-settings-menu summary { cursor:pointer;min-height:44px;display:flex;align-items:center;padding:8px 12px; }
.lynn-settings-menu > div { position:absolute;inset-inline-end:0;top:100%;z-index:var(--lynn-z-dropdown,1000);width:max-content;max-width:calc(100vw - 24px);padding:8px;background:var(--lynn-color-surface-menu);border:1px solid var(--lynn-color-border-default);border-radius:var(--lynn-radius-panel);box-shadow:var(--lynn-shadow-panel); }
html[data-lynn-theme][data-lynn-background] body {
  color: var(--lynn-color-text-page);
  background-color: var(--lynn-color-surface-page);
  background-image: var(--lynn-background-image);
  background-size: var(--lynn-background-size);
  background-attachment: fixed;
  background-position: var(--lynn-background-position, center);
  background-repeat: var(--lynn-background-repeat, repeat);
  font-family: var(--lynn-font-family-body);
  font-size: var(--lynn-font-size-body);
  font-weight: var(--lynn-font-weight-normal);
  line-height: var(--lynn-line-height-body);
}
html[data-lynn-theme] :is(button,input,select,textarea,summary) { font-family:var(--lynn-font-family-body); }
html[data-lynn-theme] :is(h1,h2,h3,h4,h5,h6) { font-family:var(--lynn-font-family-heading);font-weight:var(--lynn-font-weight-heading);line-height:var(--lynn-line-height-heading); }
html[data-lynn-theme] :is(code,pre,kbd,samp) { font-family:var(--lynn-font-family-mono); }
html[data-lynn-theme] blockquote { font-family:var(--lynn-font-family-quote); }
html[data-lynn-theme] :is(.sidebar,.admin-sidebar) {
  color: var(--lynn-color-text-primary);
  background-color: var(--lynn-color-surface-menu);
  background-image: var(--lynn-surface-menu-gradient);
}
html[data-lynn-theme] :is(.paper-card,.paper-panel,.panel,.settings-section,.settings-card,.workspace-panel,.article-paper,.link-card,.card,.metric,.metric-card,.admin-card,.modal-card,.login-card,.setup-card,[class$="-card"],[class*="-card "],[class*="_card_"]) {
  color: var(--lynn-color-text-primary);
  border-radius: var(--lynn-radius-panel);
  box-shadow: var(--lynn-shadow-panel);
  background-color: var(--lynn-color-surface-card-material);
  background-image: var(--lynn-surface-card-gradient);
}
html[data-lynn-theme][data-theme]:root, html[data-lynn-theme][data-theme]:root * {
  scrollbar-color: var(--lynn-color-scrollbar-thumb) var(--lynn-color-scrollbar-track);
  scrollbar-width: thin;
}
/* Chromium gives non-auto standard properties precedence over WebKit geometry.
   Firefox keeps its native thin treatment; hidden product scrollbars keep display:none. */
@supports selector(::-webkit-scrollbar) {
  html[data-lynn-theme][data-theme]:root, html[data-lynn-theme][data-theme]:root * { scrollbar-width:auto;scrollbar-color:auto; }
  html[data-lynn-theme][data-theme]:root::-webkit-scrollbar, html[data-lynn-theme][data-theme]:root *::-webkit-scrollbar { width:6px;height:6px; }
  html[data-lynn-theme][data-theme]:root::-webkit-scrollbar-track, html[data-lynn-theme][data-theme]:root *::-webkit-scrollbar-track { background:transparent; }
  html[data-lynn-theme][data-theme]:root::-webkit-scrollbar-thumb, html[data-lynn-theme][data-theme]:root *::-webkit-scrollbar-thumb { min-width:32px;min-height:32px;border:1px solid transparent;border-radius:var(--lynn-radius-round);background:var(--lynn-color-scrollbar-thumb);background-clip:padding-box; }
  html[data-lynn-theme][data-theme]:root::-webkit-scrollbar-thumb:hover, html[data-lynn-theme][data-theme]:root *::-webkit-scrollbar-thumb:hover { border-width:0;background-color:var(--lynn-color-scrollbar-thumb-hover); }
  html[data-lynn-theme][data-theme]:root::-webkit-scrollbar-button, html[data-lynn-theme][data-theme]:root *::-webkit-scrollbar-button { display:none;width:0;height:0; }
  html[data-lynn-theme][data-theme]:root::-webkit-scrollbar-corner, html[data-lynn-theme][data-theme]:root *::-webkit-scrollbar-corner { background:transparent; }
}
@media (forced-colors:active) {
  html[data-lynn-theme][data-theme]:root, html[data-lynn-theme][data-theme]:root * { scrollbar-width:auto;scrollbar-color:auto; }
  html[data-lynn-theme][data-theme]:root::-webkit-scrollbar, html[data-lynn-theme][data-theme]:root *::-webkit-scrollbar { width:auto;height:auto; }
}
html[data-lynn-theme] .page-heading { color:var(--lynn-color-text-page); }
html[data-lynn-theme] .page-heading :is(p,.muted) { color:var(--lynn-color-text-page-muted); }
html[data-lynn-theme][data-theme] :is(.primary-button,.button-primary,.btn-primary,.button.primary,button[data-variant=primary]) {
  color: var(--lynn-color-action-on-primary);
  background: var(--lynn-color-action-primary);
  border-color: var(--lynn-color-action-primary);
}
html[data-lynn-theme][data-theme] :is(.primary-button,.button-primary,.btn-primary,.button.primary,button[data-variant=primary]):hover:not(:disabled) { background:var(--lynn-color-action-primary-hover); }
html[data-lynn-theme][data-theme] :is(.primary-button,.button-primary,.btn-primary,.button.primary,button[data-variant=primary]):active:not(:disabled) { background:var(--lynn-color-action-primary-active); }
html[data-lynn-theme] :is(.primary-button,.secondary-button,.ghost-button,.btn,.button,input:not([type=checkbox]):not([type=radio]),select,textarea,.site-select-trigger,.select-field-trigger) { min-height:var(--lynn-control-height);border-radius:var(--lynn-radius-control); }
html[data-lynn-theme] :is(.pill.green,.status.green) { color:var(--lynn-color-success);background:var(--lynn-color-success-subtle); }
html[data-lynn-theme] :is(.settings-section,.settings-panel,.story-compose) { padding:var(--lynn-space-content); }
html[data-lynn-theme] :is(.issue-row,tbody tr) { height:var(--lynn-table-row-height); }
html[data-lynn-theme] :focus-visible { outline-color:var(--lynn-color-focus); }
html[data-lynn-style=clean] :is(.taped,.topbar,.paper-card,.paper-panel)::before,
html[data-lynn-style=soft] :is(.taped,.topbar,.paper-card,.paper-panel)::before,
html[data-lynn-style=glass] :is(.taped,.topbar,.paper-card,.paper-panel)::before { display:none; }
html[data-lynn-theme]:not([data-lynn-style=paper]) :is(.tape,.page-grain,.paper-tape) { display:none; }
html[data-lynn-theme]:not([data-lynn-style=paper]) :is(.paper-card,.paper-panel) { transform:none; filter:none; border-style:solid; }
html[data-lynn-style=glass] :is(.paper-card,.paper-panel,.panel,.settings-section,.settings-card,.workspace-panel,.article-paper,.link-card,.card,.metric,.metric-card,.admin-card,.modal-card,.login-card,.setup-card,[class$="-card"],[class*="-card "],[class*="_card_"]) { background:var(--lynn-surface-card-gradient) var(--lynn-color-surface-card-material); }
@supports(backdrop-filter:blur(1px)) {
  html[data-lynn-theme] :is(.sidebar,.admin-sidebar,.paper-card,.paper-panel,.panel,.settings-section,.settings-card,.workspace-panel,.article-paper,.link-card,.card,.metric,.metric-card,.admin-card,.modal-card,.login-card,.setup-card,[class$="-card"],[class*="-card "],[class*="_card_"]) { backdrop-filter:blur(var(--lynn-material-blur)); }
}
html[data-lynn-motion=reduced] *,html[data-lynn-motion=reduced] *::before,html[data-lynn-motion=reduced] *::after { animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:0ms!important;scroll-behavior:auto!important; }
@media(pointer:coarse) { html[data-lynn-theme] :is(.primary-button,.secondary-button,.ghost-button,.btn,.button,input:not([type=checkbox]):not([type=radio]),select,textarea,.site-select-trigger,.select-field-trigger) { min-height:44px; } }

html[data-lynn-theme][data-lynn-background=image] .page-grain { display:none; }
html[data-lynn-theme][data-theme] :is(button,input,select,textarea):disabled { color:var(--lynn-color-disabled);background-color:var(--lynn-color-disabled-surface); }
html[data-lynn-theme] :is(button,input,select,textarea,a) { transition-duration:var(--lynn-motion-duration); }

/* Shared form typography must survive product styles and portalled menus. */
html[data-lynn-theme] :is(button,input,select,textarea,[role=combobox],[role=listbox]) {
  font-family:var(--lynn-font-family-body);
  font-weight:var(--lynn-font-weight-normal);
}
html[data-lynn-theme] :is(.primary-button,.secondary-button,.ghost-button,.btn-primary,.button-primary,.button.primary) {
  font-size:var(--lynn-font-size-label);
  font-weight:var(--lynn-font-weight-label);
}
html[data-lynn-theme] :is(.settings-page,.settings-section,.settings-card,.admin-page,.admin-main) :is(h1,h2,h3,label) {
  font-family:var(--lynn-font-family-heading);
  font-weight:var(--lynn-font-weight-heading);
}
html[data-lynn-theme] :is(.settings-page,.settings-section,.settings-card,.admin-page,.admin-main) label {
  color:var(--lynn-color-text-secondary);
  font-size:var(--lynn-font-size-label);
  font-weight:var(--lynn-font-weight-label);
}
/* Feedback is semantic, while legacy sage-soft now follows the chosen accent. */
html[data-lynn-theme] :is(.success-banner,.account-success,.form-success,.invite-feedback.success,.admin-alert.success,.editor-alert.success,.deployment-banner.success,.ai-connection-feedback.success,.issue-feedback-message.success) {
  color:var(--lynn-color-success);
  background-color:var(--lynn-color-success-subtle);
}
html[data-lynn-theme] :is(.error-banner,.admin-alert.error,.editor-alert.error,.issue-feedback-message.error) {
  color:var(--lynn-color-danger);
  background-color:var(--lynn-color-danger-subtle);
}

/* The same material applies to native fields and custom/portalled selects.
   Native option popups do not reliably support gradients, so use an opaque tint. */
html[data-lynn-theme][data-theme] :is(.auth-panel,.admin-panel,.search-paper,.paper-form,.member-add-panel,.archive-paper,.taxonomy-paper,.empty-paper,.featured-paper,.agent-share-dialog,.system-dialog,.editor-dialog,.site-dialog,.ui-dialog,.dialog,.modal-card) {
  color:var(--lynn-color-text-primary);
  background:var(--lynn-surface-card-gradient) var(--lynn-color-surface-card-material);
}
/* Overlay dialogs float above a dimmed scrim; card material assumes a page backdrop and bleeds
   the page through over the scrim, so dialogs render opaque (still theme-adaptive). This rule
   must stay after the material rules above: same specificity, source order decides. */
html[data-lynn-theme][data-theme] :is([role=dialog],dialog[open],.agent-share-dialog,.system-dialog,.editor-dialog,.site-dialog,.ui-dialog,.dialog,.modal-card) {
  background:var(--lynn-surface-card-gradient) var(--lynn-color-surface-card);
}
html[data-lynn-theme][data-theme] :is(.system-select-trigger,.role-select-trigger,.select-control,.search-control,.search-field,.search-box) {
  color:var(--lynn-color-text-primary);
  background:var(--lynn-surface-control-gradient) var(--lynn-color-surface-control);
}
html[data-lynn-theme][data-theme] :is(.dropdown,.select-content,.system-select-menu,.system-datetime-menu,.role-select-menu,.more-menu,.user-menu,.ai-rewrite-menu,.conversation-menu-popover,.mobile-menu-sheet) {
  color:var(--lynn-color-text-primary);
  background:var(--lynn-surface-menu-gradient) var(--lynn-color-surface-popup);
  border-color:var(--lynn-color-border-default);
  backdrop-filter:blur(16px);
}
html[data-lynn-theme][data-theme] :is(:where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=hidden]):not([type=file]):not([type=submit]):not([type=button])),textarea,select,[role=combobox],.select-field-trigger,.site-select-trigger,.custom-select-trigger,.lynn-select-trigger) {
  color:var(--lynn-color-text-primary);
  background-color:var(--lynn-color-surface-control);
  background-image:var(--lynn-surface-control-gradient);
}
html[data-lynn-theme][data-theme] :is([role=listbox]:not(.site-select-options),.select-field-menu,.site-select-menu,.custom-select-menu,.lynn-select-menu,.account-popover,.accent-menu,.lynn-settings-menu > div) {
  color:var(--lynn-color-text-primary);
  background:var(--lynn-surface-menu-gradient) var(--lynn-color-surface-popup);
  border-color:var(--lynn-color-border-default);
  backdrop-filter:blur(16px);
}
html[data-lynn-theme][data-theme] :is(option,optgroup) { color:var(--lynn-color-text-primary);background:var(--lynn-color-surface-card); }
html[data-lynn-theme][data-theme] :is(input,textarea,select,[role=combobox],.select-field-trigger,.site-select-trigger,.system-select-trigger,.role-select-trigger,.select-control):is(:disabled,[aria-disabled=true]) { background-color:var(--lynn-color-disabled-surface);background-image:none;color:var(--lynn-color-disabled); }
html[data-lynn-theme][data-theme] :is(input,textarea)::placeholder { color:var(--lynn-color-text-muted);opacity:1; }
@media (prefers-reduced-transparency:reduce) {
  html[data-lynn-theme] { --lynn-color-surface-card-material:var(--lynn-color-surface-card);--lynn-color-surface-menu:var(--lynn-color-surface-card);--lynn-color-surface-popup:var(--lynn-color-surface-card);--lynn-color-surface-control:var(--lynn-color-surface-raised); }
}
@media (forced-colors:active) {
  html[data-lynn-theme][data-theme] :is(input,textarea,select,[role=combobox],[role=listbox],.card,.panel,.paper-card,.select-field-trigger,.select-field-menu,.site-select-trigger,.site-select-menu) { background:Canvas;color:CanvasText;border-color:ButtonText;backdrop-filter:none; }
}

/* A minimum alone lets product padding and native line boxes change field height.
   Size the border box, leave horizontal space for existing icons, and grow with type. */
html[data-lynn-theme] {
  --form-control-height: max(var(--lynn-control-height), calc(var(--lynn-font-size-body) * 1.5 + 14px));
}
html[data-lynn-theme][data-theme] :is(
  :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=hidden]):not([type=file]):not([type=submit]):not([type=reset]):not([type=button]):not([type=image])),
  :where(select:not([multiple]):not([size]),select[size="1"]:not([multiple])),
  button[role=combobox],.select-control,.site-datetime-trigger,.system-datetime-trigger
) {
  box-sizing: border-box;
  min-width: 0;
  height: var(--form-control-height);
  min-height: var(--form-control-height);
  padding-block: 0;
  font-size: var(--lynn-font-size-body);
  line-height: 1.5;
  border-radius: var(--lynn-radius-control);
}
html[data-lynn-theme][data-theme] :is(button[role=combobox],.site-datetime-trigger,.system-datetime-trigger) strong {
  font-size: inherit;
  line-height: inherit;
  font-weight: var(--lynn-font-weight-normal);
}
/* A selection with secondary copy is intentionally multiline. */
html[data-lynn-theme][data-theme] :is(button[role=combobox]:not([data-density=compact]),.site-datetime-trigger,.system-datetime-trigger):has(small) {
  height: auto;
  min-height: max(var(--form-control-height), calc(var(--lynn-font-size-body) * 3 + 14px));
  padding-block: 6px;
}
/* Search fields with an outer border share the same box; their input fits inside. */
html[data-lynn-theme][data-theme] :is(.search-field,.search-box,.search-control,.search-input,.moment-search-field):has(input) {
  box-sizing: border-box;
  height: var(--form-control-height);
  min-height: var(--form-control-height);
  padding-block: 0;
}
html[data-lynn-theme][data-theme] :is(.search-field,.search-box,.search-control,.search-input,.moment-search-field) input {
  height: 100%;
  min-height: 0;
  background: transparent;
}
@media (pointer:coarse) {
  html[data-lynn-theme] {
    --form-control-height: max(44px, var(--lynn-control-height), calc(var(--lynn-font-size-body) * 1.5 + 14px));
  }
}

@media (orientation: portrait) { html[data-lynn-theme][data-lynn-background] body { background-image: var(--lynn-background-image-portrait); } }
/* Shared SiteSelect structure, including menus portalled into a modal top layer. */
.site-select{position:relative;min-width:0}
.site-select .site-select-trigger{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:var(--lynn-control-height);padding:7px 12px;border:1px solid var(--lynn-color-border-default);border-radius:var(--lynn-radius-control);color:var(--lynn-color-text-primary);background:var(--lynn-surface-control-gradient) var(--lynn-color-surface-control);font:var(--lynn-font-weight-normal) var(--lynn-font-size-label)/var(--lynn-line-height-body) var(--lynn-font-family-body);text-align:start;cursor:pointer;transition:border-color var(--lynn-motion-duration),box-shadow var(--lynn-motion-duration),background-color var(--lynn-motion-duration)}
.site-select.is-open .site-select-trigger{border-color:var(--lynn-color-border-strong)}
.site-select-leading{display:grid;place-items:center;flex:none;width:30px;height:30px;border:1px solid color-mix(in srgb,var(--lynn-color-action-primary) 18%,transparent);border-radius:calc(var(--lynn-radius-control) - 2px);background:var(--lynn-color-action-subtle);color:var(--lynn-color-action-on-subtle)}
.site-select-leading>svg{width:16px;height:16px;stroke-width:1.8}
.site-select-value{display:grid;min-width:0;gap:2px}.site-select-value strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:inherit;font-weight:var(--lynn-font-weight-label)}
.site-select-value small,.site-select-menu small{display:block;color:var(--lynn-color-text-secondary);font-size:var(--lynn-font-size-caption);font-weight:var(--lynn-font-weight-normal)}
.site-select-chevron{width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg);flex:none;margin:0 2px 4px 0;transition:transform var(--lynn-motion-duration)}
.site-select.is-open .site-select-chevron{transform:rotate(225deg);margin-bottom:0}
.site-select-menu{z-index:var(--lynn-z-dropdown,1000);box-sizing:border-box;display:flex;flex-direction:column;gap:3px;overflow:hidden;padding:6px;border:1px solid var(--lynn-color-border-strong);border-radius:var(--lynn-radius-panel);box-shadow:var(--lynn-shadow-panel);background:var(--lynn-surface-menu-gradient) var(--lynn-color-surface-popup);color:var(--lynn-color-text-primary);font-family:var(--lynn-font-family-body)}
.site-select-search{box-sizing:border-box;flex:none;width:100%;min-height:var(--lynn-control-height);margin-bottom:4px;padding:7px 10px;border:0;border-bottom:1px solid var(--lynn-color-border-default);border-radius:0;background:transparent;color:inherit;font:var(--lynn-font-weight-normal) var(--lynn-font-size-label)/var(--lynn-line-height-body) var(--lynn-font-family-body);-webkit-appearance:none;appearance:none}.site-select-search::placeholder{color:var(--lynn-color-text-secondary)}.site-select-search:focus{outline:none;border-bottom-color:var(--lynn-color-action-primary);box-shadow:0 1px 0 0 var(--lynn-color-action-primary)}
.site-select-options{display:flex;min-height:0;flex-direction:column;gap:3px;overflow:auto;overscroll-behavior:contain}
.site-select-options>button{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none;width:100%;min-height:var(--lynn-control-height);padding:7px 10px;border:1px solid transparent;border-radius:var(--lynn-radius-control);background:transparent;color:inherit;text-align:start;white-space:normal;font:var(--lynn-font-weight-normal) var(--lynn-font-size-label)/var(--lynn-line-height-body) var(--lynn-font-family-body);cursor:pointer}
.site-select-options>button>span:first-child{min-width:0;overflow-wrap:anywhere}.site-select-menu strong{font-size:inherit;font-weight:var(--lynn-font-weight-label)}
.site-select-options>button.selected:not(:disabled){background:var(--lynn-color-surface-muted)}.site-select-options>button:is(.highlighted,:hover):not(.selected):not(:disabled){background:var(--lynn-color-action-subtle);color:var(--lynn-color-text-primary)}
.site-select-options>button:disabled,.site-select.is-disabled .site-select-trigger{cursor:default;color:var(--lynn-color-disabled);background:var(--lynn-color-disabled-surface)}
.site-select-empty{margin:0;padding:10px;color:var(--lynn-color-text-secondary);font-size:var(--lynn-font-size-caption);text-align:center}
.site-select-check{display:grid;place-items:center;flex:none;width:18px;height:18px;background:none;color:var(--lynn-color-action-primary-text,var(--lynn-color-action-primary));font-size:var(--lynn-font-size-label);font-weight:var(--lynn-font-weight-heading,600)}.site-select-trigger:focus-visible,.site-select-options>button:focus-visible{outline:2px solid var(--lynn-color-focus);outline-offset:1px}
@media(pointer:coarse){.site-select .site-select-trigger,.site-select-options>button{min-height:44px}}
@media(forced-colors:active){.site-select .site-select-trigger,.site-select-menu,.site-select-options>button{background:Canvas;color:CanvasText;border-color:ButtonText}.site-select-options>button:is(.selected,.highlighted):not(:disabled){forced-color-adjust:none;background:Highlight!important;color:HighlightText!important}.site-select-options>button:is(.selected,.highlighted):not(:disabled) .site-select-check{color:HighlightText}}

/* Dense data selectors keep secondary metadata inline; touch targets stay accessible. */
.site-select[data-density=compact] .site-select-trigger{padding:var(--lynn-space-4) var(--lynn-space-8);gap:var(--lynn-space-8)}
.site-select[data-density=compact] .site-select-leading{width:28px;height:28px}
.site-select[data-density=compact] .site-select-value,.site-select-menu[data-density=compact] .site-select-options>button>span:first-child{display:flex;align-items:center;gap:var(--lynn-space-8);min-width:0;flex:1}
.site-select[data-density=compact] .site-select-value small{display:none}
.site-select-menu[data-density=compact]{gap:0;padding:var(--lynn-space-4)}
.site-select-menu[data-density=compact] .site-select-options>button{padding:var(--lynn-space-4) var(--lynn-space-8);min-height:var(--lynn-control-height);gap:var(--lynn-space-8)}
.site-select-menu[data-density=compact] strong{display:block;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.site-select-menu[data-density=compact] small{flex:none;white-space:nowrap}
@media(pointer:coarse){.site-select[data-density=compact] .site-select-trigger,.site-select-menu[data-density=compact] .site-select-options>button{min-height:44px}}

/* Shared brand geometry; each product supplies its own mark and wording. */
.lynn-brand{display:inline-flex;align-items:center;gap:var(--lynn-brand-gap,var(--lynn-space-12));min-width:0;color:var(--lynn-color-text-primary);text-decoration:none}
.lynn-brand__mark{display:grid;place-items:center;flex:none;width:var(--lynn-brand-mark-size,40px);height:var(--lynn-brand-mark-size,40px);overflow:hidden;border-radius:var(--lynn-brand-mark-radius,var(--lynn-radius-control))}
.lynn-brand__mark :is(svg,img){display:block;width:100%;height:100%;object-fit:contain}
.lynn-brand__text{display:flex;flex-direction:column;min-width:0}
.lynn-brand__title{font-family:var(--lynn-font-family-heading);font-size:var(--lynn-brand-title-size,var(--lynn-font-size-section));font-weight:var(--lynn-font-weight-heading);line-height:var(--lynn-line-height-heading)}
.lynn-brand__subtitle{color:var(--lynn-color-text-secondary);font-size:var(--lynn-brand-subtitle-size,var(--lynn-font-size-caption));line-height:var(--lynn-line-height-body)}

/* Glass is opt-in. Paint only surfaces, never opacity/filter on their content.
   Keep this after product adapters; avoid transforms and animated backdrop filters. */
html[data-lynn-theme][data-lynn-style=glass] :is(
  .paper-card,.paper-panel,.panel,.settings-section,.settings-card,.workspace-panel,
  .article-paper,.link-card,.card,.metric,.metric-card,.admin-card,.login-card,.setup-card,
  .auth-panel,.admin-panel,.search-paper,.paper-form,.member-add-panel,.archive-paper,
  .taxonomy-paper,.empty-paper,.featured-paper,.lynn-appearance-entry,
  [class$="-card"],[class*="-card "],[class*="_card_"]
) {
  background:var(--lynn-surface-card-gradient) var(--lynn-color-surface-card-material);
  border-color:var(--lynn-material-border);
  box-shadow:var(--lynn-material-panel-shadow);
  -webkit-backdrop-filter:var(--lynn-material-filter);
  backdrop-filter:var(--lynn-material-filter);
}
html[data-lynn-theme][data-lynn-style=glass] :is(
  .sidebar,.admin-sidebar,.topbar,.site-header,.app-header,.admin-header,
  .mobile-bottom-nav,.bottom-nav,.mobile-nav,.appearance-site-header
) {
  color:var(--lynn-color-text-primary);
  background:var(--lynn-surface-menu-gradient) var(--lynn-color-surface-menu);
  border-color:var(--lynn-material-border);
  box-shadow:var(--lynn-material-highlight);
  -webkit-backdrop-filter:var(--lynn-material-filter);
  backdrop-filter:var(--lynn-material-filter);
}
/* Reading and focus layers obscure underlying text even at minimum menu opacity. */
html[data-lynn-theme][data-theme][data-lynn-style=glass] :is(
  .agent-share-dialog,.system-dialog,.editor-dialog,.site-dialog,.ui-dialog,.dialog,.modal-card,
  .dropdown,.select-content,.system-select-menu,.system-datetime-menu,.role-select-menu,
  .more-menu,.user-menu,.ai-rewrite-menu,.conversation-menu-popover,.mobile-menu-sheet,
  [role=listbox]:not(.site-select-options),.select-field-menu,.site-select-menu,.custom-select-menu,.lynn-select-menu,
  .account-popover,.accent-menu,.lynn-settings-menu > div,.brand-nav-menu,.site-nav-menu,
  [data-lynn-component=date-menu],[data-lynn-component=select-menu],[data-lynn-component=popover],[data-lynn-component=menu],[data-lynn-component=command]
) {
  color:var(--lynn-color-text-primary);
  background:var(--lynn-surface-menu-gradient) var(--lynn-color-surface-popup);
  border-color:var(--lynn-material-edge,transparent);
  border-radius:var(--lynn-radius-panel);
  box-shadow:var(--lynn-material-floating-shadow),inset 0 1px 0 var(--lynn-material-border);
  -webkit-backdrop-filter:var(--lynn-material-filter);
  backdrop-filter:var(--lynn-material-filter);
}
/* FlatPaper paints an additional sheet in pseudo-elements. Remove that sheet
   and its tape in glass mode, otherwise two translucent fills become opaque. */
html[data-lynn-theme][data-lynn-style=glass] :is(.side-card)::before,
html[data-lynn-theme][data-lynn-style=glass] :is(.side-card)::after,
html[data-lynn-theme][data-lynn-style=glass] :is(.welcome-card,.featured-paper,.post-card,.article-paper,.archive-paper,.taxonomy-paper,.empty-paper)::before,
html[data-lynn-theme][data-lynn-style=glass] :is(.welcome-card,.post-card)::after,
html[data-lynn-theme][data-lynn-style=glass] .brand-nav-menu::after,
html[data-lynn-theme][data-lynn-style=glass] .site-nav-menu::before,
html[data-lynn-theme][data-lynn-style=glass] body[class*="tag-style-"] .site-header::before {
  display:none;
}
html[data-lynn-theme][data-lynn-style=glass] :is(.side-card,.welcome-card,.featured-paper,.post-card,.archive-paper,.taxonomy-paper,.empty-paper),
html[data-lynn-theme][data-lynn-style=glass] body[class*="tag-style-"] .site-header {
  border:1px solid var(--lynn-material-border);
  border-radius:var(--lynn-radius-panel);
}

/* ---------------------------------------------------------------------------
   Glass controls. One recipe: fill + gradient rim + a contact shadow.
   Hover lifts; pressed / keyboard focus / selected sink (inset shadow, rim flipped).
   Controls carry no backdrop-filter: they sit on an already blurred surface.
   Selectors mirror component specificity so shared components stay authoritative. */
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button] {
  --lynn-btn-tone:var(--lynn-color-action-primary);
  position:relative;isolation:isolate;
  border-color:transparent;
  background:var(--lynn-surface-control-gradient) var(--lynn-color-surface-control);
  box-shadow:var(--lynn-shadow-control);
  transition:box-shadow var(--lynn-motion-duration),background-color var(--lynn-motion-duration),filter var(--lynn-motion-duration),transform var(--lynn-motion-duration);
}
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button]:hover:not(:disabled) {
  border-color:transparent;
  background:var(--lynn-surface-control-gradient) var(--lynn-color-surface-raised);
  box-shadow:var(--lynn-shadow-control-hover);
}
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button]:is(:active,:focus-visible,[aria-pressed=true]):not(:disabled) {
  transform:translateY(.5px);
  background:var(--lynn-surface-press) var(--lynn-color-surface-control);
  box-shadow:var(--lynn-shadow-press);
}
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button]:focus-visible { outline-offset:2px; }
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button]:disabled { box-shadow:none; }

/* Filled tones: tinted glass over the solid action / danger colour. */
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button]:is([data-tone=primary],[data-tone=danger]) {
  --lynn-btn-rim:var(--lynn-material-rim-action);
  background:var(--lynn-surface-action-gradient) var(--lynn-btn-tone);
  box-shadow:0 1px 2px color-mix(in srgb,var(--lynn-btn-tone) 35%,transparent),0 6px 12px -6px color-mix(in srgb,var(--lynn-btn-tone) 50%,transparent);
}
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button][data-tone=danger] { --lynn-btn-tone:var(--lynn-color-danger-action,var(--lynn-color-danger)); }
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button]:is([data-tone=primary],[data-tone=danger]):hover:not(:disabled) {
  background:var(--lynn-surface-action-gradient) var(--lynn-btn-tone);
  filter:brightness(1.08);
  box-shadow:0 1px 2px color-mix(in srgb,var(--lynn-btn-tone) 35%,transparent),0 10px 18px -6px color-mix(in srgb,var(--lynn-btn-tone) 60%,transparent);
}
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button]:is([data-tone=primary],[data-tone=danger]):is(:active,:focus-visible,[aria-pressed=true]):not(:disabled) {
  --lynn-btn-rim:var(--lynn-material-rim-action-pressed);
  filter:brightness(.86);
  background:var(--lynn-surface-action-pressed-gradient) var(--lynn-btn-tone);
  box-shadow:var(--lynn-shadow-action-press);
}
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button][data-tone=quiet] { background:transparent;box-shadow:none; }
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button][data-tone=quiet]:hover:not(:disabled) { background:var(--lynn-color-surface-muted);box-shadow:none; }
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button][data-tone=quiet]:is(:active,:focus-visible,[aria-pressed=true]):not(:disabled) { background:var(--lynn-surface-press) var(--lynn-color-surface-muted);box-shadow:var(--lynn-shadow-press); }
/* Disabled must win over every tone: filled tones would otherwise keep a saturated fill under grey text. */
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button]:disabled {
  color:var(--lynn-color-disabled);
  background:var(--lynn-surface-control-gradient) var(--lynn-color-disabled-surface);
  box-shadow:none;filter:none;transform:none;
}
html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button][data-tone=quiet]:disabled { background:transparent; }
/* Gradient rim: a 1px masked ring. Only drawn where mask compositing exists, otherwise a full-face gradient would cover the label. */
@supports ((mask-composite:exclude) or (-webkit-mask-composite:xor)) {
  html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button]:not([data-tone=quiet])::before {
    content:"";position:absolute;inset:-1px;z-index:1;padding:1px;border-radius:inherit;pointer-events:none;
    background:var(--lynn-btn-rim,var(--lynn-material-rim));
    -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;
    mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);mask-composite:exclude;
  }
  html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button]:not([data-tone=quiet]):is(:active,:focus-visible,[aria-pressed=true]):not(:disabled)::before {
    background:var(--lynn-btn-rim,var(--lynn-material-rim-pressed));
  }
}
@supports not ((mask-composite:exclude) or (-webkit-mask-composite:xor)) {
  html[data-lynn-theme][data-lynn-style=glass] .lynn-admin-button[data-lynn-component=button]:not([data-tone=quiet]) { border-color:var(--lynn-material-border); }
}

/* Product-owned primary / secondary buttons keep their own markup; give them the same fill and contact shadow without a pseudo-element. */
html[data-lynn-theme][data-theme][data-lynn-style=glass] :is(.primary-button,.button-primary,.btn-primary,.button.primary,button[data-variant=primary]) {
  background:var(--lynn-surface-action-gradient) var(--lynn-color-action-primary);
  box-shadow:inset 0 1px 0 color-mix(in srgb,#fff 42%,transparent),0 1px 2px color-mix(in srgb,var(--lynn-color-action-primary) 35%,transparent),0 6px 12px -6px color-mix(in srgb,var(--lynn-color-action-primary) 50%,transparent);
}
html[data-lynn-theme][data-theme][data-lynn-style=glass] :is(.primary-button,.button-primary,.btn-primary,.button.primary,button[data-variant=primary]):hover:not(:disabled) {
  background:var(--lynn-surface-action-gradient) var(--lynn-color-action-primary-hover);
}
html[data-lynn-theme][data-theme][data-lynn-style=glass] :is(.primary-button,.button-primary,.btn-primary,.button.primary,button[data-variant=primary]):is(:active,:focus-visible):not(:disabled) {
  background:var(--lynn-surface-action-pressed-gradient) var(--lynn-color-action-primary-active);
  box-shadow:var(--lynn-shadow-action-press);
}
html[data-lynn-theme][data-lynn-style=glass] :is(.secondary-button,.ghost-button) {
  background:var(--lynn-surface-control-gradient) var(--lynn-color-surface-control);
  box-shadow:var(--lynn-shadow-control),var(--lynn-material-highlight);
}
html[data-lynn-theme][data-lynn-style=glass] :is(.secondary-button,.ghost-button):is(:active,:focus-visible):not(:disabled) {
  background:var(--lynn-surface-press) var(--lynn-color-surface-control);
  box-shadow:var(--lynn-shadow-press);
}

html[data-lynn-theme][data-theme][data-lynn-style=glass] :is(.primary-button,.button-primary,.btn-primary,.button.primary,button[data-variant=primary],.secondary-button,.ghost-button):disabled {
  background:var(--lynn-surface-control-gradient) var(--lynn-color-disabled-surface);
  box-shadow:none;
}

/* Fields are wells: sunken, not raised. Focus keeps the shared ring and adds it on top of the well. */
html[data-lynn-theme][data-lynn-style=glass] :is([data-lynn-component=input-shell],[data-lynn-component=date-picker],[data-lynn-component=textarea],[data-lynn-component=select-trigger]):not(:focus-within,.is-open,[data-disabled=true]) {
  background:var(--lynn-surface-control-gradient) var(--lynn-color-surface-control);
  box-shadow:var(--lynn-shadow-field);
}
html[data-lynn-theme][data-lynn-style=glass] :is([data-lynn-component=input-shell],[data-lynn-component=date-picker],[data-lynn-component=textarea],[data-lynn-component=select-trigger]):is(:focus-within,.is-open) {
  background:var(--lynn-surface-control-gradient) var(--lynn-color-surface-control);
  box-shadow:var(--lynn-shadow-field),0 0 0 3px color-mix(in srgb,var(--lynn-color-focus) 22%,transparent);
}

/* Switch, checkbox and radio. */
html[data-lynn-theme][data-lynn-style=glass] [data-lynn-component=switch-track] {
  background:var(--lynn-surface-control-gradient) var(--lynn-color-surface-control);
  box-shadow:var(--lynn-shadow-field);
}
html[data-lynn-theme][data-lynn-style=glass] [data-lynn-component=switch-track]:after {
  background:color-mix(in srgb,#fff 92%,var(--lynn-color-surface-page));
  box-shadow:var(--lynn-shadow-thumb);
}
html[data-lynn-theme][data-lynn-style=glass] [data-lynn-component=switch]>input:checked+[data-lynn-component=switch-track] {
  background:var(--lynn-surface-action-gradient) var(--lynn-color-action-primary);
}
html[data-lynn-theme][data-lynn-style=glass] [data-lynn-component=check-control]>input:not(:checked,:indeterminate) {
  background:var(--lynn-surface-control-gradient) var(--lynn-color-surface-control);
  box-shadow:var(--lynn-shadow-field);
}
html[data-lynn-theme][data-lynn-style=glass] [data-lynn-component=check-control]>input:is(:checked,:indeterminate) {
  background:var(--lynn-surface-action-gradient) var(--lynn-color-action-primary);
  box-shadow:0 1px 2px color-mix(in srgb,var(--lynn-color-action-primary) 35%,transparent);
}

/* Tags, segmented control, pagination, table rows. Selected state is sunken. */
html[data-lynn-theme][data-lynn-style=glass] [data-lynn-component=tag] { box-shadow:var(--lynn-material-highlight); }
html[data-lynn-theme][data-lynn-style=glass] [data-lynn-component=toggle-group] {
  background:var(--lynn-surface-control-gradient) var(--lynn-color-surface-muted);
  box-shadow:var(--lynn-shadow-field);
}
html[data-lynn-theme][data-lynn-style=glass] [data-lynn-component=toggle-group] button:is([aria-pressed=true],[aria-checked=true]) {
  background:var(--lynn-surface-press) color-mix(in srgb,var(--lynn-color-action-primary) 10%,transparent);
  box-shadow:var(--lynn-shadow-press);
  font-weight:var(--lynn-font-weight-heading);
}
html[data-lynn-theme][data-lynn-style=glass] .lynn-pagination[data-lynn-component=pagination] .lynn-pagination-pages>[aria-current=page] {
  border-color:transparent;
  background:var(--lynn-surface-press) color-mix(in srgb,var(--lynn-color-action-primary) 12%,transparent);
  color:var(--lynn-color-action-primary-text);
  box-shadow:var(--lynn-shadow-press);
  font-weight:var(--lynn-font-weight-heading);
}
html[data-lynn-theme][data-lynn-style=glass] [data-lynn-component=data-table] tbody tr:hover { background:color-mix(in srgb,var(--lynn-color-action-primary) 7%,transparent); }

/* Runtime tokens are inline: !important is necessary for device accessibility overrides.
   Neutralize the filter token too, including surfaces inside the editor's shadow root. */
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) {
  html[data-lynn-theme][data-lynn-style=glass] {
    --lynn-color-surface-card-material:var(--lynn-color-surface-card)!important;
    --lynn-color-surface-menu:var(--lynn-color-surface-card)!important;
    --lynn-color-surface-popup:var(--lynn-color-surface-card)!important;
    --lynn-color-surface-control:var(--lynn-color-surface-raised)!important;
    --lynn-material-filter:none!important;
    --lynn-material-blur:0px!important;
  }
}
@media (prefers-reduced-transparency:reduce) {
  html[data-lynn-theme] {
    --lynn-color-surface-card-material:var(--lynn-color-surface-card)!important;
    --lynn-color-surface-menu:var(--lynn-color-surface-card)!important;
    --lynn-color-surface-popup:var(--lynn-color-surface-card)!important;
    --lynn-color-surface-control:var(--lynn-color-surface-raised)!important;
    --lynn-material-filter:none!important;
    --lynn-material-blur:0px!important;
    --lynn-surface-card-gradient:none!important;
    --lynn-surface-menu-gradient:none!important;
    --lynn-surface-control-gradient:none!important;
    --lynn-surface-action-gradient:none!important;
  }
}
@media (forced-colors:active) {
  html[data-lynn-theme] {
    --lynn-color-surface-card-material:Canvas!important;
    --lynn-color-surface-menu:Canvas!important;
    --lynn-color-surface-popup:Canvas!important;
    --lynn-color-surface-control:Canvas!important;
    --lynn-material-border:CanvasText!important;
    --lynn-material-edge:CanvasText!important;
    --lynn-material-filter:none!important;
    --lynn-material-blur:0px!important;
    --lynn-material-highlight:0 0 0 transparent!important;
    --lynn-shadow-panel:0 0 0 transparent!important;
    --lynn-shadow-floating:0 0 0 transparent!important;
    --lynn-material-panel-shadow:none!important;
    --lynn-material-floating-shadow:none!important;
    --lynn-shadow-control:none!important;
    --lynn-shadow-control-hover:none!important;
    --lynn-shadow-press:none!important;
    --lynn-shadow-field:none!important;
    --lynn-shadow-thumb:none!important;
    --lynn-shadow-action-press:none!important;
    --lynn-material-rim:none!important;
    --lynn-material-rim-pressed:none!important;
    --lynn-material-rim-action:none!important;
    --lynn-material-rim-action-pressed:none!important;
    --lynn-surface-press:none!important;
    --lynn-surface-action-gradient:none!important;
    --lynn-surface-action-pressed-gradient:none!important;
    --lynn-surface-card-gradient:none!important;
    --lynn-surface-menu-gradient:none!important;
    --lynn-surface-control-gradient:none!important;
  }
}

/* A field has one continuous 2px edge inside its own rounded border box.
   No glow, clipping outside the box, layout shift or nested input ring. Only
   visual shells own group focus; layout wrappers keep focus on their input.
   These narrowly scoped
   overrides must survive product CSS loaded after the shared theme. */
html[data-lynn-theme] :is(
  input:not([type=checkbox],[type=radio],[type=range],[type=color],[type=file],[type=hidden],[type=button],[type=submit],[type=reset],[type=image]),
  textarea,select,[contenteditable=true],[role=textbox],[role=combobox],.site-datetime-trigger,.system-datetime-trigger,.workspace-select-trigger
):focus:not(:disabled):not([aria-disabled=true]),
html[data-lynn-theme] :is(
  .search-field,.search-box,.search-control,.search-input,
  .ai-task-search,.working-directory-input,.product-workspace-picker,[data-lynn-focus=group]
):not(:has([data-lynn-focus=group])):has(input,textarea,[contenteditable=true],[role=combobox]):focus-within {
  border-color:var(--form-focus-color,var(--lynn-color-focus)) !important;
  outline:2px solid var(--form-focus-color,var(--lynn-color-focus)) !important;
  outline-offset:-2px !important;
  box-shadow:none !important;
}
html[data-lynn-theme] :is([aria-invalid=true],[data-invalid=true],:user-invalid) {
  --form-focus-color:var(--lynn-color-danger);
}
html[data-lynn-theme] :is(
  .search-field,.search-box,.search-control,.search-input,
  .ai-task-search,.working-directory-input,.product-workspace-picker,[data-lynn-focus=group]
):has([aria-invalid=true],[data-invalid=true],:user-invalid) {
  --form-focus-color:var(--lynn-color-danger);
}
/* Composite fields own the focus edge. Actions inside retain their keyboard ring. */
html[data-lynn-theme] :is(
  .search-field,.search-box,.search-control,.search-input,
  .ai-task-search,.working-directory-input,.product-workspace-picker,[data-lynn-focus=group]
):has(input,textarea,[contenteditable=true],[role=combobox]) :is(input,textarea,[contenteditable=true],[role=combobox]):focus:not(:disabled):not([aria-disabled=true]) {
  border-color:transparent !important;
  outline:0 !important;
  box-shadow:none !important;
}
@media (forced-colors:active) {
  html[data-lynn-theme] :is(input,textarea,select,[contenteditable=true],[role=textbox],[role=combobox],.site-datetime-trigger,.system-datetime-trigger,.workspace-select-trigger,.search-field,.search-box,.search-control,.search-input,.ai-task-search,.working-directory-input,.product-workspace-picker,[data-lynn-focus=group]) {
    --form-focus-color:Highlight !important;
  }
}
