/* Casa Vanta component styles — square, hairline, uppercase-tracked. */
.cv-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);font-family:var(--font-body);font-weight:var(--fw-medium);letter-spacing:var(--ls-overline);text-transform:uppercase;border-radius:var(--radius-none);cursor:pointer;transition:var(--transition-ui),transform var(--dur-fast) var(--ease-brand);text-decoration:none;border:1px solid transparent;white-space:nowrap}
.cv-btn--md{font-size:var(--fs-overline);padding:14px 26px}
.cv-btn--sm{font-size:10px;padding:9px 16px}
.cv-btn--lg{font-size:var(--fs-caption);padding:18px 36px}
.cv-btn--primary{background:var(--cv-oxblood);color:var(--cv-bone);border-color:var(--cv-oxblood)}
.cv-btn--primary:hover{background:var(--cv-oxblood);border-color:var(--cv-oxblood)}
.cv-btn--secondary{background:transparent;color:var(--text-primary);border-color:var(--border-strong)}
.cv-btn--secondary:hover{background:var(--cv-oxblood);color:var(--cv-bone);border-color:var(--cv-oxblood)}
.cv-btn--ghost{background:transparent;color:var(--text-secondary);border-color:transparent;padding-left:0;padding-right:0}
.cv-btn--ghost:hover{color:var(--text-primary)}
.cv-btn--gold{background:var(--cv-mustard-gold);color:var(--cv-oxblood);border-color:var(--cv-mustard-gold)}
.cv-btn--gold:hover{background:#A8880F;border-color:#A8880F}
.cv-btn--inverse{background:transparent;color:var(--cv-bone);border-color:var(--border-inverse)}
.cv-btn--inverse:hover{background:var(--cv-bone);color:var(--cv-oxblood);border-color:var(--cv-bone)}
.cv-btn:active{transform:translateY(1px)}
.cv-btn[disabled]{opacity:.34;cursor:not-allowed;transform:none}
.cv-btn__arrow{font-size:1.1em;line-height:0}

.cv-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;background:transparent;color:var(--text-primary);border:1px solid var(--border-hairline);border-radius:var(--radius-none);cursor:pointer;transition:var(--transition-ui)}
.cv-iconbtn--sm{width:32px;height:32px}
.cv-iconbtn--lg{width:48px;height:48px}
.cv-iconbtn:hover{background:var(--cv-oxblood);color:var(--cv-bone);border-color:var(--cv-oxblood)}
.cv-iconbtn--bare{border-color:transparent}
.cv-iconbtn--bare:hover{background:transparent;color:var(--cv-burnt-orange)}
.cv-iconbtn--inverse{color:var(--cv-bone);border-color:var(--border-inverse)}
.cv-iconbtn--inverse:hover{background:var(--cv-bone);color:var(--cv-oxblood);border-color:var(--cv-bone)}
.cv-iconbtn[disabled]{opacity:.34;cursor:not-allowed}

.cv-overline{display:block;font:var(--type-overline);letter-spacing:var(--ls-overline);text-transform:uppercase;color:var(--text-muted)}
.cv-overline--accent{color:var(--cv-mustard-gold)}
.cv-overline--inverse{color:var(--text-inverse-muted)}

.cv-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-body);font-size:10px;font-weight:var(--fw-medium);letter-spacing:.18em;text-transform:uppercase;padding:5px 9px;border-radius:var(--radius-none);border:1px solid transparent}
.cv-badge--neutral{background:var(--cv-paper);color:var(--text-secondary)}
.cv-badge--brand{background:var(--cv-oxblood);color:var(--cv-bone)}
.cv-badge--gold{background:var(--cv-mustard-gold);color:var(--cv-ink)}
.cv-badge--outline{border-color:var(--border-strong);color:var(--text-primary)}
.cv-badge--blue{background:var(--cv-electric-blue);color:var(--cv-bone)}
.cv-badge--warning{background:var(--state-warning);color:var(--cv-ink)}
.cv-badge--danger{background:var(--state-danger);color:var(--cv-paper)}
.cv-badge__dot{width:5px;height:5px;background:currentColor;display:block}

