/* Fonts declared in the Aditiva business card artwork (Adobe Illustrator source):
   Orbitron-Regular and Montserrat-Thin. Both are Google Fonts; self-hosted here as
   variable woff2 (latin / latin-ext subsets) so consumers need no network CDN. */
@font-face{font-family:"Orbitron";font-style:normal;font-weight:400 900;font-display:swap;src:url("../assets/fonts/Orbitron-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:100 900;font-display:swap;src:url("../assets/fonts/Montserrat-latin.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Montserrat";font-style:normal;font-weight:100 900;font-display:swap;src:url("../assets/fonts/Montserrat-latin-ext.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
:root{
/* --- Brand primitives (sampled from the business card artwork) --- */
--ink-900:#0C1719;
--ink-800:#132628; /* exact card background */
--ink-700:#1C3437;
--ink-600:#2A484B;
--ink-500:#3D6164;
--ink-400:#5C7A7C;
--ink-300:#8AA3A4;
--mist-200:#D5DCDB; /* exact card secondary type colour */
--mist-100:#E8EDEC;
--mist-50:#F5F7F6;
--white:#FFFFFF;

--orange-700:#C74A12;
--orange-600:#E85B1C;
--orange-500:#FF6F30; /* exact card accent */
--orange-400:#FF8B57;
--orange-200:#FFC7AA;
--orange-100:#FFE7DB;

/* --- Semantic / status (additions — not present in the source artwork) --- */
--green-500:#2E9E6B;
--amber-500:#E8A317;
--red-500:#D14343;
--blue-500:#2E7DA6;

/* --- Semantic aliases --- */
--surface-page:var(--mist-50);
--surface-card:var(--white);
--surface-sunken:var(--mist-100);
--surface-inverse:var(--ink-800);
--surface-inverse-raised:var(--ink-700);
--surface-accent:var(--orange-500);
--surface-accent-soft:var(--orange-100);

--text-heading:var(--ink-800);
--text-body:var(--ink-600);
--text-muted:var(--ink-400);
--text-accent:var(--orange-500);
--text-on-inverse:var(--white);
--text-on-inverse-muted:var(--mist-200);
--text-on-accent:var(--white);

--border-hairline:rgba(19,38,40,.12);
--border-strong:rgba(19,38,40,.24);
--border-inverse:rgba(213,220,219,.18);
--border-accent:var(--orange-500);

--focus-ring:var(--orange-500);

--status-ok:var(--green-500);
--status-warn:var(--amber-500);
--status-error:var(--red-500);
--status-info:var(--blue-500);
}
:root{
--font-display:"Orbitron","Eurostile","Bank Gothic",system-ui,sans-serif;
--font-body:"Montserrat",system-ui,-apple-system,"Segoe UI",sans-serif;
--font-mono:ui-monospace,"SFMono-Regular",Menlo,monospace;

--weight-thin:100;
--weight-light:300;
--weight-regular:400;
--weight-medium:500;
--weight-semibold:600;
--weight-bold:700;
--weight-black:900;

--size-display-xl:4rem;
--size-display-l:3rem;
--size-display-m:2.25rem;
--size-h1:2rem;
--size-h2:1.75rem;
--size-h3:1.375rem;
--size-h4:1.125rem;
--size-body-l:1.125rem;
--size-body:1rem;
--size-body-s:.875rem;
--size-caption:.75rem;
--size-eyebrow:.75rem;

--leading-tight:1.05;
--leading-snug:1.2;
--leading-normal:1.45;
--leading-relaxed:1.65;

--tracking-display:-0.01em;
--tracking-normal:0;
--tracking-wide:.06em;
--tracking-eyebrow:.18em;
--tracking-logotype:.32em;

/* Composite aliases */
--text-display:var(--weight-black) var(--size-display-l)/var(--leading-tight) var(--font-display);
--text-eyebrow-font:var(--font-display);
}
:root{
--space-0:0;
--space-1:2px;
--space-2:4px;
--space-3:8px;
--space-4:12px;
--space-5:16px;
--space-6:24px;
--space-7:32px;
--space-8:48px;
--space-9:64px;
--space-10:96px;
--space-11:128px;

--gutter-inline:24px;
--section-y:96px;
--section-y-compact:64px;
--stack-tight:8px;
--stack:16px;
--stack-loose:24px;
--container-max:1180px;
--container-narrow:760px;
}
:root{
/* The only enclosed shapes in the source artwork are the fully-round contact
   pills and the round stroke caps of the logo — so the system is pill-first. */
--radius-0:0;
--radius-sm:4px;
--radius-md:8px;
--radius-lg:12px;
--radius-xl:20px;
--radius-pill:999px;

--radius-button:var(--radius-pill);
--radius-card:var(--radius-lg);
--radius-input:var(--radius-md);
--radius-tag:var(--radius-pill);
--radius-image:var(--radius-lg);
}
:root{
/* Flat and technical. Hairline borders do most of the work; shadows are
   short, low-opacity and tinted with the brand ink — never neutral black. */
--shadow-0:none;
--shadow-1:0 1px 2px rgba(12,23,25,.06);
--shadow-2:0 2px 8px rgba(12,23,25,.08);
--shadow-3:0 8px 24px rgba(12,23,25,.10);
--shadow-accent:0 6px 18px rgba(255,111,48,.28);
--shadow-inset-hairline:inset 0 0 0 1px var(--border-hairline);
--blur-veil:blur(12px); /* @kind other */
--veil-inverse:rgba(19,38,40,.72);
}
:root{
--ease-out:cubic-bezier(.2,.6,.2,1); /* @kind other */
--ease-in-out:cubic-bezier(.5,0,.2,1); /* @kind other */
--dur-instant:80ms; /* @kind other */
--dur-fast:160ms; /* @kind other */
--dur-base:240ms; /* @kind other */
--dur-slow:420ms; /* @kind other */
--transition-interactive:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),transform var(--dur-instant) var(--ease-out);
--transition-reveal:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out);
}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;font-family:var(--font-body);font-size:var(--size-body);line-height:var(--leading-relaxed);font-weight:var(--weight-regular);color:var(--text-body);background:var(--surface-page);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,h5{color:var(--text-heading);font-family:var(--font-body);font-weight:var(--weight-bold);line-height:var(--leading-snug);letter-spacing:var(--tracking-display);margin:0}
a{color:var(--orange-600);text-decoration:none;border-bottom:1px solid rgba(255,111,48,.4);transition:var(--transition-interactive)}
a:hover{color:var(--orange-500);border-bottom-color:var(--orange-500)}
::selection{background:var(--orange-200);color:var(--ink-800)}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
/* Aditiva Industrial — component classes.
   Interactive states (hover/active/focus) live here; JSX components stay thin
   and only compose these classes with token-driven inline overrides. */

