/* =========================================================================
   MAESTROX — internal page components
   Loaded after site.css on features / pricing / compare / security /
   about / trial / checkout. Reuses site.css tokens & primitives.
   ========================================================================= */

/* ---------- Page hero (top band on internal pages) ---------- */
.page-hero{padding:82px 0 64px;position:relative;overflow:hidden;background:var(--ivory);}
.page-hero.dark{background:var(--espresso);color:var(--on-dark);}
.page-hero::before{
  content:"";position:absolute;top:-180px;right:-120px;width:560px;height:560px;
  background:radial-gradient(circle,var(--gold-glow),transparent 62%);pointer-events:none;z-index:0;
}
.page-hero .wrap{position:relative;z-index:1;}
.page-hero .lead{max-width:640px;}
.page-hero.center .lead{margin-left:auto;margin-right:auto;}
.page-hero h1{font-size:clamp(38px,5vw,68px);line-height:1.03;letter-spacing:-.02em;margin-bottom:18px;}
.page-hero.dark h1{color:var(--on-dark);}

/* ---------- Breadcrumbs ---------- */
.crumbs{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--ink-3);margin-bottom:22px;letter-spacing:.02em;}
.crumbs a{color:var(--ink-3);transition:color .2s;}
.crumbs a:hover{color:var(--gold-deep);}
.crumbs .sep{width:4px;height:4px;border-radius:50%;background:var(--line-strong);}
.page-hero.dark .crumbs,.page-hero.dark .crumbs a{color:var(--on-dark-3);}

/* ---------- Section intro helper ---------- */
.sec-intro{max-width:720px;margin-bottom:52px;}
.sec-intro.center{margin-left:auto;margin-right:auto;text-align:center;}

/* ---------- Feature anchor offset (sticky header) ---------- */
.anchor{scroll-margin-top:96px;}

/* ---------- Comparison table (pricing + compare pages) ---------- */
.cmp-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1);}
.cmp{width:100%;border-collapse:collapse;min-width:720px;}
.cmp th,.cmp td{padding:15px 20px;text-align:left;border-bottom:1px solid var(--line);font-size:14.5px;vertical-align:middle;}
.cmp thead th{background:var(--surface-2);font-family:var(--font-body);font-weight:600;letter-spacing:.02em;color:var(--ink);position:sticky;top:0;}
.cmp thead th.plan-col{text-align:center;}
.cmp thead th .pt{font-family:var(--font-display);font-size:22px;font-weight:600;display:block;}
.cmp thead th .pp{font-size:12px;color:var(--ink-3);font-weight:400;display:block;margin-top:2px;}
.cmp thead th.hot{background:linear-gradient(180deg,rgba(216,183,110,.2),rgba(216,183,110,.08));}
.cmp tbody th{font-weight:500;color:var(--ink-2);width:32%;}
.cmp td.val{text-align:center;color:var(--ink);width:22.6%;}
.cmp td.val.hot{background:rgba(216,183,110,.06);}
.cmp tr:last-child td,.cmp tr:last-child th{border-bottom:0;}
.cmp .rowhead td{background:var(--ivory-2);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-deep);font-weight:700;padding:11px 20px;}
.cmp .ok{color:var(--live);}
.cmp .no{color:var(--ink-3);opacity:.5;}
.cmp .yes-ic{width:17px;height:17px;stroke:var(--live);fill:none;stroke-width:2.4;display:inline-block;vertical-align:middle;}
.cmp .no-ic{width:15px;height:15px;stroke:var(--ink-3);fill:none;stroke-width:2.4;display:inline-block;vertical-align:middle;opacity:.5;}

