.cem-dc,
.cem-dc * { box-sizing:border-box; }

.cem-dc {
  --cem-accent:#1f6b5c;
  --cem-ink:#202724;
  --cem-muted:#6f7774;
  --cem-line:#dfe5e1;
  --cem-soft:#f6f8f7;
  --cem-wash:#f1f6f4;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--cem-ink);
  padding:32px 16px 58px;
  background:
    radial-gradient(circle at 12% 8%, rgba(31,107,92,.055), transparent 28%),
    radial-gradient(circle at 88% 14%, rgba(58,122,153,.045), transparent 28%),
    #fff;
}

.cem-dc-shell { width:min(900px,100%); margin:0 auto; }

.cem-dc-focus-ring .cem-dc-shell { animation:cemShellPulse .95s ease; }

.cem-dc-floating {
  position:fixed;
  box-sizing:border-box;
  z-index:9999;
  bottom:22px;
  display:inline-flex;
  align-items:center;
  gap:10px;
  min-height:56px;
  padding:14px 18px;
  border:1px solid rgba(255,255,255,.58);
  border-radius:999px;
  background:#1f6b5c;
  background:linear-gradient(135deg, var(--cem-accent), #2b7c98);
  color:#fff;
  box-shadow:0 18px 38px rgba(19,36,30,.20), 0 4px 12px rgba(19,36,30,.12);
  cursor:pointer;
  font:inherit;
  font-size:14px;
  font-weight:800;
  letter-spacing:.01em;
  text-decoration:none;
  transition:transform .18s ease, box-shadow .18s ease, opacity .18s ease;
}
.cem-dc-floating:hover { transform:translateY(-2px); box-shadow:0 22px 44px rgba(19,36,30,.24), 0 8px 18px rgba(19,36,30,.14); }
.cem-dc-floating:focus-visible { outline:3px solid rgba(31,107,92,.18); outline-offset:3px; }
.cem-dc-floating--right { right:20px; }
.cem-dc-floating--left { left:20px; }
.cem-dc-floating-icon {
  width:28px;
  height:28px;
  border-radius:50%;
  background:rgba(255,255,255,.18);
  display:grid;
  place-items:center;
  font-size:15px;
  line-height:1;
  flex:0 0 auto;
}
.cem-dc-floating-text { white-space:nowrap; }


.cem-dc-hero { padding:12px 10px 26px; text-align:center; }
.cem-dc-brand-row { display:flex; align-items:center; justify-content:center; gap:12px; margin-bottom:24px; position:relative; }
.cem-dc-logo { max-height:36px; width:auto; display:block; }
.cem-dc-host { font-size:11px; line-height:1.3; letter-spacing:.14em; text-transform:uppercase; font-weight:800; color:#66706c; }
.cem-dc-sound {
  position:absolute; right:0; margin:0; width:38px; height:38px;
  border:1px solid #dce3df; border-radius:50%; background:#fff; color:var(--cem-accent);
  cursor:pointer; display:grid; place-items:center; font-size:16px;
  box-shadow:0 5px 18px rgba(26,43,36,.06); transition:.18s ease;
}
.cem-dc-sound:hover { transform:translateY(-1px) scale(1.02); border-color:#c3d0ca; box-shadow:0 8px 22px rgba(26,43,36,.09); }
.cem-dc-sound.is-muted { color:#a1aaa6; text-decoration:line-through; }

.cem-dc-hero h1 { margin:0 auto; font-size:clamp(31px,5vw,52px); letter-spacing:-.04em; line-height:1.04; font-weight:720; max-width:790px; }
.cem-dc-hero > p { margin:14px auto 23px; color:var(--cem-muted); font-size:16px; line-height:1.65; max-width:710px; }
.cem-dc-progress-wrap { height:5px; width:100%; max-width:760px; margin:0 auto; background:#e9eeeb; border-radius:999px; overflow:hidden; }
.cem-dc-progress { display:block; width:0; height:100%; background:var(--cem-accent); border-radius:inherit; transition:width .32s cubic-bezier(.22,.8,.2,1); }
.cem-dc-step-label { max-width:760px; margin:8px auto 0; font-size:12px; color:#8a938f; text-align:right; }

.cem-dc-form { position:relative; }
.cem-dc-card {
  position:relative;
  background:#fff;
  border:1px solid #e0e5e2;
  box-shadow:0 20px 62px rgba(25,39,33,.10), 0 2px 8px rgba(25,39,33,.035);
  border-radius:18px;
  padding:clamp(30px,5vw,52px);
  min-height:440px;
  overflow:hidden;
  transform-origin:center;
}
.cem-dc-card::before {
  content:""; position:absolute; inset:0 0 auto 0; height:4px;
  background:linear-gradient(90deg, transparent, var(--cem-accent), transparent); opacity:.72;
}
.cem-dc-card[hidden], .cem-dc-field[hidden], .cem-dc-notice[hidden] { display:none !important; }

.cem-dc-eyebrow { margin:0 0 10px; font-size:10px; letter-spacing:.18em; text-transform:uppercase; font-weight:850; color:var(--cem-accent); text-align:center; }
.cem-dc-card h2 { margin:0 auto; text-align:center; font-size:clamp(27px,4vw,38px); line-height:1.13; letter-spacing:-.03em; font-weight:720; max-width:720px; }
.cem-dc-card-subtitle { color:var(--cem-muted); font-size:15px; line-height:1.6; text-align:center; margin:12px auto 0; max-width:680px; }

.cem-dc-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px 20px; margin-top:38px; }
.cem-dc-field { min-width:0; }
.cem-dc-field.cem-dc-wide, .cem-dc-notice { grid-column:1 / -1; }
.cem-dc-label { display:block; font-size:14px; line-height:1.45; font-weight:760; margin-bottom:10px; color:#303835; }
.cem-dc-field-radio > .cem-dc-label,
.cem-dc-field-checkbox > .cem-dc-label { text-align:center; font-size:16px; margin-bottom:14px; }
.cem-dc-required { color:#c43f46; margin-left:4px; }

.cem-dc input[type="text"],
.cem-dc input[type="email"],
.cem-dc input[type="tel"],
.cem-dc input[type="number"],
.cem-dc input[type="date"],
.cem-dc input[type="time"],
.cem-dc textarea,
.cem-dc select {
  width:100%; min-height:52px; padding:13px 14px;
  border:1px solid #ccd5d0; border-radius:10px;
  background:#fff; color:#1d2522; font:inherit; outline:none;
  box-shadow:0 1px 0 rgba(20,35,29,.02);
  transition:border-color .18s ease, box-shadow .18s ease, background .18s ease, transform .18s ease;
}
.cem-dc textarea { min-height:126px; resize:vertical; }
.cem-dc input:hover, .cem-dc textarea:hover, .cem-dc select:hover { border-color:#b9c6bf; }
.cem-dc input:focus, .cem-dc textarea:focus, .cem-dc select:focus { border-color:var(--cem-accent); box-shadow:0 0 0 3px rgba(31,107,92,.11); }

.cem-dc-grid-2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.cem-dc-choices { display:grid; grid-template-columns:1fr; gap:10px; max-width:760px; margin:0 auto; }
.cem-dc-choices.is-multi { grid-template-columns:repeat(2,minmax(0,1fr)); max-width:none; }
.cem-dc-choice { position:relative; display:flex; align-items:stretch; min-height:58px; cursor:pointer; }
.cem-dc-choice input { position:absolute; opacity:0; pointer-events:none; }
.cem-dc-choice span {
  position:relative; width:100%; min-height:58px; padding:15px 48px 15px 48px;
  border:1px solid #cbd4cf; background:#fff; border-radius:10px;
  font-size:15px; line-height:1.35; transition:.17s ease;
  display:flex; align-items:center; color:#303735;
  box-shadow:0 2px 7px rgba(22,36,30,.025);
}
.cem-dc-choice span::before {
  content:""; position:absolute; left:17px; top:50%; transform:translateY(-50%);
  width:20px; height:20px; border:1.7px solid #aab5af; background:#fff;
  transition:.17s ease; box-shadow:inset 0 0 0 4px #fff;
}
.cem-dc-choice-radio span::before { border-radius:50%; }
.cem-dc-choice-checkbox span::before { border-radius:5px; }
.cem-dc-choice span::after {
  content:"✓"; position:absolute; right:16px; top:50%; transform:translateY(-50%) scale(.6);
  font-size:16px; font-weight:900; color:var(--cem-accent); opacity:0; transition:.17s ease;
}
.cem-dc-choice:hover span { border-color:#aebdb5; transform:translateY(-1px); box-shadow:0 7px 18px rgba(25,39,33,.065); }
.cem-dc-choice input:checked + span {
  border-color:var(--cem-accent);
  background:var(--cem-wash);
  box-shadow:0 0 0 1px var(--cem-accent) inset, 0 8px 20px rgba(31,107,92,.07);
  color:#17241f;
}
.cem-dc-choice input:checked + span::before { border-color:var(--cem-accent); background:var(--cem-accent); }
.cem-dc-choice-radio input:checked + span::before { box-shadow:inset 0 0 0 5px #fff; }
.cem-dc-choice-checkbox input:checked + span::before { box-shadow:inset 0 0 0 3px #fff; }
.cem-dc-choice input:checked + span::after { opacity:1; transform:translateY(-50%) scale(1); }
.cem-dc-choice input:focus-visible + span { outline:3px solid rgba(31,107,92,.16); outline-offset:2px; }
.cem-dc-choice input:disabled + span { opacity:.46; cursor:not-allowed; transform:none; }

.cem-dc-help { margin:9px auto 0; font-size:12px; line-height:1.55; color:#7d8783; }
.cem-dc-field-radio .cem-dc-help,
.cem-dc-field-checkbox .cem-dc-help { text-align:center; max-width:700px; }
.cem-dc-notice { padding:16px 18px; border:1px solid #e2e8e5; border-radius:10px; background:#f7f9f8; color:#56615c; font-size:13px; line-height:1.6; }

.cem-dc-actions { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:22px 5px 4px; }
.cem-dc-btn { min-height:50px; border-radius:9px; padding:12px 22px; border:1px solid transparent; font:inherit; font-size:14px; font-weight:800; cursor:pointer; transition:transform .16s ease, box-shadow .16s ease, opacity .16s ease, background .16s ease; }
.cem-dc-btn:hover:not(:disabled) { transform:translateY(-1px); }
.cem-dc-btn:disabled { opacity:.35; cursor:not-allowed; }
.cem-dc-back { background:#fff; border-color:#d9e0dc; color:#44504b; }
.cem-dc-back:hover:not(:disabled) { background:#f7f9f8; }
.cem-dc-next, .cem-dc-submit { margin-left:auto; background:var(--cem-accent); color:#fff; box-shadow:0 10px 24px rgba(31,107,92,.18); }
.cem-dc-next:hover, .cem-dc-submit:hover { box-shadow:0 13px 28px rgba(31,107,92,.24); }
.cem-dc-submit { padding-left:25px; padding-right:25px; }
.cem-dc-privacy { text-align:center; color:#929b97; font-size:11px; line-height:1.55; margin:11px 10px 0; }
.cem-dc-form-error { min-height:22px; text-align:center; margin-top:9px; color:#a13c3c; font-size:13px; font-weight:700; }
.cem-dc-invalid .cem-dc-label { color:#9c3535; }
.cem-dc-invalid input, .cem-dc-invalid select, .cem-dc-invalid textarea, .cem-dc-invalid .cem-dc-choice span { border-color:#c65c5c !important; }
.cem-dc-limit-pulse { animation:cemLimit .42s ease; }

.cem-dc-success { display:block; text-align:center; min-height:420px; padding-top:76px; }
.cem-dc-success-icon { width:62px; height:62px; margin:0 auto 20px; border-radius:50%; display:grid; place-items:center; background:#edf6f2; color:var(--cem-accent); font-size:27px; font-weight:850; }
.cem-dc-success h2 { max-width:600px; margin:0 auto 16px; }
.cem-dc-success > p:not(.cem-dc-eyebrow) { color:var(--cem-muted); max-width:610px; margin:0 auto 12px; line-height:1.7; }
.cem-dc-success-note { font-weight:750; color:#26322e !important; margin-top:20px !important; }
.cem-dc-hp { position:absolute !important; left:-99999px !important; width:1px !important; height:1px !important; opacity:0 !important; }

.is-entering-forward { animation:cemCardForward .32s cubic-bezier(.2,.8,.2,1); }
.is-entering-back { animation:cemCardBack .32s cubic-bezier(.2,.8,.2,1); }
@keyframes cemCardForward { from { opacity:.18; transform:translateX(20px) scale(.995); } to { opacity:1; transform:none; } }
@keyframes cemCardBack { from { opacity:.18; transform:translateX(-20px) scale(.995); } to { opacity:1; transform:none; } }
@keyframes cemLimit { 0%,100%{ transform:none; } 40%{ transform:translateX(3px); } 70%{ transform:translateX(-3px); } }
@keyframes cemShellPulse { 0% { transform:none; } 35% { transform:translateY(-2px); } 100% { transform:none; } }

.cem-dc-floating--display-mobile { display:none; }
.cem-dc-floating--display-desktop, .cem-dc-floating--display-both { display:inline-flex; }

@media (max-width:760px) {
  .cem-dc { padding:18px 8px 38px; background:#fff; }
  .cem-dc-floating { bottom:calc(12px + env(safe-area-inset-bottom)); left:50%; right:auto; justify-content:center; min-height:50px; width:max-content; max-width:calc(100vw - 24px); padding:12px 18px; transform:translateX(-50%); }
  .cem-dc-floating:hover { transform:translateX(-50%) translateY(-2px); }
  .cem-dc-floating--left, .cem-dc-floating--right { left:50%; right:auto; }
  .cem-dc-floating--display-desktop { display:none !important; }
  .cem-dc-floating--display-mobile, .cem-dc-floating--display-both { display:inline-flex; }
  .cem-dc-shell { width:100%; }
  .cem-dc-hero { padding:12px 10px 18px; }
  .cem-dc-brand-row { margin-bottom:18px; padding-right:44px; padding-left:44px; }
  .cem-dc-host { font-size:10px; }
  .cem-dc-sound { width:36px; height:36px; right:2px; }
  .cem-dc-hero h1 { font-size:clamp(29px,9vw,40px); }
  .cem-dc-hero > p { font-size:14px; line-height:1.55; }
  .cem-dc-card { border-radius:14px; min-height:0; padding:28px 16px 30px; box-shadow:0 14px 38px rgba(25,39,33,.085); }
  .cem-dc-card h2 { font-size:clamp(25px,8vw,33px); }
  .cem-dc-card-subtitle { font-size:14px; }
  .cem-dc-fields { grid-template-columns:1fr; gap:20px; margin-top:28px; }
  .cem-dc-field.cem-dc-wide, .cem-dc-notice { grid-column:auto; }
  .cem-dc-choices, .cem-dc-choices.is-multi { grid-template-columns:1fr; gap:9px; }
  .cem-dc-choice { min-height:56px; }
  .cem-dc-choice span { min-height:56px; padding:14px 42px 14px 45px; font-size:14px; }
  .cem-dc-choice span::before { left:15px; width:19px; height:19px; }
  .cem-dc-choice span::after { right:13px; }
  .cem-dc-grid-2 { grid-template-columns:1fr; }
  .cem-dc-actions { padding-top:15px; position:sticky; bottom:0; z-index:3; background:linear-gradient(to top,#fff 68%,rgba(255,255,255,0)); padding-bottom:max(6px,env(safe-area-inset-bottom)); }
  .cem-dc-btn { min-height:48px; padding:11px 16px; }
  .cem-dc-submit { font-size:13px; padding-left:13px; padding-right:13px; }
}

@media (max-width:390px) {
  .cem-dc { padding-left:4px; padding-right:4px; }
  .cem-dc-card { padding-left:13px; padding-right:13px; }
  .cem-dc-choice span { padding-left:42px; padding-right:36px; }
  .cem-dc-btn { font-size:13px; }
}

@media (prefers-reduced-motion:reduce) {
  .cem-dc *, .cem-dc *::before, .cem-dc *::after { animation-duration:.001ms !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}