/* ---------- Eyebrow ---------- */
.adt-eyebrow{display:inline-block;font-family:var(--font-display);font-weight:var(--weight-medium);font-size:var(--size-eyebrow);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--text-accent);line-height:1.4}
.adt-eyebrow--muted{color:var(--text-muted)}
.adt-eyebrow--on-inverse{color:var(--orange-500)}
.adt-eyebrow--rule{display:flex;align-items:center;gap:var(--space-4)}
.adt-eyebrow--rule::after{content:"";flex:1;height:1px;background:var(--border-hairline)}

/* ---------- Button ---------- */
.adt-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-3);font-family:var(--font-body);font-weight:var(--weight-semibold);letter-spacing:.01em;border-radius:var(--radius-button);border:1px solid transparent;cursor:pointer;text-decoration:none;white-space:nowrap;transition:var(--transition-interactive)}
.adt-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}
.adt-btn:active{transform:translateY(1px)}
.adt-btn[disabled],.adt-btn[aria-disabled="true"]{opacity:.4;pointer-events:none}
.adt-btn--sm{height:36px;padding:0 var(--space-5);font-size:var(--size-body-s)}
.adt-btn--md{height:46px;padding:0 var(--space-6);font-size:var(--size-body-s)}
.adt-btn--lg{height:56px;padding:0 var(--space-7);font-size:var(--size-body)}
.adt-btn--primary{background:var(--orange-500);color:var(--text-on-accent);box-shadow:var(--shadow-accent)}
.adt-btn--primary:hover{background:var(--orange-600);box-shadow:none}
.adt-btn--secondary{background:transparent;color:var(--text-heading);border-color:var(--border-strong)}
.adt-btn--secondary:hover{background:rgba(19,38,40,.06);border-color:var(--ink-800)}
.adt-btn--inverse{background:var(--white);color:var(--ink-800)}
.adt-btn--inverse:hover{background:var(--mist-200)}
.adt-btn--outline-inverse{background:transparent;color:var(--white);border-color:var(--border-inverse)}
.adt-btn--outline-inverse:hover{background:rgba(255,255,255,.08);border-color:var(--mist-200)}
.adt-btn--ghost{background:transparent;color:var(--orange-600);padding-left:0;padding-right:0}
.adt-btn--ghost:hover{color:var(--orange-500)}
.adt-btn--block{width:100%}