/* ---------- Pricing calculator ---------- */
.calc{
  display:grid;grid-template-columns:1.15fr .85fr;gap:0;
  border:1px solid var(--line);border-radius:var(--r-lg);
  /* clip (not hidden) so neither the grid nor the summary becomes a scroll
     container — that's what lets the estimate box use position:sticky against
     the viewport. hidden kept first as a fallback for old browsers (sticky
     just no-ops there; layout is unchanged). */
  overflow:hidden;overflow:clip;
  background:var(--surface);box-shadow:var(--shadow-2);
}
.calc-controls{padding:38px 40px;}
.calc-summary{background:var(--espresso);color:var(--on-dark);padding:38px 40px;position:relative;overflow:hidden;overflow:clip;}
/* The estimate content follows the scroll (tucked below the 74px sticky header)
   so totals stay visible while you drag the sliders below. Selector is
   `.calc-summary > .calc-summary-inner` (not just .calc-summary-inner) so it
   outweighs the `.calc-summary > *{position:relative}` rule above. */
.calc-summary > .calc-summary-inner{position:sticky;top:90px;z-index:1;}
.calc-summary::before{content:"";position:absolute;top:-120px;right:-100px;width:360px;height:360px;background:radial-gradient(circle,var(--gold-glow),transparent 62%);pointer-events:none;}
.calc-summary > *{position:relative;z-index:1;}
.calc h3{font-family:var(--font-display);font-size:26px;font-weight:600;margin-bottom:6px;}
.calc-plan-row{display:flex;gap:10px;margin-bottom:30px;}
.calc-plan{flex:1;border:1px solid var(--line);border-radius:var(--r-md);padding:14px 12px;text-align:center;cursor:pointer;transition:all .2s var(--ease);background:var(--surface-2);}
.calc-plan:hover{border-color:var(--gold-soft);}
.calc-plan.on{border-color:var(--gold);background:var(--gold-faint);box-shadow:inset 0 0 0 1px var(--gold);}
.calc-plan .nm{font-family:var(--font-display);font-size:19px;font-weight:600;}
.calc-plan .bp{font-size:12px;color:var(--ink-3);margin-top:2px;}

.ctrl{margin-bottom:26px;}
.ctrl-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px;}
.ctrl-head label{font-size:14.5px;font-weight:600;color:var(--ink);}
.ctrl-head .v{font-family:var(--font-display);font-size:22px;font-weight:600;color:var(--gold-deep);}
.ctrl-head .v small{font-size:12px;color:var(--ink-3);font-family:var(--font-body);font-weight:400;}
.ctrl .hint{font-size:12.5px;color:var(--ink-3);margin-top:9px;}
.ctrl .hint b{color:var(--ink-2);font-weight:600;}

input[type=range].rng{
  -webkit-appearance:none;appearance:none;width:100%;height:5px;border-radius:5px;
  background:var(--line);outline:none;cursor:pointer;
}
input[type=range].rng::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;width:22px;height:22px;border-radius:50%;
  background:linear-gradient(180deg,var(--gold-bright),var(--gold));cursor:pointer;
  border:2px solid var(--surface);box-shadow:0 2px 8px rgba(169,131,47,.4);
}
input[type=range].rng::-moz-range-thumb{
  width:22px;height:22px;border-radius:50%;border:2px solid var(--surface);
  background:linear-gradient(180deg,var(--gold-bright),var(--gold));cursor:pointer;box-shadow:0 2px 8px rgba(169,131,47,.4);
}
.rng-fill{position:relative;height:5px;border-radius:5px;background:var(--line);margin-bottom:-5px;pointer-events:none;overflow:hidden;}

