/* Loven technical-linen theme.
 * The homepage artwork, logo assets, and drawing canvases stay unchanged.
 */

@font-face {
  font-family: "Loven Classical Woodblock Display";
  src: url("/assets/fonts/Loven-Classical-Woodblock-Display.woff2?v=20260808-woodblock-2") format("woff2");
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

html[data-loven-theme="linen"] {
  --loven-display-font: "Loven Classical Woodblock Display", var(--hand-cn, "MLDA Hand CN", "HanziPen SC", "Hannotate SC", "Kaiti SC", "STKaiti", "Songti SC", cursive);
  --fabric-canvas: #eeece7;
  --fabric-surface: rgba(250, 249, 245, 0.95);
  --fabric-surface-soft: rgba(249, 248, 244, 0.9);
  --fabric-surface-strong: rgba(252, 251, 248, 0.98);
  --fabric-control: rgba(252, 251, 248, 0.94);
  --fabric-control-hover: #fffefd;
  --fabric-button: rgba(239, 237, 231, 0.96);
  --fabric-ink: #2f3230;
  --fabric-muted: #666b66;
  --fabric-line: rgba(47, 50, 48, 0.16);
  --fabric-line-strong: rgba(47, 50, 48, 0.26);
  --fabric-stitch: rgba(47, 50, 48, 0.14);
  --fabric-accent: #91704b;
  --fabric-accent-dark: #6a4d31;
  --fabric-sage: #7e8a81;
  --fabric-denim: #566368;
  --fabric-denim-dark: #3f494d;
  --fabric-danger: #914b40;
  --fabric-focus: #6a4d31;
  --fabric-shadow-sm:
    0 1px 2px rgba(31, 29, 26, 0.06),
    0 8px 20px -14px rgba(31, 29, 26, 0.25);
  --fabric-shadow-md:
    0 2px 4px rgba(31, 29, 26, 0.06),
    0 18px 42px -22px rgba(31, 29, 26, 0.3);
  --fabric-shadow-hover:
    0 6px 12px -8px rgba(31, 29, 26, 0.2),
    0 22px 38px -20px rgba(31, 29, 26, 0.34);
  --fabric-shadow-pressed:
    inset 0 2px 4px rgba(31, 29, 26, 0.1),
    0 2px 4px rgba(31, 29, 26, 0.06);
  --fabric-shadow-modal: 0 28px 80px -30px rgba(20, 19, 17, 0.44);
  --fabric-noise: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.018'/%3E%3C/svg%3E");
  --fabric-warp:
    repeating-linear-gradient(
      90deg,
      rgba(44, 48, 46, 0.011) 0 1px,
      transparent 1px 4px
    );
  --fabric-weft:
    repeating-linear-gradient(
      0deg,
      rgba(44, 48, 46, 0.008) 0 1px,
      transparent 1px 5px
    );
  --fabric-sheen:
    linear-gradient(145deg, rgba(255, 255, 255, 0.32), transparent 58%);
}

html[data-loven-theme="linen"] body[data-loven-surface="app"]:not(.home-mode),
html[data-loven-theme="linen"] body[data-loven-surface="crm"] {
  --bg: var(--fabric-canvas);
  --paper: #f2f0ea;
  --paper-strong: #faf9f5;
  --ink: var(--fabric-ink);
  --muted: var(--fabric-muted);
  --line: var(--fabric-line);
  --panel: var(--fabric-surface);
  --accent: var(--fabric-accent);
  --accent-dark: var(--fabric-accent-dark);
  --accent-deep: var(--fabric-accent-dark);
  --teal: var(--fabric-denim);
  --shadow: var(--fabric-shadow-md);
  color: var(--fabric-ink);
}

html[data-loven-theme="linen"] body[data-loven-surface="app"]:not(.home-mode),
html[data-loven-theme="linen"] body[data-loven-surface="crm"] {
  background-color: var(--fabric-canvas);
  background-image:
    var(--fabric-noise),
    var(--fabric-warp),
    var(--fabric-weft),
    radial-gradient(circle at 84% 8%, rgba(126, 138, 129, 0.1), transparent 28rem);
  background-size: 180px 180px, auto, auto, auto;
}

html[data-loven-theme="linen"] body[data-loven-surface="app"]:not(.home-mode)::before,
html[data-loven-theme="linen"] body[data-loven-surface="crm"]::before {
  display: none;
}

/* Navigation and page rails */
html[data-loven-theme="linen"] body[data-loven-surface="app"] .topbar,
html[data-loven-theme="linen"] body[data-loven-surface="crm"] .loven-global-bar {
  border-color: var(--fabric-line);
  background-color: rgba(248, 247, 243, 0.96);
  background-image: var(--fabric-sheen);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  box-shadow: var(--fabric-shadow-sm);
}

html[data-loven-theme="linen"] body[data-loven-surface="app"].home-mode .topbar {
  border: 0;
  background: transparent;
  box-shadow: none;
}

html[data-loven-theme="linen"] body[data-loven-surface="crm"] .crm-sidebar {
  border-color: var(--fabric-line);
  background-color: rgba(241, 239, 233, 0.96);
  background-image:
    var(--fabric-noise),
    linear-gradient(150deg, rgba(255, 255, 255, 0.28), transparent 56%);
  background-size: 180px 180px, auto;
  box-shadow: 12px 0 32px -24px rgba(31, 29, 26, 0.3);
}

/* Large textile surfaces */
html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .flow-main,
  .flow-side,
  .admin-card,
  .auth-dialog,
  .upload-card,
  .preference-placeholder,
  .generation-progress-card,
  .panel,
  .canvas-panel,
  .illuminance-panel,
  .fixture-schedule,
  .workbench-crm-panel,
  .workbench-crm-card,
  .record-panel,
  .empty-state,
  dialog,
  .crm-confirm-dialog
) {
  border-color: var(--fabric-line);
  background-color: var(--fabric-surface);
  background-image: var(--fabric-sheen);
  box-shadow: var(--fabric-shadow-md);
}