/* ---------- IconButton ---------- */
.adt-iconbtn{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-pill);border:1px solid transparent;cursor:pointer;transition:var(--transition-interactive);background:var(--orange-500);color:var(--white)}
.adt-iconbtn:hover{background:var(--orange-600)}
.adt-iconbtn:active{transform:translateY(1px)}
.adt-iconbtn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}
.adt-iconbtn--sm{width:32px;height:32px}
.adt-iconbtn--md{width:40px;height:40px}
.adt-iconbtn--lg{width:48px;height:48px}
.adt-iconbtn--quiet{background:transparent;color:var(--text-heading);border-color:var(--border-hairline)}
.adt-iconbtn--quiet:hover{background:rgba(19,38,40,.06);color:var(--ink-800)}
.adt-iconbtn--inverse{background:rgba(255,255,255,.08);color:var(--white);border-color:var(--border-inverse)}
.adt-iconbtn--inverse:hover{background:rgba(255,255,255,.16)}

/* ---------- Icon ---------- */
.adt-icon{display:inline-block;flex:none;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain}

/* ---------- Tag ---------- */
.adt-tag{display:inline-flex;align-items:center;gap:var(--space-2);border-radius:var(--radius-tag);font-family:var(--font-body);font-weight:var(--weight-medium);font-size:var(--size-caption);line-height:1;padding:7px 14px;border:1px solid var(--border-hairline);color:var(--text-body);background:var(--white);transition:var(--transition-interactive)}
.adt-tag--accent{background:var(--orange-100);border-color:transparent;color:var(--orange-700)}
.adt-tag--solid{background:var(--orange-500);border-color:transparent;color:var(--white)}
.adt-tag--inverse{background:rgba(255,255,255,.06);border-color:var(--border-inverse);color:var(--mist-200)}
.adt-tag--outline{background:transparent}
.adt-tag--ok{background:rgba(46,158,107,.12);border-color:transparent;color:var(--green-500)}
.adt-tag--warn{background:rgba(232,163,23,.14);border-color:transparent;color:#9C6B00}
.adt-tag--error{background:rgba(209,67,67,.12);border-color:transparent;color:var(--red-500)}

/* ---------- Card surfaces ---------- */
.adt-card{background:var(--surface-card);border:1px solid var(--border-hairline);border-radius:var(--radius-card);padding:var(--space-6);transition:border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}
.adt-card--interactive:hover{border-color:var(--orange-500);box-shadow:var(--shadow-2);transform:translateY(-2px)}
.adt-card--inverse{background:var(--surface-inverse-raised);border-color:var(--border-inverse);color:var(--text-on-inverse-muted)}
.adt-card--inverse:hover{border-color:var(--orange-500)}
.adt-card--flat{border-color:transparent;background:var(--surface-sunken)}

/* ---------- Form controls ---------- */
.adt-label{display:block;font-family:var(--font-display);font-size:var(--size-eyebrow);letter-spacing:var(--tracking-wide);text-transform:uppercase;font-weight:var(--weight-medium);color:var(--text-muted);margin-bottom:var(--space-3)}
.adt-control{width:100%;font-family:var(--font-body);font-size:var(--size-body-s);color:var(--text-heading);background:var(--white);border:1px solid var(--border-hairline);border-radius:var(--radius-input);padding:0 var(--space-5);height:48px;transition:var(--transition-interactive)}
.adt-control::placeholder{color:var(--ink-300)}
.adt-control:hover{border-color:var(--border-strong)}
.adt-control:focus{outline:none;border-color:var(--orange-500);box-shadow:0 0 0 3px rgba(255,111,48,.18)}
.adt-control--area{height:auto;padding:var(--space-4) var(--space-5);min-height:132px;line-height:var(--leading-normal);resize:vertical}
.adt-control--select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-400) 50%),linear-gradient(135deg,var(--ink-400) 50%,transparent 50%);background-position:calc(100% - 20px) 21px,calc(100% - 14px) 21px;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:var(--space-8)}
.adt-control--invalid{border-color:var(--red-500)}
.adt-control--invalid:focus{box-shadow:0 0 0 3px rgba(209,67,67,.18)}
.adt-control--inverse{background:rgba(255,255,255,.04);border-color:var(--border-inverse);color:var(--white)}
.adt-control--inverse::placeholder{color:var(--ink-400)}
.adt-field-msg{margin-top:var(--space-3);font-size:var(--size-caption);color:var(--text-muted)}
.adt-field-msg--error{color:var(--red-500)}

