/* SBVORA Console: command palette */
.palette{
  --pal-bg:#fbfdff;--pal-ink:#071426;--pal-muted:#5b6886;--pal-line:#c9d9e6;--pal-soft:#eef5fa;
  --pal-head:#061a36;--pal-head-ink:#cfdfeb;--pal-accent:#1868c0;--pal-active:rgba(45,197,248,.14);
  --pal-mark:rgba(45,197,248,.28);--pal-kbd:#ffffff;
  --pal-mono:ui-monospace,Menlo,Consolas,monospace;
}
html[data-theme="dark"] .palette{
  --pal-bg:#071a2e;--pal-ink:#e8f4fc;--pal-muted:#93abc0;--pal-line:#26475f;--pal-soft:#0b2238;
  --pal-head:#03101f;--pal-head-ink:#cfdfeb;--pal-accent:#2dc5f8;--pal-active:rgba(45,197,248,.15);
  --pal-mark:rgba(45,197,248,.3);--pal-kbd:#0d2a44;
}

/* ---------- header trigger ---------- */
.palette-trigger{display:inline-flex;align-items:center;justify-content:center;gap:2px;height:40px;min-width:52px;padding:0 10px;border:1px solid #c3d8e7;border-radius:0;background:rgba(255,255,255,.76);color:#0c3858;font:650 12px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.04em;cursor:pointer;white-space:nowrap;transition:border-color .2s,background .2s,color .2s}
.palette-trigger[hidden]{display:none}
.palette-trigger:hover{border-color:#3999d4;background:#fff;color:#0069b8}
.palette-trigger:focus-visible,.palette-navbtn:focus-visible,.palette-close:focus-visible{outline:2px solid #249ae6;outline-offset:2px}
.palette-trigger-key{display:inline-flex;align-items:center;gap:3px}
.palette-trigger-mod{font-size:13px}
html[data-theme="dark"] .palette-trigger{background:#102d47;border-color:#3c6580;color:#e3f3fd}
html[data-theme="dark"] .palette-trigger:hover{background:#194361;color:#fff}
@media(pointer:coarse){.palette-trigger{height:44px;min-width:44px}}

/* Mobile menu entry (created by palette.js) */
.palette-navbtn{display:none}
@media(max-width:560px){
  .palette-trigger{display:none}
  .site-header nav .palette-navbtn{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:48px;padding:14px 0;border:0;border-bottom:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
  .site-header nav .palette-navbtn-key{display:inline-grid;place-items:center;min-width:24px;height:24px;border:1px solid currentColor;font:600 11px/1 ui-monospace,Menlo,Consolas,monospace;opacity:.7}
}

/* ---------- dialog shell ---------- */
.palette{position:fixed;inset:0;width:min(680px,calc(100vw - 32px));max-width:none;max-height:min(600px,calc(100dvh - 22vh));margin:12vh auto auto;padding:0;border:1px solid var(--pal-line);border-radius:0;background:var(--pal-bg);color:var(--pal-ink);box-shadow:0 30px 80px rgba(3,13,31,.38),0 0 0 1px rgba(45,197,248,.08);overflow:hidden;font:400 15px/1.4 Inter,"Segoe UI",Arial,sans-serif}
.palette[open]{display:flex;flex-direction:column}
.palette::backdrop{background-color:rgba(6,26,54,.6);background-image:linear-gradient(rgba(45,197,248,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(45,197,248,.07) 1px,transparent 1px);background-size:32px 32px}
html[data-theme="dark"] .palette::backdrop{background-color:rgba(1,8,18,.7)}
html.modal-open .fx-cursor,html.modal-open .fx-cursor-dot{display:none!important}

/* feed-in like a label leaving the printhead */
@media(prefers-reduced-motion:no-preference){
  .palette[open]{animation:palette-feed .26s cubic-bezier(.2,.7,.2,1) both}
  .palette[open]::backdrop{animation:palette-fade .2s ease-out both}
  .palette[open] .palette-head::after{animation:palette-scan .55s .05s cubic-bezier(.4,0,.2,1) both}
}
@keyframes palette-feed{from{clip-path:inset(0 0 100% 0);transform:translateY(-8px)}to{clip-path:inset(0 0 0 0);transform:none}}
@keyframes palette-fade{from{opacity:0}to{opacity:1}}
@keyframes palette-scan{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* ---------- head ---------- */
.palette-head{position:relative;display:flex;align-items:center;gap:14px;min-height:44px;padding:0 0 0 18px;background:var(--pal-head);color:var(--pal-head-ink)}
.palette-head::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,#2dc5f8,#249ae6 40%,rgba(36,154,230,.15));transform-origin:left}
.palette-title{margin:0;font:600 11px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.2em;text-transform:uppercase;white-space:nowrap}
.palette-code{margin-left:auto;display:flex;align-items:center;gap:10px;font:500 10px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.14em;color:#7c87a6;white-space:nowrap}
.palette-code::before{content:"";width:58px;height:14px;background:repeating-linear-gradient(90deg,#cfdfeb 0 1px,transparent 1px 3px,#cfdfeb 3px 5px,transparent 5px 6px,#cfdfeb 6px 7px,transparent 7px 10px,#cfdfeb 10px 13px,transparent 13px 14px);opacity:.55}
.palette-close{align-self:stretch;min-width:58px;padding:0 14px;border:0;border-left:1px solid rgba(207,223,235,.18);border-radius:0;background:transparent;color:var(--pal-head-ink);font:600 11px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.12em;text-transform:uppercase;cursor:pointer}
.palette-close:hover{background:rgba(45,197,248,.14);color:#fff}
.palette-close:focus-visible{outline-offset:-3px}

/* ---------- prompt ---------- */
.palette-prompt{display:flex;align-items:center;gap:12px;padding:0 18px;border-bottom:1px solid var(--pal-line);background:var(--pal-bg)}
.palette-ps1{flex:none;font:600 15px/1 ui-monospace,Menlo,Consolas,monospace;color:var(--pal-accent);letter-spacing:.01em}
.palette-field{position:relative;flex:1;min-width:0;display:block}
.palette-input{display:block;width:100%;height:58px;padding:0;border:0;border-radius:0;background:transparent;color:var(--pal-ink);font:500 16px/1 ui-monospace,Menlo,Consolas,monospace;caret-color:transparent;outline:none;-webkit-appearance:none;appearance:none}
.palette-input::-webkit-search-cancel-button{display:none}
.palette-caret{position:absolute;top:50%;left:0;width:1ch;height:20px;margin-top:-10px;font:500 16px/1 ui-monospace,Menlo,Consolas,monospace;background:#2dc5f8;transform:translateX(calc(var(--palette-caret,0) * 1ch - var(--palette-scroll,0px)));pointer-events:none;mix-blend-mode:multiply}
html[data-theme="dark"] .palette-caret{mix-blend-mode:screen}
.palette-caret.is-hidden{opacity:0}
.palette-prompt:focus-within{box-shadow:inset 0 -1px 0 #2dc5f8}
@media(prefers-reduced-motion:no-preference){
  .palette-caret{animation:palette-blink 1.06s steps(1,end) infinite}
  .palette-caret.is-typing{animation:palette-blink 1.06s steps(1,end) .5s infinite}
}
@keyframes palette-blink{0%{opacity:1}50%{opacity:0}100%{opacity:1}}
.palette-caret.is-hidden{animation:none}

/* ---------- results ---------- */
.palette-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--pal-line) transparent}
.palette-list{margin:0;padding:6px 0 10px;list-style:none}
.palette-list[hidden]{display:none}
.palette-group{margin:0;padding:0}
.palette-group ul{margin:0;padding:0;list-style:none}
.palette-group-label{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:10px;padding:12px 18px 6px;background:var(--pal-bg);color:var(--pal-muted);font:600 10px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.18em;text-transform:uppercase}
.palette-group-label::after{content:"";flex:1;height:1px;background:var(--pal-line);order:1}
.palette-group-count{order:2;color:var(--pal-accent);letter-spacing:.08em}
.palette-option{position:relative;display:grid;grid-template-columns:40px minmax(0,1fr) 24px;align-items:center;gap:10px;min-height:46px;padding:5px 14px 5px 18px;border-left:2px solid transparent;cursor:pointer;color:var(--pal-ink)}
.palette-option[aria-selected="true"]{background:var(--pal-active);border-left-color:#2dc5f8}
.palette-glyph{display:inline-grid;place-items:center;width:32px;height:28px;border:1px solid var(--pal-line);background:var(--pal-soft);color:var(--pal-muted);font:600 11px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.02em}
.palette-option[aria-selected="true"] .palette-glyph{border-color:#2dc5f8;color:var(--pal-accent);background:var(--pal-bg)}
.palette-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.palette-label{font-weight:600;font-size:15px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.palette-sub{color:var(--pal-muted);font:500 10.5px/1.35 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.08em;text-transform:uppercase;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.palette-sub.is-snippet{font:400 12.5px/1.4 Inter,"Segoe UI",Arial,sans-serif;letter-spacing:0;text-transform:none}
.palette-enter{justify-self:end;color:var(--pal-accent);font:600 14px/1 ui-monospace,Menlo,Consolas,monospace;opacity:0}
.palette-option[aria-selected="true"] .palette-enter{opacity:1}
.palette mark{padding:0;background:var(--pal-mark);color:inherit;box-shadow:inset 0 -1px 0 #249ae6}
html[data-theme="dark"] .palette mark{color:#fff}

/* ---------- empty state ---------- */
.palette-empty{padding:34px 18px 38px;text-align:left}
.palette-empty[hidden]{display:none}
.palette-empty-title{margin:0 0 6px;font:600 12px/1.2 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--pal-ink)}
.palette-empty-title::before{content:"ERR ";color:#c0392b}
html[data-theme="dark"] .palette-empty-title::before{color:#ff8a7a}
.palette-empty-hint{margin:0;color:var(--pal-muted);font-size:14px}

/* ---------- hint bar ---------- */
.palette-hints{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;padding:10px 18px;border-top:1px solid var(--pal-line);background:var(--pal-soft);color:var(--pal-muted);font:500 10px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.12em;text-transform:uppercase}
.palette-hints span{display:inline-flex;align-items:center;gap:7px}
.palette-hints kbd{display:inline-grid;place-items:center;min-width:24px;height:20px;padding:0 5px;border:1px solid var(--pal-line);border-radius:0;background:var(--pal-kbd);color:var(--pal-ink);font:600 10px/1 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.04em;text-transform:none}

/* ---------- landing highlight after a jump ---------- */
.palette-landed{outline:2px solid #2dc5f8;outline-offset:6px}
@media(prefers-reduced-motion:no-preference){.palette-landed{animation:palette-landed 1.6s ease-out both}}
@keyframes palette-landed{0%,55%{outline-color:#2dc5f8}100%{outline-color:transparent}}
[data-palette-tabindex]:focus{outline:none}
[data-palette-tabindex].palette-landed:focus{outline:2px solid #2dc5f8}

/* ---------- toast ---------- */
.palette-toast{position:fixed;left:50%;bottom:24px;z-index:1600;max-width:calc(100vw - 32px);padding:12px 16px 12px 14px;border:1px solid #2dc5f8;border-left-width:3px;background:#061a36;color:#e8f4fc;font:600 11px/1.4 ui-monospace,Menlo,Consolas,monospace;letter-spacing:.1em;text-transform:uppercase;overflow-wrap:anywhere;transform:translate(-50%,12px);opacity:0;pointer-events:none;visibility:hidden;transition:opacity .2s,transform .2s,visibility 0s .2s}
.palette-toast.is-on{opacity:1;transform:translate(-50%,0);visibility:visible;transition:opacity .2s,transform .2s,visibility 0s}
.palette-toast::before{content:"OK · ";color:#2dc5f8}

/* ---------- phone: full-width top sheet ---------- */
@media(max-width:560px){
  .palette{width:100vw;max-height:calc(100dvh - 56px);margin:0;border-width:0 0 1px;inset:0 0 auto 0}
  .palette-head{padding-left:16px}
  .palette-code{display:none}
  .palette-close{min-width:64px;min-height:48px}
  .palette-prompt{padding:0 16px;gap:10px}
  .palette-ps1{font-size:13px}
  .palette-input{height:56px}
  .palette-option{min-height:48px;padding-left:14px;padding-right:10px;grid-template-columns:36px minmax(0,1fr) 18px;gap:10px}
  .palette-glyph{width:30px}
  .palette-group-label{padding-inline:16px}
  .palette-hints{display:none}
  @media(prefers-reduced-motion:no-preference){.palette[open]{animation-name:palette-sheet}}
}
@keyframes palette-sheet{from{transform:translateY(-100%)}to{transform:none}}

@media(prefers-reduced-motion:reduce){
  .palette[open],.palette[open]::backdrop,.palette-caret,.palette-landed{animation:none!important}
  .palette-toast,.palette-toast.is-on{transition:none}
}
@media print{.palette,.palette-toast{display:none!important}}
