/* Koeru — sign-in dialog, account menu, toast.
 *
 * Shared by the dark live page and the light summary, so the dialog is its own
 * surface: a `snow` card on a dimmed `night` backdrop reads the same on both.
 * The primary button is `signal` with `night` text — the accent, on a fill,
 * which is the only way yellow works against a light card.
 */

.k-modal {
  position: fixed; inset: 0; z-index: 80;
  display: grid; place-items: center; padding: 16px;
  background: rgb(19 28 46 / .72);
  animation: k-fade .18s var(--k-ease);
}
.k-modal-card {
  color-scheme: light;
  position: relative; width: min(420px, 100%);
  padding: 28px 24px 22px; border-radius: 10px;
  background: var(--k-snow); color: var(--k-night);
  box-shadow: 0 18px 60px rgb(0 0 0 / .35);
  animation: k-rise .22s var(--k-ease);
}
.k-modal-card h2 {
  margin: 0 0 6px; font-size: 24px; line-height: 1.1;
  font-variation-settings: 'wdth' 125, 'wght' 800; letter-spacing: -.01em;
}
.k-modal-sub { margin: 0 0 18px; font-size: 15px; line-height: 1.45; color: var(--k-granite); }
.k-modal-close {
  position: absolute; top: 8px; right: 8px; width: 40px; height: 40px;
  border: 0; border-radius: 50%; background: none; cursor: pointer;
  font-size: 26px; line-height: 1; color: var(--k-granite);
}
.k-modal-close:hover { background: var(--k-rule); color: var(--k-night); }

.k-form { display: grid; gap: 8px; }
.k-form label { font-size: 13px; color: var(--k-granite); }
.k-form input {
  height: 46px; padding: 0 14px; font: inherit; font-size: 16px;
  color: var(--k-night); background: #fff;
  border: 1px solid var(--k-rule); border-radius: 6px;
}
.k-form textarea {
  width: 100%; box-sizing: border-box; padding: 10px 12px; font: inherit; font-size: 15px; line-height: 1.5;
  color: var(--k-night); background: #fff; border: 1px solid var(--k-rule); border-radius: var(--k-radius); resize: vertical; min-height: 96px;
}
.k-form textarea:focus { outline: 2px solid var(--k-night); outline-offset: 1px; }
.k-optional { color: var(--k-granite); font-size: 12px; margin-left: 4px; }
.k-edit label:not(.k-level) { margin-top: 6px; }
.k-levels { margin: 8px 0 4px; padding: 0; border: 0; display: grid; gap: 6px; }
.k-levels legend { padding: 0; margin-bottom: 6px; font-size: 13px; color: var(--k-granite); }
.k-level {
  display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; cursor: pointer;
  border: 1px solid var(--k-rule); border-radius: 8px; color: var(--k-night) !important; background: #fff;
}
.k-level:has(input:checked) { border-color: var(--k-night); box-shadow: inset 0 0 0 1px var(--k-night); }
.k-level input { margin: 3px 0 0; accent-color: var(--k-night); }
.k-level span { display: grid; gap: 1px; }
.k-level b { font-size: 14px; font-variation-settings: 'wdth' 100, 'wght' 650; }
.k-level small { font-size: 13px; color: var(--k-granite); }
.k-form input:focus { outline: 2px solid var(--k-night); outline-offset: 1px; }
.k-form-error { margin: 0; font-size: 14px; color: var(--k-alert); }
.k-fine { margin: 4px 0 0; font-size: 12px; color: var(--k-granite); }
.k-fine a { color: var(--k-night); }

.k-btn {
  height: 46px; margin-top: 6px; border: 0; border-radius: 6px; cursor: pointer;
  font: inherit; font-size: 15px; font-variation-settings: 'wdth' 100, 'wght' 650;
}
.k-btn:disabled { opacity: .6; cursor: default; }
.k-btn-signal { background: var(--k-signal); color: var(--k-night); }
.k-btn-signal:hover:not(:disabled) { filter: brightness(1.04); }

.k-sent { display: grid; gap: 10px; justify-items: center; text-align: center; padding: 8px 0; }
.k-sent svg { width: 44px; height: 44px; fill: none; stroke: var(--k-night); stroke-width: 1.6; stroke-linejoin: round; }
.k-sent p { margin: 0; font-size: 15px; line-height: 1.45; }

/* --- account menu ------------------------------------------------------- */

.account { position: relative; }
.account-menu {
  position: absolute; right: 0; top: calc(100% + 8px); z-index: 60;
  min-width: 190px; padding: 6px; border-radius: 8px;
  background: var(--k-snow); color: var(--k-night);
  box-shadow: 0 10px 30px rgb(19 28 46 / .3);
}
.account-name {
  margin: 0; padding: 8px 10px 10px; font-size: 14px;
  font-variation-settings: 'wdth' 108, 'wght' 650;
  border-bottom: 1px solid var(--k-rule);
}
/* Buttons (sign out) and links (profile, settings) look the same: a menu
   item is a menu item, whatever it does when chosen. */
.account-menu [role="menuitem"] {
  display: block; box-sizing: border-box; width: 100%; padding: 10px; margin-top: 4px; text-align: left;
  font: inherit; font-size: 14px; line-height: 1.3; color: var(--k-night); text-decoration: none;
  background: none; border: 0; border-radius: 6px; cursor: pointer;
}
.account-menu [role="menuitem"]:hover,
.account-menu [role="menuitem"]:focus-visible { background: var(--k-rule); outline: none; }

/* --- toast -------------------------------------------------------------- */

.k-toast {
  position: fixed; left: 50%; bottom: calc(20px + env(safe-area-inset-bottom, 0px)); z-index: 90;
  max-width: min(92vw, 460px); padding: 11px 16px; border-radius: 8px;
  background: var(--k-night); color: var(--k-snow);
  border: 1px solid color-mix(in oklab, var(--k-night) 80%, var(--k-glacier));
  font-size: 14px; box-shadow: 0 10px 30px rgb(0 0 0 / .3);
  transform: translate(-50%, 16px); opacity: 0; pointer-events: none;
  transition: opacity .2s var(--k-ease), transform .2s var(--k-ease);
}
.k-toast.is-on { opacity: 1; transform: translate(-50%, 0); }

@keyframes k-fade { from { opacity: 0; } }
@keyframes k-rise { from { opacity: 0; transform: translateY(12px); } }