.cv-tag{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-body);font-size:var(--fs-caption);font-weight:var(--fw-regular);letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);padding:7px 12px;border:1px solid var(--border-hairline);background:transparent;border-radius:var(--radius-none);cursor:default;transition:var(--transition-ui)}
.cv-tag--interactive{cursor:pointer}
.cv-tag--interactive:hover{border-color:var(--border-strong);color:var(--text-primary)}
.cv-tag--selected{background:var(--cv-oxblood);border-color:var(--cv-oxblood);color:var(--cv-bone)}
.cv-tag__x{opacity:.5;font-size:14px;line-height:1}
.cv-tag__x:hover{opacity:1}

.cv-card{position:relative;display:flex;flex-direction:column;background:var(--surface-raised);border:1px solid var(--border-hairline);border-radius:var(--radius-none);overflow:hidden;transition:border-color var(--dur-base) var(--ease-brand),transform var(--dur-base) var(--ease-brand)}
.cv-card--flat{background:transparent;border-color:transparent}
.cv-card--ink{background:var(--surface-ink);border-color:var(--border-inverse);color:var(--text-inverse)}
.cv-card--brand{background:var(--surface-brand);border-color:var(--surface-brand);color:var(--text-inverse)}
.cv-card--plate{box-shadow:var(--shadow-plate);border-color:transparent}
.cv-card--interactive{cursor:pointer}
.cv-card--interactive:hover{border-color:var(--border-strong);transform:translateY(-2px)}
.cv-card__media{position:relative;width:100%;background:var(--cv-n-200);overflow:hidden}
.cv-card__media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform var(--dur-slow) var(--ease-out)}
.cv-card--interactive:hover .cv-card__media img{transform:scale(1.03)}
.cv-card__body{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-6)}
.cv-card__title{font:var(--fw-regular) var(--fs-h3)/var(--lh-tight) var(--font-display);text-transform:uppercase;letter-spacing:var(--ls-heading);margin:0;color:inherit}
.cv-card__text{font:var(--type-body-sm);color:var(--text-secondary);margin:0}
.cv-card--ink .cv-card__text,.cv-card--brand .cv-card__text{color:var(--text-inverse-muted)}

.cv-rule{border:0;height:1px;background:var(--border-hairline);width:100%;margin:0}
.cv-rule--strong{background:var(--border-strong)}
.cv-rule--inverse{background:var(--border-inverse)}
.cv-rule--gold{background:var(--cv-mustard-gold)}
.cv-rule--short{width:44px;height:2px;background:var(--cv-mustard-gold)}

