/* Shared interface states. Component surfaces live in their original files. */
/* Login method panels use grid layouts; hidden always wins over those layouts. */
.auth-gate [hidden] { display:none!important; }
html { background:var(--luli-bg); }
body { background:var(--luli-bg); color:var(--luli-ink); }
::selection { background:var(--luli-primary); color:var(--luli-on); }
:where(input,textarea)::placeholder { color:var(--luli-muted); opacity:1; }
:where(input,textarea,select) { caret-color:var(--luli-focus); accent-color:var(--luli-focus); }
body :is(button,a,input,textarea,select,summary,[tabindex]):focus-visible {
  outline:2px solid var(--luli-focus); outline-offset:0;
  animation:luli-focus-reveal .2s cubic-bezier(.4,0,.2,1);
}
@keyframes luli-focus-reveal {
  from { outline-color:transparent; }
  to { outline-color:var(--luli-focus); }
}
/* A field owns one continuous contour. Do not add a separated outer ring.
   Inset emphasis grows smoothly from its existing 1px border. */
:is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="button"]):not([type="submit"]),textarea,select),
.talk,.chat-composer {
  transition:border-color .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1);
}
body :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="button"]):not([type="submit"]),textarea,select):focus,
body .talk:focus-within,body .chat-composer:focus-within {
  outline:none;
  border-color:var(--luli-focus);
  box-shadow:inset 0 0 0 1px var(--luli-focus),var(--luli-input-shadow);
}
/* Home and chat share one contour. Keep the same shadow list in both states
   so the inset colour interpolates instead of switching discretely. */
body .talk:focus-within,body .chat-composer:focus-within {
  border-color:transparent;
  box-shadow:inset 0 0 0 2px var(--luli-focus),var(--luli-input-shadow);
}
/* The composite owns text-entry focus; its buttons keep their keyboard mark. */
body :is(.talk,.chat-composer) :is(input,textarea):focus {
  outline:none; border-color:transparent; box-shadow:none;
}
@media (prefers-reduced-motion:reduce) {
  body :is(button,a,input,textarea,select,summary,[tabindex]):focus-visible { animation:none; }
  body :is(input,textarea,select,.talk,.chat-composer) { transition:none; }
}
.talk:not(:focus-within),.chat-composer:not(:focus-within),.settings-form input:not(:focus),.settings-form textarea:not(:focus),.settings-form select:not(:focus),
.auth-form input:not(:focus),.workspace-dialog input:not(:focus),.workspace-dialog textarea:not(:focus) {
  box-shadow:var(--luli-input-shadow);
}
/* Composite entry rests on its surface and shadow, without a persistent emphasis contour. */
body .talk:not(:focus-within),body .chat-composer:not(:focus-within) {
  border-color:transparent;
  box-shadow:inset 0 0 0 2px transparent,var(--luli-input-shadow);
}
/* Specific button classes retain their geometry and motion. */
body :is(.auth-submit,.send,.voice-trigger,.workspace-primary,.rl-button.primary,.action.primary,.op-button.primary,.resume-1p0-actions button.primary,.job-1p0 button.primary,.resume-editor-save button.primary,.export-action),
body .settings-actions button {
  background:var(--luli-primary); color:var(--luli-on); border-color:var(--luli-edge);
}
body :is(.auth-submit,.send,.voice-trigger,.workspace-primary,.rl-button.primary,.action.primary,.op-button.primary,.resume-1p0-actions button.primary,.job-1p0 button.primary,.resume-editor-save button.primary,.export-action):hover,
body .settings-actions button:hover { background:var(--luli-hover); filter:none; }
body :is(.auth-submit,.send,.voice-trigger,.workspace-primary,.rl-button.primary,.action.primary,.op-button.primary,.resume-1p0-actions button.primary,.job-1p0 button.primary,.resume-editor-save button.primary,.export-action):active,
body .settings-actions button:active { background:var(--luli-pressed); }
body :is(.workspace-button,.rl-button:not(.primary),.secondary-button,.chip,.auth-cta,.rl-revision-actions button,.rl-revision-close) {
  background:var(--luli-soft); color:var(--luli-on); border-color:var(--luli-edge);
}
body :is(.workspace-button,.rl-button:not(.primary),.secondary-button,.chip,.auth-cta,.rl-revision-actions button,.rl-revision-close):hover { background:var(--luli-primary); }
body :is(.workspace-button,.rl-button:not(.primary),.secondary-button,.chip,.auth-cta,.rl-revision-actions button,.rl-revision-close):active { background:var(--luli-hover); }
body :is(.voice-trigger .voice-copy strong,.voice-trigger .voice-copy small,.action.primary span) { color:var(--luli-on); }
body :is(a,.link):not(.rl-sheet *,.rl-mini-paper *,.resume-paper *,.resume-paper-page *) { color:var(--luli-link); }
body :is(button,input,select,textarea):disabled,
body [aria-disabled="true"] { color:var(--luli-muted); opacity:1; cursor:not-allowed; }
body button:disabled { background:var(--luli-soft); }
/* aria-busy announces asynchronous work; it must not change an entire pane to the OS busy cursor. */
/* Selection keeps the existing underline, weight, icon or shape. */
input[type="checkbox"],input[type="radio"] { accent-color:var(--luli-focus); }
.form-error,.auth-status.error { color:var(--luli-error); }
.form-error:not(:empty) { background:var(--luli-error-bg); }
/* Paper owns its colour context, including old document-template variables.
   User rich-text colours and document accent settings remain untouched. */