html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .flow-main,
  .flow-side,
  .admin-card,
  .upload-card,
  .preference-placeholder,
  .generation-progress-card,
  .auth-dialog,
  .panel,
  .canvas-panel,
  .project-manager-item,
  .workbench-crm-card,
  .record-panel,
  .empty-state,
  dialog,
  .crm-confirm-dialog
) {
  outline: 1px dashed var(--fabric-stitch);
  outline-offset: -6px;
}

html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .upload-card,
  .generation-progress-card,
  .auth-dialog,
  .record-panel,
  .empty-state,
  .crm-confirm-dialog
) {
  background-image:
    var(--fabric-sheen),
    var(--fabric-warp),
    var(--fabric-weft);
}

html[data-loven-theme="linen"] body[data-loven-surface="app"] .home-card .loven-display-label,
html[data-loven-theme="linen"] body[data-loven-surface] .loven-display-title {
  font-family: var(--loven-display-font);
  font-weight: 400;
  font-synthesis: none;
}

html[data-loven-theme="linen"] body[data-loven-surface="app"] .home-card .loven-display-label {
  letter-spacing: 0.055em;
}

html[data-loven-theme="linen"] body[data-loven-surface] .loven-display-title {
  letter-spacing: 0.065em;
}

/* Dense rows stay calm so their text and status colors remain easy to scan. */
html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .project-manager-item,
  .admin-user-item,
  .recognized-space-item,
  .recognized-space-editor,
  .fixture-parameter-editor,
  .list-item,
  .debug-block,
  .ai-semantic-debug,
  .project-item
) {
  border-color: var(--fabric-line);
  background-color: var(--fabric-surface-soft);
  box-shadow: var(--fabric-shadow-sm);
}

html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .project-manager-item,
  .admin-user-item,
  .recognized-space-item,
  .project-item
):hover {
  border-color: var(--fabric-line-strong);
  background-color: var(--fabric-surface-strong);
}

html[data-loven-theme="linen"] body[data-loven-surface="crm"] .project-item.active {
  border-color: rgba(126, 138, 129, 0.58);
  background: #f7f5ef;
  box-shadow:
    inset 3px 0 var(--fabric-sage),
    var(--fabric-shadow-sm);
}

html[data-loven-theme="linen"] body[data-loven-surface] .fixture-schedule-row {
  border-color: var(--fabric-line);
  background: transparent;
  box-shadow: none;
}

