/* CaribCore Technologies N.V. — components
   Requires caribcore-colours.css, caribcore-type.css, caribcore-tokens.css */

/* ---------------- buttons ---------------- */
.cc-btn{display:inline-flex;align-items:center;gap:var(--cc-space-2);
  font-family:var(--cc-font-body);font-size:1rem;font-weight:700;line-height:1;
  padding:.75rem 1.25rem;border-radius:var(--cc-radius-md);border:2px solid transparent;
  cursor:pointer;text-decoration:none;min-height:44px;
  transition:background-color var(--cc-dur-sm) var(--cc-ease),
             border-color var(--cc-dur-sm) var(--cc-ease),
             color var(--cc-dur-sm) var(--cc-ease);}
.cc-btn:focus-visible{outline:none;box-shadow:var(--cc-shadow-focus);}

.cc-btn--primary{background:var(--cc-core-teal);color:var(--cc-midnight-core);}
.cc-btn--primary:hover{background:#14A88E;}
.cc-btn--primary:active{background:var(--cc-deep-teal);color:#fff;}
.cc-btn--primary:disabled{background:var(--cc-teal-200);color:#5B7F76;cursor:not-allowed;}

.cc-btn--secondary{background:transparent;color:var(--cc-deep-navy);border-color:var(--cc-deep-navy);}
.cc-btn--secondary:hover{background:var(--cc-navy-50);}
.cc-btn--secondary:active{background:var(--cc-navy-100);}
.cc-btn--secondary:disabled{color:var(--cc-navy-300);border-color:var(--cc-navy-200);cursor:not-allowed;}

.cc-btn--tertiary{background:transparent;color:var(--cc-deep-teal);padding-inline:.25rem;}
.cc-btn--tertiary:hover{text-decoration:underline;}

.cc-btn--danger{background:var(--cc-critical,#C0392B);color:#fff;}
.cc-btn--danger:hover{background:#A63125;}

.cc-btn[aria-busy="true"]{position:relative;color:transparent;}
.cc-btn[aria-busy="true"]::after{content:"";position:absolute;inset:0;margin:auto;
  width:1rem;height:1rem;border:2px solid currentColor;border-top-color:transparent;
  border-radius:50%;animation:cc-spin .7s linear infinite;color:var(--cc-midnight-core);}
@keyframes cc-spin{to{transform:rotate(360deg)}}

/* ---------------- form controls ---------------- */
.cc-field{display:flex;flex-direction:column;gap:var(--cc-space-1);margin-block-end:var(--cc-space-5);}
.cc-label{font-size:.875rem;font-weight:700;color:var(--cc-deep-navy);}
.cc-hint{font-size:.8125rem;color:var(--cc-slate);}
.cc-input,.cc-select,.cc-textarea{
  font-family:var(--cc-font-body);font-size:1rem;color:#22303A;
  padding:.625rem .75rem;min-height:44px;background:#fff;
  border:var(--cc-border);border-radius:var(--cc-radius-md);
  transition:border-color var(--cc-dur-sm) var(--cc-ease),box-shadow var(--cc-dur-sm) var(--cc-ease);}
.cc-input:hover{border-color:var(--cc-slate);}
.cc-input:focus{outline:none;border-color:var(--cc-deep-teal);box-shadow:var(--cc-shadow-focus);}
.cc-input[aria-invalid="true"]{border-color:var(--cc-critical,#C0392B);border-width:2px;}
.cc-input:disabled{background:var(--cc-navy-50);color:var(--cc-navy-400);cursor:not-allowed;}
.cc-input[readonly]{background:var(--cc-navy-50);border-style:dashed;}
.cc-error{font-size:.8125rem;font-weight:700;color:var(--cc-critical,#C0392B);}

/* ---------------- surfaces ---------------- */
.cc-card{background:#fff;border:var(--cc-border);border-radius:var(--cc-radius-lg);
  padding:var(--cc-space-5);box-shadow:var(--cc-shadow-1);}
.cc-card--interactive:hover{box-shadow:var(--cc-shadow-2);border-color:var(--cc-slate);}
.cc-panel{background:#F4F7F9;border-radius:var(--cc-radius-lg);padding:var(--cc-space-5);}

/* ---------------- alerts ---------------- */
.cc-alert{display:flex;gap:var(--cc-space-3);padding:var(--cc-space-4);
  border-radius:var(--cc-radius-md);border-inline-start:4px solid;font-size:.9375rem;}
.cc-alert--info{background:#EAF1F5;border-color:#106B90;}
.cc-alert--success{background:#EAF4EE;border-color:#2E7D4F;}
.cc-alert--warning{background:#FAF2E6;border-color:#9A5B00;}
.cc-alert--critical{background:#FBEEEC;border-color:#C0392B;}
.cc-alert__title{font-weight:700;color:var(--cc-deep-navy);}

/* ---------------- badges ---------------- */
.cc-badge{display:inline-flex;align-items:center;gap:.25rem;font-size:.75rem;font-weight:700;
  padding:.1875rem .5rem;border-radius:var(--cc-radius-sm);text-transform:uppercase;letter-spacing:.04em;}
.cc-badge--neutral{background:var(--cc-navy-100);color:var(--cc-deep-navy);}
.cc-badge--success{background:#DFF0E7;color:#1F5A38;}
.cc-badge--warning{background:#F6E9D4;color:#7A4700;}
.cc-badge--critical{background:#F7DEDA;color:#8F2A20;}

/* ---------------- tables ---------------- */
.cc-table{width:100%;border-collapse:collapse;font-size:.9375rem;}
.cc-table thead th{background:var(--cc-deep-navy);color:#fff;text-align:left;
  font-size:.8125rem;font-weight:700;padding:.625rem .75rem;}
.cc-table td{padding:.625rem .75rem;border-block-end:1px solid #CDD3D7;}
.cc-table tbody tr:nth-child(even){background:#F4F7F9;}
.cc-table td.num{text-align:right;font-variant-numeric:tabular-nums;}

/* ---------------- skip link ---------------- */
.cc-skip{position:absolute;inset-inline-start:-9999px;}
.cc-skip:focus{inset-inline-start:var(--cc-space-4);inset-block-start:var(--cc-space-4);
  z-index:var(--cc-z-toast);background:#fff;padding:var(--cc-space-3);
  box-shadow:var(--cc-shadow-focus);border-radius:var(--cc-radius-md);}