.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-top:1px solid var(--line);}
.toggle-row:last-of-type{border-bottom:1px solid var(--line);}
.toggle-row .tl{font-size:14.5px;color:var(--ink);font-weight:500;}
.toggle-row .ts{font-size:12.5px;color:var(--ink-3);}
.sw{position:relative;width:44px;height:25px;flex:none;}
.sw input{opacity:0;width:0;height:0;position:absolute;}
.sw .track{position:absolute;inset:0;background:var(--line-strong);border-radius:999px;transition:background .2s;}
.sw .track::before{content:"";position:absolute;top:3px;left:3px;width:19px;height:19px;border-radius:50%;background:#fff;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.sw input:checked + .track{background:linear-gradient(180deg,var(--gold-bright),var(--gold-deep));}
.sw input:checked + .track::before{transform:translateX(19px);}

.bill-toggle{display:inline-flex;background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:4px;margin-bottom:30px;}
.bill-toggle button{border:0;background:transparent;font-family:var(--font-body);font-size:13px;font-weight:600;color:var(--ink-3);padding:8px 18px;border-radius:999px;transition:all .2s;}
.bill-toggle button.on{background:var(--ink);color:var(--on-dark);}
.bill-toggle .save{font-size:10px;color:var(--gold-deep);font-weight:700;letter-spacing:.06em;margin-left:5px;}

/* summary side */
.sum-label{font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--gold-bright);margin-bottom:10px;}
.sum-total{display:flex;align-items:baseline;gap:6px;margin-bottom:4px;}
.sum-total .big{font-family:var(--font-display);font-size:64px;font-weight:600;line-height:1;color:var(--on-dark);letter-spacing:-.02em;}
.sum-total .per{font-size:15px;color:var(--on-dark-3);}
.sum-sub{font-size:13px;color:var(--on-dark-2);margin-bottom:26px;}
.sum-lines{display:grid;gap:11px;margin-bottom:26px;border-top:1px solid rgba(216,183,110,.14);padding-top:22px;}
.sum-line{display:flex;justify-content:space-between;font-size:13.5px;color:var(--on-dark-2);}
.sum-line .amt{color:var(--on-dark);font-weight:600;}
.sum-line.muted{color:var(--on-dark-3);}
.sum-line.muted .amt{color:var(--on-dark-2);font-weight:400;}
.sum-note{font-size:12px;color:var(--on-dark-3);line-height:1.55;margin-top:2px;margin-bottom:24px;}
.calc-summary .btn{width:100%;}

/* ---------- Add-on cards ---------- */
.addon-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;}
.addon{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:26px 24px;}
.addon h4{font-family:var(--font-display);font-size:20px;font-weight:600;margin:0 0 8px;}
.addon .ap{font-size:14px;color:var(--ink-2);margin:0 0 14px;line-height:1.55;}
.addon .rows{display:grid;gap:8px;}
.addon .rows .r{display:flex;justify-content:space-between;font-size:13.5px;color:var(--ink-2);border-top:1px solid var(--line);padding-top:8px;}
.addon .rows .r:first-child{border-top:0;padding-top:0;}
.addon .rows .r b{color:var(--ink);font-weight:600;}

/* ---------- FAQ ---------- */
.faq{max-width:820px;margin:0 auto;display:grid;gap:0;border-top:1px solid var(--line);}
.faq details{border-bottom:1px solid var(--line);}
.faq summary{list-style:none;cursor:pointer;padding:22px 4px;display:flex;justify-content:space-between;align-items:center;gap:20px;font-family:var(--font-display);font-size:20px;font-weight:500;color:var(--ink);}
.faq summary::-webkit-details-marker{display:none;}
.faq summary .ic{width:22px;height:22px;flex:none;position:relative;transition:transform .25s;}
.faq summary .ic::before,.faq summary .ic::after{content:"";position:absolute;background:var(--gold-deep);border-radius:2px;}
.faq summary .ic::before{top:10px;left:2px;right:2px;height:2px;}
.faq summary .ic::after{left:10px;top:2px;bottom:2px;width:2px;transition:transform .25s;}
.faq details[open] summary .ic::after{transform:scaleY(0);}
.faq details[open] summary{color:var(--gold-deep);}
.faq .fa{padding:0 4px 24px;font-size:15.5px;color:var(--ink-2);line-height:1.65;max-width:680px;}