.cv-field{display:flex;flex-direction:column;gap:var(--space-3)}
.cv-field__label{font:var(--type-overline);letter-spacing:var(--ls-overline);text-transform:uppercase;color:var(--text-muted)}
.cv-field__hint{font-family:var(--font-body);font-size:var(--fs-caption);font-weight:400;color:var(--text-muted)}
.cv-field__hint--error{color:var(--state-danger)}
.cv-input,.cv-textarea,.cv-select{font-family:var(--font-body);font-size:var(--fs-body-sm);font-weight:400;color:var(--text-primary);background:transparent;border:0;border-bottom:1px solid var(--border-hairline);border-radius:0;padding:10px 0;transition:var(--transition-ui);width:100%}
.cv-input::placeholder,.cv-textarea::placeholder{color:var(--text-muted)}
.cv-input:hover,.cv-textarea:hover,.cv-select:hover{border-bottom-color:var(--border-strong)}
.cv-input:focus,.cv-textarea:focus,.cv-select:focus{outline:0;border-bottom-color:var(--cv-mustard-gold)}
.cv-input--boxed,.cv-textarea--boxed{border:1px solid var(--border-hairline);padding:12px 14px;background:var(--surface-raised)}
.cv-input--error,.cv-textarea--error{border-bottom-color:var(--state-danger)}
.cv-input[disabled],.cv-textarea[disabled],.cv-select[disabled]{opacity:.4;cursor:not-allowed}
.cv-textarea{resize:vertical;min-height:96px;line-height:1.6}
.cv-select{appearance:none;cursor:pointer;padding-right:22px;background-image:linear-gradient(45deg,transparent 50%,var(--text-muted) 50%),linear-gradient(135deg,var(--text-muted) 50%,transparent 50%);background-position:calc(100% - 10px) 55%,calc(100% - 5px) 55%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.cv-field--inverse .cv-field__label{color:var(--text-inverse-muted)}
.cv-field--inverse .cv-input,.cv-field--inverse .cv-textarea,.cv-field--inverse .cv-select{color:var(--cv-bone);border-bottom-color:var(--border-inverse)}

.cv-check{display:inline-flex;align-items:flex-start;gap:var(--space-4);cursor:pointer;font-family:var(--font-body);font-size:var(--fs-body-sm);font-weight:400;color:var(--text-primary)}
.cv-check input{position:absolute;opacity:0;pointer-events:none}
.cv-check__box{flex:0 0 auto;width:17px;height:17px;border:1px solid var(--border-strong);display:grid;place-items:center;transition:var(--transition-ui);margin-top:1px}
.cv-check__box--round{border-radius:var(--radius-pill)}
.cv-check input:checked+.cv-check__box{background:var(--cv-oxblood);border-color:var(--cv-oxblood)}
.cv-check__mark{width:9px;height:9px;background:var(--cv-bone);opacity:0;transition:opacity var(--dur-fast) var(--ease-brand)}
.cv-check__box--round .cv-check__mark{border-radius:var(--radius-pill);width:7px;height:7px}
.cv-check input:checked+.cv-check__box .cv-check__mark{opacity:1}
.cv-check input:focus-visible+.cv-check__box{outline:2px solid var(--focus-ring);outline-offset:2px}
.cv-check--disabled{opacity:.4;cursor:not-allowed}

.cv-switch{display:inline-flex;align-items:center;gap:var(--space-4);cursor:pointer;font-family:var(--font-body);font-size:var(--fs-body-sm);font-weight:400;color:var(--text-primary)}
.cv-switch input{position:absolute;opacity:0;pointer-events:none}
.cv-switch__track{position:relative;width:40px;height:18px;border:1px solid var(--border-strong);background:transparent;transition:var(--transition-ui)}
.cv-switch__knob{position:absolute;top:2px;left:2px;width:12px;height:12px;background:var(--text-primary);transition:transform var(--dur-base) var(--ease-brand),background-color var(--dur-fast) var(--ease-brand)}
.cv-switch input:checked+.cv-switch__track{background:var(--cv-oxblood);border-color:var(--cv-oxblood)}
.cv-switch input:checked+.cv-switch__track .cv-switch__knob{transform:translateX(22px);background:var(--cv-mustard-gold)}
.cv-switch--disabled{opacity:.4;cursor:not-allowed}

.cv-tabs{display:flex;gap:var(--space-7);border-bottom:1px solid var(--border-hairline)}
.cv-tabs__tab{position:relative;background:none;border:0;padding:0 0 14px;font-family:var(--font-body);font-size:var(--fs-overline);font-weight:var(--fw-medium);letter-spacing:var(--ls-overline);text-transform:uppercase;color:var(--text-muted);cursor:pointer;transition:var(--transition-ui)}
.cv-tabs__tab:hover{color:var(--text-primary)}
.cv-tabs__tab--active{color:var(--text-primary)}
.cv-tabs__tab--active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--cv-mustard-gold)}
.cv-tabs--inverse{border-bottom-color:var(--border-inverse)}
.cv-tabs--inverse .cv-tabs__tab{color:var(--text-inverse-muted)}
.cv-tabs--inverse .cv-tabs__tab--active,.cv-tabs--inverse .cv-tabs__tab:hover{color:var(--cv-bone)}

