/* K-Eduplex components — static CSS. Every value is a token from tokens.css. */
.kx-root{font-family:var(--font-body);color:var(--text);background:var(--canvas);font-size:16px;line-height:26px}
.kx-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:40px;padding:0 var(--space-5);border-radius:var(--radius-pill);border:1px solid transparent;font:600 14px/20px var(--font-body);cursor:pointer;text-decoration:none}
.kx-btn:focus-visible,.kx-field input:focus-visible,.kx-field select:focus-visible{outline:2px solid var(--action-strong);outline-offset:2px}
.kx-btn--primary{background:var(--action);color:var(--on-action)}
.kx-btn--primary:hover{background:var(--action-strong)}
.kx-btn--secondary{background:var(--surface);color:var(--ink);border-color:var(--control-border)}
.kx-btn--secondary:hover{background:var(--surface-sunken)}
.kx-btn--brand{background:var(--brand);color:var(--on-brand);font-size:16px;font-weight:700}
.kx-btn--ghost{background:transparent;color:var(--ink);text-decoration:underline;text-underline-offset:3px;padding:0 var(--space-2)}
.kx-btn[disabled]{background:var(--surface-sunken);color:var(--text-muted);border-color:var(--line);cursor:not-allowed}
.kx-btn--sm{min-height:32px;padding:0 var(--space-4);font-size:13px}
.kx-card{background:var(--surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:var(--space-5)}
.kx-card__kicker{font:500 13px/18px var(--font-heading);color:var(--kicker);margin:0 0 var(--space-1)}
.kx-card__title{font:600 18px/26px var(--font-heading);color:var(--ink);margin:0 0 var(--space-2)}
.kx-card__body{font-size:14px;line-height:22px;color:var(--text);margin:0}
.kx-card__rule{height:1px;background:var(--line);border:0;margin:var(--space-4) 0}
.kx-card__meta{font-size:12px;line-height:18px;color:var(--text-muted)}
.kx-section{display:grid;gap:var(--space-1)}
.kx-section__kicker{font:500 13px/18px var(--font-heading);color:var(--kicker)}
.kx-section__title{font:500 32px/40px var(--font-heading);color:var(--ink);margin:0}
.kx-section__rule{width:72px;height:2px;background:var(--brand);border:0;margin:var(--space-3) 0 0}
.kx-section__lead{font-size:16px;line-height:26px;color:var(--text-muted);margin:var(--space-2) 0 0;max-width:640px}
.kx-tag{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px 10px;border-radius:var(--radius-pill);font:600 12px/18px var(--font-body);background:var(--surface-sunken);color:var(--ink)}
.kx-tag--highlight{background:var(--highlight);color:var(--on-highlight)}
.kx-tag--brand{background:var(--brand);color:var(--on-brand)}
.kx-tag--success{background:var(--surface);color:var(--success);box-shadow:inset 0 0 0 1px var(--success)}
.kx-tag--warning{background:var(--surface);color:var(--warning);box-shadow:inset 0 0 0 1px var(--warning)}
.kx-tag--danger{background:var(--surface);color:var(--danger);box-shadow:inset 0 0 0 1px var(--danger)}
.kx-header{display:flex;align-items:center;gap:var(--space-5);height:64px;padding:0 var(--space-6);background:var(--surface);border-bottom:1px solid var(--line)}
.kx-header__logo{height:32px;width:auto;display:block}
.kx-header__service{font:600 18px/26px var(--font-heading);color:var(--ink);padding-left:var(--space-5);border-left:1px solid var(--line)}
.kx-header__nav{display:flex;gap:var(--space-1);margin-left:auto}
.kx-header__nav a{font:500 14px/20px var(--font-body);color:var(--text);text-decoration:none;padding:var(--space-2) var(--space-3);border-radius:var(--radius-pill)}
.kx-header__nav a[aria-current=page]{background:var(--brand);color:var(--on-brand)}
.kx-band{height:6px;background:var(--brand)}
.kx-field{display:grid;gap:var(--space-2);max-width:360px}
.kx-field label{font:600 14px/20px var(--font-body);color:var(--ink)}
.kx-field input,.kx-field select{height:40px;padding:0 var(--space-3);border:1px solid var(--control-border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:400 16px/24px var(--font-body)}
.kx-field__help{font-size:12px;line-height:18px;color:var(--text-muted)}
.kx-field--error input{border-color:var(--danger);box-shadow:inset 0 0 0 1px var(--danger)}
.kx-field__error{font-size:12px;line-height:18px;color:var(--danger);font-weight:600}