/* ---------- VS cards (compare page) ---------- */
.vs-grid{display:grid;gap:20px;}
.vs{display:grid;grid-template-columns:200px 1fr;gap:0;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--surface);}
.vs .vs-left{background:var(--ivory-2);padding:30px 28px;border-right:1px solid var(--line);display:flex;flex-direction:column;justify-content:center;}
.vs .vs-left .vname{font-family:var(--font-display);font-size:26px;font-weight:600;margin-bottom:6px;}
.vs .vs-left .vk{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);font-weight:600;}
.vs .vs-body{padding:30px 32px;}
.vs .vs-body p{margin:0 0 18px;font-size:15.5px;color:var(--ink-2);line-height:1.6;}
.vs .fit{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.vs .fit .fb{border-left:2px solid var(--line-strong);padding-left:16px;}
.vs .fit .fb.mx{border-left-color:var(--gold);}
.vs .fit .fb .fl{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--ink-3);margin-bottom:6px;}
.vs .fit .fb.mx .fl{color:var(--gold-deep);}
.vs .fit .fb p{font-size:13.5px;margin:0;color:var(--ink-2);}

/* ---------- Security pillars ---------- */
.sec-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;}
.sec-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:32px 30px;}
.sec-card .si{width:46px;height:46px;border-radius:var(--r-md);display:flex;align-items:center;justify-content:center;background:var(--gold-faint);margin-bottom:18px;}
.sec-card .si svg{width:24px;height:24px;stroke:var(--gold-deep);fill:none;stroke-width:1.7;}
.sec-card h3{font-size:22px;margin-bottom:10px;}
.sec-card p{font-size:15px;color:var(--ink-2);line-height:1.6;margin:0;}

/* ---------- About story ---------- */
.story{max-width:760px;}
.story p{font-size:18px;line-height:1.72;color:var(--ink-2);margin:0 0 22px;font-weight:300;}
.story p .drop{float:left;font-family:var(--font-display);font-size:76px;line-height:.72;font-weight:600;color:var(--gold-deep);padding:6px 12px 0 0;}
.pullquote{font-family:var(--font-display);font-style:italic;font-size:clamp(26px,3vw,38px);line-height:1.3;color:var(--ink);border-left:3px solid var(--gold);padding-left:28px;margin:44px 0;font-weight:500;}

/* ---------- Trial / signup steps ---------- */
.signup-shell{display:grid;grid-template-columns:340px 1fr;gap:0;min-height:calc(100vh - 74px);}
.signup-aside{background:var(--espresso);color:var(--on-dark);padding:52px 44px;position:relative;overflow:hidden;}
.signup-aside::before{content:"";position:absolute;bottom:-120px;left:-100px;width:380px;height:380px;background:radial-gradient(circle,var(--gold-glow),transparent 62%);pointer-events:none;}
.signup-aside > *{position:relative;z-index:1;}
.signup-aside h2{font-family:var(--font-display);font-size:32px;font-weight:500;color:var(--on-dark);line-height:1.1;margin:22px 0 14px;}
.signup-aside p{font-size:15px;color:var(--on-dark-2);line-height:1.6;}
.step-list{list-style:none;margin:40px 0 0;padding:0;display:grid;gap:4px;}
.step-list li{display:flex;align-items:center;gap:14px;font-size:14.5px;color:var(--on-dark-3);padding:11px 0;transition:color .2s;}
.step-list li .sn{width:28px;height:28px;border-radius:50%;border:1px solid rgba(216,183,110,.3);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex:none;transition:all .2s;}
.step-list li.on{color:var(--on-dark);}
.step-list li.on .sn{background:linear-gradient(180deg,var(--gold-bright),var(--gold));color:#241a06;border-color:transparent;}
.step-list li.done{color:var(--on-dark-2);}
.step-list li.done .sn{background:rgba(216,183,110,.16);border-color:rgba(216,183,110,.4);color:var(--gold-bright);}
.reassure{margin-top:36px;display:grid;gap:10px;}
.reassure .ra{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--on-dark-2);}
.reassure .ra svg{width:16px;height:16px;stroke:var(--gold-bright);fill:none;stroke-width:2;flex:none;}

.signup-main{padding:64px 56px;display:flex;align-items:flex-start;}
.signup-form{width:100%;max-width:460px;margin:0 auto;}
.signup-form .stepno{font-size:12px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-deep);font-weight:700;margin-bottom:12px;}
.signup-form h1{font-family:var(--font-display);font-size:36px;font-weight:500;margin-bottom:10px;line-height:1.1;}
.signup-form .sub{font-size:15px;color:var(--ink-2);margin-bottom:32px;}

