:root{--bg: #f4f7f6;--surface: #ffffff;--surface-2: #eaf1ef;--line: #d7e2df;--text: #0e1513;--soft: #4b5c58;--faint: #7c8e8a;--mint: #0fae7b;--violet: #b62aa6;--amber: #c77417;--red: #c4352b;--map-bg: #e6edeb;--shadow: 0 1px 2px rgba(14, 21, 19, .06), 0 18px 40px -22px rgba(14, 21, 19, .18);color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0a0e11;--surface: #12181c;--surface-2: #1b2227;--line: #26333a;--text: #edf2f1;--soft: #9fb0ae;--faint: #5c6d6b;--mint: #29e8a6;--violet: #e24fd0;--amber: #ffa53d;--red: #ff6a5c;--map-bg: #0d1215;--shadow: 0 1px 2px rgba(0, 0, 0, .5), 0 24px 60px -24px rgba(0, 0, 0, .75);color-scheme:dark}}:root[data-theme=dark]{--bg: #0a0e11;--surface: #12181c;--surface-2: #1b2227;--line: #26333a;--text: #edf2f1;--soft: #9fb0ae;--faint: #5c6d6b;--mint: #29e8a6;--violet: #e24fd0;--amber: #ffa53d;--red: #ff6a5c;--map-bg: #0d1215;--shadow: 0 1px 2px rgba(0, 0, 0, .5), 0 24px 60px -24px rgba(0, 0, 0, .75);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;background:var(--bg);color:var(--text)}body{font-family:Figtree,system-ui,-apple-system,sans-serif;font-size:14.5px;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:Sora,system-ui,sans-serif;margin:0;letter-spacing:-.01em}.mono{font-family:IBM Plex Mono,ui-monospace,monospace}button,select,input{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--mint);outline-offset:2px}.app{max-width:1440px;margin:0 auto;padding:22px 24px 40px}.top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.brand{display:flex;align-items:center;gap:14px}.mark{width:40px;height:40px;border-radius:50%;padding:2px;flex-shrink:0;position:relative;background:conic-gradient(from 200deg,var(--mint),var(--violet) 45%,var(--amber) 75%,var(--mint))}.mark:after{content:"A";position:absolute;inset:2px;border-radius:50%;background:var(--bg);display:flex;align-items:center;justify-content:center;font-family:Sora,system-ui,sans-serif;font-weight:800;font-size:16px}.brand h1{font-size:19px;font-weight:700}.brand .tag{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.actions{display:flex;gap:8px;flex-wrap:wrap}.btn{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px;font-weight:600;letter-spacing:.03em;padding:9px 14px;border-radius:4px;border:1px solid var(--line);background:var(--surface);color:var(--text);display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.btn:hover{border-color:var(--faint)}.btn.primary{background:var(--mint);border-color:var(--mint);color:var(--bg)}.btn.ghost{background:transparent}.btn:disabled{opacity:.45;cursor:default}.btn.sm{padding:6px 10px;font-size:11.5px}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:6px;overflow:hidden;margin-bottom:18px}.step{background:var(--surface);padding:14px 18px;border:0;text-align:left;display:flex;flex-direction:column;gap:3px;position:relative}.step .n{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;color:var(--faint);letter-spacing:.08em}.step .t{font-family:Sora,system-ui,sans-serif;font-weight:700;font-size:15px}.step .s{font-size:12.5px;color:var(--soft);min-height:19px}.step.on{background:var(--surface-2)}.step.on:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,var(--mint),var(--violet) 55%,var(--amber))}.step .dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;background:var(--faint);vertical-align:1px}.step .dot.ok{background:var(--mint)}.step .dot.run{background:var(--amber);animation:pulse 1s ease-in-out infinite}.step .dot.bad{background:var(--red)}@keyframes pulse{50%{opacity:.3}}@media (max-width: 640px){.steps{grid-template-columns:1fr}}.work{display:grid;grid-template-columns:330px 1fr;gap:18px;align-items:start}@media (max-width: 980px){.work{grid-template-columns:1fr}}.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.side{display:flex;flex-direction:column;gap:14px}.side .panel{padding:16px}.eyebrow{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-bottom:10px;display:flex;justify-content:space-between;align-items:center;gap:8px}.eyebrow b{color:var(--mint);font-weight:600}.drop{border:1.5px dashed var(--line);border-radius:6px;padding:22px 16px;text-align:center;transition:border-color .2s,background .2s;cursor:pointer}.drop:hover,.drop.over{border-color:var(--mint);background:color-mix(in srgb,var(--mint) 7%,transparent)}.drop .big{font-family:Sora,system-ui,sans-serif;font-weight:700;font-size:15px;margin-bottom:4px}.drop .small{font-size:12.5px;color:var(--soft)}.files{display:flex;flex-direction:column;gap:6px;margin-top:10px}.file{display:flex;justify-content:space-between;align-items:center;gap:8px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11.5px;color:var(--soft);background:var(--surface-2);border-radius:4px;padding:6px 9px}.file span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file button{border:0;background:none;color:var(--faint);padding:0 2px}.layers{display:flex;flex-direction:column;gap:2px;max-height:340px;overflow:auto;margin:0 -6px;padding:0 6px}.lay{display:grid;grid-template-columns:1fr 150px;gap:8px;align-items:center;padding:4px 0;border-bottom:1px solid color-mix(in srgb,var(--line) 60%,transparent)}.lay .nm{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lay .ct{font-size:10.5px;color:var(--faint);font-family:IBM Plex Mono,ui-monospace,monospace}.lay select{font-size:11.5px;padding:3px 4px;border-radius:3px;border:1px solid var(--line);background:var(--surface);width:100%}.lay.used select{border-color:color-mix(in srgb,var(--mint) 60%,var(--line))}.note{font-size:12.5px;color:var(--soft)}.warn{font-size:12.5px;color:var(--amber);border-left:2px solid var(--amber);padding:4px 0 4px 10px;margin:6px 0}.err{font-size:13px;color:var(--red);border-left:2px solid var(--red);padding:6px 0 6px 10px}.progress{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px;color:var(--amber);display:flex;align-items:center;gap:8px}.spinner{width:12px;height:12px;border-radius:50%;border:2px solid color-mix(in srgb,var(--amber) 30%,transparent);border-top-color:var(--amber);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:6px;overflow:hidden}.kpi{background:var(--surface);padding:10px 12px}.kpi .v{font-family:Sora,system-ui,sans-serif;font-weight:800;font-size:19px}.kpi .l{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}.mapwrap{position:relative;overflow:hidden;border-radius:8px;background:var(--map-bg);border:1px solid var(--line);box-shadow:var(--shadow);height:620px}@media (max-width: 640px){.mapwrap{height:440px}}.mapwrap canvas{display:block;width:100%;height:100%;touch-action:none;cursor:grab}.mapwrap canvas:active{cursor:grabbing}.maptools{position:absolute;top:12px;left:12px;display:flex;flex-wrap:wrap;gap:6px;max-width:calc(100% - 24px)}.chip{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;padding:5px 9px;border-radius:99px;border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(6px);color:var(--soft)}.chip.on{color:var(--text);border-color:color-mix(in srgb,var(--mint) 55%,var(--line))}.chip.on:before{content:"●";color:var(--mint);margin-right:5px;font-size:9px}.legend{position:absolute;bottom:12px;left:12px;display:flex;gap:14px;flex-wrap:wrap;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:10.5px;color:var(--soft);background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(6px);padding:7px 11px;border-radius:6px;border:1px solid var(--line)}.legend i{display:inline-block;width:18px;height:0;border-top:2px solid;vertical-align:3px;margin-right:6px}.zoombtns{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:4px}.zoombtns button{width:30px;height:30px;border-radius:4px;border:1px solid var(--line);background:var(--surface);font-family:IBM Plex Mono,ui-monospace,monospace;font-weight:600}.tip{position:absolute;pointer-events:none;background:var(--surface);border:1px solid var(--line);border-radius:6px;box-shadow:var(--shadow);padding:9px 11px;font-size:12px;min-width:170px;z-index:3}.tip b{font-family:Sora,system-ui,sans-serif;font-size:13.5px}.tip .r{display:flex;justify-content:space-between;gap:14px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;color:var(--soft)}.empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;padding:24px;background:radial-gradient(60% 60% at 50% 45%,color-mix(in srgb,var(--mint) 10%,transparent),transparent 70%),linear-gradient(var(--line) 1px,transparent 1px) 0 0/32px 32px,linear-gradient(90deg,var(--line) 1px,transparent 1px) 0 0/32px 32px}.empty .t{font-family:Sora,system-ui,sans-serif;font-weight:700;font-size:18px}.empty .s{color:var(--soft);max-width:46ch;font-size:13.5px}.main{display:flex;flex-direction:column;gap:16px;min-width:0}.results{padding:18px 20px}.rhead{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.rhead h2{font-size:17px}.tbl-wrap{overflow-x:auto}table.t{width:100%;border-collapse:collapse;font-size:12.5px;min-width:620px}table.t th,table.t td{padding:7px 9px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}table.t th{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--faint);font-weight:600}table.t td{font-family:IBM Plex Mono,ui-monospace,monospace;font-variant-numeric:tabular-nums;color:var(--soft)}table.t th:first-child,table.t td:first-child,table.t th.l,table.t td.l{text-align:left}table.t td:first-child{font-family:Sora,system-ui,sans-serif;font-weight:700;color:var(--text)}table.t tr.sel td{background:color-mix(in srgb,var(--mint) 9%,transparent)}table.t tbody tr{cursor:pointer}table.t tbody tr:hover td{background:var(--surface-2)}.sw{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:7px;vertical-align:0}.up{color:var(--amber)!important;font-weight:600}.dn{color:var(--mint)!important}.detail{display:grid;grid-template-columns:1.3fr 1fr;gap:16px;margin-top:16px}@media (max-width: 900px){.detail{grid-template-columns:1fr}}.mock{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:18px 20px;box-shadow:var(--shadow)}.mock__eyebrow{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.mock__desc{font-size:13.5px;color:var(--soft);margin:8px 0 12px;font-style:italic}.mock__divider{height:1px;background:var(--line);margin:12px 0}.mock__lines{display:flex;flex-direction:column;gap:6px}.mock__line{display:flex;justify-content:space-between;gap:14px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px;color:var(--soft)}.mock__line.hd{color:var(--faint);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase}.mock__line.up{color:var(--amber)}.mock__price{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}.mock__price-label{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:10.5px;letter-spacing:.1em;color:var(--faint);text-transform:uppercase}.mock__price-value{font-family:Sora,system-ui,sans-serif;font-weight:800;font-size:26px;color:var(--mint)}.mock__flag{display:inline-flex;align-items:center;gap:10px;background:color-mix(in srgb,var(--amber) 14%,transparent);border:1px solid var(--amber);color:var(--amber);border-radius:5px;padding:6px 11px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:10.5px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;margin-bottom:12px}.mock__flag.ok{background:color-mix(in srgb,var(--mint) 12%,transparent);border-color:var(--mint);color:var(--mint)}.mock__flag.warn{background:color-mix(in srgb,var(--violet) 10%,transparent);border-color:var(--violet);color:var(--violet)}.mock__title{font-family:Sora,system-ui,sans-serif;font-weight:700;font-size:15px;margin-bottom:6px}.mock__body{font-size:13.5px;color:var(--soft)}.seg{display:inline-block;width:10px;height:0;border-top:2px solid;margin-right:6px;vertical-align:3px}.cmp-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.banner{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:18px 22px;border-radius:8px;border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow)}.banner .big{font-family:Sora,system-ui,sans-serif;font-weight:800;font-size:22px}.banner.bad{border-left:3px solid var(--amber)}.banner.good{border-left:3px solid var(--mint)}.sugs{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}.drawer-bg{position:fixed;inset:0;background:#00000059;z-index:20}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(420px,100%);background:var(--surface);border-left:1px solid var(--line);z-index:21;padding:22px;overflow:auto;box-shadow:var(--shadow)}.drawer h2{font-size:18px;margin-bottom:4px}.field{display:grid;grid-template-columns:1fr 120px;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line);font-size:13px}.field input,.field select{padding:5px 7px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2);width:100%;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px}.storms{display:grid;grid-template-columns:1fr 1fr 30px;gap:6px;margin-top:6px}.storms input{padding:5px 7px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px;width:100%}.foot{margin-top:26px;font-size:11.5px;color:var(--faint);font-family:IBM Plex Mono,ui-monospace,monospace;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.print-only{display:none}@media print{.no-print,.maptools,.zoombtns,.actions,.steps,.side{display:none!important}.print-only{display:block}.work{grid-template-columns:1fr}.mapwrap{height:auto;border:0;box-shadow:none}.mapwrap canvas{display:none}body{background:#fff;color:#000}.panel,.mock{box-shadow:none;break-inside:avoid}}.hero{border:1.5px dashed color-mix(in srgb,var(--mint) 55%,var(--line));border-radius:8px;padding:34px 20px;text-align:center;cursor:pointer;margin-bottom:18px;background:radial-gradient(60% 120% at 50% 0%,color-mix(in srgb,var(--mint) 9%,transparent),transparent 70%)}.hero:hover{border-color:var(--mint)}.hero .big{font-family:Sora,system-ui,sans-serif;font-weight:800;font-size:22px;margin-bottom:6px}.hero .small{color:var(--soft);max-width:62ch;margin:0 auto;font-size:13.5px}.dropall{position:fixed;inset:12px;z-index:50;border:2px dashed var(--mint);border-radius:12px;display:flex;align-items:center;justify-content:center;text-align:center;padding:24px;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(4px);font-family:Sora,system-ui,sans-serif;font-weight:700;font-size:20px;pointer-events:none}.sortnote{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11.5px;color:var(--soft);border-left:2px solid var(--mint);padding:6px 0 6px 10px;margin-bottom:14px;overflow-wrap:anywhere}.sortnote b{color:var(--mint);font-weight:600}.sortnote span{color:var(--faint)}.inputs{display:flex;flex-wrap:wrap;gap:10px 28px;align-items:center;padding:12px 16px;margin-bottom:14px;background:var(--surface);border:1px solid var(--line);border-radius:6px}.inputs .grp{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}.inputs .lbl{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin-right:4px}.inputs .rf{display:inline-flex;align-items:center;gap:5px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11.5px;color:var(--soft)}.inputs input,.inputs select{width:64px;padding:5px 6px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2);font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12.5px}.inputs select{width:auto}.inputs .ph{font-size:11.5px;color:var(--amber);font-family:IBM Plex Mono,ui-monospace,monospace}.inputs .hint{font-size:11.5px;color:var(--faint)}.btn.ai{border-color:var(--violet);color:var(--violet)}.btn.ai:hover{background:color-mix(in srgb,var(--violet) 10%,transparent)}
