/* Tax engine demo — scoped under .app */
.app{
  --t-bg:#0b0d17;--t-panel:#12152a;--t-panel2:#181c36;--t-line:rgba(165,170,255,.13);--t-line2:rgba(165,170,255,.26);
  --t-ink:#eceefe;--t-ink2:#a8acd0;--t-mute:#6c7099;
  --t-acc:#818cf8;--t-acc2:#a5b4fc;--t-good:#34d399;--t-warn:#fbbf24;--t-bad:#fb7185;--t-sky:#38bdf8;
  padding:16px;display:flex;flex-direction:column;gap:14px;color:var(--t-ink);font:400 14px/1.45 var(--body);
  background:radial-gradient(900px 420px at 100% 0,rgba(129,140,248,.14),transparent 60%),radial-gradient(600px 400px at 0 100%,rgba(52,211,153,.07),transparent 60%),var(--t-bg);
}
.app button{border:0;background:none;color:inherit;cursor:pointer}
.app .t-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
.app .t-brand{display:flex;align-items:center;gap:10px;min-width:0}
.app .t-mark{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font:800 18px var(--display);color:#0b0d17;background:linear-gradient(135deg,var(--t-acc2),var(--t-acc));flex:none}
.app .t-brand b{display:block;font:700 16px var(--display);letter-spacing:-.02em}
.app .t-brand small{display:block;font:500 10.5px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--t-mute)}
.app .t-btn{display:inline-flex;align-items:center;gap:8px;height:40px;padding:0 16px;border-radius:12px;font:600 13.5px var(--body);background:var(--t-panel2)!important;border:1px solid var(--t-line2)!important;flex:none;transition:border-color .2s}
.app .t-btn:hover{border-color:var(--t-acc)!important}
.app .t-btn.on{color:var(--t-acc2);border-color:var(--t-acc)!important}
.app .t-disclaimer{padding:10px 14px;border-radius:12px;background:rgba(251,191,36,.07);border:1px solid rgba(251,191,36,.28);color:#fde7a8;font-size:13px}
.app .t-disclaimer b{color:var(--t-warn)}
.app .t-disclaimer em{font-style:normal;text-decoration:underline;text-underline-offset:2px}

.app .t-card{padding:16px;border-radius:16px;background:linear-gradient(180deg,var(--t-panel2),var(--t-panel));border:1px solid var(--t-line);min-width:0}
.app .t-card h3{font:700 15px var(--display);letter-spacing:-.01em;margin-bottom:12px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.app .t-card h3 span{font:500 10.5px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--t-mute)}
.app .t-main{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:14px;align-items:start}

/* inputs */
.app .t-inputs{display:grid;gap:12px}
.app .t-inputs h3{margin-bottom:0}
.app .t-inputs label{display:grid;gap:5px;min-width:0}
.app .t-inputs label>span{font:600 10.5px var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--t-mute)}
.app .t-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.app .t-zipbox{position:relative}
.app .t-zip input{width:100%;height:54px;padding:0 44px 0 16px;border-radius:13px;background:#0a0c18;border:1.5px solid var(--t-line2);color:var(--t-ink);font:600 24px var(--mono);letter-spacing:.18em;outline:0;transition:border-color .25s,box-shadow .25s,background .25s}
.app .t-zip input:focus{border-color:var(--t-acc);box-shadow:0 0 0 4px rgba(129,140,248,.16)}
.app .t-zip input::placeholder{color:#3d4166;letter-spacing:.06em;font-size:18px}
.app .t-zipok{position:absolute;right:12px;top:50%;width:26px;height:26px;margin-top:-13px;border-radius:50%;display:grid;place-items:center;background:var(--t-good);color:#05271b;opacity:0;transform:scale(.4);transition:all .3s var(--ease)}
.app .t-zip small{font:500 11.5px var(--mono);color:var(--t-mute);min-height:17px}
.app .t-zip.ok input{border-color:var(--t-good);background:rgba(52,211,153,.09);box-shadow:0 0 0 4px rgba(52,211,153,.14);color:#d1fae5}
.app .t-zip.ok .t-zipok{opacity:1;transform:none}
.app .t-zip.ok small{color:var(--t-good)}
.app .t-zip.bad input{border-color:var(--t-bad)}
.app .t-zip.bad small{color:var(--t-bad)}
.app .t-money{display:flex;align-items:center;min-width:0;height:44px;border-radius:12px;background:#0a0c18;border:1px solid var(--t-line2);padding:0 12px;transition:border-color .2s}
.app .t-money:focus-within{border-color:var(--t-acc)}
.app .t-money b{color:var(--t-mute);font:500 14px var(--mono);margin-right:4px}
.app .t-money input{flex:1;min-width:0;width:100%;background:none;border:0;outline:0;color:var(--t-ink);font:600 15px var(--mono)}
.app input[type=range]{width:100%;accent-color:var(--t-acc);height:28px;margin:0}
.app .t-chips{display:flex;gap:8px;align-items:flex-start}
.app .t-chips>span{font:500 11px var(--mono);color:var(--t-mute);padding-top:9px}
.app .t-chips>div{display:flex;flex-wrap:wrap;gap:6px}
.app .t-chip{min-height:34px;padding:0 10px;border-radius:999px;font:600 11.5px var(--mono);background:rgba(129,140,248,.1)!important;border:1px solid rgba(129,140,248,.28)!important;color:var(--t-acc2);transition:background .2s}
.app .t-chip:hover,.app .t-chip.on{background:rgba(129,140,248,.25)!important}

/* pipeline */
.app .t-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;position:relative}
.app .t-steps li{position:relative;display:flex;gap:10px;padding:12px;border-radius:13px;background:rgba(10,12,24,.6);border:1px solid var(--t-line);transition:border-color .35s,background .35s,box-shadow .35s,opacity .35s;opacity:.55;min-width:0}
.app .t-steps li::after{content:"";position:absolute;right:-10px;top:50%;width:10px;height:2px;background:var(--t-line2);transition:background .35s}
.app .t-steps li:last-child::after{display:none}
.app .t-steps li>i{flex:none;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font:700 11px var(--mono);font-style:normal;background:var(--t-panel2);border:1px solid var(--t-line2);color:var(--t-mute);transition:all .35s}
.app .t-steps li div{min-width:0}
.app .t-steps small{display:block;font:600 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--t-mute)}
.app .t-steps b{display:block;margin-top:3px;font:700 15px var(--body);letter-spacing:-.01em;overflow-wrap:anywhere}
.app .t-steps em{display:block;margin-top:2px;font-style:normal;font-size:11.5px;color:var(--t-mute);overflow-wrap:anywhere}
.app .t-steps li.lit{opacity:1;border-color:rgba(129,140,248,.5);background:rgba(129,140,248,.08);box-shadow:0 0 30px -12px rgba(129,140,248,.8)}
.app .t-steps li.lit>i{background:var(--t-acc);border-color:var(--t-acc);color:#0b0d17}
.app .t-steps li.lit::after{background:var(--t-acc)}
.app .t-steps li.override b{color:var(--t-warn)}
.app .t-steps li.strike b s{color:var(--t-mute);font-weight:500}
.app .t-steps li.done{border-color:rgba(52,211,153,.55);background:rgba(52,211,153,.08);box-shadow:0 0 30px -12px rgba(52,211,153,.8)}
.app .t-steps li.done>i{background:var(--t-good);border-color:var(--t-good)}
.app .t-steps li.done b{color:var(--t-good);font-size:18px}
.app .t-steps li.manual b{color:var(--t-warn)}
.app .t-steps li.pulse{animation:tpulse .5s var(--ease)}
@keyframes tpulse{0%{transform:scale(.97)}60%{transform:scale(1.02)}100%{transform:none}}

.app .t-result{margin-top:14px}
.app .t-result__empty{padding:40px 16px;text-align:center;color:var(--t-mute);border:1px dashed var(--t-line2);border-radius:14px}
.app .t-res{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:14px;animation:tin .45s var(--ease)}
@keyframes tin{from{opacity:0;transform:translateY(6px)}}
.app .t-big{padding:16px;border-radius:14px;background:rgba(10,12,24,.65);border:1px solid var(--t-line)}
.app .t-big header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.app .t-big header b{font:700 15px var(--body)}
.app .t-conf{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font:700 10.5px var(--mono);letter-spacing:.04em}
.app .t-conf.a{background:rgba(52,211,153,.14);color:var(--t-good);border:1px solid rgba(52,211,153,.35)}
.app .t-conf.m{background:rgba(251,191,36,.12);color:var(--t-warn);border:1px solid rgba(251,191,36,.35)}
.app .t-conf.n{background:rgba(56,189,248,.12);color:var(--t-sky);border:1px solid rgba(56,189,248,.35)}
.app .t-amt{margin-top:10px;font:800 44px/1 var(--display);letter-spacing:-.04em}
.app .t-amt small{font:500 12px var(--mono);letter-spacing:0;color:var(--t-mute);margin-left:6px}
.app .t-amt.manual{font-size:24px;color:var(--t-warn);letter-spacing:-.02em;line-height:1.15}
.app .t-note{margin-top:10px;font-size:13px;color:var(--t-ink2)}
.app .t-manualbox{margin-top:12px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.app .t-manualbox .t-money{width:130px;height:40px}
.app .t-manualbox button{height:40px;padding:0 14px;border-radius:11px;background:var(--t-acc)!important;color:#0b0d17!important;font:700 13px var(--body)}
.app .t-break{margin:0;padding:14px 16px;border-radius:14px;background:rgba(10,12,24,.65);border:1px solid var(--t-line);display:grid;gap:7px;font-size:13px}
.app .t-break div{display:flex;justify-content:space-between;gap:10px}
.app .t-break dt{color:var(--t-ink2)}
.app .t-break dd{margin:0;font:600 13px var(--mono);white-space:nowrap}
.app .t-break .sum{padding-top:8px;margin-top:2px;border-top:1px solid var(--t-line2)}
.app .t-break .sum dt{color:var(--t-ink);font-weight:600}
.app .t-break .sum dd{color:var(--t-good);font-size:15px}
.app .t-break .minus dd{color:var(--t-acc2)}
.app .t-break p{font:500 10.5px var(--mono);color:var(--t-mute);margin-top:4px}

/* lower */
.app .t-lower{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:14px;align-items:start}
.app #map{width:100%;height:auto}
.app #map g{cursor:default}
.app #map g.click{cursor:pointer}
.app #map rect{rx:7px;transition:fill .3s,stroke .3s,transform .3s;stroke-width:2}
.app #map text{font:700 11px var(--mono);text-anchor:middle;dominant-baseline:central;pointer-events:none}
.app #map .c rect{fill:rgba(129,140,248,.32);stroke:rgba(129,140,248,.6)}
.app #map .c text{fill:#e0e3ff}
.app #map .n rect{fill:rgba(56,189,248,.18);stroke:rgba(56,189,248,.5)}
.app #map .n text{fill:#bae6fd}
.app #map .m rect{fill:rgba(251,191,36,.16);stroke:rgba(251,191,36,.5)}
.app #map .m text{fill:#fde68a}
.app #map .o rect{fill:rgba(165,170,255,.05);stroke:rgba(165,170,255,.1)}
.app #map .o text{fill:#4b5080}
.app #map g.click:hover rect{stroke:#fff}
.app #map g.sel rect{fill:var(--t-good);stroke:#d1fae5}
.app #map g.sel text{fill:#04281b}
.app .t-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font:500 11px var(--mono);color:var(--t-ink2)}
.app .t-legend span{display:inline-flex;align-items:center;gap:6px}
.app .t-legend i{width:12px;height:12px;border-radius:3px}
.app .t-legend .c{background:rgba(129,140,248,.5)}
.app .t-legend .n{background:rgba(56,189,248,.35)}
.app .t-legend .m{background:rgba(251,191,36,.35)}
.app .t-legend .o{background:rgba(165,170,255,.12)}
.app .t-tablewrap{overflow-x:auto;max-height:392px;overflow-y:auto;border-radius:10px;border:1px solid var(--t-line)}
.app .t-table table{width:100%;border-collapse:collapse;font-size:12.5px}
.app .t-table th{position:sticky;top:0;background:#151933;text-align:left;font:600 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--t-mute);padding:8px 10px;white-space:nowrap}
.app .t-table td{padding:8px 10px;border-top:1px solid var(--t-line);white-space:nowrap;color:var(--t-ink2)}
.app .t-table td:first-child{font:600 12.5px var(--mono);color:var(--t-ink)}
.app .t-table tr{cursor:pointer;transition:background .15s}
.app .t-table tbody tr:hover{background:rgba(129,140,248,.08)}
.app .t-table tr.sel{background:rgba(52,211,153,.1)}
.app .t-table tr.sel td:first-child{color:var(--t-good)}
.app .t-table td .rule{font-size:12px}

@media (max-width:980px){
  .app .t-main{grid-template-columns:minmax(0,1fr)}
  .app .t-lower{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:640px){
  .app{padding:12px}
  .app .t-card{padding:14px}
  .app .t-steps{grid-template-columns:minmax(0,1fr)}
  .app .t-steps li::after{right:auto;left:23px;top:auto;bottom:-10px;width:2px;height:10px}
  .app .t-res{grid-template-columns:minmax(0,1fr)}
  .app .t-amt{font-size:38px}
  .app .t-btn{padding:0 12px}
}