.cv-navbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-7);padding:var(--space-5) var(--gutter-page);border-bottom:1px solid var(--border-hairline);background:var(--surface-page)}
.cv-navbar--inverse{background:transparent;border-bottom-color:var(--border-inverse)}
.cv-navbar--floating{position:absolute;top:0;left:0;right:0;z-index:20;background:transparent;border-bottom-color:rgba(226,225,219,.18);backdrop-filter:var(--blur-glass)}
.cv-navbar__links{display:flex;align-items:center;gap:var(--space-7)}
.cv-navbar__link{font-family:var(--font-body);font-size:var(--fs-overline);font-weight:var(--fw-medium);letter-spacing:var(--ls-overline);text-transform:uppercase;color:var(--text-secondary);background:none;border:0;padding:0;cursor:pointer;transition:var(--transition-ui);text-decoration:none}
.cv-navbar__link:hover,.cv-navbar__link--active{color:var(--text-primary)}
.cv-navbar--inverse .cv-navbar__link,.cv-navbar--floating .cv-navbar__link{color:var(--text-inverse-muted)}
.cv-navbar--inverse .cv-navbar__link:hover,.cv-navbar--inverse .cv-navbar__link--active,.cv-navbar--floating .cv-navbar__link:hover,.cv-navbar--floating .cv-navbar__link--active{color:var(--cv-bone)}

.cv-logo{display:inline-flex;align-items:center;gap:var(--space-4);text-decoration:none;border:0}
.cv-logo img{display:block;height:100%;width:auto}
.cv-logo__wordmark{height:22px}
.cv-logo__monogram{height:28px}

.cv-dialog__scrim{position:fixed;inset:0;background:var(--surface-overlay);backdrop-filter:var(--blur-glass);display:grid;place-items:center;padding:var(--space-6);z-index:60;animation:cv-fade var(--dur-base) var(--ease-brand)}
.cv-dialog{width:100%;max-width:520px;background:var(--surface-page);border:1px solid var(--border-hairline);box-shadow:var(--shadow-modal);padding:var(--space-8);display:flex;flex-direction:column;gap:var(--space-5);animation:cv-rise var(--dur-slow) var(--ease-out)}
.cv-dialog--ink{background:var(--surface-ink);color:var(--text-inverse);border-color:var(--border-inverse)}
.cv-dialog__title{font:var(--type-h2);text-transform:uppercase;letter-spacing:var(--ls-heading);margin:0}
.cv-dialog__body{font:var(--type-body-sm);color:var(--text-secondary);margin:0}
.cv-dialog--ink .cv-dialog__body{color:var(--text-inverse-muted)}
.cv-dialog__actions{display:flex;gap:var(--space-4);justify-content:flex-end;margin-top:var(--space-4)}
@keyframes cv-fade{from{opacity:0}to{opacity:1}}
@keyframes cv-rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

.cv-toast{display:flex;align-items:flex-start;gap:var(--space-4);background:var(--surface-ink);color:var(--text-inverse);padding:var(--space-5) var(--space-6);border-left:2px solid var(--cv-mustard-gold);min-width:280px;max-width:420px;animation:cv-rise var(--dur-base) var(--ease-out)}
.cv-toast--info{border-left-color:var(--cv-electric-blue)}
.cv-toast--danger{border-left-color:var(--state-danger)}
.cv-toast__title{font:var(--type-overline);letter-spacing:var(--ls-overline);text-transform:uppercase;margin:0 0 4px}
.cv-toast__text{font-family:var(--font-body);font-size:var(--fs-body-sm);font-weight:400;color:var(--text-inverse-muted);margin:0}
.cv-toast__close{margin-left:auto;background:none;border:0;color:var(--text-inverse-muted);cursor:pointer;font-size:16px;line-height:1}
.cv-toast__close:hover{color:var(--cv-bone)}

.cv-tooltip{position:relative;display:inline-flex}
.cv-tooltip__bubble{position:absolute;z-index:40;background:var(--surface-ink);color:var(--cv-bone);font-family:var(--font-body);font-size:10px;font-weight:var(--fw-medium);letter-spacing:.14em;text-transform:uppercase;padding:7px 10px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-brand)}
.cv-tooltip:hover .cv-tooltip__bubble{opacity:1}
.cv-tooltip__bubble--top{bottom:calc(100% + 8px);left:50%;transform:translateX(-50%)}
.cv-tooltip__bubble--bottom{top:calc(100% + 8px);left:50%;transform:translateX(-50%)}
.cv-tooltip__bubble--right{left:calc(100% + 8px);top:50%;transform:translateY(-50%)}