/* ---------- Accordion ---------- */
.adt-acc-item{border-bottom:1px solid var(--border-hairline)}
.adt-acc-trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);width:100%;background:none;border:0;cursor:pointer;text-align:left;padding:var(--space-6) 0;font-family:var(--font-body);font-weight:var(--weight-semibold);font-size:var(--size-body);color:var(--text-heading);transition:color var(--dur-fast) var(--ease-out)}
.adt-acc-trigger:hover{color:var(--orange-600)}
.adt-acc-sign{position:relative;flex:none;width:20px;height:20px;transition:transform var(--dur-base) var(--ease-out)}
.adt-acc-sign::before,.adt-acc-sign::after{content:"";position:absolute;background:var(--orange-500);border-radius:var(--radius-pill)}
.adt-acc-sign::before{left:0;top:9px;width:20px;height:2px}
.adt-acc-sign::after{left:9px;top:0;width:2px;height:20px;transition:opacity var(--dur-fast) var(--ease-out)}
.adt-acc-item[data-open="true"] .adt-acc-sign::after{opacity:0}
.adt-acc-panel{overflow:hidden;display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-base) var(--ease-out)}
.adt-acc-item[data-open="true"] .adt-acc-panel{grid-template-rows:1fr}
.adt-acc-panel>div{overflow:hidden}
.adt-acc-body{padding-bottom:var(--space-6);max-width:66ch;color:var(--text-body);font-size:var(--size-body-s)}

/* ---------- Comparison table ---------- */
.adt-table{width:100%;border-collapse:collapse;font-size:var(--size-body-s)}
.adt-table th,.adt-table td{text-align:left;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-hairline)}
.adt-table thead th{font-family:var(--font-display);font-size:var(--size-eyebrow);letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-muted);font-weight:var(--weight-medium)}
.adt-table tbody th{font-weight:var(--weight-medium);color:var(--text-body)}
.adt-table td{color:var(--text-heading);font-weight:var(--weight-medium)}
.adt-table .adt-table__hl{background:var(--orange-100);color:var(--orange-700);font-weight:var(--weight-semibold)}
.adt-table tbody tr:last-child th,.adt-table tbody tr:last-child td{border-bottom:0}