html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .chat-message,
  .workbench-crm-message,
  .project-link-state
) {
  border-color: var(--fabric-line);
  background-color: #f8f7f3;
  box-shadow: none;
}

html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .chat-message.user,
  .workbench-crm-message.user
) {
  border-color: rgba(145, 112, 75, 0.28);
  background-color: #ece7de;
}

html[data-loven-theme="linen"] body[data-loven-surface] .project-link-state.linked {
  border-color: #aeb9b0;
  background-color: #e7ece7;
  color: #445148;
}

html[data-loven-theme="linen"] body[data-loven-surface] .project-manager-item.room-planning-active {
  border-color: rgba(145, 112, 75, 0.68);
  background:
    linear-gradient(100deg, rgba(247, 241, 228, 0.98), rgba(252, 250, 245, 0.96));
  box-shadow: 0 12px 28px rgba(80, 62, 42, 0.12);
}

html[data-loven-theme="linen"] body[data-loven-surface] .recognized-space-item.active {
  border-color: var(--fabric-accent);
  background-color: #fbf8f1;
  box-shadow:
    inset 3px 0 var(--fabric-accent),
    var(--fabric-shadow-sm);
}

html[data-loven-theme="linen"] body[data-loven-surface] .recognized-space-item.needs-review {
  border-color: rgba(145, 75, 64, 0.5);
  background-color: #fbf2ed;
  box-shadow:
    inset 3px 0 var(--fabric-danger),
    var(--fabric-shadow-sm);
}

html[data-loven-theme="linen"] body[data-loven-surface] .list-item-selected {
  border-color: var(--fabric-denim);
  box-shadow:
    0 0 0 1px rgba(86, 99, 104, 0.2),
    var(--fabric-shadow-sm);
}

/* Fabric labels and buttons */
html[data-loven-theme="linen"] body[data-loven-surface] button {
  border-color: var(--fabric-line);
  border-radius: 6px;
  background-color: var(--fabric-button);
  background-image: linear-gradient(145deg, rgba(255, 255, 255, 0.34), transparent 62%);
  color: var(--fabric-ink);
  box-shadow:
    inset 0 1px rgba(255, 255, 255, 0.62),
    var(--fabric-shadow-sm);
  transition:
    transform 220ms ease,
    border-color 200ms ease,
    background-color 200ms ease,
    box-shadow 240ms ease,
    color 180ms ease;
}

html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .primary-flow-button,
  .button-primary
) {
  border-color: rgba(63, 73, 77, 0.8);
  background-color: var(--fabric-denim);
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.07), transparent),
    repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.035) 0 1px, transparent 1px 4px);
  color: #fffdf8;
  box-shadow:
    inset 0 1px rgba(255, 255, 255, 0.18),
    0 10px 22px -14px rgba(39, 48, 52, 0.56);
}

html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .danger-button,
  .button-danger,
  .recognized-space-delete,
  .secondary-danger
) {
  border-color: rgba(145, 75, 64, 0.42);
  background-color: rgba(145, 75, 64, 0.1);
  background-image: none;
  color: #773b33;
}

html[data-loven-theme="linen"] body[data-loven-surface] .secondary-flow-button {
  border-color: var(--fabric-line);
  background-color: #f8f7f3;
  background-image: none;
  color: var(--fabric-muted);
}

html[data-loven-theme="linen"] body[data-loven-surface="crm"] :is(
  a.button,
  summary.button
) {
  border-radius: 6px;
  background-image: var(--fabric-sheen);
  box-shadow:
    inset 0 1px rgba(255, 255, 255, 0.62),
    var(--fabric-shadow-sm);
  transition:
    transform 220ms ease,
    border-color 200ms ease,
    background-color 200ms ease,
    box-shadow 240ms ease,
    color 180ms ease;
}

html[data-loven-theme="linen"] body[data-loven-surface] .record-button {
  border-radius: 50%;
  border-color: var(--fabric-denim-dark);
  background-color: var(--fabric-denim);
  background-image:
    repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.035) 0 1px, transparent 1px 4px);
  color: #fffdf8;
  box-shadow:
    0 0 0 5px rgba(86, 99, 104, 0.12),
    var(--fabric-shadow-md);
}

html[data-loven-theme="linen"] body[data-loven-surface] .record-button.recording {
  border-color: #7e3f37;
  background-color: var(--fabric-danger);
}