.rl-sheet,.rl-mini-paper,.resume-paper,.resume-paper-page {
  color-scheme:light; --ink:#2f2a25; --muted:#756b62; --deep:#765239;
  --green:#a9784d; --line:#e5ddd4; --surface:#fffdf9; --surface-raised:#ffffff;
  color:#222;
}
@media (prefers-contrast:more) {
  :is(button,input,textarea,select,summary) { border-color:var(--luli-muted); }
}
@media (forced-colors:active) {
  :root, html[data-theme="dark"] { --luli-structure:CanvasText; --luli-row:CanvasText; --luli-tool:CanvasText; --luli-container:CanvasText; --luli-control:ButtonText; --luli-selected:Highlight; --luli-focus:Highlight; --luli-content:CanvasText; --luli-border:CanvasText; --luli-edge:ButtonText; --line:CanvasText; --luli-link:LinkText; }
  :is(button,input,textarea,select,summary) { border-color:ButtonText; }
  body .talk:not(:focus-within),body .chat-composer:not(:focus-within) { border-color:ButtonText; outline:1px solid ButtonText; outline-offset:-1px; }
  :is(button,a,input,textarea,select,summary,[tabindex]):focus-visible,
  body :is(input,textarea,select):focus,
  body .talk:focus-within,body .chat-composer:focus-within {
    outline:2px solid Highlight; outline-offset:-2px; box-shadow:none;
  }
  body :is(.talk,.chat-composer) :is(input,textarea):focus {
    outline:none;
  }
  [aria-selected="true"],[aria-pressed="true"],.account-menu-theme button.active {
    outline:2px solid Highlight; outline-offset:0;
  }
}

/* Selected location retains a visible mark independent of decorative lines. */
.career-reading-surface .career-profile-nav button.active { box-shadow:inset 0 -2px var(--luli-selected); }
.rl-format-toolbar .ql-picker-label,.rl-format-toolbar button { color:var(--luli-on); }
.rl-format-toolbar .ql-stroke { stroke:currentColor; }
.rl-format-toolbar .ql-fill { fill:currentColor; }
/* Quill's vendor blue must not leak into the interface toolbar or picker. */
.rl-format-toolbar.ql-snow :is(button:hover,button:focus,button.ql-active,.ql-picker-label:hover,.ql-picker-label.ql-active,.ql-picker-item:hover,.ql-picker-item.ql-selected) { color:var(--luli-selected); }
.rl-format-toolbar.ql-snow :is(button:hover,button:focus,button.ql-active,.ql-picker-label:hover,.ql-picker-label.ql-active,.ql-picker-item:hover,.ql-picker-item.ql-selected) .ql-stroke { stroke:var(--luli-selected); }
.rl-format-toolbar.ql-snow :is(button:hover,button:focus,button.ql-active,.ql-picker-label:hover,.ql-picker-label.ql-active,.ql-picker-item:hover,.ql-picker-item.ql-selected) .ql-fill { fill:var(--luli-selected); }
.rl-format-toolbar.ql-snow :is(button.ql-active,.ql-picker-label.ql-active,.ql-picker-item.ql-selected) { box-shadow:inset 0 -2px var(--luli-selected); }
.rl-format-toolbar.ql-snow .ql-picker-options { border-color:var(--luli-container); box-shadow:var(--luli-input-shadow); color:var(--luli-ink); }

/* Filled selection uses one shared state scale. Underline-only navigation,
   recording controls, document swatches and user content are not filled tabs. */
html body :is(.steps span.on,.account-menu-theme button.active,.settings-nav button.active,
  .workspace-pane-button[aria-pressed="true"],.mkt-demo-steps button.is-active,
  .career-profile-toolbar .career-tab.active,.career-profile-nav button.active:not(.career-reading-surface *),
  .rl-view-switch button[aria-pressed="true"],.rl-page-size-option[aria-pressed="true"],
  .rl-page-buttons .rl-page-number[aria-current="page"],.opportunity-view-switch .icon[data-active="true"]) {
  background:var(--luli-selected-bg);
}
html body :is(.steps span.on,.account-menu-theme button.active,.settings-nav button.active,
  .workspace-pane-button[aria-pressed="true"],.mkt-demo-steps button.is-active,
  .career-profile-toolbar .career-tab.active,.career-profile-nav button.active:not(.career-reading-surface *),
  .rl-view-switch button[aria-pressed="true"],.rl-page-size-option[aria-pressed="true"],
  .rl-page-buttons .rl-page-number[aria-current="page"],.opportunity-view-switch .icon[data-active="true"]):hover {
  background:var(--luli-selected-hover);
}
html body :is(.steps span.on,.account-menu-theme button.active,.settings-nav button.active,
  .workspace-pane-button[aria-pressed="true"],.mkt-demo-steps button.is-active,
  .career-profile-toolbar .career-tab.active,.career-profile-nav button.active:not(.career-reading-surface *),
  .rl-view-switch button[aria-pressed="true"],.rl-page-size-option[aria-pressed="true"],
  .rl-page-buttons .rl-page-number[aria-current="page"],.opportunity-view-switch .icon[data-active="true"]):active {
  background:var(--luli-selected-pressed);
}
