/* Core Cushion design system — shared tokens, base styles and component states.
   Single stylesheet linked by every artboard. Source of truth: project/DESIGN-SYSTEM.md */

:root{
  /* Colour */
  --cc-black:#000000; --cc-ink:#1A1A1A; --cc-charcoal:#2E2E2E;
  --cc-grey-700:#545454; --cc-grey-500:#767676; --cc-grey-400:#ABABAB;
  --cc-grey-300:#D4D4D4; --cc-grey-200:#E8E8E8; --cc-grey-100:#F4F4F4; --cc-white:#FFFFFF;
  --cc-success:#1E7B3C; --cc-error:#B3261E;
  --cc-scrim:rgba(0,0,0,0.45); --cc-glass:rgba(26,26,26,0.82);
  /* Type */
  --cc-font-display:'Libre Franklin',sans-serif; --cc-font-body:'Jost',system-ui,sans-serif;
  /* Spacing (4px base) */
  --cc-space-2:2px; --cc-space-4:4px; --cc-space-8:8px; --cc-space-12:12px; --cc-space-16:16px; --cc-space-20:20px;
  --cc-space-24:24px; --cc-space-28:28px; --cc-space-32:32px; --cc-space-40:40px; --cc-space-48:48px;
  --cc-space-56:56px; --cc-space-64:64px; --cc-space-80:80px; --cc-space-96:96px; --cc-space-120:120px;
  /* Radius */
  --cc-radius-sm:4px; --cc-radius-md:8px; --cc-radius-lg:12px; --cc-radius-full:999px;
  /* Shadow */
  --cc-shadow-sm:0 4px 12px rgba(0,0,0,0.10); --cc-shadow-md:0 10px 24px rgba(0,0,0,0.14);
  --cc-shadow-lg:0 24px 48px rgba(0,0,0,0.08); --cc-shadow-overlay:0 16px 40px rgba(0,0,0,0.24);
  --cc-ring:0 0 0 3px rgba(26,26,26,0.16);
  /* Motion */
  --cc-ease:cubic-bezier(.2,0,0,1); --cc-dur-fast:.2s; --cc-dur:.25s; --cc-dur-slow:.5s;
}

