:root{--red:#f4572f;--red-dark:#d4421c;--brand:#f4572f;--brand-dark:#d4421c;--ink:#0f1216;--muted:#666b73;--line:#e2e4e8;--bg:#f5f6f7;--card:#fff;--ok:#0a7a3d;--ok-bg:#e7f5ec;--warn:#9a5b00;--warn-bg:#fff4dc;--bad:#b3121d;--bad-bg:#fde8e8;--blue:#1f5fd0;--blue-bg:#e8f0fd;--ai:#5b3cc4;--ai-bg:#efeafc;--sel:#e6007e}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{color:var(--ink);background:var(--bg);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}h1{margin:0 0 14px;font-size:22px}h2{margin:0 0 8px;font-size:16px}h3{text-transform:uppercase;letter-spacing:.04em;align-items:center;gap:8px;margin:0 0 6px;font-size:13px;display:flex}a{color:inherit}p{margin:0 0 8px}ul{margin:0 0 8px;padding-left:18px}li{margin-bottom:3px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.strong{font-weight:650}.muted{color:var(--muted)}.small{font-size:12px}.right{text-align:right}.spacer{flex:1}.grow{flex:1;min-width:0}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.good{color:var(--ok)}.bad{color:var(--bad);font-weight:600}.warn-text{color:var(--warn)}.app{flex-direction:column;height:100%;display:flex}.topbar{border-bottom:3px solid var(--red);background:#fff;flex:none;align-items:center;gap:12px;height:52px;padding:0 16px;display:flex}.brand{align-items:center;gap:12px;font-size:16px;font-weight:650;text-decoration:none;display:flex}.brand img{height:28px;display:block}.brand span{border-left:1px solid var(--line);padding-left:12px}.user{color:var(--muted);font-size:12px}.page{width:100%;max-width:1200px;margin:0 auto;padding:24px;overflow:auto}.home-grid{grid-template-columns:1fr 340px;align-items:start;gap:24px;display:grid}@media (max-width:900px){.home-grid{grid-template-columns:1fr}}.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:16px}.upload{flex-direction:column;gap:10px;display:flex}.filepick{cursor:pointer;word-break:break-all;background:#fafafa;border:1.5px dashed #c5c8ce;border-radius:6px;padding:10px 12px}.filepick.over,.filepick:hover{border-color:var(--ink)}.filepick.has{border-style:solid;border-color:var(--ok);background:var(--ok-bg)}.btn{font:inherit;color:var(--ink);cursor:pointer;white-space:nowrap;background:#fff;border:1px solid #c5c8ce;border-radius:6px;padding:7px 14px;font-weight:600}.btn:hover:not(:disabled){border-color:var(--ink)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--red);border-color:var(--red);color:#fff}.btn.primary:hover:not(:disabled){background:var(--red-dark);border-color:var(--red-dark)}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.wide{width:100%}.btn.danger,.link.danger{color:var(--bad)}.link{font:inherit;color:var(--blue);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.link:disabled{opacity:.5;cursor:not-allowed}.chip{color:#333;white-space:nowrap;vertical-align:middle;background:#eceef1;border-radius:10px;padding:2px 7px;font-size:11px;font-weight:650;display:inline-block}.chip.ok{background:var(--blue-bg);color:var(--blue)}.chip.done{background:var(--ok-bg);color:var(--ok)}.chip.part{color:#0b6b63;background:#e3f3f1}.chip.draft,.chip.warn{background:var(--warn-bg);color:var(--warn)}.chip.ai{background:var(--ai-bg);color:var(--ai)}.count{text-transform:none;letter-spacing:0;background:#eceef1;border-radius:10px;padding:1px 7px;font-size:11px;font-weight:650}.count.warn{background:var(--warn-bg);color:var(--warn)}.count.ok{background:var(--ok-bg);color:var(--ok)}.banner{border:1px solid;border-radius:6px;margin:0 0 10px;padding:9px 12px;font-size:13px}.banner.error{background:var(--bad-bg);color:#7d0d15;border-color:#f3b8bb}.banner.warn{background:var(--warn-bg);color:#6b3f00;border-color:#f0d391}.banner.ok{background:var(--ok-bg);color:#075a2d;border-color:#b5dfc5}.tbl{border-collapse:collapse;border:1px solid var(--line);background:#fff;border-radius:6px;width:100%;font-size:13px}.tbl th{text-align:left;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--line);background:#fafafa;padding:7px 8px;font-size:11px}.tbl th.right{text-align:right}.tbl td{vertical-align:top;border-bottom:1px solid #eff0f2;padding:6px 8px}.tbl tfoot td{background:#fafafa;border-bottom:0;font-weight:600}.tbl.hover tbody tr{cursor:pointer}.tbl.hover tbody tr:hover{background:#fafbfc}.tbl tr.is-ordered td{background:#f6fbf8}.tbl.sticky thead th{position:sticky;top:0}.workspace{flex:1;min-height:0;display:flex}.left{background:#dfe1e5;flex-direction:column;flex:1;min-width:0;display:flex}.side{border-left:1px solid var(--line);background:#fff;flex-direction:column;flex:none;width:500px;min-height:0;display:flex}@media (max-width:1100px){.side{width:420px}}.toolbar{border-bottom:1px solid var(--line);background:#fff;align-items:center;gap:12px;padding:8px 12px;display:flex}.toolbar .title{align-items:center;gap:8px;min-width:0;display:flex}.back{color:var(--muted);white-space:nowrap;font-size:13px;text-decoration:none}.viewer{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:1;min-height:0;position:relative;overflow:hidden}.viewer:active{cursor:grabbing}.viewer.selecting{cursor:crosshair}.stage{transform-origin:0 0;background:#fff;position:absolute;top:0;left:0;box-shadow:0 1px 6px #00000040}.stage canvas{display:block}.sharp{pointer-events:none;transition:opacity 80ms;position:absolute;top:0;left:0}.overlay{pointer-events:none;position:absolute;inset:0}.overlay .area{pointer-events:auto;cursor:pointer}.overlay .area rect{fill-opacity:.1}.overlay .area text{paint-order:stroke;stroke:#fff;stroke-width:.25em;stroke-linejoin:round;font-weight:700}.area.draft rect{fill:#e69500;stroke:#c27c00}.area.draft text{fill:#8a5800}.area.accepted rect{fill:var(--blue);stroke:var(--blue)}.area.accepted text{fill:var(--blue)}.area.part-ordered rect{fill:#0f9d92;stroke:#0b7f76}.area.part-ordered text{fill:#0b6b63}.area.ordered rect{fill:var(--ok);stroke:var(--ok);fill-opacity:.18}.area.ordered text{fill:var(--ok)}.area.active rect{fill-opacity:.2}.overlay .sel{fill:#e6007e12;stroke:var(--sel)}.overlay .hl rect{fill:#1f5fd02e;stroke:var(--blue)}.overlay .hl.warn rect{fill:#e6950038;stroke:#c27c00}.overlay .hl rect.lbl{fill:#ffe60059}.overlay .hl line{stroke:#555}.viewer-loading{color:var(--muted);background:#dfe1e5b3;place-items:center;display:grid;position:absolute;inset:0}.zoombar{cursor:default;background:#fff;border:1px solid #c5c8ce;border-radius:6px;display:flex;position:absolute;bottom:12px;right:12px;overflow:hidden}.zoombar button{font:inherit;cursor:pointer;border:0;border-right:1px solid var(--line);background:#fff;padding:6px 12px;font-weight:600}.zoombar button:last-child{border-right:0}.zoombar button:hover{background:#f2f3f5}.legend{border-top:1px solid var(--line);color:var(--muted);background:#fff;flex-wrap:wrap;gap:14px;padding:5px 12px;font-size:11px;display:flex}.sw{vertical-align:-2px;border:2px solid;border-radius:2px;width:12px;height:12px;margin-right:5px;display:inline-block}.sw.sel{border-color:var(--sel);border-style:dashed}.sw.draft{border-style:dashed;border-color:#c27c00}.sw.accepted{border-color:var(--blue);background:var(--blue-bg)}.sw.part{background:#e3f3f1;border-color:#0b7f76}.sw.ordered{border-color:var(--ok);background:var(--ok-bg)}.tabs{border-bottom:1px solid var(--line);flex:none;display:flex}.tabs button{font:inherit;cursor:pointer;color:var(--muted);background:0 0;border:0;border-bottom:3px solid #0000;flex:1;margin-bottom:-1px;padding:10px 6px;font-weight:600}.tabs button.on{color:var(--ink);border-bottom-color:var(--red)}.review{flex-direction:column;flex:1;min-height:0;display:flex}.panel-head{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:10px;padding:10px 14px;display:flex}.panel-head .name{font:inherit;border:1px solid #0000;border-radius:4px;flex:1;min-width:0;padding:3px 6px;font-size:16px;font-weight:650}.panel-head .name:hover,.panel-head .name:focus{border-color:#c5c8ce;outline:none}.panel-body{flex:1;min-height:0;padding:14px;overflow:auto}.panel-body section{margin-bottom:18px}.panel-foot{border-top:1px solid var(--line);background:#fafafa;flex:none;align-items:center;gap:8px;padding:10px 14px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.scope{border:1px solid var(--line);background:#f7f8fa;border-radius:6px;padding:10px 12px}.scope ul{margin-bottom:0}.ai-note{margin:8px 0 0;font-size:13px}.ai-box{background:#faf8ff;border:1px solid #ddd5f5;border-radius:6px;padding:9px 12px}.ai-box .banner{margin:8px 0 0}.empty{text-align:center;padding:30px 16px}.area-row{text-align:left;width:100%;font:inherit;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:6px;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;padding:9px 12px;display:flex}.area-row:hover{border-color:var(--ink)}.item{border:1px solid var(--line);background:#fff;border-left:4px solid #b8bcc4;border-radius:6px;margin-bottom:8px;padding:8px 10px}.item.open{background:#fffdf7;border-left-color:#e69500}.item.included{border-left-color:var(--ok)}.item.excluded{background:#f7f7f8;border-left-color:#b8bcc4}.item.excluded .label{color:var(--muted);text-decoration:line-through}.item-head{align-items:flex-start;gap:10px;display:flex}.mark{background:var(--ink);color:#fff;text-align:center;border-radius:4px;min-width:38px;padding:1px 7px;font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700}.item .label{word-break:break-word;font-size:13px}.qty{text-align:right}.q{flex-direction:column;align-items:flex-end;font-size:18px;font-weight:700;line-height:1;display:inline-flex}.q small{color:var(--muted);font-size:10px;font-weight:500}.q.open{color:var(--warn)}.reason{background:var(--warn-bg);color:#4d2e00;border-radius:4px;margin-top:6px;padding:5px 8px;font-size:12.5px}.reason b{margin-right:4px}.reason.crossing{color:#6b0039;background:#fdebf4}.reason.already-counted,.reason.ai-differs{background:var(--bad-bg);color:#7d0d15}.reason.info{color:#333;background:#f1f2f4}.reason.ai{background:var(--ai-bg);color:#2c1a73}.item-actions{flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;font-size:12.5px;display:flex}.seg{font:inherit;cursor:pointer;background:#fff;border:1px solid #c5c8ce;border-radius:5px;align-items:center;gap:5px;padding:4px 9px;font-size:12.5px;font-weight:600;display:inline-flex}.seg:hover:not(:disabled){border-color:var(--ink)}.seg:disabled{opacity:.5}.seg.on{background:var(--ink);color:#fff;border-color:var(--ink)}.seg.input{cursor:default}.seg input{width:56px;font:inherit;border:1px solid #c5c8ce;border-radius:3px;padding:1px 4px}.note{font:inherit;border:1px solid #c5c8ce;border-radius:4px;width:100%;margin-top:6px;padding:4px 7px;font-size:12.5px}.item-actions .note{width:auto;margin-top:0}.item.compact{padding:6px 10px}.item.compact .item-actions{margin-top:4px}.manual{border:1px dashed #c5c8ce;border-radius:6px;padding:10px}.order-all{border:1px solid var(--line);background:#f7f8fa;border-radius:6px;margin-top:10px;padding:10px 12px}.order-all label{color:var(--muted);flex-direction:column;gap:2px;font-size:12px;display:flex}.order-all input,.order-edit input{font:inherit;border:1px solid #c5c8ce;border-radius:4px;padding:5px 7px}.order-all .row{align-items:flex-end;margin:6px 0}.order-edit{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.order-edit input[type=number]{width:64px}.order-edit input:not([type]){width:90px}.order-edit input{padding:2px 5px;font-size:12px}.facts{padding:0;list-style:none}.facts li{border-bottom:1px solid #f0f1f3;padding:4px 0}.log-row{border-bottom:1px solid #f0f1f3;padding:7px 0}.nav{color:var(--muted);border-radius:6px;padding:4px 8px;font-size:13px;text-decoration:none}.nav:hover,.nav.on{color:#111;background:#f1f1f1}.gate{text-align:center;max-width:520px;margin:48px auto}.gate h1{margin-top:0}.actions{white-space:nowrap}.actions .btn{margin-left:6px}.login{text-align:left}.login-logo{height:36px;margin:0 auto 12px;display:block}.login-tabs{gap:6px;margin-bottom:14px;display:flex}.login-tabs .seg{flex:1}.field{margin:0 0 12px;display:block}.field span{color:var(--muted);margin-bottom:4px;font-size:12px;display:block}.field input,.field select{box-sizing:border-box;width:100%;font:inherit;border:1px solid #ccc;border-radius:6px;padding:8px 10px}.adduser{grid-template-columns:2fr 2fr 1fr auto;align-items:end;gap:8px;margin:12px 0 18px;display:grid}.adduser .field{margin:0}.temp-pw{background:#fff6d6;border-radius:4px;padding:2px 6px;font-family:ui-monospace,Menlo,monospace}@media (max-width:700px){.adduser{grid-template-columns:1fr}}.project-switch{align-items:center;gap:6px;display:inline-flex}.project-switch select{font:inherit;background:#fff;border:1px solid #ccc;border-radius:6px;max-width:220px;padding:3px 6px;font-size:13px}.chip.project{color:#3340a8;background:#eef2ff}.projects-add{grid-template-columns:1fr auto}.project-editor{margin-top:16px;padding:14px}.project-editor h2{margin:0;font-size:18px}.project-editor .row{flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0;display:flex}.area.detail rect,.area.detail polygon{fill:#1a66ff;stroke:#1a66ff;fill-opacity:.06}.area.detail text{fill:#1a66ff}.area polygon{fill-opacity:.12;cursor:pointer}.overlay polygon.sel{fill:#e6007e;fill-opacity:.08;stroke:#e6007e}.poly-draft polyline{fill:none;stroke:#e6007e}.poly-draft line{stroke:#e6007e}.poly-draft circle{fill:#fff;stroke:#e6007e}.poly-draft circle.first{fill:#ffe0f0}.sw.detail{opacity:.5;background:#1a66ff}.shape-toggle{gap:4px;display:inline-flex}.viewer-hint{color:#fff;pointer-events:none;white-space:nowrap;background:#141414d1;border-radius:6px;padding:5px 10px;font-size:12px;position:absolute;top:10px;left:50%;transform:translate(-50%)}.kind-toggle{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:6px;padding:8px 12px;display:flex}.tbl.pads{margin-bottom:12px}.tbl.pads thead tr:first-child th{background:#f3f4f7;font-size:13px}.tbl.checks{margin:6px 0 4px}.tbl.checks td,.tbl.checks th{padding:3px 6px}.tbl tr.pending td{background:#fff8e6}.seg input[type=checkbox]{width:auto;margin:0 4px 0 0}.seg select{font:inherit;border:1px solid #c5c8ce;border-radius:3px;padding:1px 4px}ul.tight{margin:4px 0 0 18px;padding:0}.item .label.strong{font-weight:600}.tbl.pads.totals thead tr:first-child th{background:#e9edf5}.tbl.pads.totals tfoot td{font-weight:600}.layer-filter{background:#f6f8ff;border:1px solid #dbe3f5;border-radius:6px;margin-bottom:10px;padding:8px 12px}.layer-filter h3{margin:0}.layer-filter .seg small{margin-left:4px;font-weight:400}.layer-filter .seg.on small{color:#ddd}.brand-name{flex-direction:column;line-height:1.1;display:flex}.brand-name small{color:var(--muted);letter-spacing:.01em;font-size:11px;font-weight:500}.brand img{height:30px}.chip.plan{color:#b83a17;background:#fff0ea}.landing{min-height:100vh;color:var(--ink);background:#fff}.land-top{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:14px 32px;display:flex}.land-top .nav{font-size:14px}.hero{grid-template-columns:1.2fr 1fr;align-items:center;gap:48px;max-width:1100px;margin:0 auto;padding:72px 32px 48px;display:grid}.eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--brand);margin-bottom:14px;font-size:12px;font-weight:700;display:inline-block}.hero h1{letter-spacing:-.02em;margin:0 0 18px;font-size:44px;line-height:1.08}.hero .lead{color:#3a3f47;max-width:560px;margin:0 0 22px;font-size:17px}.hero-cta{flex-wrap:wrap;gap:10px;margin-bottom:10px;display:flex}.btn.big{padding:11px 20px;font-size:15px}.hero-card{background:var(--ink);color:#fff;border-radius:14px;padding:18px;font-size:14px;box-shadow:0 18px 50px #0f121640}.mock-head{gap:6px;margin-bottom:14px;display:flex}.mock-head .dot{background:#3a4049;border-radius:50%;width:10px;height:10px}.mock-head .dot:first-child{background:var(--brand)}.mock-row{background:#1a1f26;border-radius:8px;grid-template-columns:44px 1fr auto;align-items:center;gap:12px;margin-bottom:6px;padding:9px 10px;display:grid}.mock-row.flag{border:1px solid var(--brand)}.mock-row.ai{background:#241f3a}.mock-mark{color:var(--brand);font-family:ui-monospace,Menlo,monospace;font-weight:700}.mock-qty{font-weight:700}.mock-foot{text-align:center;color:#aab1bb;margin-top:12px;font-size:12px}.steps,.features,.pricing{max-width:1100px;margin:0 auto;padding:40px 32px}.steps h2,.pricing h2{letter-spacing:-.01em;margin:0 0 16px;font-size:28px}.steps ol{gap:10px;max-width:820px;margin:0;padding-left:22px;font-size:15px;display:grid}.features{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.feature{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:18px}.feature h3{margin:0 0 8px;font-size:16px}.feature p{color:#3a3f47;margin:0;font-size:14px}.plans{grid-template-columns:repeat(4,1fr);gap:16px;margin:18px 0 10px;display:grid}.plan{border:1px solid var(--line);background:#fff;border-radius:14px;flex-direction:column;gap:8px;padding:22px 20px;display:flex;position:relative}.plan.featured{border-color:var(--brand);box-shadow:0 10px 30px #f4572f26}.plan.quote{background:var(--bg)}.plan h3{margin:0;font-size:18px}.plan .price{letter-spacing:-.02em;font-size:34px;font-weight:800}.plan .price small{color:var(--muted);margin-left:2px;font-size:14px;font-weight:500}.plan .allow{font-size:15px}.plan ul{color:#3a3f47;gap:4px;margin:6px 0 10px;padding-left:18px;font-size:13px;display:grid}.plan .btn{margin-top:auto}.plan .current{position:absolute;top:14px;right:14px}.ribbon{background:var(--brand);color:#fff;letter-spacing:.04em;text-transform:uppercase;border-radius:10px;padding:3px 10px;font-size:11px;font-weight:700;position:absolute;top:-12px;left:20px}.land-foot{border-top:1px solid var(--line);align-items:center;gap:14px;margin-top:24px;padding:24px 32px;display:flex}.land-foot img{height:24px}.auth-page{max-width:560px;margin:0 auto}.auth-brand{width:120px;margin:28px auto 0;display:block}.auth-brand img{width:120px;height:auto}.usage{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.usage-bar{background:#eceef1;border-radius:4px;flex:1;min-width:160px;height:8px;overflow:hidden}.usage-bar i{background:var(--brand);height:100%;display:block}.usage-bar.full i{background:var(--bad)}.billing-grid{grid-template-columns:repeat(3,1fr);gap:14px;margin:14px 0;display:grid}@media (max-width:900px){.hero{grid-template-columns:1fr;padding-top:40px}.hero h1{font-size:34px}.features,.plans,.billing-grid{grid-template-columns:1fr 1fr}}@media (max-width:600px){.features,.plans,.billing-grid{grid-template-columns:1fr}.land-top{padding:12px 16px}.steps,.features,.pricing{padding:28px 16px}}.topbar .nav{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.topbar .nav .chip{font-size:11px}