html[data-loven-theme="linen"] body[data-loven-surface] .brand-button {
  border: 0;
  background: transparent;
  box-shadow: none;
}

@media (hover: hover) and (pointer: fine) {
  html[data-loven-theme="linen"] body[data-loven-surface] button:hover {
    border-color: var(--fabric-line-strong);
    background-color: var(--fabric-control-hover);
    color: var(--fabric-accent-dark);
    box-shadow: var(--fabric-shadow-hover);
    transform: translateY(-2px);
  }

  html[data-loven-theme="linen"] body[data-loven-surface] :is(
    .primary-flow-button,
    .button-primary
  ):hover {
    border-color: var(--fabric-denim-dark);
    background-color: var(--fabric-denim-dark);
    color: #fff;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] :is(
    .danger-button,
    .button-danger,
    .recognized-space-delete,
    .secondary-danger
  ):hover {
    border-color: rgba(145, 75, 64, 0.62);
    background-color: rgba(145, 75, 64, 0.16);
    color: #67322b;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] .secondary-flow-button:hover {
    border-color: var(--fabric-line-strong);
    background-color: var(--fabric-control-hover);
    color: var(--fabric-ink);
  }

  html[data-loven-theme="linen"] body[data-loven-surface="crm"] :is(
    a.button,
    summary.button
  ):hover {
    box-shadow: var(--fabric-shadow-hover);
    transform: translateY(-2px);
  }

  html[data-loven-theme="linen"] body[data-loven-surface] .brand-button:hover {
    background: transparent;
    box-shadow: none;
    transform: none;
  }
}

html[data-loven-theme="linen"] body[data-loven-surface] button:active {
  box-shadow: var(--fabric-shadow-pressed);
  transform: translateY(1px);
  transition-duration: 120ms;
}

html[data-loven-theme="linen"] body[data-loven-surface="crm"] :is(
  a.button,
  summary.button
):active {
  box-shadow: var(--fabric-shadow-pressed);
  transform: translateY(1px);
  transition-duration: 120ms;
}

html[data-loven-theme="linen"] body[data-loven-surface] button:focus-visible,
html[data-loven-theme="linen"] body[data-loven-surface] :is(
  input,
  select,
  textarea,
  summary,
  a
):focus-visible {
  outline: 2px solid var(--fabric-focus);
  outline-offset: 2px;
}

html[data-loven-theme="linen"] body[data-loven-surface] button:disabled {
  box-shadow: none;
  cursor: not-allowed;
  opacity: 0.52;
  transform: none;
}

/* Semantic states stay distinct from the neutral textile control surface. */
html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .manual-room-button.active,
  .space-recognition-header button.active,
  .plan-tabs button.active,
  .tabs button.active
) {
  border-color: rgba(145, 112, 75, 0.58);
  background-color: #f6f1e8;
  background-image: none;
  color: var(--fabric-accent-dark);
  box-shadow:
    inset 0 -2px var(--fabric-accent),
    var(--fabric-shadow-sm);
}

html[data-loven-theme="linen"] body[data-loven-surface] .manual-room-button.recognizing,
html[data-loven-theme="linen"] body[data-loven-surface] .manual-room-button.recognizing:disabled {
  border-color: var(--fabric-denim-dark);
  background-color: var(--fabric-denim);
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.06), transparent),
    repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.035) 0 1px, transparent 1px 4px);
  color: #fffdf8;
  box-shadow:
    inset 0 1px rgba(255, 255, 255, 0.16),
    0 10px 22px -14px rgba(39, 48, 52, 0.56);
  cursor: progress;
  opacity: 1;
}

@media (hover: hover) and (pointer: fine) {
  html[data-loven-theme="linen"] body[data-loven-surface] .record-button:hover {
    border-color: var(--fabric-denim-dark);
    background-color: var(--fabric-denim-dark);
    background-image:
      repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.035) 0 1px, transparent 1px 4px);
    color: #fffdf8;
    box-shadow:
      0 0 0 5px rgba(86, 99, 104, 0.14),
      var(--fabric-shadow-hover);
  }

  html[data-loven-theme="linen"] body[data-loven-surface] .record-button.recording:hover {
    border-color: #7e3f37;
    background-color: #7e3f37;
  }
}