/* Base */
body{margin:0;background:#FFFFFF;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;}
*{box-sizing:border-box;}
h1,h2,h3,blockquote{text-wrap:balance;}
p{text-wrap:pretty;}
a{color:#1A1A1A;text-decoration:none;}
a:hover{color:#000000;}
button,input,select,textarea{font-family:inherit;}
button{cursor:pointer;}
img{display:block;}
:focus-visible{outline:2px solid #1A1A1A;outline-offset:2px;}
.cc-on-dark :focus-visible{outline-color:#FFFFFF;}

/* Links */
.cc-nav:hover,.cc-nav.is-hover{text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px;}
.cc-link{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px;}
.cc-link:hover,.cc-link.is-hover{text-decoration-thickness:2px;}
.cc-link svg{transition:transform .25s ease;}
.cc-link:hover svg,.cc-link.is-hover svg{transform:translateX(4px);}
.cc-foot a{color:#D4D4D4;}
.cc-foot a:hover{color:#FFFFFF;}

/* Buttons: .cc-btn + .cc-primary | .cc-secondary | .cc-inverse */
.cc-btn{position:relative;letter-spacing:0.01em;transition:background .25s ease,color .25s ease,border-color .25s ease,box-shadow .25s ease,transform .25s ease,border-radius .25s ease;}
.cc-btn:hover,.cc-btn.is-hover,.cc-tile:hover .cc-btn{border-radius:8px !important;transform:translateY(-2px);box-shadow:0 10px 24px rgba(0,0,0,0.14);}
.cc-btn:active,.cc-btn.is-active{transform:translateY(0) scale(.98);box-shadow:0 4px 12px rgba(0,0,0,0.10);}
.cc-btn.is-focus{outline:2px solid #1A1A1A;outline-offset:2px;}
.cc-primary:hover,.cc-primary.is-hover{background:#2E2E2E !important;}
.cc-primary:active,.cc-primary.is-active{background:#000000 !important;}
.cc-secondary:hover,.cc-secondary.is-hover,.cc-tile:hover .cc-secondary{background:#1A1A1A !important;color:#FFFFFF !important;}
.cc-secondary:active,.cc-secondary.is-active{background:#000000 !important;color:#FFFFFF !important;}
.cc-inverse:hover,.cc-inverse.is-hover{background:#F4F4F4 !important;}
.cc-inverse:active,.cc-inverse.is-active{background:#E8E8E8 !important;}
.cc-btn:disabled,.cc-btn.is-disabled{background:#E8E8E8 !important;border-color:#E8E8E8 !important;color:#767676 !important;cursor:not-allowed;transform:none !important;box-shadow:none !important;border-radius:4px !important;}
.cc-btn.is-loading{color:transparent !important;pointer-events:none;}
.cc-btn.is-loading > *{visibility:hidden;}
.cc-btn.is-loading::after{content:'';position:absolute;left:50%;top:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border-radius:50%;border:2px solid rgba(26,26,26,0.25);border-top-color:#1A1A1A;animation:ccSpin .8s linear infinite;}
.cc-primary.is-loading::after{border-color:rgba(255,255,255,0.35);border-top-color:#FFFFFF;}
@keyframes ccSpin{to{transform:rotate(360deg);}}

/* Arrow swap inside buttons (JS-driven translate on .a1/.a2) */
.cc-arw{position:relative;display:inline-flex;flex:none;width:18px;height:18px;overflow:hidden;}
.cc-arw svg{position:absolute;inset:0;}

/* Icon button */
.cc-icon{transition:background .2s ease,transform .2s ease;}
.cc-icon:hover,.cc-icon.is-hover{background:#F4F4F4 !important;transform:scale(1.06);}
.cc-icon:active,.cc-icon.is-active{transform:scale(.96);}
.cc-on-dark .cc-icon:hover{background:rgba(255,255,255,0.12) !important;}

/* Menu items (dropdowns, mega menu links) */
.cc-menu-item{transition:background .2s ease;}
.cc-menu-item:hover,.cc-menu-item.is-hover{background:#F4F4F4 !important;}

/* Cards and tiles */
.cc-card{border:1px solid #E8E8E8;transition:border-color .25s ease,box-shadow .25s ease,transform .25s ease;}
.cc-card:hover,.cc-card.is-hover{border-color:#D4D4D4;box-shadow:0 24px 48px rgba(0,0,0,0.08);transform:translateY(-2px);}
.cc-card .cc-alt{opacity:0;transition:opacity .35s ease;}
.cc-card:hover .cc-alt,.cc-card.is-hover .cc-alt{opacity:1;}
.cc-zoom{transition:transform .5s ease;}
.cc-tile:hover .cc-zoom{transform:scale(1.04);}

/* Accordion */
.cc-faq{transition:border-color .2s ease;}
.cc-faq:hover,.cc-faq.is-hover{border-color:#767676 !important;}

/* Form fields: input, textarea, select trigger */
.cc-field{width:100%;height:48px;padding:0 16px;border:1px solid #D4D4D4;border-radius:4px;background:#FFFFFF;color:#1A1A1A;font-size:16px;line-height:24px;transition:border-color .2s ease,box-shadow .2s ease;}
.cc-field::placeholder{color:#767676;}
.cc-field:hover,.cc-field.is-hover{border-color:#767676;}
.cc-field:focus,.cc-field.is-focus,.cc-field.is-open{outline:none;border-color:#1A1A1A;box-shadow:0 0 0 3px rgba(26,26,26,0.16);}
.cc-field.is-error{border-color:#B3261E;}
.cc-field.is-error:focus,.cc-field.is-error.is-focus{box-shadow:0 0 0 3px rgba(179,38,30,0.16);}
.cc-field.is-success{border-color:#1E7B3C;}
.cc-field:disabled,.cc-field.is-disabled{background:#F4F4F4;border-color:#E8E8E8;color:#767676;cursor:not-allowed;box-shadow:none;}
.cc-field-lg{height:56px;}
.cc-field-dark{background:transparent;border-color:#767676;color:#FFFFFF;}
.cc-field-dark::placeholder{color:#ABABAB;}
.cc-field-dark:hover{border-color:#ABABAB;}
.cc-field-dark:focus{border-color:#FFFFFF;box-shadow:0 0 0 3px rgba(255,255,255,0.20);}
.cc-select-chev{transition:transform .2s ease;}
.cc-field.is-open .cc-select-chev{transform:rotate(180deg);}

/* Checkbox and radio: <label class="cc-check [is-radio]"><input><span class="cc-box"></span>Label</label> */
.cc-check{position:relative;display:inline-flex;align-items:center;gap:12px;min-height:44px;font-size:16px;line-height:24px;color:#1A1A1A;cursor:pointer;}
.cc-check input{position:absolute;left:0;top:50%;width:20px;height:20px;margin:-10px 0 0;opacity:0;cursor:pointer;}
.cc-box{width:20px;height:20px;flex:none;border:1.5px solid #767676;border-radius:4px;background:#FFFFFF;display:flex;align-items:center;justify-content:center;color:#FFFFFF;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease;}
.cc-box svg{opacity:0;}
.cc-check.is-radio .cc-box{border-radius:50%;}
.cc-check:hover .cc-box,.cc-check.is-hover .cc-box{border-color:#1A1A1A;}
.cc-check input:checked + .cc-box,.cc-check.is-checked .cc-box{background:#1A1A1A;border-color:#1A1A1A;}
.cc-check input:checked + .cc-box svg,.cc-check.is-checked .cc-box svg{opacity:1;}
.cc-check.is-radio input:checked + .cc-box,.cc-check.is-radio.is-checked .cc-box{background:#1A1A1A;box-shadow:inset 0 0 0 4px #FFFFFF;}
.cc-check input:focus-visible + .cc-box,.cc-check.is-focus .cc-box{outline:2px solid #1A1A1A;outline-offset:2px;}
.cc-check.is-error .cc-box{border-color:#B3261E;}
.cc-check input:disabled + .cc-box,.cc-check.is-disabled .cc-box{background:#F4F4F4;border-color:#D4D4D4;}
.cc-check input:disabled:checked + .cc-box,.cc-check.is-disabled.is-checked .cc-box{background:#D4D4D4;border-color:#D4D4D4;}
.cc-check.is-radio.is-disabled.is-checked .cc-box{box-shadow:inset 0 0 0 4px #F4F4F4;}
.cc-check.is-disabled{color:#767676;cursor:not-allowed;}

/* Switch: <label class="cc-switch"><input type="checkbox"><span class="cc-track"></span>Label</label> */
.cc-switch{position:relative;display:inline-flex;align-items:center;gap:12px;min-height:44px;font-size:16px;line-height:24px;cursor:pointer;}
.cc-switch input{position:absolute;left:0;top:50%;width:44px;height:24px;margin:-12px 0 0;opacity:0;cursor:pointer;}
.cc-track{position:relative;width:44px;height:24px;flex:none;border-radius:12px;background:#D4D4D4;transition:background .2s ease;}
.cc-track::after{content:'';position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#FFFFFF;box-shadow:0 1px 3px rgba(0,0,0,0.20);transition:transform .2s ease;}
.cc-switch:hover .cc-track,.cc-switch.is-hover .cc-track{background:#ABABAB;}
.cc-switch input:checked + .cc-track,.cc-switch.is-checked .cc-track{background:#1A1A1A;}
.cc-switch input:checked + .cc-track::after,.cc-switch.is-checked .cc-track::after{transform:translateX(20px);}
.cc-switch input:focus-visible + .cc-track,.cc-switch.is-focus .cc-track{outline:2px solid #1A1A1A;outline-offset:2px;}
.cc-switch.is-disabled{color:#767676;cursor:not-allowed;}
.cc-switch.is-disabled .cc-track{background:#E8E8E8;}

/* Option tile (pack / variant selector) */
.cc-option{border:1.5px solid #D4D4D4;border-radius:8px;background:#FFFFFF;transition:border-color .2s ease,box-shadow .2s ease;}
.cc-option:hover,.cc-option.is-hover{border-color:#767676;}
.cc-option.is-selected,.cc-option[aria-checked="true"]{border-color:#1A1A1A;box-shadow:inset 0 0 0 1px #1A1A1A;}
.cc-option.is-disabled{background:#F4F4F4;border-color:#E8E8E8;color:#767676;cursor:not-allowed;}

/* Chat button */
.cc-fab{transition:transform .2s ease,box-shadow .2s ease;}
.cc-fab:hover{transform:translateY(-2px);box-shadow:0 0 0 4px rgba(255,255,255,0.95),0 16px 40px rgba(0,0,0,0.32) !important;}

/* Footer contact row */
.cc-contacts > a{padding:4px 28px;border-left:1px solid #2E2E2E;}
.cc-contacts > a:first-child{border-left:0;padding-left:0;}
.cc-contacts > a:last-child{padding-right:0;}

/* Looping motion (decorative only) */
@keyframes ccPulse{0%{transform:scale(1);opacity:.55;}100%{transform:scale(2.6);opacity:0;}}
.cc-pulse{animation:ccPulse 2s ease-out infinite;}
@keyframes ccSheen{0%{transform:translateX(-120%) skewX(-12deg);}60%,100%{transform:translateX(480%) skewX(-12deg);}}
.cc-featbar::after{content:'';position:absolute;top:0;bottom:0;left:0;width:22%;pointer-events:none;background:linear-gradient(90deg,rgba(255,255,255,0) 0%,rgba(255,255,255,0.16) 50%,rgba(255,255,255,0) 100%);animation:ccSheen 6s ease-in-out infinite;}
@media (prefers-reduced-motion: reduce){.cc-pulse,.cc-featbar::after{animation:none;}}
