.shell{display:grid;grid-template-columns:312px 1fr;gap:0;max-width:1180px;margin:0 auto;min-height:calc(100vh - 5px);}
@media(max-width:900px){.shell{display:block;}}

/* ---- Sidebar ---- */
.rail{padding:42px 34px 42px 40px;position:sticky;top:0;align-self:start;height:calc(100vh - 5px);display:flex;flex-direction:column;}
@media(max-width:900px){.rail{position:static;height:auto;padding:24px 22px 6px;}}
.brand{display:flex;align-items:center;gap:12px;margin-bottom:46px;}
.brand img{width:188px;height:auto;display:block;}
@media(max-width:900px){.brand{margin-bottom:20px;}.brand img{width:150px;}}

.steps{list-style:none;margin:0;padding:0;position:relative;display:flex;flex-direction:column;gap:4px;}
.steps::before{content:"";position:absolute;left:13px;top:14px;bottom:14px;width:2px;background:var(--line);}
@media(max-width:900px){.steps{flex-direction:row;justify-content:space-between;gap:0;}.steps::before{left:14px;right:14px;top:13px;bottom:auto;width:auto;height:2px;}}
.step{position:relative;display:flex;align-items:center;gap:14px;padding:8px 0;cursor:pointer;background:none;border:0;text-align:left;font-family:inherit;width:100%;}
.step:disabled{cursor:default;}
@media(max-width:900px){.step{flex-direction:column;gap:7px;flex:1;padding:0;}.step .step-label{display:none;}}
.dot{flex:none;width:28px;height:28px;border-radius:50%;background:var(--card);border:2px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--muted-2);transition:all .3s cubic-bezier(.4,0,.2,1);z-index:1;}
.step.active .dot{background:var(--red);border-color:var(--red);color:#fff;box-shadow:0 0 0 5px var(--red-soft);}
.step.done .dot{background:var(--ink);border-color:var(--ink);color:#fff;}
.step-label{display:flex;flex-direction:column;line-height:1.25;}
.step-label b{font-size:14px;font-weight:700;color:var(--muted);transition:color .25s;}
.step.active .step-label b{color:var(--ink);}
.step.done .step-label b{color:var(--ink-2);}
.step-label span{font-size:11.5px;color:var(--muted-2);font-weight:600;letter-spacing:.02em;}

.rail-foot{margin-top:auto;padding-top:28px;}
@media(max-width:900px){.rail-foot{display:none;}}
.progress-meta{font-size:12px;color:var(--muted);font-weight:600;margin-bottom:8px;display:flex;justify-content:space-between;}
.progress-meta b{color:var(--ink);}
.bar{height:6px;background:var(--line);border-radius:20px;overflow:hidden;}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--red),var(--red-dark));border-radius:20px;transition:width .45s cubic-bezier(.4,0,.2,1);}

/* ---- Main ---- */
.main{padding:42px 46px 64px;min-width:0;}
@media(max-width:900px){.main{padding:26px 20px 48px;}}
.pagehead{margin-bottom:30px;}
.eyebrow{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--red);margin:0 0 8px;}
.pagehead h1{font-size:34px;line-height:1.08;font-weight:800;letter-spacing:-.02em;margin:0;color:var(--ink);}
.pagehead p{margin:10px 0 0;color:var(--muted);font-size:15px;max-width:48ch;}
@media(max-width:900px){.pagehead h1{font-size:27px;}}

.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;}
.card-head{padding:26px 30px 0;}
@media(max-width:560px){.card-head{padding:22px 20px 0;}}
.sec-no{font-size:12px;font-weight:700;color:var(--muted-2);letter-spacing:.04em;}
.card-head h2{font-size:21px;font-weight:800;letter-spacing:-.01em;margin:4px 0 4px;color:var(--ink);}
.card-head .sub{color:var(--muted);font-size:13.5px;margin:0;}
.card-body{padding:24px 30px 8px;}
@media(max-width:560px){.card-body{padding:20px 20px 4px;}}

.anim{animation:slideUp .5s cubic-bezier(.16,1,.3,1) both;}
@keyframes slideUp{from{transform:translateY(14px);}to{transform:none;}}
.fadein{animation:fadein .55s ease both;}
@keyframes fadein{from{opacity:.15;}to{opacity:1;}}

