/* Shared finishing layer. Keep the established brand, content and layouts. */
:root {
  --polish-ease: cubic-bezier(.2, .7, .2, 1);
  --polish-focus: #08715b;
  --polish-focus-halo: rgba(12, 118, 95, .14);
  --polish-surface: #fbfaf6;
  --polish-text: #34443f;
  --polish-border: rgba(12, 118, 95, .2);
}

html[data-theme="dark"] {
  --polish-focus: #71e7c9;
  --polish-focus-halo: rgba(113, 231, 201, .16);
  --polish-surface: #0b2820;
  --polish-text: #d4e9e0;
  --polish-border: rgba(113, 231, 201, .26);
  color-scheme: dark;
}

/* A consistent keyboard treatment, including controls inside clipped cards. */
:where(a, button, summary, input, textarea, select, [tabindex]):focus-visible {
  outline: 2px solid var(--polish-focus);
  outline-offset: 3px;
}

:where(a, button, summary) {
  -webkit-tap-highlight-color: rgba(81, 217, 182, .18);
  touch-action: manipulation;
}

:is(.primary-button, .secondary-button, .mini-button, .pl-button,
    .premium-auth-submit, .premium-nav-cta, .premium-login, .premium-logout,
    .theme-toggle, .premium-menu-toggle, .suggestion-chip, .balance-chip) {
  transition: transform 180ms var(--polish-ease),
    box-shadow 180ms var(--polish-ease), background-color 180ms ease,
    border-color 180ms ease, color 180ms ease;
}

:is(.primary-button, .secondary-button, .mini-button, .pl-button,
    .premium-auth-submit, .premium-nav-cta):not(:disabled):not([aria-disabled="true"]):active {
  transform: translateY(1px);
  box-shadow: 0 3px 10px rgba(4, 29, 24, .1);
}

:is(.primary-button, .secondary-button, .mini-button, .premium-auth-submit,
    .premium-logout):is(:disabled, [aria-disabled="true"]) {
  cursor: not-allowed;
  opacity: .64;
  transform: none;
}

.premium-nav-links a,
.premium-footer-links a,
.premium-language-switch a,
.premium-auth-back,
.premium-auth-policy-links a,
.pl-text-link {
  text-underline-offset: 4px;
  text-decoration-thickness: 1px;
  transition: color 180ms ease, background-color 180ms ease;
}

.premium-nav-links a:focus-visible::after { transform: scaleX(1); }

@media (hover: hover) and (pointer: fine) {
  .premium-nav-links a:hover,
  .premium-footer-links a:hover { color: var(--polish-focus); }
  .premium-language-switch a:not([aria-current]):hover {
    background: var(--polish-focus-halo);
  }
  .pl-faq-list summary:hover { color: var(--polish-focus); }
  .pl-faq-list summary:hover span {
    border-color: var(--polish-border);
    box-shadow: 0 3px 12px rgba(4, 29, 24, .06);
  }
}

input:not([type="checkbox"]):not([type="radio"]):not([type="file"]),
textarea,
select {
  transition: border-color 180ms ease, box-shadow 180ms ease,
    background-color 180ms ease;
}

input:not([type="checkbox"]):not([type="radio"]):not([type="file"]):focus,
textarea:focus,
select:focus,
.premium-auth-field input:focus,
.premium-auth-field select:focus {
  border-color: var(--polish-focus);
  box-shadow: 0 0 0 4px var(--polish-focus-halo);
}

/* File inputs are transparent, so their visible label carries focus. */
.drop-zone:focus-within,
.compact-file:focus-within {
  outline: 2px solid var(--polish-focus);
  outline-offset: 4px;
  border-color: var(--polish-focus);
  box-shadow: 0 0 0 6px var(--polish-focus-halo);
}

.drop-zone > :not(input),
.compact-file > :not(input) { pointer-events: none; }

.drop-zone.has-selected-file,
.compact-file.has-selected-file {
  border-style: solid;
  border-color: var(--polish-focus);
  background-color: rgba(81, 217, 182, .12);
  box-shadow: inset 0 0 0 1px var(--polish-focus-halo);
}

html[data-theme="dark"] .drop-zone.has-selected-file,
html[data-theme="dark"] .compact-file.has-selected-file {
  border-color: var(--polish-focus);
  background-color: rgba(81, 217, 182, .09);
}