html[data-loven-theme="linen"] body[data-loven-surface] .record-button:active,
html[data-loven-theme="linen"] body[data-loven-surface] .record-button.recording:active {
  box-shadow: var(--fabric-shadow-pressed);
  transform: translateY(1px);
}

/* Clean canvas inputs: tactile edge, no texture behind small text. */
html[data-loven-theme="linen"] body[data-loven-surface] :is(
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]),
  select,
  textarea
) {
  border-color: var(--fabric-line);
  border-radius: 6px;
  background: var(--fabric-control);
  color: var(--fabric-ink);
  box-shadow:
    inset 0 1px 2px rgba(31, 29, 26, 0.06),
    0 1px rgba(255, 255, 255, 0.52);
}

html[data-loven-theme="linen"] body[data-loven-surface] :is(
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]),
  select,
  textarea
):focus:not(:focus-visible) {
  border-color: rgba(145, 112, 75, 0.62);
  outline: 2px solid rgba(145, 112, 75, 0.16);
}

/* Menus and overlays use a denser canvas so floating content stays legible. */
html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .project-options-menu,
  .admin-user-options,
  .workbench-more-options-menu,
  .recording-options-menu
) {
  border-color: var(--fabric-line);
  background-color: var(--fabric-surface-strong);
  background-image: var(--fabric-sheen);
  box-shadow: var(--fabric-shadow-md);
}

html[data-loven-theme="linen"] body[data-loven-surface] :is(
  .auth-modal,
  .crm-modal
) {
  background: rgba(30, 30, 28, 0.34);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}

html[data-loven-theme="linen"] body[data-loven-surface] dialog {
  box-shadow: var(--fabric-shadow-modal);
}

html[data-loven-theme="linen"] body[data-loven-surface] dialog::backdrop {
  background: rgba(30, 30, 28, 0.34);
}

/* Do not place textile noise on plans, illuminance maps, or data graphics. */
html[data-loven-theme="linen"] body[data-loven-surface] :is(
  #uploadPlanSvg,
  #planSvg,
  #illuminanceSvg,
  .upload-plan-stage
) {
  background-color: #fbfaf7;
  background-image: none;
}

@media (prefers-reduced-motion: reduce) {
  html[data-loven-theme="linen"] body[data-loven-surface] *,
  html[data-loven-theme="linen"] body[data-loven-surface] *::before,
  html[data-loven-theme="linen"] body[data-loven-surface] *::after {
    scroll-behavior: auto !important;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] button,
  html[data-loven-theme="linen"] body[data-loven-surface="crm"] :is(a.button, summary.button),
  html[data-loven-theme="linen"] body[data-loven-surface] :is(
    .project-manager-item,
    .admin-user-item,
    .recognized-space-item,
    .fixture-schedule-row,
    .project-item
  ) {
    transition-duration: 0.01ms;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] button,
  html[data-loven-theme="linen"] body[data-loven-surface] button:hover,
  html[data-loven-theme="linen"] body[data-loven-surface] button:active,
  html[data-loven-theme="linen"] body[data-loven-surface="crm"] :is(a.button, summary.button),
  html[data-loven-theme="linen"] body[data-loven-surface="crm"] :is(a.button, summary.button):hover,
  html[data-loven-theme="linen"] body[data-loven-surface="crm"] :is(a.button, summary.button):active {
    transform: none;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] :is(
    .generation-spinner,
    .record-button.recording
  ),
  html[data-loven-theme="linen"] body[data-loven-surface] .project-room-planning-status.active::before {
    animation: none;
  }
}

