/* CORE — Icon, Button, IconButton, Keycap, Divider, StatusChip */
.sv-icon{display:inline-block;flex:none;width:var(--icon-sm);height:var(--icon-sm);vertical-align:middle}
.sv-icon svg{display:block;width:100%;height:100%}

.sv-btn{position:relative;isolation:isolate;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-8);height:var(--control-h-md);padding:0 var(--space-16);border:1px solid var(--line-strong);border-radius:var(--radius-control);background:var(--color-surface-700);color:var(--text-primary);font:var(--fw-semibold) var(--fs-body)/1 var(--font-ui);letter-spacing:var(--ls-label);text-transform:uppercase;white-space:nowrap;cursor:pointer;box-shadow:var(--shadow-raised);transition:background-color var(--dur-hover) var(--ease-out),border-color var(--dur-hover) var(--ease-out),color var(--dur-hover) var(--ease-out),transform var(--dur-press) var(--ease-out)}
.sv-btn .sv-icon{width:var(--icon-sm);height:var(--icon-sm)}
.sv-btn:hover,.sv-btn[data-state="hover"]{background:var(--color-surface-600);border-color:var(--color-ash-500);color:var(--text-strong)}
.sv-btn:active,.sv-btn[data-state="active"]{transform:translateY(var(--press-offset));background:var(--color-surface-750);box-shadow:var(--shadow-recess)}
.sv-btn:focus-visible,.sv-btn[data-state="focus"]{outline:none;box-shadow:var(--focus-ring)}
.sv-btn--sm{height:var(--control-h-sm);padding:0 var(--space-12);font-size:var(--fs-label);gap:var(--space-6)}
.sv-btn--lg{height:var(--control-h-lg);padding:0 var(--space-20);font-size:var(--fs-subheading)}
.sv-btn--block{display:flex;width:100%}
.sv-btn--primary{background:var(--accent);border-color:var(--color-rust-700);color:var(--text-on-accent);box-shadow:inset 0 1px 0 rgba(255,214,184,.22),inset 0 -1px 0 rgba(0,0,0,.35)}
.sv-btn--primary::before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:url('../../assets/textures/tex-142.jpg') center/700px auto;filter:invert(1);mix-blend-mode:multiply;opacity:.45}
.sv-btn--primary:hover,.sv-btn--primary[data-state="hover"]{background:var(--accent-hover);border-color:var(--color-rust-600);color:#fff}
.sv-btn--primary:active,.sv-btn--primary[data-state="active"]{background:var(--accent-pressed);box-shadow:inset 0 1px 3px rgba(0,0,0,.45)}
.sv-btn--destructive{background:var(--color-blood-700);border-color:var(--color-blood-500);color:#f1d9d2}
.sv-btn--destructive:hover,.sv-btn--destructive[data-state="hover"]{background:#6f231b;border-color:var(--color-blood-400);color:#fff}
.sv-btn--destructive:active,.sv-btn--destructive[data-state="active"]{background:#4a1712}
.sv-btn--tertiary{background:transparent;border-color:transparent;box-shadow:none;color:var(--text-secondary)}
.sv-btn--tertiary:hover,.sv-btn--tertiary[data-state="hover"]{background:rgba(211,203,187,.06);border-color:transparent;color:var(--text-strong)}
.sv-btn--tertiary:active,.sv-btn--tertiary[data-state="active"]{background:rgba(211,203,187,.1);box-shadow:none}
.sv-btn:disabled,.sv-btn[data-state="disabled"]{background:var(--color-surface-800);border-color:var(--line-soft);color:var(--text-disabled);box-shadow:none;cursor:not-allowed;transform:none}
.sv-btn:disabled::before,.sv-btn[data-state="disabled"]::before{display:none}
.sv-btn--tertiary:disabled{background:transparent;border-color:transparent}
.sv-btn .sv-key{margin-left:calc(var(--space-8) * -1)}

.sv-iconbtn{display:inline-flex;align-items:center;justify-content:center;flex:none;width:var(--control-h-md);height:var(--control-h-md);padding:0;border:1px solid var(--line-strong);border-radius:var(--radius-control);background:var(--color-surface-700);color:var(--text-primary);cursor:pointer;box-shadow:var(--shadow-raised);transition:background-color var(--dur-hover),border-color var(--dur-hover),color var(--dur-hover),transform var(--dur-press)}
.sv-iconbtn .sv-icon{width:var(--icon-md);height:var(--icon-md)}
.sv-iconbtn:hover,.sv-iconbtn[data-state="hover"]{background:var(--color-surface-600);border-color:var(--color-ash-500);color:var(--text-strong)}
.sv-iconbtn:active,.sv-iconbtn[data-state="active"]{transform:translateY(var(--press-offset));box-shadow:var(--shadow-recess)}
.sv-iconbtn:focus-visible{outline:none;box-shadow:var(--focus-ring)}
.sv-iconbtn[aria-pressed="true"]{background:var(--accent);border-color:var(--color-rust-700);color:var(--text-on-accent)}
.sv-iconbtn--ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--text-secondary)}
.sv-iconbtn--ghost:hover{background:rgba(211,203,187,.07);border-color:transparent}
.sv-iconbtn--danger:hover{color:var(--color-blood-400);border-color:var(--color-blood-500);background:rgba(163,52,42,.14)}
.sv-iconbtn--sm{width:var(--control-h-sm);height:var(--control-h-sm)}
.sv-iconbtn--sm .sv-icon{width:var(--icon-sm);height:var(--icon-sm)}
.sv-iconbtn--xs{width:1.375rem;height:1.375rem}
.sv-iconbtn--xs .sv-icon{width:var(--icon-xs);height:var(--icon-xs)}
.sv-iconbtn:disabled{color:var(--text-disabled);background:var(--color-surface-800);border-color:var(--line-soft);box-shadow:none;cursor:not-allowed}

.sv-key{display:inline-flex;align-items:center;justify-content:center;flex:none;min-width:1.5rem;height:1.5rem;padding:0 var(--space-6);border-radius:var(--radius-key);background:var(--color-bone-200);color:var(--color-bg-900);font:var(--type-key);letter-spacing:var(--ls-key);text-transform:uppercase;box-shadow:inset 0 -2px 0 rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.45),0 1px 0 rgba(0,0,0,.6)}
.sv-key--sm{min-width:1.125rem;height:1.125rem;padding:0 var(--space-4);font-size:var(--fs-micro);box-shadow:inset 0 -1px 0 rgba(0,0,0,.28)}
.sv-key--lg{min-width:2rem;height:2rem;padding:0 var(--space-8);font-size:var(--fs-subheading);box-shadow:inset 0 -3px 0 rgba(0,0,0,.28),inset 0 1px 0 rgba(255,255,255,.45),0 1px 0 rgba(0,0,0,.6)}
.sv-key--dark{background:var(--color-surface-600);color:var(--text-strong);box-shadow:inset 0 -2px 0 rgba(0,0,0,.45),inset 0 0 0 1px var(--color-ash-600)}
.sv-key--outline{background:transparent;color:var(--text-primary);box-shadow:inset 0 0 0 1px var(--color-ash-500)}
.sv-key[data-pressed]{transform:translateY(1px);background:var(--accent);color:var(--text-on-accent);box-shadow:inset 0 1px 2px rgba(0,0,0,.4)}

.sv-divider{flex:none;height:1px;width:100%;background:var(--line-divider);border:0;margin:0}
.sv-divider--strong{background:var(--line-strong)}
.sv-divider--vertical{width:1px;height:auto;align-self:stretch}
.sv-divider--notched{position:relative;background:var(--line-divider)}
.sv-divider--notched::before{content:'';position:absolute;left:0;top:-1px;width:1.5rem;height:3px;background:var(--accent)}
.sv-divider--etched{height:2px;background:linear-gradient(rgba(0,0,0,.6) 0 1px,rgba(243,237,225,.06) 1px 2px)}
.sv-divider-label{display:flex;align-items:center;gap:var(--space-8);width:100%;color:var(--text-muted);font:var(--fw-semibold) var(--fs-label-sm)/1 var(--font-ui);letter-spacing:var(--ls-label);text-transform:uppercase}
.sv-divider-label::before,.sv-divider-label::after{content:'';flex:1;height:1px;background:var(--line-divider)}
.sv-divider-label::before{flex:0 0 var(--space-12)}

.sv-chip{display:inline-flex;align-items:center;gap:var(--space-4);height:1.25rem;padding:0 var(--space-6);border:1px solid var(--line-strong);border-radius:var(--radius-1);background:rgba(211,203,187,.05);color:var(--text-primary);font:var(--fw-semibold) var(--fs-label-sm)/1 var(--font-ui);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.sv-chip .sv-icon{width:.75rem;height:.75rem}
.sv-chip-dot{width:6px;height:6px;flex:none;background:currentColor}
.sv-chip--accent{border-color:var(--color-rust-600);background:var(--accent-wash);color:var(--color-rust-200)}
.sv-chip--success{border-color:var(--color-olive-500);background:rgba(108,131,64,.16);color:var(--color-olive-400)}
.sv-chip--warning{border-color:var(--color-ochre-500);background:rgba(168,130,47,.16);color:var(--color-ochre-400)}
.sv-chip--danger{border-color:var(--color-blood-500);background:rgba(163,52,42,.18);color:#e07b6e}
.sv-chip--info{border-color:#55636c;background:rgba(127,147,160,.14);color:var(--color-steel-400)}
.sv-chip--solid{background:var(--accent);border-color:var(--color-rust-700);color:var(--text-on-accent)}