.field{margin-bottom:18px;}
.field label{display:block;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:7px;letter-spacing:.01em;}
.field input,.field select{
  width:100%;font-family:var(--font-body);font-size:15px;color:var(--ink);
  background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-md);
  padding:13px 15px;transition:border-color .2s,box-shadow .2s;
}
.field input:focus,.field select:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-faint);}
.field input::placeholder{color:var(--ink-3);}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.upload-slot{border:1.5px dashed var(--line-strong);border-radius:var(--r-md);padding:22px;text-align:center;color:var(--ink-3);font-size:13.5px;cursor:pointer;transition:all .2s;}
.upload-slot:hover{border-color:var(--gold);background:var(--gold-faint);color:var(--gold-deep);}
.upload-slot svg{width:26px;height:26px;stroke:currentColor;fill:none;stroke-width:1.6;margin:0 auto 8px;}

.form-actions{display:flex;align-items:center;gap:16px;margin-top:30px;}
.form-actions .skip{font-size:13.5px;color:var(--ink-3);font-weight:600;}
.form-actions .skip:hover{color:var(--gold-deep);}
.helper{font-size:12.5px;color:var(--ink-3);margin-top:16px;line-height:1.55;}

/* role chips + plan picks in signup */
.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:8px;}
.role{display:flex;align-items:center;gap:10px;border:1px solid var(--line-strong);border-radius:var(--r-md);padding:12px 14px;font-size:14px;cursor:pointer;transition:all .2s;}
.role:hover{border-color:var(--gold-soft);}
.role.on{border-color:var(--gold);background:var(--gold-faint);}
.role .rc{width:16px;height:16px;border-radius:50%;border:1.5px solid var(--line-strong);flex:none;transition:all .2s;}
.role.on .rc{border-color:var(--gold-deep);background:var(--gold-deep);box-shadow:inset 0 0 0 3px var(--surface);}

.plan-pick{display:grid;gap:12px;margin-bottom:8px;}
.ppick{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid var(--line-strong);border-radius:var(--r-md);padding:18px 20px;cursor:pointer;transition:all .2s;}
.ppick:hover{border-color:var(--gold-soft);}
.ppick.on{border-color:var(--gold);background:var(--gold-faint);box-shadow:inset 0 0 0 1px var(--gold);}
.ppick .pl{font-family:var(--font-display);font-size:22px;font-weight:600;}
.ppick .pd{font-size:13px;color:var(--ink-3);margin-top:2px;}
.ppick .pr{font-family:var(--font-display);font-size:26px;font-weight:600;text-align:right;white-space:nowrap;}
.ppick .pr small{font-size:12px;color:var(--ink-3);font-family:var(--font-body);}

/* success state */
.success-ring{width:76px;height:76px;border-radius:50%;background:linear-gradient(180deg,var(--gold-bright),var(--gold));display:flex;align-items:center;justify-content:center;margin-bottom:26px;box-shadow:var(--shadow-gold);}
.success-ring svg{width:38px;height:38px;stroke:#241a06;fill:none;stroke-width:2.4;}
.launch-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px;}
.launch-card{border:1px solid var(--line);border-radius:var(--r-md);padding:18px;transition:all .2s;cursor:pointer;background:var(--surface);}
.launch-card:hover{border-color:var(--gold-soft);box-shadow:var(--shadow-1);transform:translateY(-2px);}
.launch-card .li{width:36px;height:36px;border-radius:var(--r-sm);background:var(--gold-faint);display:flex;align-items:center;justify-content:center;margin-bottom:12px;}
.launch-card .li svg{width:19px;height:19px;stroke:var(--gold-deep);fill:none;stroke-width:1.8;}
.launch-card h4{font-size:15px;margin-bottom:3px;font-family:var(--font-body);font-weight:600;}
.launch-card p{font-size:12.5px;color:var(--ink-3);margin:0;line-height:1.45;}