.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px 20px;}
@media(max-width:560px){.grid{grid-template-columns:1fr;}}
.col2{grid-column:1/-1;}

.group{margin-bottom:6px;}
.group + .group{margin-top:22px;padding-top:22px;border-top:1px dashed var(--line);}
.group-title{display:flex;align-items:baseline;gap:10px;font-size:12.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2);margin:0 0 16px;}
.group-title em{font-style:normal;font-size:11px;letter-spacing:.02em;text-transform:none;color:var(--muted-2);font-weight:600;}

.field{display:flex;flex-direction:column;gap:7px;min-width:0;}
.field label{font-size:13px;font-weight:600;color:var(--ink-2);display:flex;align-items:center;gap:4px;}
.req{color:var(--red);font-weight:800;}
.opt{color:var(--muted-2);font-weight:600;font-size:11px;letter-spacing:.02em;}
.input{appearance:none;width:100%;font-family:inherit;font-size:14.5px;color:var(--ink);background:var(--field);border:1.5px solid var(--line);border-radius:10px;padding:11px 13px;transition:border-color .18s,box-shadow .18s,background .18s;}
.input::placeholder{color:var(--muted-2);}
.input:hover{border-color:#dcdbe0;}
.input:focus{outline:none;border-color:var(--red);background:#fff;box-shadow:0 0 0 4px var(--red-soft);}
.input.err{border-color:var(--red);background:#fff;}
.field.invalid label{color:var(--red);}
.msg{font-size:12px;color:var(--red);font-weight:600;display:flex;align-items:center;gap:5px;min-height:0;}

/* radio */
.radios{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
@media(max-width:560px){.radios{grid-template-columns:1fr;}}
.radio{position:relative;border:1.5px solid var(--line);background:var(--field);border-radius:11px;padding:14px 14px 14px 44px;cursor:pointer;transition:all .18s;font-size:14px;font-weight:600;color:var(--ink-2);display:flex;align-items:center;min-height:50px;}
.radio:hover{border-color:#dcdbe0;}
.radio::before{content:"";position:absolute;left:14px;top:50%;transform:translateY(-50%);width:18px;height:18px;border-radius:50%;border:2px solid var(--muted-2);transition:all .18s;}
.radio.sel{border-color:var(--red);background:#fff;color:var(--ink);box-shadow:0 0 0 4px var(--red-soft);}
.radio.sel::before{border-color:var(--red);background:radial-gradient(circle,#fff 0 30%,var(--red) 42%);}
.radio input{position:absolute;opacity:0;pointer-events:none;}

/* same-as toggle */
.sameas{display:flex;align-items:center;gap:13px;padding:15px 17px;border:1.5px solid var(--line);border-radius:11px;background:var(--field);cursor:pointer;margin-bottom:20px;transition:all .18s;}
.sameas:hover{border-color:#dcdbe0;}
.sameas.on{border-color:var(--red);background:var(--red-soft);}
.chk{flex:none;width:22px;height:22px;border-radius:6px;border:2px solid var(--muted-2);display:flex;align-items:center;justify-content:center;transition:all .18s;background:#fff;}
.sameas.on .chk{background:var(--red);border-color:var(--red);}
.chk svg{opacity:0;transform:scale(.5);transition:all .18s;}
.sameas.on .chk svg{opacity:1;transform:none;}
.sameas .t{font-size:14px;font-weight:600;color:var(--ink-2);}
.sameas .t small{display:block;font-weight:500;color:var(--muted);font-size:12px;margin-top:1px;}
.mirrored{animation:fade .3s both;}
@keyframes fade{from{opacity:.4;}to{opacity:1;}}

/* combobox */
.combo{position:relative;}
.combo-pop{position:absolute;z-index:30;top:calc(100% + 6px);left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 20px 44px -18px rgba(22,21,26,.4);max-height:240px;overflow:auto;padding:6px;}
.combo-opt{padding:9px 12px;border-radius:8px;font-size:14px;cursor:pointer;display:flex;justify-content:space-between;gap:8px;color:var(--ink-2);}
.combo-opt b{color:var(--muted-2);font-weight:700;font-size:12.5px;}
.combo-opt:hover,.combo-opt.hl{background:var(--red-soft);color:var(--ink);}
.combo-opt:hover b,.combo-opt.hl b{color:var(--red);}
.combo-empty{padding:12px;color:var(--muted-2);font-size:13px;text-align:center;}
.caret{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--muted-2);}

/* footer nav */
.foot{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:20px 30px;border-top:1px solid var(--line-2);background:linear-gradient(180deg,#fff,#fcfcfd);}
@media(max-width:560px){.foot{padding:16px 20px;}}
.btn{font-family:inherit;font-size:14.5px;font-weight:700;border-radius:11px;padding:12px 22px;cursor:pointer;border:1.5px solid transparent;transition:all .18s;display:inline-flex;align-items:center;gap:9px;}
.btn:disabled{opacity:.55;cursor:not-allowed;}
.btn-ghost{background:#fff;border-color:var(--line);color:var(--ink-2);}
.btn-ghost:hover:not(:disabled){border-color:var(--muted-2);color:var(--ink);}
.btn-primary{background:var(--red);color:#fff;box-shadow:0 10px 22px -10px rgba(227,6,19,.7);}
.btn-primary:hover:not(:disabled){background:var(--red-dark);transform:translateY(-1px);}
.btn-primary:active:not(:disabled){transform:translateY(0);}
.spin{width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:sp .7s linear infinite;}
@keyframes sp{to{transform:rotate(360deg);}}

.formnote{margin-top:18px;font-size:12px;color:var(--muted-2);display:flex;align-items:center;gap:7px;justify-content:center;}

/* result screens */
.result{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:54px 40px;text-align:center;animation:slideUp .5s cubic-bezier(.16,1,.3,1) both;}
.field{opacity:1;}
.result .ic{width:74px;height:74px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 22px;}
.result.ok .ic{background:#e8f7ee;color:var(--ok);}
.result.bad .ic{background:var(--red-soft);color:var(--red);}
.result h2{font-size:26px;font-weight:800;letter-spacing:-.01em;margin:0 0 10px;}
.result p{color:var(--muted);font-size:15px;margin:0 auto;max-width:42ch;line-height:1.5;}
.result .acts{margin-top:26px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap;}

/* ---- Inscrição Estadual: toggle "isento" inline no label ---- */
.lbl-row{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.mini-toggle{display:inline-flex;align-items:center;gap:6px;font-family:inherit;font-size:11.5px;font-weight:600;color:var(--muted);background:none;border:0;cursor:pointer;padding:0;letter-spacing:.01em;}
.mini-toggle:hover{color:var(--ink-2);}
.mini-box{width:16px;height:16px;border-radius:5px;border:1.6px solid var(--muted-2);background:#fff;display:flex;align-items:center;justify-content:center;transition:all .16s;}
.mini-box svg{opacity:0;transform:scale(.5);transition:all .16s;}
.mini-toggle.on{color:var(--red);}
.mini-toggle.on .mini-box{background:var(--red);border-color:var(--red);}
.mini-toggle.on .mini-box svg{opacity:1;transform:none;}

/* campos travados (espelhados / isento) */
.input:disabled{background:#f1f0f3;color:var(--muted);cursor:not-allowed;border-color:var(--line);}

/* ---- Banner da consulta automática de CNPJ ---- */
.lookup{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:600;border-radius:11px;padding:11px 14px;margin-bottom:18px;border:1.5px solid var(--line);background:var(--field);color:var(--ink-2);animation:fadein .3s both;}
.lookup .li{flex:none;display:flex;}
.lookup b{font-weight:800;}
.lookup small{font-weight:500;opacity:.85;}
.lookup.ok{background:#e8f7ee;border-color:#bfe6cd;color:#15703f;}
.lookup.warn{background:#fff6e6;border-color:#f3dca5;color:#8a5a00;}
.lookup.err{background:var(--red-soft);border-color:#f4c4c4;color:var(--red-dark);}
.mini-spin{width:15px;height:15px;flex:none;border:2px solid rgba(0,0,0,.14);border-top-color:currentColor;border-radius:50%;animation:sp .7s linear infinite;}

/* ---- Indicador de busca por CEP ---- */
.cep-loading{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:600;color:var(--muted);margin-bottom:14px;}
