/* New components for the two-business local candidate. Brand tokens, header, footer, buttons, sections come from the vendored live site.css.
   No inline styles are used anywhere (CSP style-src 'self'). */
.build-bar{padding:9px var(--m);font-size:13px;font-weight:650;line-height:1.4;text-align:center}
.build-bar--display{background:var(--tint);color:var(--navy);border-bottom:1px solid var(--line)}
.build-bar--review{background:#fff3cd;color:#4d3b00;border-bottom:1px solid #e6cf85}
.svc-menu{position:relative}
.svc-menu summary{cursor:pointer;list-style:none;display:inline-flex;align-items:center;gap:6px;min-height:44px}
.svc-menu summary::-webkit-details-marker{display:none}
.svc-menu summary::after{content:"▾";font-size:11px}
.svc-menu-panel{position:absolute;top:100%;left:-16px;min-width:260px;background:#fff;border:1px solid var(--line);padding:8px 0;z-index:40;box-shadow:0 12px 30px rgba(7,11,22,.12)}
.svc-menu-panel a{display:block;padding:11px 18px;font-size:14px;font-weight:600}
.svc-menu-panel a:hover{background:var(--tint)}
.mobile-menu-panel .sub{padding-left:14px;font-weight:500}
.hero2{padding:clamp(48px,7vw,104px) 0 clamp(40px,5vw,72px)}
.hero2-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(28px,4vw,64px);align-items:start}
.hero2 h1{font-size:clamp(38px,4.6vw,66px);line-height:1.04;letter-spacing:-.03em;margin:0}
.hero2 .price-hint{margin-top:22px;font-size:17px;color:var(--navy)}
.hero2 .price-hint strong{color:var(--ink)}
.entry-stack{display:grid;gap:16px}
.entry-card{display:block;background:#fff;border:1px solid var(--line);border-top:3px solid var(--cobalt);padding:24px 26px;color:inherit;text-decoration:none}
.entry-card:hover,.entry-card:focus-visible{border-color:var(--cobalt)}
.entry-card h2,.entry-card h3{font-size:22px;margin:0 0 8px}
.entry-card p{margin:0 0 10px;color:var(--soft);font-size:15px;line-height:1.5}
.entry-card .go{font-size:14px;font-weight:650;color:var(--cobalt)}
.biz-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.biz{background:#fff;border:1px solid var(--line);padding:30px}
.biz h3{font-size:26px;margin:0 0 10px}
.biz ul{padding-left:20px;margin:16px 0}
.biz li{margin:6px 0}
.price-tag{font-size:30px;font-weight:700;letter-spacing:-.02em;color:var(--ink);line-height:1.1}
.price-tag small{font-size:15px;font-weight:600;color:var(--soft);letter-spacing:0}
.price-note{font-size:13px;color:var(--soft);margin-top:6px}
.plan-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.plan-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.section-sub{margin:40px 0 16px;font-size:22px}
.plan{background:#fff;border:1px solid var(--line);padding:28px;display:flex;flex-direction:column;gap:10px}
.plan--oneoff{border:2px solid var(--navy);background:var(--tint)}
.plan--feature{border-top:4px solid var(--cobalt)}
.plan h3{margin:0;font-size:22px}
.plan ul{padding-left:20px;margin:6px 0}
.badge{display:inline-flex;align-self:flex-start;padding:4px 10px;background:var(--navy);color:#fff;font-size:12px;font-weight:650;letter-spacing:.03em}
.badge--soft{background:var(--tint);color:var(--cobalt)}
.tgc-table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.45;background:#fff}
.tgc-table th,.tgc-table td{border:1px solid var(--line);padding:12px 14px;text-align:left;vertical-align:top}
.tgc-table th{background:var(--paper);font-weight:650}
.note{font-size:14px;color:var(--soft)}
.callout--warn{border-left-color:#b36b00;background:#fff6e5}
.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}
.steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;counter-reset:s;padding:0;list-style:none}
.steps li{background:#fff;border:1px solid var(--line);padding:14px;font-size:14px;font-weight:600;counter-increment:s}
.steps li::before{content:counter(s) " ";color:var(--cobalt);font-weight:750}
.sample{border:1px dashed #9aafdf;background:#fff;padding:20px 22px;position:relative}
.sample .tag{position:absolute;top:-11px;left:14px;background:var(--navy);color:#fff;font-size:12px;font-weight:650;padding:2px 10px}
.faq-item{border-top:1px solid var(--line);padding:0}
.faq-item summary{cursor:pointer;padding:18px 0;font-weight:650;min-height:44px}
.faq-item div{padding:0 0 18px;color:var(--soft)}
.compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
.compare .col{border:1px solid var(--line);background:#fff;padding:26px}
.compare .col h2{font-size:18px;margin:0 0 14px}
.compare .old{border-top:4px solid #8d97ab}
.compare .new{border-top:4px solid var(--cobalt)}
.compare h1{font-size:34px;line-height:1.1;margin:0}
/* catalogue */
.cat-toolbar{display:grid;gap:14px;margin:8px 0 22px}
.cat-toolbar input[type=search]{width:100%;min-height:48px;padding:10px 14px;border:1px solid #bbc6da;font:inherit}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{min-height:44px;padding:8px 14px;border:1px solid #bbc6da;background:#fff;font:inherit;font-size:14px;font-weight:600;cursor:pointer}
.chip[aria-pressed=true]{background:var(--navy);color:#fff;border-color:var(--navy)}
.cat-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:32px;align-items:start}
.cat-list{display:grid;gap:14px}
.cat-card{background:#fff;border:1px solid var(--line);padding:18px 20px}
.cat-card[hidden]{display:none}
.cat-card h3{font-size:18px;margin:0 0 4px}
.cat-card .meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0 10px}
.cat-card p{margin:0 0 10px;color:var(--soft);font-size:15px}
.cat-card details{margin:8px 0 12px}
.cat-card summary{cursor:pointer;font-weight:650;font-size:14px;color:var(--cobalt);min-height:36px;display:flex;align-items:center}
.cat-card .row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;justify-content:space-between}
.cat-card .price{font-weight:700;font-size:16px}
.cat-card button.add{min-height:44px;padding:8px 16px;border:1px solid var(--cobalt);background:#fff;color:var(--cobalt);font:inherit;font-weight:650;cursor:pointer}
.cat-card button.add[aria-pressed=true]{background:var(--cobalt);color:#fff}
.req{position:sticky;top:104px;background:#fff;border:1px solid var(--line);border-top:3px solid var(--cobalt);padding:20px}
.req h2{font-size:20px;margin:0 0 6px}
.req ul{padding-left:18px;margin:6px 0}
.req .sub{margin:14px 0 4px;font-size:12px;font-weight:750;letter-spacing:.1em;text-transform:uppercase;color:var(--soft)}
.req .tot{font-size:20px;font-weight:700}
.req .flag{background:#fff6e5;border-left:3px solid #b36b00;padding:10px 12px;margin:12px 0;font-size:14px}
.req button{min-height:44px;padding:8px 14px;border:1px solid #bbc6da;background:#fff;font:inherit;font-weight:600;cursor:pointer;margin-right:8px;margin-top:8px}
.tag-status{font-size:12px;font-weight:650;padding:3px 8px;background:var(--paper);color:var(--soft)}
.tag-status--proposed{background:#fff3cd;color:#4d3b00}
.tag-status--approved{background:#e3f4ea;color:var(--green)}
.other-group{margin-top:26px;border-top:2px solid var(--line);padding-top:14px}
.other-group>summary{font-size:20px;font-weight:700;cursor:pointer;min-height:44px}
/* forms */
.fgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.fgrid .wide{grid-column:1/-1}
.f label{display:block;font-weight:650;margin-bottom:6px;font-size:15px}
.f input,.f textarea,.f select{width:100%;min-height:46px;padding:10px 12px;border:1px solid #bbc6da;font:inherit;background:#fff}
.f textarea{min-height:120px}
.f .err{color:#b3261e;font-size:14px;min-height:20px;margin-top:4px}
.state-box{margin-top:18px;padding:16px 18px;border-left:4px solid var(--cobalt);background:var(--tint);font-weight:600}
.state-box[hidden]{display:none}
.state-box--error{border-left-color:#b3261e;background:#fdecea}
.preview-line{font-weight:700;color:var(--navy);margin:0 0 14px}
/* simulation */
.sim-banner{background:#fff3cd;border:1px solid #e6cf85;padding:12px 16px;font-weight:650;margin-bottom:20px}
.sim-table td,.sim-table th{font-size:14px}
.sim-table button{min-height:40px;padding:6px 12px;border:1px solid var(--cobalt);background:#fff;color:var(--cobalt);font:inherit;font-weight:600;cursor:pointer;margin:2px 4px 2px 0}
.sim-table button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:1100px){.cat-layout{grid-template-columns:1fr}.req{position:static}}
@media(max-width:980px){.hero2-grid,.biz-grid,.two-col,.compare,.plan-grid,.plan-grid--3{grid-template-columns:1fr}.steps{grid-template-columns:1fr}.svc-menu-panel{position:static;box-shadow:none}}
@media(max-width:760px){.fgrid{grid-template-columns:1fr}.price-tag{font-size:26px}.cat-card .row{align-items:stretch}}

.compare-h{font-size:clamp(28px,3.4vw,44px);line-height:1.1;margin:0 0 18px;max-width:28ch}
/* A4-09/A4-15: stable button text with a visible pressed state; 44px touch targets */
.cat-card button.add[aria-pressed=true]::before{content:"\2713\00a0"}
.cat-card summary{min-height:44px}
.mobile-menu-panel a{display:flex;align-items:center;min-height:44px}
.site-footer a,footer a{display:inline-flex;align-items:center;min-height:44px}
.candidate-flag{display:inline-block;margin:0 0 14px;padding:6px 12px;background:#fff3cd;color:#4d3b00;border:1px solid #e6cf85;font-size:13px;line-height:1.4}
.candidate-flag a{color:#4d3b00;text-decoration:underline}
/* r5: utility classes that replace the live site's inline margin styles (the CSP forbids inline styles); migrated content wrapper */
.mt-16{margin-top:16px}.mt-20{margin-top:20px}.mt-24{margin-top:24px}.mt-30{margin-top:30px}.mt-32{margin-top:32px}.mt-40{margin-top:40px}
.footer-legal{display:inline-flex;gap:16px}.footer-legal a{min-height:44px;display:inline-flex;align-items:center}
.prose{max-width:760px}.prose h2{font-size:22px;margin:32px 0 8px}.prose ul{padding-left:22px}.prose li{margin:8px 0}
/* r5: on a phone the footer stacks, so the e-mail address is not broken in the middle of a word */
@media(max-width:480px){.footer--simple .footer-grid{grid-template-columns:1fr}}
