:root{--ink: #11101f;--ink-2: #2b2a3d;--muted: #6b6b7b;--line: #e4e2da;--bg: #f6f5f0;--card: #ffffff;--yel: #f2c200;--yel-soft: #fff4c7;--blue: #2563eb;--red: #c4320a;--green: #15803d;--radius: 14px;--tap: 52px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%}*{box-sizing:border-box}html,body{margin:0;background:var(--bg)}body{overscroll-behavior:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none;-webkit-tap-highlight-color:transparent}svg{flex-shrink:0}h1{font-size:1.6rem;margin:0;letter-spacing:-.01em}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:16px;padding:calc(env(safe-area-inset-top) + 8px) 18px 8px;background:var(--ink);color:#fff}.brand{display:flex;align-items:center;gap:12px}.brand img{height:44px;border-radius:6px;display:block}.brand-sub{font-size:.85rem;color:#c9c7d6}.nav{display:flex;gap:4px;margin-left:auto}.nav a{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:10px;color:#d8d6e4;min-height:48px}.nav a svg{width:22px;height:22px}.nav a.active{background:var(--yel);color:var(--ink);font-weight:600}.lang-switch{display:flex;border:1px solid #45435a;border-radius:10px;overflow:hidden}.lang-switch button{background:none;border:0;padding:10px 12px;color:#c9c7d6;min-height:44px;font-weight:600}.lang-switch button.active{background:#fff;color:var(--ink)}.offline-bar{background:#fde68a;color:#713f12;padding:8px 18px;font-size:.9rem}.content{flex:1;padding:20px 18px calc(env(safe-area-inset-bottom) + 40px);width:100%;max-width:1400px;margin:0 auto}.page-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.muted{color:var(--muted)}.empty{padding:36px 20px;text-align:center;color:var(--muted);background:var(--card);border:1px dashed var(--line);border-radius:var(--radius)}.empty.small{padding:14px;text-align:left}.link{color:var(--blue);text-decoration:underline}.spacer{flex:1}.version{text-align:center;font-size:.8rem;margin-top:24px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:10px 18px;border-radius:12px;border:1px solid transparent;font-weight:600;background:var(--card);white-space:nowrap}.btn svg{width:20px;height:20px}.btn.lg{min-height:var(--tap);padding:12px 22px;font-size:1.02rem}.btn.sm{min-height:38px;padding:6px 12px;font-size:.9rem}.btn.primary{background:var(--yel);color:var(--ink);border-color:#d9ad00}.btn.primary:active{background:#e0b400}.btn.ghost{background:var(--card);border-color:var(--line)}.btn.ghost:active{background:#efeee8}.btn.danger{background:#fdeceb;color:var(--red);border-color:#f5c2bd}.btn.block{width:100%}.btn:disabled{opacity:.45;cursor:default}.icon-btn{padding:0;width:46px;min-width:46px}.danger-text{color:var(--red)}.input{width:100%;min-height:50px;padding:10px 14px;border-radius:12px;border:1.5px solid var(--line);background:#fff;font-size:1.05rem;outline:none}.input:focus{border-color:var(--ink);box-shadow:0 0 0 3px var(--yel-soft)}.input.sm{min-height:38px;font-size:.9rem;padding:6px 10px}textarea.input{resize:vertical;line-height:1.45}.search{margin-bottom:12px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:16px}.card-title{font-size:1.15rem;margin:0 0 14px;display:flex;align-items:center;gap:10px}.card-title:before{content:"";width:5px;height:20px;background:var(--yel);border-radius:3px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px 18px}.wide{grid-column:1 / -1}.field{display:flex;flex-direction:column;gap:7px;min-width:0}.field-label{font-size:.88rem;font-weight:600;color:var(--ink-2)}.field-input{position:relative;display:flex;align-items:center}.field-input .unit{position:absolute;right:14px;color:var(--muted);pointer-events:none;font-weight:600}.field-input .input{padding-right:52px}.field-hint{font-size:.8rem;color:var(--muted)}.computed{min-height:50px;display:flex;align-items:center;padding:0 14px;border-radius:12px;background:var(--yel-soft);font-weight:700;font-size:1.1rem}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{min-height:48px;padding:10px 16px;border-radius:999px;border:1.5px solid var(--line);background:#fff;font-weight:500;display:inline-flex;align-items:center;gap:8px}.chip.active{background:var(--ink);border-color:var(--ink);color:#fff}.chip .tick{width:20px;height:20px;border-radius:6px;border:1.5px solid currentColor;display:inline-grid;place-items:center;font-size:.8rem;opacity:.8}.chip.active .tick{background:var(--yel);color:var(--ink);border-color:var(--yel);opacity:1}.chip .count{font-size:.8rem;opacity:.7}.status-filter{margin-bottom:16px}.check{display:flex;align-items:center;gap:10px;min-height:48px}.check input{width:24px;height:24px;accent-color:var(--ink)}.warn{margin-top:8px;color:#92400e;background:#fef3c7;padding:8px 12px;border-radius:10px;font-size:.9rem}.notice{padding:12px 14px;border-radius:12px;margin:8px 0;font-weight:500}.notice.ok{background:#dcfce7;color:#14532d}.notice.warn{background:#fef3c7;color:#78350f}.notice.err{background:#fee2e2;color:#7f1d1d}.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px;align-items:center}.job-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}.job-card{display:flex;gap:14px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px;min-height:120px}.job-card:active{background:#faf9f5}.job-thumb{width:120px;height:96px;flex-shrink:0;border-radius:10px;background:#fbfaf6;border:1px solid var(--line);overflow:hidden;padding:4px}.job-info{min-width:0;flex:1;display:flex;flex-direction:column;gap:4px}.job-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.ref{font-size:.8rem;font-weight:700;color:var(--muted);letter-spacing:.02em}.job-name{font-weight:700;font-size:1.08rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-addr{color:var(--muted);font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-meta{margin-top:auto;display:flex;justify-content:space-between;font-size:.85rem;color:var(--muted)}.kwc{font-weight:700;color:var(--ink)}.badge{font-size:.75rem;font-weight:700;padding:4px 9px;border-radius:999px;background:#eceae3;white-space:nowrap}.st-new{background:#e0e7ff;color:#3730a3}.st-inspected{background:#e0f2fe;color:#075985}.st-rfq_sent{background:#fef3c7;color:#92400e}.st-offer_received{background:#ffedd5;color:#9a3412}.st-quote_sent{background:#fae8ff;color:#86198f}.st-accepted{background:#dcfce7;color:#166534}.st-installed{background:var(--ink);color:var(--yel)}.st-lost{background:#f3f4f6;color:#6b7280}.job-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}.job-title{flex:1;min-width:160px}.job-title h1{font-size:1.35rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.save-state{font-size:.85rem;color:var(--muted);min-width:70px;text-align:right}.save-state.ok{color:var(--green)}.status-select{width:auto;min-width:170px;font-weight:600}.tabs{display:flex;gap:6px;overflow-x:auto;margin:0 -18px 16px;padding:4px 18px 8px;scrollbar-width:none;position:sticky;top:60px;z-index:10;background:var(--bg)}.tabs-wrap{position:sticky;top:60px;z-index:10;margin:0 -18px 16px;background:var(--bg)}.tabs-wrap .tabs{position:static;margin:0}.tabs-arrow{position:absolute;top:4px;bottom:8px;width:52px;display:grid;place-items:center;border:0;padding:0;color:var(--ink);cursor:pointer;z-index:2}.tabs-arrow.left{left:0;background:linear-gradient(to right,var(--bg) 55%,transparent);justify-content:start;padding-left:8px}.tabs-arrow.right{right:0;background:linear-gradient(to left,var(--bg) 55%,transparent);justify-content:end;padding-right:8px}.tabs-arrow svg{background:#fff;border:1px solid var(--line);border-radius:50%;padding:6px;width:36px;height:36px;box-shadow:0 2px 8px #11101f1f}.tabs::-webkit-scrollbar{display:none}.tab{display:flex;align-items:center;gap:8px;padding:10px 16px;min-height:50px;border-radius:12px;background:var(--card);border:1px solid var(--line);white-space:nowrap;font-weight:600}.tab-n{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:.78rem;background:#eceae3}.tab.active{background:var(--ink);color:#fff;border-color:var(--ink)}.tab.active .tab-n{background:var(--yel);color:var(--ink)}.roof-summary{display:grid;grid-template-columns:minmax(240px,1fr) 1fr;gap:20px;align-items:center}.roof-summary-svg{height:260px;background:#fbfaf6;border-radius:12px;border:1px solid var(--line);padding:8px}.facts{margin:0 0 16px;display:grid;gap:6px}.facts div{display:flex;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);padding:6px 0}.facts dt{color:var(--muted)}.facts dd{margin:0;font-weight:700}.editor{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px}.editor-main{min-width:0;display:flex;flex-direction:column;gap:10px}.toolbar{display:flex;gap:6px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:8px}.toolbar-sep{flex:1}.tool{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:70px;min-height:64px;padding:6px 8px;border-radius:12px;border:1.5px solid transparent;background:none;font-size:.78rem;font-weight:600}.tool svg{width:26px;height:26px}.tool.active{background:var(--ink);color:var(--yel)}.tool:disabled{opacity:.3}.inkbar{display:flex;align-items:center;gap:10px;padding:0 4px}.swatch{width:40px;height:40px;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1.5px var(--line)}.swatch.active{box-shadow:0 0 0 3px var(--ink)}.canvas{background:#fff;border:1px solid var(--line);border-radius:var(--radius);height:calc(100dvh - 360px);min-height:380px;padding:6px;background-image:radial-gradient(#e7e4d8 1px,transparent 1px);background-size:22px 22px}.canvas.tool-pen,.canvas.tool-dim{cursor:crosshair}.canvas.tool-eraser{cursor:cell}.canvas.tool-chimney,.canvas.tool-velux,.canvas.tool-vent{cursor:copy}.hint{margin:0;font-size:.85rem;color:var(--muted)}.editor-side{display:flex;flex-direction:column;gap:12px}.kind-picker{display:grid;grid-template-columns:1fr 1fr;gap:8px}.kind{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;border-radius:12px;border:2px solid var(--line);background:#fff;font-weight:600;font-size:.9rem;color:var(--ink)}.kind.active{border-color:var(--ink);background:var(--yel-soft)}.side-block{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px;display:flex;flex-direction:column;gap:6px}.side-block.selected{border-color:var(--blue);box-shadow:0 0 0 2px #dbeafe}.side-label{font-size:.85rem;font-weight:700;color:var(--ink-2);padding:2px 4px}.valrow{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:50px;padding:8px 12px;border-radius:10px;border:1px solid var(--line);background:#fbfaf6;text-align:left}.valrow span{color:var(--ink-2);font-size:.92rem}.valrow b{font-size:1.08rem}.valrow:active{background:var(--yel-soft)}.compass-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.cbtn{min-height:46px;border-radius:10px;border:1.5px solid var(--line);background:#fff;font-weight:700}.cbtn.active{background:var(--ink);color:var(--yel);border-color:var(--ink)}.cbtn-center{display:grid;place-items:center;color:var(--yel);font-size:1.4rem}.metrics .metric{display:flex;justify-content:space-between;padding:4px;font-size:.92rem}.metrics .metric span{color:var(--muted)}.metrics .metric.sub{font-size:.85rem;padding-left:14px}.pen-only{font-size:.9rem;padding:0 4px}.modal-back{position:fixed;inset:0;background:#11101f8c;display:grid;place-items:center;z-index:100;padding:16px}.keypad{background:#fff;border-radius:20px;padding:18px;width:min(380px,100%);box-shadow:0 20px 60px #0000004d}.keypad-title{font-weight:700;margin-bottom:10px}.keypad-display{font-size:2.1rem;font-weight:800;text-align:right;padding:10px 14px;border-radius:12px;background:var(--yel-soft);margin-bottom:12px;min-height:64px}.keypad-display.fresh{color:var(--muted)}.keypad-display.input{font-size:1.4rem;text-align:left}.keypad-display .unit{font-size:1.1rem;color:var(--muted)}.keypad-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.key{min-height:64px;border-radius:14px;border:1px solid var(--line);background:#fbfaf6;font-size:1.6rem;font-weight:700}.key:active{background:var(--yel)}.keypad-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.photo-actions{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.photo-group h3{font-size:1rem;margin:16px 0 8px}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.photo{margin:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}.photo img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block}.photo figcaption{display:flex;gap:6px;padding:6px;align-items:center}.photo-full{max-width:100%;max-height:90vh;border-radius:12px}.sup-list,.sup-pick{display:grid;gap:8px}.sup-pick{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.sup-row,.sup-option{display:flex;align-items:center;gap:12px;min-height:64px;padding:10px 14px;border-radius:12px;border:1.5px solid var(--line);background:#fff;text-align:left}.sup-option.active{border-color:var(--ink);background:var(--yel-soft)}.sup-option .tick{width:26px;height:26px;border-radius:8px;border:1.5px solid var(--line);display:grid;place-items:center;font-weight:800;flex-shrink:0;background:#fff}.sup-option.active .tick{background:var(--ink);color:var(--yel);border-color:var(--ink)}.sup-text{display:flex;flex-direction:column;min-width:0;flex:1}.sup-text small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history{list-style:none;padding:0;margin:0}.history li{display:flex;gap:14px;padding:10px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}@media(max-width:1000px){.editor{grid-template-columns:1fr}.editor-side{display:grid;grid-template-columns:1fr 1fr;align-items:start}.kind-picker{grid-column:1 / -1;grid-template-columns:repeat(4,1fr)}.canvas{height:56vh}}@media(max-width:760px){.brand-sub,.nav a span,.hide-sm{display:none}.topbar{gap:8px;padding-left:12px;padding-right:12px}.content{padding:14px 12px 40px}.tabs{margin:0 -12px 14px;padding:4px 12px 8px}.tabs-wrap{margin:0 -12px 14px}.tabs-wrap .tabs{margin:0}.roof-summary,.editor-side{grid-template-columns:1fr}.kind-picker{grid-template-columns:1fr 1fr}.tool{min-width:58px}.status-select{min-width:0;flex:1}}.side-block.selected{order:-1}@media(max-width:1000px){.side-block.selected{grid-column:1 / -1}}.card>.field+.field,.card>.field+.notice,.card>.grid+.field{margin-top:18px}@media(max-width:1000px){.canvas{height:52vh}}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:20px;background:var(--ink)}.auth-card{width:min(420px,100%);background:#fff;border-radius:20px;padding:28px;display:flex;flex-direction:column;gap:14px}.auth-logo{width:170px;border-radius:10px;align-self:center;margin-bottom:6px}.auth-form{display:flex;flex-direction:column;gap:14px}.sync-badge{display:flex;align-items:center;gap:8px;background:none;border:1px solid #45435a;color:#d8d6e4;border-radius:10px;padding:8px 12px;min-height:44px;font-size:.85rem;font-weight:600}.sync-badge .dot{width:10px;height:10px;border-radius:50%;background:#22c55e}.sync-badge.pending .dot,.sync-badge.s-syncing .dot{background:var(--yel)}.sync-badge.s-syncing .dot{animation:pulse 1s infinite}.sync-badge.s-offline .dot{background:#9ca3af}.sync-badge.s-error .dot{background:#ef4444}@keyframes pulse{50%{opacity:.3}}@media(max-width:1100px){.sync-label{display:none}.sync-badge{padding:8px 12px}}.page-help{margin:-6px 0 16px;max-width:760px}.prod-group{margin-bottom:22px}.group-title{font-size:1.05rem;margin:0 0 10px;display:flex;align-items:center;gap:8px}.group-title .count{font-size:.8rem;font-weight:700;color:var(--muted);background:#eceae3;border-radius:999px;padding:2px 9px}.prod-row{display:flex;align-items:center;gap:10px;padding:6px 10px 6px 4px;border-radius:12px;border:1.5px solid var(--line);background:#fff}.prod-row.active{border-color:var(--ink);background:var(--yel-soft)}.prod-main{flex:1;min-width:0;display:flex;align-items:center;min-height:64px;padding:6px 10px;border:0;background:none;text-align:left;border-radius:10px}.prod-main:active{background:#faf9f5}.sup-text small.sup-names{color:var(--green);font-weight:600}.equip{display:grid;gap:18px}.equip-block{display:grid;gap:10px;padding-top:14px;border-top:1px solid var(--line)}.equip-block:first-of-type{border-top:0;padding-top:0}.equip-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.equip-head h3{margin:0;font-size:1rem}.equip-options{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:8px}.equip-option{display:flex;align-items:center;gap:10px;min-height:60px;padding:8px 12px;border-radius:12px;border:1.5px solid var(--line);background:#fff;text-align:left}.equip-option.active{border-color:var(--ink);background:var(--yel-soft)}.equip-option .tick{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;font-weight:800;flex-shrink:0;background:#fff;font-size:.8rem}.equip-option.active .tick{background:var(--ink);color:var(--yel);border-color:var(--ink)}.equip-option b{display:block;font-size:.95rem}.equip-option small{color:var(--muted);font-size:.82rem}.equip-detail{display:flex;gap:12px;align-items:center;flex-wrap:wrap;font-size:.88rem;color:var(--ink-2);background:#fbfaf6;border:1px solid var(--line);border-radius:12px;padding:10px 12px}.equip-detail .specs{flex:1;min-width:220px}.equip-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 18px}.equip-summary{list-style:none;margin:0 0 4px;padding:0;display:grid;gap:6px}.equip-summary li{display:flex;gap:10px;align-items:baseline;padding:8px 12px;border-radius:10px;background:#fbfaf6;border:1px solid var(--line)}.equip-summary .k{color:var(--muted);font-size:.85rem;min-width:90px}.equip-summary .q{font-weight:800}.sup-option .sugg{color:var(--green);font-weight:600}.sup-list{grid-template-columns:minmax(0,1fr)}.prod-row{min-width:0}@media(max-width:480px){.topbar{gap:6px}.brand img{height:36px}.nav{gap:2px}.nav a{padding:10px 9px}.lang-switch button{padding:10px 8px}.sync-badge{padding:8px 9px}}.surface-bar{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;margin-bottom:12px;scrollbar-width:thin}.surface-tab{display:flex;align-items:center;gap:10px;min-height:64px;padding:6px 14px 6px 8px;border-radius:14px;border:1.5px solid var(--line);background:#fff;text-align:left;flex-shrink:0}.surface-tab svg{width:48px;height:33px}.surface-tab.active{border-color:var(--ink);background:var(--yel-soft);box-shadow:0 0 0 1px var(--ink)}.surface-tab-text{display:flex;flex-direction:column}.surface-tab-text b{font-size:.95rem;white-space:nowrap}.surface-tab-text small{color:var(--muted);font-size:.8rem}.surface-tab.add{border-style:dashed;color:var(--ink-2);font-weight:600;padding:6px 16px}.surface-tab.add svg{width:22px;height:22px}.surface-block .input{min-height:46px;font-size:.98rem}.surface-block .field{gap:4px}.info-choice{display:flex;flex-direction:column;gap:6px;padding:4px 0}.chip.sm{min-height:40px;padding:6px 12px;font-size:.9rem}.surface-actions{display:flex;gap:8px;justify-content:space-between}.ellipsis{max-width:60%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.type-picker{background:#fff;border-radius:20px;padding:18px;width:min(640px,100%);box-shadow:0 20px 60px #0000004d;display:flex;flex-direction:column;gap:14px;max-height:90vh;overflow-y:auto}.type-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}.type-option{display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:14px;border-radius:14px;border:1.5px solid var(--line);background:#fbfaf6;text-align:left;min-height:120px}.type-option:active,.type-option:hover{border-color:var(--ink);background:var(--yel-soft)}.type-option small{color:var(--muted);font-size:.85rem}.surface-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;margin-bottom:14px}.surface-card{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fbfaf6}.surface-card .roof-summary-svg{height:170px}.surface-card .facts{margin:0}.surface-total{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.link-btn{background:none;border:0;padding:0;color:var(--blue);text-decoration:underline;font-size:.8rem;cursor:pointer;align-self:flex-start}.rooms{display:grid;gap:12px;margin-bottom:10px}.room-card{border:1.5px solid var(--line);border-radius:14px;padding:12px 14px 16px;background:#fbfaf6}.room-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.small{font-size:.82rem}.mod-dot{width:11px;height:11px;border-radius:50%;border:1.5px solid var(--ink);display:inline-block;flex-shrink:0}.client-card{display:flex;flex-direction:column;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;min-height:120px}.client-card:active{background:#faf9f5}.client-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.proj-chips{display:flex;flex-direction:column;gap:6px;margin-top:auto;padding-top:6px}.proj-chip{display:flex;align-items:center;gap:8px;font-size:.9rem;font-weight:600;flex-wrap:wrap}.proj-chip .badge{margin-left:auto}.client-strip{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.client-strip .facts-inline{color:var(--ink-2);font-size:.95rem;flex:1;min-width:220px}.proj-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.proj-card{display:flex;gap:14px;align-items:center;padding:12px 14px;border-radius:14px;border:1.5px solid var(--line);background:#fff}.proj-card:active{background:#faf9f5}.proj-art{width:84px;height:64px;border-radius:12px;display:grid;place-items:center;flex-shrink:0}.proj-art svg{width:76px;height:52px}.proj-info{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1}.proj-info b{font-size:1.02rem}.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.module-tile{display:flex;flex-direction:column;padding:0;border-radius:18px;overflow:hidden;background:#fff;border:2.5px solid var(--line);text-align:left;transition:transform .15s ease,box-shadow .15s ease}.module-tile:hover{transform:translateY(-2px);box-shadow:0 10px 28px #11101f1a}.module-tile.active{border-color:var(--ink);box-shadow:0 8px 24px #11101f1f}.module-tile .art{position:relative;height:150px;display:flex;align-items:center;justify-content:center}.module-tile .check{position:absolute;top:12px;right:12px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#ffffffd9;border:2px solid #d4d1c6;font-weight:800}.module-tile.active .check{background:var(--yel);border-color:var(--ink)}.module-tile .txt{display:flex;flex-direction:column;gap:6px;padding:14px 16px 16px}.module-tile .txt b{font-size:1.08rem;line-height:1.25}.module-tile .txt small{color:var(--ink-2);font-size:.88rem;line-height:1.4}.picker-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px}.job-crumb{display:flex;align-items:center;gap:8px;font-size:.85rem;font-weight:600;color:var(--muted)}.job-crumb a{color:var(--ink-2);text-decoration:underline}.tab.mod-tab .tab-n{background:var(--mod-tint, #eceae3)}.eq-line{align-items:center!important}.qty-input{width:70px;min-height:42px;text-align:center;font-weight:700}.eq-name{flex:1;min-width:0;font-weight:600}.site-bar{display:flex;flex-direction:column;gap:8px}.site-bar .chip{text-decoration:none}.chip.add-chip{border-style:dashed;color:var(--ink-2)}.chip.add-chip svg{width:18px;height:18px}.title-link{margin-left:auto}.iso-editor{grid-template-columns:minmax(0,1fr)}.iso-editor .inkbar{flex-wrap:wrap;min-height:44px}.iso-canvas{height:calc(100dvh - 400px);min-height:420px}.iso-foot{display:flex;align-items:center;gap:16px;flex-wrap:wrap;justify-content:space-between}.surface-bar{align-items:center}:root{--ink: #17171c;--ink-2: #3c3a42;--muted: #5f5d66;--line: #e6e3dc;--line-2: #d8d5cd;--bg: #f4f2ee;--soft: #faf9f6;--yel-soft: #fdf3cf;--orange: #e07a1f;--radius: 10px}h1{font-weight:700}.topbar{background:#fff;color:var(--ink);border-bottom:1px solid var(--line);padding-top:calc(env(safe-area-inset-top) + 6px);padding-bottom:6px}.brand img{height:40px}.brand-sub{color:var(--muted)}.nav a{color:var(--muted);border-radius:0;min-height:52px;padding:10px 14px}.nav a.active{background:none;color:var(--ink);box-shadow:inset 0 -3px 0 var(--yel)}.lang-switch{border-color:var(--line);border-radius:8px}.lang-switch button{color:var(--muted);min-height:40px}.lang-switch button.active{background:var(--ink);color:#fff}.sync-badge{border-color:var(--line);color:var(--ink-2);border-radius:8px;min-height:40px}.job-mode .nav,.job-mode .brand-sub{display:none}.job-mode .topbar .sync-badge{margin-left:auto}.btn{border-radius:8px;min-height:44px;font-weight:600}.btn.lg{min-height:48px}.btn.primary{border-color:transparent}.btn.ghost{border-color:var(--line-2)}.btn.dashed{background:transparent;border:1px dashed #c8c4bb;color:var(--ink-2);font-weight:500}.icon-btn{width:44px;min-width:44px}.input{border-radius:8px;border-width:1px;border-color:var(--line-2);min-height:46px;font-size:1rem}.input:focus{box-shadow:0 0 0 3px #f4e7b8}.card{border-radius:var(--radius)}.card-title{font-size:1.08rem;font-weight:600}.card-title:before{display:none}.field-label{font-weight:500;color:var(--ink-2)}.computed{border-radius:8px;background:var(--soft);border:1px solid var(--line);font-weight:600}.chip{border-radius:8px;min-height:44px;border-width:1px;border-color:var(--line-2)}.chip .tick{border-radius:4px}.empty{border-radius:var(--radius)}.notice{border-radius:8px}.warn{display:flex;gap:10px;align-items:flex-start;background:#fff6dc;color:#5c4400;border-radius:8px;padding:10px 14px;line-height:1.45}.warn svg{width:18px;height:18px;margin-top:1px;color:#8a6500}.badge{border-radius:6px;font-weight:600;padding:4px 9px}.st-new{background:#efede8;color:#3c3a42}.st-inspected{background:#e5ecfb;color:#24459c}.st-rfq_sent{background:#fbefcc;color:#6b4e00}.st-offer_received{background:#e2f3f5;color:#0d5b66}.st-quote_sent{background:#efede8;color:#3c3a42}.st-accepted{background:#e3f2e7;color:#1f6a3a}.st-installed{background:#d5ebdc;color:#134d29}.st-lost{background:#f1f0ee;color:#77757d}.mod-dot{width:10px;height:10px;border:0}.mod-dot.lg{width:12px;height:12px}.tool{min-height:56px;min-width:64px;border-radius:8px;border-width:1px;font-weight:500}.tool svg{width:22px;height:22px}.tool.active{background:var(--ink);color:#fff}.tool-divider{width:1px;align-self:stretch;margin:8px 6px;background:var(--line)}.toolbar{border-radius:var(--radius);align-items:center}.swatch{box-shadow:0 0 0 1px var(--line-2)}.swatch.sm{width:30px;height:30px;border-width:2px;align-self:center}.swatch.active{box-shadow:0 0 0 2px var(--ink)}.kind,.valrow,.cbtn,.sup-row,.sup-option,.equip-option,.prod-row,.surface-tab,.type-option,.room-card,.surface-card{border-radius:8px;border-width:1px}.keypad,.type-picker{border-radius:14px}.key{border-radius:10px}.canvas{border-radius:var(--radius)}.proj-head{position:sticky;top:calc(env(safe-area-inset-top) + 53px);z-index:12;margin:-20px -18px 18px;padding:0 18px;background:#fff;border-bottom:1px solid var(--line)}.proj-head-row{display:flex;align-items:center;gap:12px;min-height:64px;flex-wrap:wrap;padding:6px 0}.proj-head-row h1{font-size:1.22rem;white-space:nowrap}.proj-sub{color:var(--muted);font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;flex:0 1 auto}.proj-head .status-select{min-width:150px;min-height:40px;font-size:.92rem;font-weight:500}.proj-head .tabs-wrap{position:relative;top:auto;margin:0 -18px;background:transparent}.proj-head .tabs{margin:0;padding:0 18px;gap:2px;background:transparent;position:static}.proj-head .tabs-arrow{top:0;bottom:0}.proj-head .tabs-arrow.left{background:linear-gradient(to right,#fff 55%,transparent)}.proj-head .tabs-arrow.right{background:linear-gradient(to left,#fff 55%,transparent)}.tab{background:none;border:0;border-radius:0;min-height:48px;padding:0 16px;font-weight:500;color:var(--muted)}.tab.active{background:none;color:var(--ink);font-weight:600;box-shadow:inset 0 -3px 0 var(--yel)}.tab-badge{font-size:.75rem;font-weight:600;color:var(--muted);background:#efede8;border-radius:10px;padding:2px 8px}.tab-badge.ok{color:#1f6a3a;background:#e3f2e7}.tab-ok{color:#2e7d4f;font-weight:700}.tab-warn{width:7px;height:7px;border-radius:50%;background:var(--orange)}.step-nav{margin-top:0}.visit{display:grid;grid-template-columns:200px minmax(0,1fr);gap:20px;align-items:start}.visit-nav{display:flex;flex-direction:column;gap:2px;position:sticky;top:200px}.visit-sec{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 10px;border-radius:8px;border:1px solid transparent;background:none;text-align:left;font-size:.92rem;color:var(--ink-2)}.visit-sec.active{background:#fff;border-color:var(--line);font-weight:600;color:var(--ink)}.sec-mark{width:16px;color:#9a979f;text-align:center}.sec-mark.ok{color:#2e7d4f}.sec-mark.cur{color:#c99a00}.sec-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.visit-progress{height:5px;margin:12px 10px 0;background:var(--line);border-radius:3px;overflow:hidden}.visit-progress div{height:100%;background:var(--ink)}.visit-card{margin-bottom:0}.visit-head{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}.visit-head .card-title{margin:0}.visit-actions{border-top:1px solid #efede8;padding-top:16px;margin-top:22px}.site-ref{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;background:var(--soft);border:1px solid var(--line);border-radius:8px;padding:10px 14px;font-size:.92rem;color:var(--ink-2)}.surfaces-mini .surface-list{margin-bottom:6px}.missing{padding:0;overflow:hidden}.missing-head{display:flex;align-items:baseline;gap:12px;padding:16px 20px 12px}.missing-head .card-title{margin:0}.missing-row{display:flex;align-items:center;gap:12px;min-height:52px;padding:0 20px;border-top:1px solid #efede8;font-size:.96rem}.missing-row:active{background:var(--soft)}.missing-row svg{width:18px;height:18px;color:#9a979f}.dot-warn{width:8px;height:8px;border-radius:50%;background:var(--orange);flex-shrink:0}.grow{flex:1;min-width:0}.finish-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.finish-grid>.card{margin-bottom:0}.inline-choice{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.inline-choice .chip{min-width:60px;justify-content:center}.site-card{padding:0;overflow:hidden}.site-card-head{display:flex;align-items:center;gap:16px;padding:16px 20px;border-bottom:1px solid var(--line)}.site-card-title{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.site-card-title b{font-size:1.08rem}.eyebrow{font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.proj-rows{display:flex;flex-direction:column}.proj-row{display:flex;align-items:center;gap:14px;min-height:68px;padding:0 20px;border-bottom:1px solid #efede8}.proj-row:active{background:var(--soft)}.proj-row-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.proj-row-text b{font-size:1rem}.proj-row-text .muted{font-size:.88rem}.proj-row>svg{width:18px;height:18px;color:#9a979f}.site-card .empty.small{margin:14px 20px 0}.new-proj{padding:14px 20px 18px;display:flex;flex-direction:column;gap:10px;background:var(--soft)}.new-proj .btn{align-self:flex-start}.new-proj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}.new-proj-btn{display:flex;align-items:center;gap:10px;min-height:50px;padding:0 14px;border-radius:8px;border:1px solid var(--line-2);background:#fff;font-weight:500;text-align:left}.new-proj-btn:active{background:var(--yel-soft)}.client-card,.proj-card{border-radius:var(--radius)}.sheet-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px}.sheet-tab{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--muted);font-weight:500}.sheet-tab.active{border-color:var(--ink);background:#fff;color:var(--ink);font-weight:600}.sheet-tab.add{border:1px dashed #c8c4bb;color:var(--ink-2)}.sheet-tab svg{width:16px;height:16px}.eq-cat-line{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:12px;font-size:.92rem}.eq-cat-line .link-btn{font-size:.9rem;align-self:center}@media(max-width:900px){.visit{grid-template-columns:1fr}.visit-nav{position:static;flex-direction:row;overflow-x:auto}.visit-sec{flex-shrink:0}.visit-progress{display:none}.finish-grid{grid-template-columns:1fr}}@media(max-width:760px){.proj-head{margin:-14px -12px 14px;padding:0 12px}.proj-head .tabs-wrap{margin:0 -12px}.proj-head .tabs{padding:0 12px}.proj-sub{display:none}}.job-mode .lang-switch{margin-left:auto}.iso-optbar{min-height:48px}.req-block{gap:12px}.req-list{display:flex;flex-wrap:wrap;gap:8px}.req-item{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border-radius:8px;background:#fff;border:1px solid var(--line-2);font-weight:500;font-size:.92rem}.req-actions{display:flex;gap:8px;flex-wrap:wrap}.team-list{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}.team-row{display:flex;align-items:center;gap:12px;padding:10px 14px;min-height:56px}.team-row+.team-row{border-top:1px solid var(--line)}.team-who{flex:1;min-width:0;overflow-wrap:anywhere}.team-role{color:var(--muted, #666);font-weight:600}.team-select{width:auto;min-width:160px}.team-invite{margin-top:8px}.team-invite-title{font-size:1rem;margin:6px 0 10px}.invite-link{font-family:ui-monospace,monospace;font-size:.8rem;word-break:break-all;margin:8px 0;-webkit-user-select:all;user-select:all}.logo-preview{display:block;max-width:240px;max-height:80px;object-fit:contain;margin:6px 0;background:#fff;border:1px solid var(--line);border-radius:8px;padding:8px}@media(max-width:640px){.team-row{flex-wrap:wrap}.team-select{min-width:0;flex:1}}:root{--ink: #1a1d1c;--yel: #2b59ff;--yel-soft: #e9eeff;--bg: #f6f5f1}.btn.primary{background:var(--yel);color:#fff}.btn.primary:active{background:#1f47d6}.btn.primary:disabled{background:#9fb3ff;color:#fff}.st-installed,.tool.active,.cbtn.active,.equip-option.active .tick,.sup-option.active .tick{color:#fff}.cbtn-center{color:var(--yel)}.tab.active .tab-n,.chip.active .tick,.module-tile.active .check,.key:active{color:#fff}.brand img{max-width:200px;object-fit:contain}.brand img.brand-montago{height:30px}.auth-logo{width:190px;border-radius:0}