.pl-faq-list details { transition: background-color 220ms ease; }
.pl-faq-list summary { transition: color 180ms ease; }
.pl-faq-list summary:focus-visible { outline-offset: -3px; }
.pl-faq-list details[open] > p,
.manual-box[open] > .manual-content {
  animation: polish-content-in 240ms var(--polish-ease) both;
}

@keyframes polish-content-in {
  from { opacity: 0; transform: translateY(5px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Feedback follows real submissions; no invented progress percentages. */
button.is-submitting,
button.is-submitting[aria-disabled="true"],
button.is-submitting:hover,
button.is-submitting:active {
  cursor: progress;
  opacity: .88;
  transform: none;
}

button.is-submitting { gap: 10px; }
button.is-submitting > .premium-button-spinner,
.premium-button-spinner {
  display: inline-block;
  width: 1em;
  height: 1em;
  flex: 0 0 1em;
  vertical-align: -.12em;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: polish-spin 800ms linear infinite;
  transition: none;
}

/* Existing arrow hover effects must not shift the pending-state indicator. */
button.is-submitting:hover > span { transform: none; }

.premium-submit-status {
  display: block;
  max-width: 100%;
  margin: 2px 0 0;
  color: var(--polish-focus);
  font-size: .8rem;
  font-weight: 600;
  line-height: 1.5;
  overflow-wrap: anywhere;
}

.inline-form .premium-submit-status {
  display: inline-block;
  margin-inline-start: 8px;
}

.premium-loading-notice {
  width: 100%;
  margin: 14px 0 0;
  padding: 19px 21px;
  border: 1px solid var(--polish-border);
  border-radius: 18px 18px 18px 6px;
  color: var(--polish-text);
  background: var(--polish-surface);
  box-shadow: 0 14px 48px rgba(4, 29, 24, .18);
  animation: polish-content-in 220ms var(--polish-ease) both;
  overflow-wrap: anywhere;
}

.premium-loading-notice strong {
  display: block;
  color: var(--polish-focus);
  font-size: .9rem;
  line-height: 1.4;
}

.premium-loading-notice p {
  margin: 5px 0 0;
  color: inherit;
  font-size: .8rem;
  line-height: 1.6;
}

.premium-loading-rail {
  position: relative;
  height: 3px;
  margin-top: 14px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--polish-focus-halo);
}

.premium-loading-rail > span {
  position: absolute;
  inset-block: 0;
  left: 0;
  width: 38%;
  border-radius: inherit;
  background: var(--polish-focus);
  animation: polish-pending 1600ms var(--polish-ease) infinite;
}

.premium-submit-status[hidden],
.premium-loading-notice[hidden],
.premium-loading-rail[hidden],
.premium-button-spinner[hidden] { display: none; }

@keyframes polish-spin { to { transform: rotate(360deg); } }
@keyframes polish-pending {
  from { transform: translateX(-110%); }
  to { transform: translateX(370%); }
}

/* Let content shrink within its column; wide data tables keep local scrolling. */
.page-shell,
.premium-nav-shell,
.premium-footer-inner,
.pl-container,
.preview-grid > *,
.workspace-grid > *,
.premium-auth-form-row > *,
.panel-heading > div,
.premium-footer-copy { min-width: 0; }

.table-wrap { max-width: 100%; overscroll-behavior-inline: contain; }
.panel-heading h2,
.drop-zone strong,
.drop-zone span,
.drop-zone small,
.quick-help,
.premium-footer-copy { overflow-wrap: anywhere; }

html[data-theme="dark"] .premium-footer-copy,
html[data-theme="dark"] .premium-footer-brand small { color: #a8c2b8; }
html[data-theme="dark"] .premium-auth-check a,
html[data-theme="dark"] .premium-auth-switch a,
html[data-theme="dark"] .premium-auth-forgot a,
html[data-theme="dark"] .pl-text-link { color: var(--polish-focus); }
html[data-theme="dark"] .premium-auth-field select option {
  color: #effaf6;
  background: #0b2820;
}

@media (max-width: 1150px) {
  .premium-nav-links.is-open {
    max-height: calc(100dvh - 100px);
    overflow-y: auto;
    overscroll-behavior: contain;
    animation: polish-content-in 180ms var(--polish-ease) both;
  }
  .premium-menu-toggle[aria-expanded="true"] > span,
  html[data-theme="dark"] .premium-menu-toggle[aria-expanded="true"] > span { background: transparent; }
  .premium-menu-toggle[aria-expanded="true"] > span::before {
    transform: translateY(0) rotate(45deg);
  }
  .premium-menu-toggle[aria-expanded="true"] > span::after {
    transform: translateY(-2px) rotate(-45deg);
  }
  .premium-nav-links > a { min-height: 44px; }
  .premium-menu-toggle { width: 44px; height: 44px; }
  .premium-nav-links .premium-language-switch a { min-width: 40px; min-height: 36px; }
}

@media (max-width: 780px) {
  .premium-dashboard-hero .price-card { min-width: 0; }
  .premium-footer-inner {
    padding-bottom: max(24px, env(safe-area-inset-bottom));
    gap: 14px;
  }
  .premium-footer-links { gap: 4px 18px; }
  .premium-footer-links a { display: inline-flex; align-items: center; min-height: 44px; }
  .premium-auth-back { min-height: 36px; }
  .premium-auth-policy-links { flex-wrap: wrap; gap: 4px 18px; }
  .premium-auth-policy-links a { display: inline-flex; align-items: center; min-height: 44px; }
  .premium-auth-language-switch a { min-width: 38px; min-height: 34px; }
  .premium-auth-password-toggle { min-height: 44px; }
  body:not(.premium-admin-body) :is(.mini-button, .suggestion-chip, .balance-chip) {
    min-height: 44px;
    white-space: normal;
  }
  .selection-tools .secondary-button { min-height: 44px; }
  .premium-nav-cta { min-height: 44px; }
  .premium-loading-notice {
    padding: 16px 18px;
  }
  /* Keep fields comfortably readable without the iOS focus zoom. */
  body:not(.premium-admin-body) :is(input, textarea, select) { font-size: 16px; }
  .pl-faq-list summary { min-height: 76px; gap: 14px; }
  .pl-faq-list details p { padding-right: 14px; }
  .public-chat-form { max-height: min(68dvh, 620px); overscroll-behavior: contain; }
}

@media (max-width: 420px) {
  /* Reflow actions instead of shrinking or cropping the existing logo. */
  .premium-nav-shell { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 12px; }
  .premium-nav-actions { grid-column: 1 / -1; width: 100%; margin-left: 0; }
  .premium-nav-actions > .premium-nav-cta { width: 100%; }
  .premium-menu-toggle { grid-column: 2; grid-row: 1; }
  .premium-nav-links.is-open { max-height: calc(100dvh - 146px); }
  .premium-header { padding-block: 8px; }
  .premium-auth-form-side { padding-inline: 18px; }
  .premium-auth-story { padding-inline: 20px; }
  .pl-section-head h2,
  .pl-editorial-copy h2,
  .pl-security-copy h2,
  .pl-pricing-copy h2,
  .pl-faq-intro h2,
  .pl-final-cta h2 { font-size: clamp(2rem, 9.5vw, 2.45rem); }
}

@media (hover: none) {
  :is(.primary-button, .secondary-button, .mini-button, .pl-button,
      .premium-auth-submit, .premium-nav-cta, .drop-zone):hover { transform: none; }
  .pl-button:hover span,
  .premium-auth-submit:hover span,
  .pl-text-link:hover span { transform: none; }
  .pl-process-grid article:hover,
  .pl-benefit-grid article:hover { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
  [data-reveal],
  .is-reveal-pending { opacity: 1 !important; transform: none !important; }
  .pl-hero-copy,
  .pl-conversion-window,
  .pl-document-card,
  .pl-coda-card { opacity: 1; }
  .pl-floating-status { transform: none; }
  :is(.primary-button, .secondary-button, .mini-button, .pl-button,
      .premium-auth-submit, .premium-nav-cta, .drop-zone):hover { transform: none; }
  .pl-button:hover span,
  .premium-auth-submit:hover span,
  .pl-text-link:hover span { transform: none; }
  .panel:hover,
  .stats-grid article:hover,
  .download-list a:hover,
  .pl-process-grid article:hover,
  .pl-benefit-grid article:hover { transform: none; }
  /* Text still announces work; a static rail conveys no completion estimate. */
  .premium-loading-rail > span { width: 100%; opacity: .45; }
}