@media (prefers-reduced-transparency: reduce) {
  html[data-loven-theme="linen"] {
    --fabric-surface: #faf9f5;
    --fabric-surface-soft: #f8f7f3;
    --fabric-surface-strong: #fcfbf8;
    --fabric-control: #fcfbf8;
    --fabric-button: #f8f7f3;
  }

  html[data-loven-theme="linen"] body[data-loven-surface="app"]:not(.home-mode) .topbar,
  html[data-loven-theme="linen"] body[data-loven-surface="crm"] .loven-global-bar {
    background-color: #f8f7f3;
    background-image: none;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] :is(
    .crm-sidebar,
    .flow-main,
    .flow-side,
    .admin-card,
    .auth-dialog,
    .upload-card,
    .preference-placeholder,
    .generation-progress-card,
    .panel,
    .canvas-panel,
    .illuminance-panel,
    .fixture-schedule,
    .workbench-crm-panel,
    .workbench-crm-card,
    .record-panel,
    .empty-state,
    .crm-confirm-dialog,
    .project-manager-item,
    .admin-user-item,
    .recognized-space-item,
    .recognized-space-editor,
    .fixture-schedule-row,
    .fixture-parameter-editor,
    .list-item,
    .project-item,
    .chat-message,
    .workbench-crm-message,
    .project-link-state,
    dialog
  ) {
    background-color: #f8f7f3;
    background-image: none;
  }

  html[data-loven-theme="linen"] body[data-loven-surface="crm"] :is(
    a.button,
    summary.button
  ):not(.button-primary):not(.button-danger) {
    background-color: #f8f7f3;
  }
}

@media (prefers-contrast: more) {
  html[data-loven-theme="linen"] body[data-loven-surface]:not(.home-mode) {
    background: #fff;
  }

  html[data-loven-theme="linen"] body[data-loven-surface="app"]:not(.home-mode) .topbar,
  html[data-loven-theme="linen"] body[data-loven-surface="crm"] .loven-global-bar {
    border-color: #242624;
    background-color: #fff;
    background-image: none;
    color: #111;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] :is(
    .crm-sidebar,
    .flow-main,
    .flow-side,
    .admin-card,
    .auth-dialog,
    .upload-card,
    .preference-placeholder,
    .generation-progress-card,
    .panel,
    .canvas-panel,
    .illuminance-panel,
    .fixture-schedule,
    .workbench-crm-panel,
    .workbench-crm-card,
    .record-panel,
    .empty-state,
    .crm-confirm-dialog,
    .project-manager-item,
    .admin-user-item,
    .recognized-space-item,
    .recognized-space-editor,
    .fixture-parameter-editor,
    .list-item,
    .debug-block,
    .ai-semantic-debug,
    .project-item,
    .chat-message,
    .workbench-crm-message,
    .project-link-state,
    .project-options-menu,
    .admin-user-options,
    .workbench-more-options-menu,
    .recording-options-menu,
    dialog,
    button:not(.brand-button),
    a.button,
    summary.button,
    input,
    select,
    textarea
  ) {
    border-color: #242624;
    background-color: #fff;
    background-image: none;
    color: #111;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] :is(
    .flow-main,
    .flow-side,
    .admin-card,
    .upload-card,
    .preference-placeholder,
    .generation-progress-card,
    .auth-dialog,
    .panel,
    .canvas-panel,
    .project-manager-item,
    .workbench-crm-card,
    .record-panel,
    .empty-state,
    dialog,
    .crm-confirm-dialog
  ) {
    outline-color: #242624;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] .brand-button,
  html[data-loven-theme="linen"] body[data-loven-surface] .brand-button:hover {
    border: 0;
    background: transparent;
    box-shadow: none;
    color: inherit;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] :is(
    button.primary-flow-button,
    button.button-primary,
    button.record-button,
    a.button.button-primary,
    summary.button.button-primary
  ) {
    border-color: #111;
    background-color: #111;
    background-image: none;
    color: #fff;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] :is(
    button.danger-button,
    button.button-danger,
    button.recognized-space-delete,
    button.secondary-danger,
    button.record-button.recording,
    a.button.button-danger,
    summary.button.button-danger
  ) {
    border-color: #7a1f18;
    background-color: #fff;
    background-image: none;
    color: #7a1f18;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] :is(
    .manual-room-button.active,
    .space-recognition-header button.active,
    .plan-tabs button.active,
    .tabs button.active,
    .recognized-space-item.active,
    .list-item-selected,
    .project-item.active
  ) {
    border-color: #111;
    box-shadow: inset 0 -3px #111;
  }

  html[data-loven-theme="linen"] body[data-loven-surface] button:focus-visible,
  html[data-loven-theme="linen"] body[data-loven-surface] :is(
    input,
    select,
    textarea,
    summary,
    a
  ):focus-visible {
    outline: 3px solid #111;
    outline-offset: 2px;
  }
}
