:root{--brand-dark:#1a130a;--brand-dark-2:#2a2014;--brand-yellow:#ffd400;--bg:#f6f4ef;--card:#fff;--text:#1a130a;--muted:#6f675c;--line:#e5e0d6;--good:#1f8a4c;--warn:#b7791f;--bad:#c0392b;--radius:12px;color:var(--text);background:var(--bg);font-family:Poppins,system-ui,sans-serif}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0}a{color:inherit}h1{margin:0 0 4px;font-size:24px}h2{margin:0 0 12px;font-size:18px}h3{margin:0 0 8px;font-size:15px}.muted{color:var(--muted);font-size:13px}.layout{grid-template-columns:232px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--brand-dark);color:#fff;flex-direction:column;gap:4px;padding:20px 14px;display:flex}.logo{align-items:center;gap:10px;margin:0 6px 22px;font-size:18px;font-weight:700;display:flex}.logo-mark{width:32px;height:32px;color:var(--brand-dark);background:#fff;border-radius:8px;place-items:center;font-size:18px;display:grid}.logo small{color:var(--brand-yellow);letter-spacing:.12em;text-transform:uppercase;font-size:11px;font-weight:500;display:block}.nav a{color:#e8e2d6;border-radius:8px;padding:10px 12px;font-size:14px;text-decoration:none;display:block}.nav a.active,.nav a:hover{background:var(--brand-dark-2);color:var(--brand-yellow)}.sidebar-foot{color:#b9b0a2;margin-top:auto;padding:0 6px;font-size:12px}.sidebar-foot button{margin-top:8px}.main{width:100%;min-width:0;max-width:1200px;padding:28px 32px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px}.grid{gap:16px;display:grid}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.stat .label{color:var(--muted);font-size:12px}.stat .value{margin-top:4px;font-size:22px;font-weight:600}button,.btn{font:inherit;border:1px solid var(--line);cursor:pointer;color:var(--text);background:#fff;border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-size:14px;text-decoration:none;display:inline-flex}button.primary,.btn.primary{background:var(--brand-yellow);border-color:var(--brand-yellow);font-weight:600}button.dark{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff}button.ghost{color:#e8e2d6;background:0 0;border-color:#4a3f30}button.small{padding:4px 10px;font-size:12px}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{font:inherit;border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;padding:9px 11px;font-size:14px}label{color:var(--muted);margin-bottom:4px;font-size:12px;display:block}.field{margin-bottom:12px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px;display:grid}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 10px;font-size:12px;font-weight:500}td{border-bottom:1px solid var(--line);vertical-align:middle;padding:10px}tr.clickable:hover td{cursor:pointer;background:#faf8f3}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}tfoot td{border-bottom:none;font-weight:600}.badge{white-space:nowrap;background:#eee9df;border-radius:999px;padding:2px 10px;font-size:12px;font-weight:500;display:inline-block}.badge.ACTIVE{background:#fff3b0}.badge.HANDED_OVER,.badge.WARRANTY{color:var(--good);background:#dcefe3}.badge.CANCELLED{color:var(--bad);background:#f6dcd8}.badge.TODO{background:#eee9df}.badge.DONE{background:#fff3b0}.badge.APPROVED{color:var(--good);background:#dcefe3}.badge.REJECTED{color:var(--bad);background:#f6dcd8}.badge.REQUESTED{background:#fff3b0}.progress{background:#eee9df;border-radius:999px;min-width:80px;height:8px;overflow:hidden}.progress>div{background:var(--brand-dark);height:100%}.tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:0 4px;margin-bottom:18px;display:flex}.tabs button{color:var(--muted);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:10px 14px}.tabs button.active{border-bottom-color:var(--brand-yellow);color:var(--text);font-weight:600}.alert{border-radius:8px;margin-bottom:12px;padding:10px 14px;font-size:14px}.alert.error{color:#7b241c;background:#f6dcd8}.alert.ok{color:#145a32;background:#dcefe3}.task-row{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:8px 12px;min-width:0;padding:10px 0;display:flex}.task-row:last-child{border-bottom:none}.task-row .name{overflow-wrap:anywhere;flex:180px;min-width:0}.phase-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;margin-bottom:6px;display:flex}.phase-head h3{overflow-wrap:anywhere;min-width:0;margin:0}.phase-head .phase-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.phase-head .phase-progress{width:180px;max-width:100%}.profit-cols>.card{min-width:0;overflow-x:auto}.tag{color:var(--muted);border:1px solid var(--line);border-radius:6px;margin-left:6px;padding:1px 6px;font-size:11px}.login{background:var(--brand-dark);place-items:center;min-height:100vh;padding:16px;display:grid}.login .card{width:100%;max-width:380px}.login .logo{color:var(--brand-dark)}.demo-users button{margin:0 6px 6px 0}.modal-back{z-index:10;background:#1a130a80;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{border-radius:var(--radius);background:#fff;width:100%;max-width:640px;max-height:90vh;padding:22px;overflow:auto}.mobile{max-width:520px;margin:0 auto;padding:16px}.mobile-head{background:var(--brand-dark);color:#fff;justify-content:space-between;align-items:center;padding:16px;display:flex}.big-task{border:1px solid var(--line);border-radius:var(--radius);background:#fff;align-items:center;gap:12px;margin-bottom:10px;padding:14px;display:flex}.big-task .name{flex:1;font-size:15px}.big-task button{padding:12px 16px;font-size:15px}@media (width<=860px){.layout{grid-template-columns:1fr}.sidebar{flex-direction:row;align-items:center;padding:10px 12px;overflow-x:auto}.logo{margin:0 12px 0 0}.nav{display:flex}.sidebar-foot{display:none}.main{padding:18px 16px}.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2,.form-grid{grid-template-columns:1fr}.hide-sm{display:none}.show-sm{display:inline-flex!important}}.show-sm{display:none}.nav a[aria-disabled]{opacity:.45;cursor:default}.nav a[aria-disabled]:hover{color:#e8e2d6;background:0 0}.worker{min-height:100vh;padding-bottom:calc(84px + env(safe-area-inset-bottom))}.worker .mobile-head{z-index:5;position:sticky;top:0}.sync-bar{color:#145a32;background:#dcefe3;justify-content:space-between;align-items:center;gap:8px;padding:8px 16px;font-size:13px;display:flex}.sync-bar.off{color:#6b4e00;background:#fff3b0}.sync-bar .dot{background:currentColor;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.sync-bar button{margin-left:6px}.muted-light{opacity:.8}button.huge,.huge{border-radius:14px;justify-content:center;width:100%;margin:12px 0;padding:20px;font-size:19px;font-weight:600}button.huge.dark{background:var(--brand-dark);border-color:var(--brand-dark);color:#fff}.big-select{margin-bottom:12px;padding:13px;font-size:16px}.on-site{border-left:6px solid var(--good)}.alert.warn{color:#5a4100;background:#fff3b0}.bottom-nav{background:var(--brand-dark);padding:6px 6px calc(6px + env(safe-area-inset-bottom));z-index:6;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav button{color:#b9b0a2;background:0 0;border:none;flex-direction:column;gap:2px;padding:8px 4px;font-size:13px}.bottom-nav button span{font-size:22px}.bottom-nav button.active{color:var(--brand-yellow);font-weight:600}.task-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.worker button.small,.worker .btn.small{min-width:40px;min-height:40px}.worker-head-actions{align-items:center;gap:18px;display:flex}.worker .logout-btn{min-height:44px;padding:10px 16px;font-size:15px}.sync-bar.has-failed{color:#922b21;background:#fdecea}.failed-row{justify-content:space-between;align-items:center;gap:8px;margin-top:6px;display:flex}.failed-row .grow,.ff-draft-row .grow{flex:1;min-width:0}.failed-actions{flex-shrink:0;gap:6px;display:flex}.big-task.returned{border-color:var(--warn);background:#fff8e1}.task-returned{color:#8a5a00;margin-top:2px;font-size:13px;font-weight:600}.ff-drafts{gap:6px;display:grid}.ff-draft-row{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--line);color:var(--text);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:6px;margin:0;padding:8px 12px;font-size:14px;display:inline-flex}.chip.on{border-color:var(--brand-yellow);background:#fff3b0}.chip input{width:auto;margin:0}.sheet-back{z-index:20;background:#1a130a8c;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--bg);width:100%;max-width:560px;padding:18px 16px calc(18px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0;max-height:92vh;overflow:auto}.thumbs{grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;display:grid}.thumbs img{aspect-ratio:1;object-fit:cover;border:1px solid var(--line);background:#eee9df;border-radius:8px;width:100%}.gallery{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;display:grid}.gallery figure{margin:0}.gallery img{aspect-ratio:4/3;object-fit:cover;border:1px solid var(--line);background:#eee9df;border-radius:8px;width:100%}.gallery figcaption{color:var(--muted);margin-top:4px;font-size:12px}.flag{color:var(--bad);font-weight:500}.topbar{justify-content:flex-end;margin:-10px 0 12px;display:flex}.timer{border:1px solid var(--line);background:#fff;border-radius:999px;align-items:center;gap:10px;padding:4px 6px 4px 14px;display:flex;position:relative}.timer>button.primary{margin-right:-2px}.timer-dot{background:var(--good);border-radius:50%;width:10px;height:10px;animation:1.6s infinite pulse}.timer-dot.long{background:var(--bad)}@keyframes pulse{50%{opacity:.35}}.timer-text{color:var(--muted);flex-direction:column;font-size:12px;line-height:1.15;display:flex}.timer-text b{color:var(--text);font-variant-numeric:tabular-nums;font-size:15px}.timer-err{color:var(--bad);font-size:12px}.timer-pop{border:1px solid var(--line);border-radius:var(--radius);z-index:15;background:#fff;width:300px;padding:14px;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 10px 30px #1a130a26}.quick-grid{grid-template-columns:150px 90px minmax(180px,2fr) minmax(150px,1fr) minmax(120px,1fr) auto;gap:10px;display:grid}.day-row td{background:#faf8f3}tr.selected td{background:#fffbe0}button.link{text-underline-offset:3px;background:0 0;border:none;padding:0;font-weight:500;text-decoration:underline}.split-bar{border-radius:8px;height:30px;margin-bottom:16px;font-size:12px;font-weight:600;display:flex;overflow:hidden}.split-bar>div{white-space:nowrap;align-items:center;padding:0 10px;display:flex;overflow:hidden}.split-bar>div:first-child{background:var(--brand-yellow)}.split-bar>div:last-child{background:#e5e0d6;flex:1}@media (width<=860px){.quick-grid{grid-template-columns:1fr 1fr}.topbar{margin:0 0 12px}}.org-node{border:1px solid var(--line);background:#fff;border-radius:10px;align-items:center;gap:12px;margin-bottom:8px;padding:10px 12px;display:flex;position:relative}.org-node[style*=margin-left]:not([style*="margin-left: 0"]):before{content:"";border-top:2px solid var(--line);width:12px;position:absolute;top:50%;left:-16px}.company-switch{background:var(--brand-dark-2);color:#e8e2d6;border-color:#4a3f30;margin-top:4px;padding:6px 8px;font-size:12px}label.check{color:var(--text);align-items:flex-start;gap:8px;margin:4px 0 0;font-size:13px;display:flex}label.check input{width:auto;margin-top:3px}.login .card h2{margin-top:4px}.sidebar-foot .modal{color:var(--text)}.alert.info{color:#2d3a4f;background:#eef1f6}.meter{align-items:center;gap:8px;display:flex}.meter-track{background:#eee9df;border-radius:4px;flex:1;min-width:70px;height:8px;position:relative;overflow:visible}.meter-fill{border-radius:4px;height:100%}.meter-fill.ok{background:var(--good)}.meter-fill.warn{background:var(--warn)}.meter-fill.over{background:var(--bad)}.meter-mark{background:var(--muted);opacity:.5;width:2px;position:absolute;top:-3px;bottom:-3px}.meter-label{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:12px;font-weight:600}.meter-label.ok{color:var(--good)}.meter-label.warn{color:var(--warn)}.meter-label.over{color:var(--bad)}.alert-row{border-bottom:1px solid var(--line);align-items:center;gap:10px;padding:6px 0;font-size:14px;display:flex}.alert-row:last-child{border-bottom:none}:is(.modal:has(.wide-modal),.modal:has(table.lines)){max-width:860px}table.lines td{padding:4px}table.lines input{padding:7px 8px}.delivery-body{align-items:flex-start;gap:16px;margin-top:12px;display:flex;overflow-x:auto}.note-thumb{border:1px solid var(--line);background:#faf8f3;border-radius:8px;flex:0 0 120px;place-items:center;height:150px;text-decoration:none;display:grid;overflow:hidden}.note-thumb img{object-fit:cover;width:100%;height:100%}@media (width<=860px){.delivery-body{flex-direction:column}.note-thumb{flex-basis:auto;width:100%}}.countdown{color:var(--good);font-variant-numeric:tabular-nums;font-size:12px;font-weight:600}.countdown.warn{color:var(--warn)}.countdown.over{color:var(--bad)}.meter-label.muted{color:var(--muted)}@media (width<=860px){.grid-2[style*="2fr"]{grid-template-columns:1fr!important}}.diary{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:16px;display:grid}.diary-days{max-height:calc(100vh - 40px);position:sticky;top:12px;overflow:auto}.diary-day{text-align:left;background:0 0;border:none;border-radius:8px;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 10px;display:flex}.diary-day:hover{background:#faf8f3}.diary-day.active{background:#fff3b0}.diary-day span:first-child{text-transform:capitalize;font-weight:500}.diary-facts{background:#faf8f3;border-radius:10px;grid-template-columns:1fr 1fr;gap:16px;margin:16px 0;padding:14px;display:grid}.addendum{border-left:3px solid var(--brand-yellow);background:#fffdf3;margin-bottom:8px;padding:6px 10px}@media (width<=860px){.diary{grid-template-columns:1fr}.diary-days{max-height:none;position:static}.diary-facts{grid-template-columns:1fr}}.sigpad{border:1px dashed var(--muted);background:#fff;border-radius:10px;position:relative}.sigpad-head{color:var(--muted);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:6px 10px;font-size:12px;display:flex}.sigpad canvas{touch-action:none;cursor:crosshair;width:100%;height:180px;display:block}.sigpad-hint{text-align:center;color:#c9c2b5;pointer-events:none;font-size:15px;position:absolute;top:50%;left:0;right:0}.sig-list{flex-wrap:wrap;gap:12px;margin-top:10px;display:flex}.sig-item{border:1px solid var(--line);background:#fff;border-radius:8px;min-width:200px;margin:0;padding:8px 10px}.sig-item img{object-fit:contain;max-width:260px;height:56px;margin-bottom:6px;display:block}.sig-item figcaption{font-size:13px}.gantt-scroll{border:1px solid var(--line);border-radius:8px;overflow-x:auto}.gantt{font-size:13px;position:relative}.gantt-head{border-bottom:1px solid var(--line);background:var(--bg);height:26px;display:flex;position:sticky;top:0}.gantt-row{border-bottom:1px solid var(--line);height:38px;display:flex}.gantt-row.job{background:#fbfaf7}.gantt-row.sub .gantt-name{color:var(--muted);padding-left:28px}.gantt-name{white-space:nowrap;text-overflow:ellipsis;background:inherit;background-color:var(--card);z-index:2;border-right:1px solid var(--line);flex:none;width:220px;padding:3px 10px;line-height:1.25;position:sticky;left:0;overflow:hidden}.gantt-row.job .gantt-name{background-color:#fbfaf7}.gantt-name .muted{text-overflow:ellipsis;font-size:11px;overflow:hidden}.gantt-track{flex:none;position:relative}.gantt-week{color:var(--muted);border-left:1px solid var(--line);padding-left:3px;font-size:11px;position:absolute;top:6px}.gantt-body{position:relative}.gantt-grid{background:var(--line);opacity:.6;pointer-events:none;width:1px;position:absolute;top:0}.gantt-today{background:var(--bad);opacity:.55;z-index:1;pointer-events:none;width:2px;position:absolute;top:0}.gantt-bar{background:#e9e4d8;border:1px solid #cfc7b6;border-radius:5px;height:20px;position:absolute;top:9px;overflow:hidden}.gantt-bar .gantt-fill{opacity:.85;background:#1f2a44;height:100%}.gantt-bar.ok .gantt-fill{background:#2e7d4f}.gantt-bar.warn{border-color:var(--warn)}.gantt-bar.warn .gantt-fill{background:var(--warn)}.gantt-bar.over{border-color:var(--bad);background:#f6dcd8}.gantt-bar.over .gantt-fill{background:var(--bad)}.gantt-label{color:#fff;text-shadow:0 0 2px #000000b3,0 0 1px #000000e6;font-size:11px;font-weight:600;position:absolute;top:2px;left:6px}.gantt-forecast{border-top:2px dashed var(--warn);height:2px;position:absolute;top:18px}.gantt-ms{color:#1f2a44;white-space:nowrap;z-index:1;font-size:14px;position:absolute;top:9px;transform:translate(-50%)}.gantt-ms em{color:var(--muted);margin-left:3px;font-size:11px;font-style:normal}.gantt-ms.done{color:#2e7d4f}.gantt-ms.late{color:var(--bad)}.gantt-none{color:var(--muted);font-size:12px;position:absolute;top:10px;left:8px}.gantt-legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:12px;font-size:12px;display:flex}.gantt-legend .lg{vertical-align:middle;border-radius:2px;width:14px;height:8px;margin-right:3px;display:inline-block}.lg.plan{background:#e9e4d8;border:1px solid #cfc7b6}.lg.done{background:#1f2a44}.lg.fc{border-top:2px dashed var(--warn);height:0!important}.lg.today{background:var(--bad);width:2px!important;height:12px!important}button.link{color:var(--text);cursor:pointer;font:inherit;background:0 0;border:0;padding:0}button.rec{background:var(--bad);color:#fff;border-color:var(--bad)}.drawing-tools{flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:8px;font-size:13px;display:flex}.drawing-scroll{border:1px solid var(--line);background:#fff;border-radius:8px;max-height:75vh;overflow:auto}.drawing-sheet{min-width:100%;line-height:0;display:inline-block;position:relative}.drawing-sheet img{-webkit-user-select:none;user-select:none;width:100%;display:block}.drawing-sheet.placing{cursor:crosshair}.pin{color:#fff;background:var(--bad);cursor:pointer;border:2px solid #fff;border-radius:13px 13px 13px 2px;justify-content:center;align-items:center;min-width:26px;height:26px;padding:0 5px;font-size:12px;font-weight:700;line-height:22px;display:inline-flex;position:absolute;transform:translate(-50%,-100%);box-shadow:0 1px 4px #00000059}.pin.fixed{background:var(--warn)}.pin.done{background:#2e7d4f}.pin.rejected{background:#8a8378}.pin:focus-visible{outline:3px solid var(--brand-yellow,#ffd400)}.pin-list{margin:12px 0 0;padding-left:22px;font-size:14px}.pin-list li{margin-bottom:4px}.kanban{grid-template-columns:repeat(4,minmax(220px,1fr));gap:12px;padding-bottom:4px;display:grid;overflow-x:auto}.kanban-col{background:#efebe2;border-radius:10px;min-height:120px;padding:8px}.kanban-head{justify-content:space-between;gap:6px;padding:4px 4px 8px;font-size:13px;display:flex}.kanban-card{text-align:left;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:8px;width:100%;margin-bottom:8px;padding:10px;font-size:13px;line-height:1.35;display:block}.kanban-card:hover{border-color:var(--muted)}.kanban-card b{font-size:14px}@media (width<=900px){.kanban{grid-template-columns:repeat(4,240px)}}.sub-portal{background:var(--bg);min-height:100vh}.sub-portal .mobile-head{z-index:5;position:sticky;top:0}.sub-body{max-width:1100px;margin:0 auto;padding:16px}.comments{flex-direction:column;gap:10px;max-height:60vh;display:flex;overflow-y:auto}.comment{border:1px solid var(--line);background:#fff;border-radius:10px;max-width:760px;padding:10px 12px}.comment.mine{background:#fffbe6;align-self:flex-end}.comment.investor{border-left:4px solid var(--warn)}.comment-head{margin-bottom:4px;font-size:13px}.tag.warn{color:#5a4100;background:#fff3b0;border-color:#f0d36b}.seg{border:1px solid var(--line);border-radius:8px;display:inline-flex;overflow:hidden}.seg button{border:0;border-radius:0;padding:6px 12px;font-size:13px}.seg button.active{background:var(--brand-dark,#1a130a);color:#fff}.push-toggle{border-top:1px solid var(--line);margin-top:8px;padding:8px 2px 2px;font-size:13px}.form-fill{gap:10px;display:grid}.worker .form-fill{padding-bottom:24px}.ff-heading{border-bottom:2px solid var(--brand-yellow,#ffd400);margin:10px 0 0;padding-bottom:4px;font-size:15px}.ff-item{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px}.ff-item.bad{border-color:var(--bad);background:#fdf2f0}.ff-item.good{border-color:#b9dcc6}.ff-label{margin-bottom:8px;font-size:14px}.ff-check{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.ff-check button{justify-content:center;padding:10px 6px;font-size:14px}.ff-check button.on.OK{color:#fff;background:#2e7d4f;border-color:#2e7d4f}.ff-check button.on.NOK{background:var(--bad);color:#fff;border-color:var(--bad)}.ff-check button.on.NA{color:#fff;background:#6f675c;border-color:#6f675c}.ff-note{margin-top:8px}.ff-defect{gap:6px;display:grid}.ff-defect .ff-photo-btn{justify-self:start}.worker .drawing-tools button{min-width:40px;min-height:40px;font-size:18px}.markup-layer{pointer-events:none;position:absolute;inset:0;overflow:visible}.markup-layer.drawing{pointer-events:auto;cursor:crosshair;touch-action:none;z-index:3}.markup-tools{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:8px;display:flex}.markup-tools button.active{background:var(--brand-dark);color:var(--brand-yellow);border-color:var(--brand-dark)}.markup-colors{gap:4px;margin:0 6px;display:inline-flex}.swatch{width:26px;min-width:26px;height:26px;box-shadow:0 0 0 1px var(--line);border:2px solid #fff;border-radius:50%;padding:0}.swatch.on{box-shadow:0 0 0 2px var(--brand-dark)}.markup-list{margin:10px 0 0;padding:0;font-size:14px;list-style:none}.markup-list li{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:4px 0;display:flex}.markup-list li .grow{flex:1}.worker .markup-tools button{min-width:44px;min-height:44px}.worker .swatch{width:44px;height:44px}.worker .markup-colors{gap:6px}.worker .markup-list li{min-height:44px}.worker .markup-list li input[type=checkbox]{flex:none;width:26px;height:26px;margin:0}.worker .markup-list li button.small,.worker .drawing-actions button{min-width:44px;min-height:44px}.sheet button,.sheet .chip{min-height:44px}.sheet .chip input[type=checkbox],.sheet label.check input[type=checkbox]{flex:none;width:24px;height:24px;margin:0}.sheet label.check{align-items:center;min-height:44px;font-size:15px}@media (width<=860px){.markup-tools button{min-width:44px;min-height:44px}.swatch{width:44px;height:44px}.markup-list li input[type=checkbox]{width:26px;height:26px}.drawing-actions button{min-height:44px}}.rev-badge{color:#fff;vertical-align:middle;background:#1f2a44;border-radius:8px;margin-left:6px;padding:0 6px;font-size:11px;font-weight:700;line-height:18px;display:inline-block}.rev-badge.old{background:#b9b2a5}.doc-row{text-align:left;width:100%;color:inherit;font:inherit;margin-bottom:8px;padding:12px;text-decoration:none;display:block}.doc-row:disabled,.doc-row[aria-disabled=true]{opacity:.55}.loc-tree{margin:0;padding:0;list-style:none}.loc-tree li{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:10px;padding:7px 0;display:flex}.loc-tree li .grow{flex:1;min-width:160px}.bim-stage{border:1px solid var(--line);touch-action:none;background:#f6f4ef;border-radius:8px;height:min(70vh,640px);position:relative;overflow:hidden}.bim-stage canvas{width:100%;height:100%;display:block}.bim-stage.placing{cursor:crosshair}.bim-pins{pointer-events:none;position:absolute;inset:0}.bim-pins .pin{pointer-events:auto}.bim-loading{color:var(--muted);background:#f6f4efd9;flex-direction:column;justify-content:center;align-items:center;gap:10px;font-size:14px;display:flex;position:absolute;inset:0}.bim-loading progress{width:220px}.markup-toggle{cursor:pointer;align-items:center;gap:8px;min-height:44px;display:flex}@media (orientation:landscape) and (height<=500px){.bottom-nav{padding:2px max(6px, env(safe-area-inset-right)) calc(2px + env(safe-area-inset-bottom)) max(6px, env(safe-area-inset-left))}.bottom-nav button{flex-direction:row;gap:6px;padding:6px 4px}.bottom-nav button span{font-size:18px}.worker{padding-bottom:calc(64px + env(safe-area-inset-bottom))}.worker .mobile-head{position:static}button.huge,.huge{margin:8px 0;padding:14px}}.field-error{color:var(--danger,#b42318);margin-top:4px;font-size:13px}.list-card{color:inherit;margin-bottom:10px;text-decoration:none;display:block}.list-card:hover{border-color:var(--brand-yellow)}.kind-card{text-align:left;border:1px solid var(--line);width:100%;color:var(--text);cursor:pointer;background:#fff;border-radius:10px;flex-direction:column;align-items:flex-start;gap:4px;margin-bottom:8px;padding:12px 14px;text-decoration:none;display:flex}.kind-card:hover{border-color:var(--brand-yellow);background:#fffbe6}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-bottom:14px;display:grid}.district-region{border-bottom:1px solid var(--line);padding:6px 0}.tab-link{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;padding:10px 14px;text-decoration:none}.tab-link.active{border-bottom-color:var(--brand-yellow);color:var(--text);font-weight:600}.chat{flex-direction:column;gap:8px;max-height:60vh;padding:4px;display:flex;overflow-y:auto}.chat-msg{border:1px solid var(--line);background:#fff;border-radius:10px;align-self:flex-start;max-width:80%;padding:8px 12px}.chat-msg.mine{border-color:var(--brand-yellow);background:#fff3b0;align-self:flex-end}.facts{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px 16px;margin:0;display:grid}.facts dt{color:var(--muted);font-size:12px}.facts dd{margin:0;font-weight:500}@media (width<=640px){.chat-msg{max-width:92%}}.btn.small{padding:4px 10px;font-size:12px}.nav-count{background:var(--brand-yellow);color:var(--brand-dark);border-radius:10px;margin-left:6px;padding:0 7px;font-size:11px;font-weight:700}.login-legal{border-top:1px solid var(--line);text-align:center;color:var(--muted,#7a7266);margin-top:16px;padding-top:10px;font-size:12px}.login-legal a{color:inherit}.legal{background:var(--brand-dark);min-height:100vh;padding:16px}.legal-head{max-width:820px;margin:0 auto 12px}.legal-head a{color:#fff;text-decoration:none}.legal-body{max-width:820px;margin:0 auto;line-height:1.55}.legal-body h1{margin-top:0;font-size:24px}.legal-body h2{margin:22px 0 6px;font-size:18px}.legal-body ul,.legal-body ol{padding-left:22px}.legal-body li{margin:4px 0}.legal-todo{color:#5a4100;background:#fff3b0;border-radius:3px;padding:0 3px}.legal-foot{border-top:1px solid var(--line);margin-top:26px;padding-top:12px;font-size:13px}.badge.support-new{background:#fff3b0}.badge.support-progress{color:#24477a;background:#e3ecf8}.badge.support-waiting{color:#7a4a00;background:#f9e0b8;font-weight:600}.badge.support-resolved{color:var(--good);background:#dcefe3}.badge.support-closed{color:var(--muted);background:#eee9df}.badge.support-high{color:var(--bad);background:#f6dcd8;font-weight:600}.help-narrow{max-width:760px}.help-form{display:block}.help-tips{border:1px solid var(--brand-yellow);background:#fffbe6;border-radius:10px;gap:6px;margin-bottom:14px;padding:10px 12px;display:grid}.help-tip{text-align:left;background:#fff;flex-direction:column;align-items:flex-start;gap:2px;width:100%;display:flex}.help-tip span:first-child{font-weight:600}.help-thumbs{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.help-thumb{width:110px;color:var(--muted);flex-direction:column;gap:4px;font-size:11px;text-decoration:none;display:flex;position:relative}.help-thumb img,.help-pdf{object-fit:cover;border:1px solid var(--line);background:#fff;border-radius:8px;width:110px;height:80px}.help-pdf{color:var(--bad);place-items:center;font-weight:700;display:grid}.help-thumb span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.help-thumb button{padding:2px 7px;position:absolute;top:4px;right:4px}.help-ctx-box{background:var(--bg);border-radius:10px;margin-top:12px;padding:8px 12px}.help-ctx-box summary{cursor:pointer;font-size:13px;font-weight:600}.help-ctx{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));margin-top:8px}.help-ctx dd{overflow-wrap:anywhere;font-size:13px}.help-list{gap:8px;display:grid}.help-row{text-align:left;width:100%;padding:12px 14px;display:block}.help-row:hover{border-color:var(--brand-yellow)}.help-row.waiting,.help-row.needs{border-left:5px solid var(--warn)}.help-row-head{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:2px;display:flex}.help-row-head b,.help-row-head h2{overflow-wrap:anywhere;min-width:0}.help-chat{max-height:none;overflow:visible}.chat-msg.support{background:#eef4ec;border-color:#c9dcc3}.chat-msg.internal{background:#fff3b0;border:1px dashed #c99700;align-self:stretch;max-width:100%}.help-internal-form{background:#fffbe6;border-color:#c99700}.help-filters{flex-wrap:wrap;align-items:flex-end;gap:0 12px;display:flex}.help-filters .field{min-width:150px}.help-filters .grow{flex:1;min-width:200px}.help-guides{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;display:grid}.help-guide{text-align:left;flex-direction:column;align-items:flex-start;gap:4px;width:100%;padding:14px;display:flex}.help-guide:hover{border-color:var(--brand-yellow)}.help-cat{text-transform:uppercase;letter-spacing:.06em;color:var(--warn);font-size:11px;font-weight:600}.help-article{max-width:900px}.help-article .lead{color:#3d342a;font-size:15px}.help-article-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:20px;display:grid}.help-article-body:has(>:only-child){grid-template-columns:minmax(0,1fr)}.help-steps{counter-reset:s;margin:0;padding:0;list-style:none}.help-steps li{counter-increment:s;padding:2px 0 10px 38px;line-height:1.5;position:relative}.help-steps li:before{content:counter(s);background:var(--brand-yellow);border-radius:50%;place-items:center;width:26px;height:26px;font-size:13px;font-weight:700;display:grid;position:absolute;top:0;left:0}.ui-name{background:#fff6c2;border-radius:3px;padding:0 4px;font-weight:600}.help-figure{margin:0}.help-figure img{border:1px solid var(--line);border-radius:8px;max-width:100%;max-height:520px;margin:0 auto;display:block}.help-tipbox ul{margin:4px 0 0;padding-left:20px}.help-ask{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.help-downloads{margin-top:26px}.help-manual{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:10px 0;display:flex}.help-manual.recommended{border:2px solid var(--brand-yellow);margin-bottom:8px;padding:14px 16px}.help-manual>div{min-width:0}.help-manuals{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:0 14px}.help-manuals .help-manual:last-child{border-bottom:0}.help-link{border:1px solid var(--line);width:22px;height:22px;color:var(--muted);vertical-align:middle;background:#fff;border-radius:50%;place-items:center;margin-left:6px;font-size:13px;font-weight:700;text-decoration:none;display:inline-grid}.help-link:hover{border-color:var(--brand-yellow);color:var(--text)}.btn.help-top{justify-content:center;min-width:32px;font-weight:700}.help-inline{margin-top:12px}.help-btn{font-weight:700;position:relative}.help-dot{background:var(--warn);border-radius:50%;width:9px;height:9px;position:absolute;top:2px;right:2px}.help-panel{z-index:20;background:var(--bg);position:fixed;inset:0;overflow-y:auto}.help-panel .mobile-head{z-index:2;position:sticky;top:0}.help-panel-body{max-width:760px;margin:0 auto;padding:12px 16px 40px}.help-panel .tabs{flex-wrap:nowrap;overflow-x:auto}.helpdesk-detail{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:16px;display:grid}.helpdesk-side{gap:12px;display:grid}.helpdesk-side .facts,.helpdesk-side .help-ctx{grid-template-columns:1fr}@media (width<=860px){.helpdesk-detail,.help-article-body{grid-template-columns:minmax(0,1fr)}.help-filters .field{flex:140px;min-width:0}.worker-head-actions{gap:8px}.worker .logout-btn{margin-left:6px}}.help-panel .tabs button{padding:10px 9px}.map-box{border:1px solid var(--line);border-radius:var(--radius);z-index:0;background:#e8e4da;width:100%;position:relative;overflow:hidden}.map-loading{justify-content:center;align-items:center;display:flex}.map-crosshair,.map-crosshair .leaflet-container,.map-crosshair .leaflet-interactive{cursor:crosshair}.map-box .leaflet-popup-content{margin:10px 12px;font-family:Poppins,system-ui,sans-serif;font-size:13px}.map-box .leaflet-tooltip.map-badge{box-shadow:none;color:#fff;background:0 0;border:0;padding:0;font-size:12px;font-weight:600}.map-box .leaflet-tooltip.map-badge:before{display:none}.map-pin span{background:var(--bad);border:3px solid #fff;border-radius:50% 50% 50% 0;width:22px;height:22px;display:block;transform:rotate(-45deg);box-shadow:0 1px 4px #0006}.map-legend{color:var(--muted);flex-wrap:wrap;gap:12px;margin-top:8px;font-size:12px;display:flex}.map-legend i{vertical-align:-1px;width:11px;height:11px;box-shadow:0 0 0 1px var(--line);border:1px solid #fff;border-radius:50%;margin-right:5px;display:inline-block}.unit-grid-row{border-bottom:1px solid var(--line);grid-template-columns:74px minmax(0,1fr);align-items:stretch;gap:8px;padding:6px 0;display:grid}.unit-grid-row:last-child{border-bottom:none}.unit-grid-floor{align-items:center;font-size:13px;font-weight:600;display:flex}.unit-grid-cells{grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:8px;display:grid}.unit-cell{text-align:left;cursor:pointer;border:2px solid;border-radius:10px;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;padding:8px 10px;font-size:12px;display:flex}.unit-cell b{font-size:14px}.unit-cell span{overflow-wrap:anywhere}@media (width<=520px){.unit-grid-row{grid-template-columns:1fr}}.public-page{background:var(--bg);min-height:100vh;overflow-x:hidden}.public-head{background:var(--brand-dark);color:#fff;justify-content:space-between;align-items:center;gap:10px;padding:14px 16px;display:flex}.public-head .logo{margin:0}.public-head .muted{color:#b9b0a2}.public-body{max-width:980px;margin:0 auto;padding:18px 16px 40px}.public-units{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.public-unit{min-width:0}.public-unit.taken{opacity:.6}.terms-box{white-space:pre-wrap;border:1px solid var(--line);overflow-wrap:anywhere;background:#faf8f3;border-radius:8px;max-height:260px;margin-top:10px;padding:10px 12px;font-size:13px;overflow:auto}.buyer-photos{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;display:grid}.buyer-photos img{aspect-ratio:4/3;object-fit:cover;border-radius:8px;width:100%;display:block}.buyer-portal table.compact{min-width:0}@media (width<=520px){.public-units{grid-template-columns:1fr}}table.compact td,table.compact th{padding:5px 8px}.sub-banner{margin-bottom:12px}.sub-facts{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px 16px;margin:8px 0 12px;display:grid}.sub-facts dt{color:var(--muted);font-size:12px}.sub-facts dd{margin:0}.sub-people .meter-label{white-space:normal}.sub-people{gap:4px;display:grid}.plan-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:12px;display:grid}.plan-card{cursor:pointer;border:2px solid #0000;display:block;position:relative}.plan-card.on{border-color:var(--brand-yellow,#f2b705)}.plan-card input[type=radio]{position:absolute;top:14px;right:14px}.plan-card ul{margin:8px 0 0;padding-left:18px;font-size:13px}.plan-name{align-items:center;gap:8px;font-size:18px;font-weight:700;display:flex}.plan-price{margin:4px 0;font-size:22px;font-weight:700}.plan-locked{text-align:left;margin:24px auto}.plan-lock-icon{font-size:36px}@media (width<=900px){.plan-grid{grid-template-columns:minmax(0,1fr)}}.pricing-page{background:var(--brand-dark);min-height:100vh;padding:16px;overflow-x:hidden}.pricing-page .legal-head{max-width:1100px}.pricing-body{background:var(--bg);border-radius:14px;max-width:1100px;margin:0 auto;padding:24px 20px 28px}.pricing-body h1{margin:0 0 6px}.pricing-lead{max-width:760px;margin:0 0 18px}.plan-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}@media (width<=860px){.plan-grid{grid-template-columns:1fr}}.plan-card{border:1px solid var(--line);background:#fff;border-radius:12px;flex-direction:column;min-width:0;padding:18px 16px;display:flex;position:relative}.plan-card.sel,.plan-card.best{border:2px solid var(--brand-yellow)}.plan-card.sel{box-shadow:0 6px 20px #1a130a14}.plan-grid .plan-card{cursor:default}.register-plans .plan-card{cursor:pointer}.plan-badge{background:var(--brand-yellow);border-radius:999px;padding:2px 10px;font-size:11px;font-weight:700;position:absolute;top:-11px;left:14px}.plan-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.plan-head h3{margin:0}.plan-price{margin-top:6px;font-size:28px;font-weight:800}.plan-price small{color:var(--muted);font-size:13px;font-weight:500}.plan-year{margin-bottom:10px;font-size:12px}.plan-people{background:var(--bg);border-radius:8px;margin-bottom:10px;padding:7px 10px;font-size:13px;font-weight:600}.plan-card ul{flex:1;gap:4px;margin:0 0 14px;padding-left:18px;font-size:13px;display:grid}.plan-card .btn{justify-content:center}.plan-cycle{flex-wrap:wrap;gap:18px;margin-bottom:10px;display:flex}.plan-addons{gap:6px;margin-top:12px;display:grid}.plan-addons-list{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:14px;display:grid}.plan-addon-price{margin-left:6px;font-size:13px;font-weight:600}.plan-head input{flex:none;width:auto;margin:0}