/* ---------- Checklist ---------- */
.adt-checklist{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-4)}
.adt-checklist li{display:grid;grid-template-columns:20px 1fr;gap:var(--space-4);align-items:start;font-size:var(--size-body-s);line-height:var(--leading-normal)}
.adt-checklist__mark{width:20px;height:20px;border-radius:var(--radius-pill);display:grid;place-items:center;margin-top:1px;flex:none}

/* ---------- Nav ---------- */
.adt-navlink{font-size:var(--size-body-s);font-weight:var(--weight-medium);color:var(--text-on-inverse-muted);text-decoration:none;border:0;padding:var(--space-2) 0;transition:color var(--dur-fast) var(--ease-out);position:relative}
.adt-navlink::after{content:"";position:absolute;left:0;right:100%;bottom:-2px;height:2px;background:var(--orange-500);transition:right var(--dur-base) var(--ease-out)}
.adt-navlink:hover{color:var(--white)}
.adt-navlink:hover::after{right:0}
.adt-navlink--dark{color:var(--text-body)}
.adt-navlink--dark:hover{color:var(--ink-800)}

/* ============ Internal app (Aditiva Fabricación) ============ */
.adt-app{background:var(--app-bg);color:var(--app-text);min-height:100%}
.adt-app a{color:var(--orange-500);border-bottom-color:transparent}
.adt-app a:hover{color:var(--orange-400)}

.adt-sidelink{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-md);font-size:var(--size-body-s);font-weight:var(--weight-medium);color:var(--app-soft);border:0;background:none;width:100%;text-align:left;cursor:pointer;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out);border-left:2px solid transparent;padding-left:10px}
.adt-sidelink:hover{background:var(--app-s2);color:var(--app-text)}
.adt-sidelink[aria-current="page"]{background:rgba(255,111,48,.12);color:var(--orange-500);border-left-color:var(--orange-500)}
.adt-sidelink--danger{color:var(--app-error)}
.adt-sidelink--danger:hover{background:var(--app-error-bg);color:var(--app-error)}

.adt-panel{background:var(--app-s1);border:1px solid var(--app-border);border-radius:var(--radius-card)}
.adt-panel--hover{transition:border-color var(--dur-fast) var(--ease-out)}
.adt-panel--hover:hover{border-color:var(--orange-500)}

.adt-dtable{width:100%;border-collapse:collapse;font-size:var(--size-body-s)}
.adt-dtable thead th{font-family:var(--font-display);font-size:10px;letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;font-weight:var(--weight-medium);color:var(--app-muted);text-align:left;padding:10px 14px;border-bottom:1px solid var(--app-border)}
.adt-dtable tbody td{padding:12px 14px;border-bottom:1px solid var(--app-border-soft);color:var(--app-text)}
.adt-dtable tbody tr{transition:background var(--dur-fast) var(--ease-out);cursor:pointer}
.adt-dtable tbody tr:hover{background:var(--app-s2)}
.adt-dtable tbody tr:last-child td{border-bottom:0}
.adt-num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}

.adt-badge{display:inline-flex;align-items:center;gap:5px;border-radius:var(--radius-pill);font-family:var(--font-display);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:var(--weight-medium);padding:4px 9px;line-height:1;white-space:nowrap}

.adt-progress{height:6px;border-radius:var(--radius-pill);background:var(--app-s3);overflow:hidden}
.adt-progress>i{display:block;height:100%;background:var(--orange-500);border-radius:var(--radius-pill);transition:width var(--dur-base) var(--ease-out)}

.adt-app .adt-control{background:var(--app-s2);border-color:var(--app-border);color:var(--app-text)}
.adt-app .adt-control::placeholder{color:var(--app-muted)}
.adt-app .adt-control:hover{border-color:var(--app-s3)}
.adt-app .adt-control:focus{border-color:var(--orange-500);box-shadow:0 0 0 3px rgba(255,111,48,.18)}
.adt-app .adt-label{color:var(--app-muted)}
.adt-app .adt-btn--secondary{color:var(--app-text);border-color:var(--app-border)}
.adt-app .adt-btn--secondary:hover{background:var(--app-s2);border-color:var(--orange-500)}