/* ---------- Checkout ---------- */
.checkout{display:grid;grid-template-columns:1fr .82fr;gap:30px;align-items:start;}
.co-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:34px 34px;box-shadow:var(--shadow-1);}
.co-panel h3{font-family:var(--font-display);font-size:24px;font-weight:600;margin:0 0 4px;}
.co-panel .cosub{font-size:13.5px;color:var(--ink-3);margin-bottom:26px;}
.co-field-lock{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ink-3);margin-top:6px;}
.co-field-lock svg{width:13px;height:13px;stroke:var(--live);fill:none;stroke-width:2;}
.card-input{position:relative;}
.card-input .brand-ic{position:absolute;right:14px;top:50%;transform:translateY(-50%);display:flex;gap:5px;}
.card-input .brand-ic span{width:26px;height:17px;border-radius:3px;background:var(--surface-2);border:1px solid var(--line);}

.summary-card{background:var(--espresso);color:var(--on-dark);border-radius:var(--r-lg);padding:32px 30px;position:relative;overflow:hidden;box-shadow:var(--shadow-3);}
.summary-card::before{content:"";position:absolute;top:-100px;right:-90px;width:320px;height:320px;background:radial-gradient(circle,var(--gold-glow),transparent 62%);pointer-events:none;}
.summary-card > *{position:relative;z-index:1;}
.summary-card .sc-plan{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:20px;border-bottom:1px solid rgba(216,183,110,.14);margin-bottom:20px;}
.summary-card .sc-plan .n{font-family:var(--font-display);font-size:26px;font-weight:600;color:var(--on-dark);}
.summary-card .sc-plan .p{font-family:var(--font-display);font-size:26px;font-weight:600;color:var(--gold-bright);}
.summary-card .inc{list-style:none;margin:0 0 22px;padding:0;display:grid;gap:9px;}
.summary-card .inc li{font-size:13px;color:var(--on-dark-2);display:flex;gap:9px;align-items:flex-start;}
.summary-card .inc li svg{width:15px;height:15px;stroke:var(--gold-bright);fill:none;stroke-width:2;flex:none;margin-top:2px;}
.summary-card .sc-tot{display:flex;justify-content:space-between;align-items:baseline;padding-top:20px;border-top:1px solid rgba(216,183,110,.14);}
.summary-card .sc-tot .tl{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--on-dark-3);}
.summary-card .sc-tot .tv{font-family:var(--font-display);font-size:34px;font-weight:600;color:var(--on-dark);}
.square-note{display:flex;align-items:center;gap:9px;justify-content:center;font-size:12.5px;color:var(--ink-3);margin-top:20px;}
.square-note svg{width:15px;height:15px;stroke:var(--live);fill:none;stroke-width:2;}
.square-badge{display:inline-flex;align-items:center;gap:7px;background:#000;color:#fff;font-weight:600;font-size:12px;letter-spacing:.02em;padding:5px 11px;border-radius:6px;}
.square-badge .sq{width:13px;height:13px;border-radius:3px;background:#fff;}

/* ---------- Responsive ---------- */
@media (max-width:940px){
  .calc,.checkout,.signup-shell,.vs{grid-template-columns:1fr;}
  /* Stacked layout: summary sits under the controls, so sticky has no room —
     keep it in normal flow. (Same specificity as the desktop sticky rule.) */
  .calc-summary > .calc-summary-inner{position:static;top:auto;}
  .vs .vs-left{border-right:0;border-bottom:1px solid var(--line);}
  .addon-grid{grid-template-columns:1fr;}
  .sec-grid{grid-template-columns:1fr;}
  .signup-aside{display:none;}
  .signup-main{padding:44px 28px;}
}
@media (max-width:560px){
  .calc-controls,.calc-summary,.co-panel{padding:26px 22px;}
  .field-row,.role-grid,.launch-grid,.vs .fit{grid-template-columns:1fr;}
  .calc-plan-row{flex-wrap:wrap;}
}
