*{box-sizing:border-box}:root{--bog-cyan:#0097c3;--bog-cyan-2:#00b1be;--ink:#181818;--muted:#6b7280;--line:#dde4e8;--panel:#f7fafb;--white:#fff}body,html{margin:0;padding:0;background:#fff;color:var(--ink);font-family:Arial,Helvetica,sans-serif}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.app{min-height:100vh;display:grid;grid-template-rows:76px 1fr}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:baseline;gap:12px}.brand strong{font-family:Georgia,serif;font-size:28px;font-weight:500}.brand span{color:var(--bog-cyan);font-weight:700;letter-spacing:.08em;font-size:12px}.pilot-label{color:var(--muted);font-size:12px}.shell{display:grid;grid-template-columns:230px 1fr;min-height:0}.sidebar{border-right:1px solid var(--line);padding:20px 14px;background:#fbfcfd}.navitem{width:100%;padding:10px 12px;border-radius:6px;color:#39424e;margin-bottom:4px;border:0;background:transparent;text-align:left}.navitem.active{background:#eaf7fb;color:var(--bog-cyan);font-weight:700}.main{padding:24px;min-width:0}.pagehead{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:18px}.pagehead h1{margin:0;font-family:Georgia,serif;font-weight:500;font-size:28px}.pagehead p{margin:7px 0 0;color:var(--muted)}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}.card{border:1px solid var(--line);background:#fff;border-radius:8px}.stat{padding:16px}.stat .value{font-family:Georgia,serif;font-size:26px;color:var(--bog-cyan)}.stat .label{color:var(--muted);font-size:12px;margin-top:4px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px;height:max(560px,calc(100vh - 300px))}.workspace>*{min-height:0}.viewer-card{overflow:hidden;display:grid;grid-template-rows:52px 1fr}.viewer-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;border-bottom:1px solid var(--line)}.viewer-toolbar>div:first-child{display:flex;align-items:baseline;gap:10px;min-width:0}.viewer-context{color:var(--muted);font-size:11px}.segmented{display:flex;border:1px solid var(--line);border-radius:7px;overflow:hidden}.segmented button{border:0;background:#fff;padding:8px 14px;display:flex;align-items:center;gap:6px}.segmented button.active{background:var(--bog-cyan);color:#fff}.viewer{background:linear-gradient(135deg,#f8fbfc,#eef5f7);min-height:500px;position:relative;color:#59636e;overflow:hidden}.split{width:100%;height:100%;display:grid;grid-template-columns:1fr 1fr}.pane{min-width:0;min-height:0;position:relative;border-right:1px solid var(--line);overflow:hidden}.pane:last-child{border-right:0}.ifc-panel,.plan-viewer,.single-pane{width:100%;height:100%;min-height:500px}.ifc-panel,.plan-viewer{display:grid;grid-template-rows:auto 1fr;background:#f9fbfc}.pane .ifc-panel,.plan-viewer.compact{min-height:500px}.viewer-empty{height:100%;display:grid;place-items:center;align-content:center;text-align:center;max-width:390px;margin:auto;padding:30px}.viewer-empty h3{margin:10px 0 6px;font-family:Georgia,serif;font-weight:500;color:#2d3640}.viewer-empty p{font-size:13px;line-height:1.5;color:var(--muted)}.action,.primary-action{border:1px solid var(--bog-cyan);color:var(--bog-cyan);background:#fff;border-radius:5px;padding:7px 10px;font-size:12px;display:inline-flex;align-items:center;gap:6px}.primary-action{margin-top:8px;background:var(--bog-cyan);color:#fff}.action{margin-top:9px}.viewer-filebar{min-height:48px;padding:8px 12px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.viewer-filebar>div{min-width:0;display:grid;gap:2px}.viewer-filebar strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#2d3640}.viewer-filebar span{font-size:10px;color:var(--muted)}.icon-button{width:32px;height:32px;border:1px solid var(--line);background:#fff;border-radius:5px;display:grid;place-items:center;color:var(--muted)}.pdf-frame{width:100%;height:100%;min-height:452px;border:0;background:#e9eef1}.ifc-stage{position:relative;overflow:hidden;display:grid;place-items:center;background:linear-gradient(160deg,#f3f8fa,#eaf2f5)}.model-wireframe{position:relative;width:260px;height:210px;transform:rotate(-4deg)}.cube{position:absolute;border:2px solid #86a8b4;background:rgba(0,151,195,.06);box-shadow:inset 0 0 0 1px rgba(255,255,255,.7)}.cube-a{width:170px;height:110px;left:28px;top:55px;transform:skewY(-8deg)}.cube-b{width:92px;height:145px;right:5px;top:25px;transform:skewY(7deg)}.cube-c{width:105px;height:70px;left:2px;top:18px;transform:skewY(5deg)}.ifc-status-card{position:absolute;left:16px;bottom:16px;display:flex;gap:9px;align-items:flex-start;background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:7px;padding:10px 12px;max-width:340px}.ifc-status-card svg{color:var(--bog-cyan)}.ifc-status-card div{display:grid;gap:2px}.ifc-status-card strong{font-size:12px;color:#2d3640}.ifc-status-card span{font-size:10px;color:var(--muted);line-height:1.35}.bim-viewer{position:relative;width:100%;height:100%;min-height:500px;background:#f3f8fa;overflow:hidden}.bim-canvas{position:absolute;inset:0}.bim-canvas canvas{display:block;width:100%!important;height:100%!important}.bim-toolbar{position:absolute;left:12px;top:12px;display:flex;gap:7px;z-index:3}.bim-toolbar .primary-action{margin-top:0}.bim-toolbar .icon-button,.bim-toolbar .primary-action{box-shadow:0 2px 8px rgba(30,50,60,.08)}.bim-status{position:absolute;left:12px;right:12px;bottom:12px;z-index:3;display:flex;gap:9px;align-items:flex-start;background:rgba(255,255,255,.94);border:1px solid var(--line);border-radius:7px;padding:9px 11px;max-width:430px;box-shadow:0 3px 14px rgba(20,45,55,.08)}.bim-status svg{color:var(--bog-cyan);flex:0 0 auto}.bim-status>div{display:grid;gap:2px;min-width:0}.bim-status strong{font-size:11px;color:#2d3640;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bim-status span{font-size:10px;line-height:1.35;color:var(--muted)}.bim-status.error{border-color:#efb1a8}.bim-status.error svg{color:#bd3f31}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.issue-panel{display:grid;grid-template-rows:52px auto 1fr;overflow:hidden}.issue-panel>div:last-child{overflow-y:auto;min-height:0}.issue-panel header{padding:15px 16px;font-weight:700;display:flex;align-items:center;gap:6px}.issue-filter,.issue-panel header{border-bottom:1px solid var(--line)}.issue-filter{padding:10px 12px}.issue{padding:12px 14px;border-bottom:1px solid var(--line)}.issue.selected{background:#f0fbfd;border-left:3px solid var(--bog-cyan)}.issue-top{display:flex;justify-content:space-between;gap:8px}.badge{font-size:11px;padding:3px 7px;border-radius:999px;background:#eef2f4}.badge.critical,.badge.high{color:#995f00;background:#fff4d9}.issue-title{margin-top:6px;font-size:13px}.meta{color:var(--muted);font-size:11px;margin-top:6px}.users-page{display:grid;gap:16px}.role-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.role-card{border:1px solid var(--line);background:#fff;border-radius:8px;padding:14px;text-align:left;display:grid;gap:7px;min-height:158px}.role-card.selected,.role-card:hover{border-color:var(--bog-cyan);box-shadow:0 0 0 1px rgba(0,151,195,.08)}.role-card.selected{background:#f2fbfd}.role-card-icon{color:var(--bog-cyan)}.role-card strong{font-family:Georgia,serif;font-size:15px;font-weight:500}.role-card span{font-size:11px;line-height:1.45;color:var(--muted)}.role-card small{font-size:10px;color:var(--bog-cyan);margin-top:auto}.users-card{overflow:hidden}.users-card-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--line)}.users-card-head>div{display:flex;gap:7px;align-items:center}.users-card-head span{font-size:11px;color:var(--muted)}.users-table-wrap{overflow:auto}.users-table{width:100%;border-collapse:collapse;font-size:12px}.users-table td,.users-table th{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}.users-table th{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#fbfcfd}.users-table td strong{display:block;font-size:12px}.users-table td small{display:block;color:var(--muted);margin-top:3px}.role-pill,.status-pill{display:inline-block;padding:4px 7px;border-radius:999px;background:#eef5f7;font-size:10px}.role-pill{color:#246477}.status-pill.active{background:#e9f8ef;color:#277746}.status-pill.invited{background:#fff7df;color:#89691b}.status-pill.disabled{background:#f2f2f2;color:#737373}.permissions-note{border-left:3px solid var(--bog-cyan);background:#f7fbfc;padding:13px 15px;display:grid;gap:5px}.permissions-note strong{font-family:Georgia,serif;font-size:14px}.permissions-note span{font-size:11px;line-height:1.5;color:var(--muted)}.plan-toolbar{height:48px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px;border-bottom:1px solid var(--line);background:#fff}.plan-toolbar-left{display:flex;gap:6px;align-items:center}.plan-toolbar .primary-action{margin:0}.icon-button.active{border-color:#8bc7d7;background:#edf9fb;color:#087d9c}.plan-active-meta{display:flex;gap:6px;align-items:center;font-size:9px}.plan-active-meta span,.plan-active-meta strong{padding:4px 6px;border-radius:999px;background:#eef3f5;color:#52616a}.plan-active-meta .ok{background:#eaf8ef;color:#237847}.plan-active-meta .warn{background:#fff2e7;color:#9a5b15}.plan-stage{position:relative;min-height:0;overflow:hidden;background:#e9eef1;touch-action:none;cursor:grab}.plan-stage:active{cursor:grabbing}.plan-transform-layer{position:absolute;inset:0;transform-origin:0 0;will-change:transform}.plan-transform-layer .pdf-frame{position:absolute;inset:0;min-height:0;pointer-events:none}.pdf-controlled{-webkit-user-select:none;user-select:none}.plan-toolbar-separator{width:1px;height:24px;background:var(--line);margin:0 2px}.plan-zoom-label{min-width:42px;text-align:center;font-size:9px;color:#60717a}.plan-calibration,.plan-library{position:absolute;z-index:30;top:10px;bottom:10px;width:340px;background:rgba(255,255,255,.98);border:1px solid #d8e1e5;border-radius:9px;box-shadow:0 12px 34px rgba(20,45,55,.16);overflow:hidden;cursor:default}.plan-library{left:10px}.plan-calibration{right:10px}.plan-panel-head{height:48px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-bottom:1px solid #edf1f3;background:#fbfdfe}.plan-panel-head>div{display:grid;gap:2px;min-width:0}.plan-panel-head strong{font-size:12px;color:#2f3e46}.plan-panel-head span{font-size:9px;color:#7a878e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plan-library-list{max-height:calc(70% - 48px);overflow:auto}.plan-empty-note{font-size:11px;color:#7a878e;padding:12px}.plan-list-row{padding:9px;border-bottom:1px solid #edf1f3}.plan-list-row.active{background:#f0fbfd}.plan-open{width:100%;border:0;background:transparent;display:flex;align-items:center;gap:8px;text-align:left;padding:0;color:#3c4a52}.plan-open>span{display:grid;gap:2px;min-width:0;flex:1 1}.plan-open strong{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.plan-open small{font-size:9px;color:#7e8990}.plan-open>svg:last-child{color:#2e8a54}.plan-row-controls{display:grid;grid-template-columns:74px 1fr 28px;gap:5px;margin-top:7px;padding-left:22px}.plan-row-controls select{min-width:0;height:27px;font-size:9px;color:#45535c;padding:0 5px}.plan-row-controls button,.plan-row-controls select{border:1px solid #d8e1e5;border-radius:5px;background:#fff}.plan-row-controls button{color:#89949a;display:grid;place-items:center}.plan-point{position:absolute;transform:translate(-50%,-50%);width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#0097c3;color:#fff;font-size:10px;font-weight:800;border:2px solid #fff;box-shadow:0 2px 10px rgba(0,0,0,.22);z-index:12}.plan-point.p2{background:#ef4444}.plan-mode-hint{z-index:20;left:50%;top:14px;transform:translateX(-50%);gap:6px;background:#173a46;border-radius:999px;padding:7px 11px;font-size:10px;box-shadow:0 5px 18px rgba(0,0,0,.18);pointer-events:none}.issue-pin,.plan-mode-hint{position:absolute;display:flex;align-items:center;color:#fff}.issue-pin{z-index:14;transform:translate(-8px,-22px);gap:4px;border:1px solid #fff;border-radius:999px;background:#d94848;padding:4px 7px 4px 5px;box-shadow:0 3px 10px rgba(0,0,0,.22);font-size:8px;font-weight:700;white-space:nowrap;transform-origin:left bottom}.issue-pin svg{flex:0 0 auto}.plan-pin-list{border-top:1px solid #edf1f3;padding:9px;display:grid;gap:5px;max-height:30%;overflow:auto}.plan-pin-list>strong{font-size:10px;color:#40515a}.plan-pin-list>div{display:grid;grid-template-columns:1fr auto;gap:1px 8px;align-items:center;padding:6px;border:1px solid #edf1f3;border-radius:6px;background:#fff}.plan-pin-list span{font-size:9px;font-weight:700;color:#46545c}.plan-pin-list small{grid-column:1;font-size:8px;color:#7b878e}.plan-pin-list button{grid-column:2;grid-row:1/3;border:0;background:transparent;color:#9b6767}.plan-calibration-body{height:calc(100% - 48px);overflow:auto;padding:12px}.plan-calibration-body>p{margin:0 0 10px;font-size:10px;line-height:1.5;color:#66747c}.calibration-apply,.calibration-capture{width:100%;border:1px solid #b8d9e1;border-radius:6px;background:#f2fbfd;color:#0f758e;padding:8px;display:flex;align-items:center;justify-content:center;gap:6px;font-size:10px}.calibration-points{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.calibration-points fieldset{border:1px solid #dfe7ea;border-radius:7px;padding:8px;margin:0}.calibration-points legend{font-size:9px;font-weight:700;color:#53636c;padding:0 4px}.calibration-points label{display:grid;gap:3px;font-size:8px;color:#7b878e;margin-top:5px}.calibration-points input{width:100%;height:28px;border:1px solid #d7e0e4;border-radius:5px;padding:0 6px;font-size:9px}.calibration-state{display:grid;grid-template-columns:70px 1fr;gap:5px 8px;margin:10px 0;padding:9px;background:#f7fafb;border-radius:7px;font-size:9px}.calibration-state span{color:#7a878e}.calibration-state strong{color:#3c4b54}.calibration-apply{background:#0097c3;border-color:#0097c3;color:#fff}.calibration-result{display:grid;gap:5px;margin-top:10px;padding:10px;border:1px solid #cfe6d7;background:#f4fbf6;border-radius:7px;font-size:9px;color:#476055}.calibration-result strong{color:#237847}.calibration-result button{margin-top:3px;border:0;background:transparent;color:#8a4a4a;text-align:left;padding:0;font-size:9px}@media(max-width:1200px){.role-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:1100px){.workspace{grid-template-columns:1fr;height:auto}.viewer-card{height:max(520px,70vh)}.issue-panel{min-height:360px;max-height:520px}}@media(max-width:900px){.shell{grid-template-columns:1fr}.sidebar{display:none}.stats{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}.pane{border-right:0;border-bottom:1px solid var(--line)}.bim-viewer,.ifc-panel,.pane,.plan-viewer,.single-pane,.viewer{min-height:420px}.role-grid{grid-template-columns:1fr}.plan-calibration,.plan-library{width:min(340px,calc(100% - 20px));left:10px;right:10px}.plan-active-meta,.plan-zoom-label{display:none}}.view-layout{width:100%;height:100%;min-height:500px;display:grid;grid-template-columns:1fr 1fr}.view-layout.view-2d,.view-layout.view-3d{grid-template-columns:1fr}.view-2d .bim-pane,.view-3d .plan-pane{display:none}.view-2d .pane,.view-3d .pane{border-right:0}@media(max-width:900px){.view-layout.view-split{grid-template-columns:1fr}}.modal-backdrop{position:fixed;inset:0;z-index:100;background:rgba(15,30,38,.45);display:grid;place-items:center;padding:16px}.confirm-dialog{width:min(520px,100%);padding:20px 22px;display:grid;gap:12px;box-shadow:0 18px 50px rgba(15,30,38,.25)}.confirm-dialog h2{margin:0;font-family:Georgia,serif;font-weight:500;font-size:21px;display:flex;align-items:center;gap:8px}.confirm-dialog p{margin:0;font-size:13px;line-height:1.5}.confirm-dialog label{display:grid;gap:5px;font-size:12px;color:#52616a}.confirm-dialog input,.confirm-dialog select{height:34px;border:1px solid var(--line);border-radius:6px;padding:0 9px;font-size:13px;background:#fff;color:var(--ink)}.confirm-dialog input:focus,.confirm-dialog select:focus{outline:2px solid rgba(0,151,195,.35);border-color:var(--bog-cyan)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-grid .wide{grid-column:1/-1}.discipline-picker{border:1px solid var(--line);border-radius:7px;padding:8px 10px;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:6px}.discipline-picker legend{font-size:12px;color:#52616a;padding:0 4px}.discipline-picker label{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink)}.discipline-picker input{height:auto}.confirm-error{color:#b91c1c;font-size:12px;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;padding:7px 9px}.confirm-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.confirm-actions .action,.confirm-actions .primary-action{margin:0}.danger-action{border:1px solid #dc2626;background:#dc2626;color:#fff;border-radius:5px;padding:7px 12px;font-size:12px}.danger-action:disabled{opacity:.45}@media(max-width:600px){.discipline-picker,.form-grid{grid-template-columns:1fr}}.settings-page{display:grid;gap:16px;max-width:900px}.settings-card{padding:16px 18px;display:grid;gap:14px}.settings-card-head{display:grid;gap:4px}.settings-card-head strong{font-family:Georgia,serif;font-weight:500;font-size:17px}.settings-card-head span{font-size:12px;color:var(--muted)}.theme-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.theme-option{display:grid;gap:7px;text-align:left;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink)}.theme-option:hover{border-color:#8fcfdd}.theme-option.selected{border-color:var(--bog-cyan);box-shadow:0 0 0 2px rgba(0,151,195,.18)}.theme-option-label{display:flex;align-items:center;gap:6px;font-weight:700;font-size:13px}.theme-option small{font-size:11px;color:var(--muted)}.theme-preview{height:74px;border-radius:6px;display:grid;grid-template-columns:28% 1fr;grid-template-rows:14px 1fr;gap:4px;padding:6px;border:1px solid var(--line)}.theme-preview i{border-radius:3px}.theme-preview i:first-child{grid-column:1/-1}.theme-preview-light{background:#f7fafb}.theme-preview-light i{background:#dde4e8}.theme-preview-light i:last-child{background:#fff}.theme-preview-dark{background:#11181d}.theme-preview-dark i{background:#2c3a42}.theme-preview-dark i:last-child{background:#182127}.theme-preview-system{background:linear-gradient(90deg,#f7fafb 50%,#11181d 0)}.theme-preview-system i{background:rgba(127,140,150,.45)}@media(max-width:700px){.theme-options{grid-template-columns:1fr}}.revit-sync{display:grid;gap:0}.revit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.revit-card{padding:14px 16px;display:grid;gap:10px;align-content:start}.revit-card-head{display:grid;gap:3px}.revit-card-head strong{display:flex;align-items:center;gap:7px;font-size:14px}.revit-card-head span{font-size:11px;color:var(--muted)}.revit-clients{display:grid;gap:6px}.revit-client{display:grid;grid-template-columns:12px 1fr auto;gap:2px 8px;align-items:center;padding:7px 9px;border:1px solid var(--line);border-radius:7px}.revit-client small{grid-column:2/-1;font-size:10px;color:var(--muted)}.revit-client>span:not(.dot){font-size:11px;color:var(--muted)}.revit-sync .dot{width:10px;height:10px;border-radius:999px;background:#94a3b8;display:inline-block}.revit-sync .dot.on{background:#16a34a;box-shadow:0 0 0 3px rgba(22,163,74,.18)}.revit-rules{width:100%;border-collapse:collapse;font-size:12px}.revit-rules td,.revit-rules th{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line)}.revit-rules th{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.revit-rules td:not(:first-child),.revit-rules th:not(:first-child){text-align:right;width:70px}.revit-list-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.revit-issues{display:grid;gap:8px}.revit-issue{display:grid;grid-template-columns:12px 1fr auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:8px;padding:10px 12px}.revit-issue .action{margin:0}.revit-sync code{font-size:11px;background:var(--surface-2);padding:1px 5px;border-radius:4px}@media(max-width:1000px){.revit-grid{grid-template-columns:1fr}}.onboarding-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.onboarding-card{min-height:0}.onboarding-card strong{display:flex;align-items:center;gap:8px}.count-pill{font-family:Arial,Helvetica,sans-serif;font-size:11px;font-weight:700;background:var(--accent-soft);color:var(--accent-text);border-radius:999px;padding:2px 8px}.onboarding-names{display:flex;flex-wrap:wrap;gap:5px;margin-top:2px}.onboarding-names small{color:var(--muted)}@media(max-width:800px){.onboarding-grid{grid-template-columns:1fr}}.image-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:7px;padding:7px 10px}.image-row .action{margin:0}.project-switch{margin-top:8px;height:32px;border:1px solid var(--line);border-radius:6px;padding:0 8px;background:var(--surface);color:var(--ink);font-size:13px}.issue-overlay-toggle{position:absolute;top:58px;right:14px;z-index:5;margin:0;background:var(--surface);box-shadow:0 2px 10px rgba(20,45,55,.12)}.issue-overlay-toggle.active{background:var(--bog-cyan);color:#fff}.issue-overlay{position:absolute;top:98px;right:14px;bottom:14px;width:min(360px,calc(100% - 28px));z-index:5;display:grid;box-shadow:0 12px 34px rgba(20,45,55,.2);border-radius:8px}.issue-overlay .issue-panel{min-height:0;height:100%}.users-card-head{flex-wrap:wrap;gap:10px}.users-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.users-toolbar .action{margin:0}.users-search{display:flex;align-items:center;gap:6px;height:32px;border:1px solid var(--line);border-radius:6px;padding:0 9px;background:var(--surface);color:var(--muted)}.users-search input{border:0;outline:0;background:transparent;color:var(--ink);font-size:12px;width:220px}.pill-row{display:flex;gap:5px;flex-wrap:wrap}.user-actions{display:flex;gap:6px;justify-content:flex-end}.user-actions button{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:#52616a}.user-actions button:hover:not(:disabled){border-color:var(--bog-cyan);color:var(--bog-cyan)}.user-actions button.danger:hover:not(:disabled){border-color:#dc2626;color:#dc2626}.user-actions button:disabled{opacity:.35;cursor:not-allowed}.user-dialog{max-height:90vh;overflow:auto}.user-dialog label small{display:block;margin-top:4px}.project-switch-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}.project-switch-row .project-switch{margin-top:0}.project-switch-row .action{margin:0}.action.danger{color:#b91c1c;border-color:#f3b4b4}.action.danger:hover:not(:disabled){background:#fef2f2;border-color:#dc2626}.app-loading{min-height:100vh;justify-content:center;gap:12px;color:var(--muted);font-size:14px}.app-loading,.topbar-right{display:flex;align-items:center}.topbar-right{gap:16px}.topbar-user{gap:10px;font-size:12px;color:var(--ink)}.topbar-user,.topbar-user span{display:flex;align-items:center}.topbar-user span{gap:5px}.topbar-user .action{margin:0;text-decoration:none}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--surface-2)}.login-card{width:min(420px,100%);padding:28px 30px;display:grid;gap:14px;box-shadow:0 18px 50px rgba(15,30,38,.12)}.login-card h1{font-family:Georgia,serif;font-weight:400;font-size:24px;margin:4px 0 0}.login-brand{display:grid;gap:2px}.login-brand strong{font-family:Georgia,serif;font-size:30px;font-weight:500}.login-brand span{color:var(--bog-cyan);font-weight:700;letter-spacing:.08em;font-size:11px}.login-card label,.password-form label{display:grid;gap:5px;font-size:12px;color:#52616a}.login-card input,.password-form input,.setup-link-row input{height:36px;border:1px solid var(--line);border-radius:6px;padding:0 10px;font-size:13px;background:var(--surface);color:var(--ink)}.login-card input:focus,.password-form input:focus{outline:2px solid rgba(0,151,195,.35);border-color:var(--bog-cyan)}.login-card .primary-action{justify-content:center;height:38px}.login-card a,.settings-card a{color:var(--accent-text)}.account-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.account-grid div{display:grid;gap:3px;font-size:13px}.account-grid small{color:var(--muted);font-size:11px}.password-form{display:grid;gap:10px;max-width:420px;border-top:1px solid var(--line-soft);padding-top:14px}.password-form strong{display:flex;align-items:center;gap:6px;font-size:13px}.form-ok{color:#166534;font-size:12px;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:6px;padding:7px 9px}.setup-link{display:grid;gap:6px}.setup-link-row{display:flex;gap:6px}.setup-link-row input{flex:1 1;min-width:0;font-family:Consolas,monospace;font-size:11px}.setup-link-row .action{margin:0;white-space:nowrap}.setup-link-section{grid-template-columns:1fr}.setup-link-section .action{justify-self:start;margin:0}.link-button{border:0;background:none;padding:0;color:var(--accent-text);text-decoration:underline;cursor:pointer;font:inherit}.issue-filter-bar{display:grid;gap:6px;padding:9px 12px;border-bottom:1px solid var(--line);background:var(--surface-2)}.issue-search{display:flex;align-items:center;gap:6px;height:30px;border:1px solid var(--line);border-radius:6px;padding:0 8px;background:var(--surface);color:var(--muted)}.issue-search input{flex:1 1;min-width:0;border:0;outline:0;background:transparent;color:var(--ink);font-size:12px}.issue-search button{border:0;background:none;color:var(--muted);display:grid;place-items:center;padding:0}.issue-filter-row{display:grid;grid-template-columns:1fr 1fr;gap:5px}.issue-filter-row select{height:28px;min-width:0;border:1px solid var(--line);border-radius:6px;padding:0 6px;font-size:11px;background:var(--surface);color:var(--ink)}.issue-filter-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11px;color:var(--muted)}.issue-filter-meta .link-button{font-size:11px}.issue-overdue{display:flex;align-items:center;gap:4px;margin-right:auto}.issue-history{border:1px solid var(--line-soft);border-radius:8px;padding:8px 10px;font-size:12px}.issue-history summary{cursor:pointer;font-weight:700;display:flex;align-items:center;gap:6px;color:var(--ink)}.issue-history ol{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:8px;max-height:220px;overflow:auto}.issue-history li{display:grid;gap:2px;border-left:2px solid var(--bog-cyan);padding-left:8px}.issue-history li span{color:var(--muted)}.issue-history small{color:var(--muted);margin-left:4px}.audit-table td{vertical-align:top}.audit-table td small{display:block;color:var(--muted)}.audit-changes{display:grid;gap:2px;font-size:12px;max-width:420px}.audit-table .action{margin:0;white-space:nowrap}.protocol-card{padding:16px;margin-top:16px}.protocol-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}.protocol-head .meta{margin-left:auto}.protocol-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.protocol-grid label{display:grid;gap:4px;font-size:12px;color:var(--muted)}.protocol-grid input[type=date],.protocol-grid select,.protocol-grid textarea{border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:var(--surface);color:var(--ink);font:inherit;font-size:12px}.protocol-check,.protocol-wide{grid-column:1/-1}.protocol-check{display:flex!important;align-items:center;gap:6px}.protocol-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:12px}.protocol-actions .meta,.protocol-inline{margin-right:auto}.protocol-inline{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.protocol-actions .action{margin:0}@media (max-width:900px){.protocol-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.plan-note{font-size:11px;color:var(--muted);max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left:auto;margin-right:10px}.plan-loading{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:8px;color:var(--muted);font-size:13px;width:900px;height:700px}@media (pointer:coarse){.action,.danger-action,.primary-action{min-height:40px;padding-left:14px;padding-right:14px}.icon-button{min-width:40px;min-height:40px}.navitem{min-height:44px}.issue-filter-bar input,.issue-filter-bar select{min-height:38px}}.offline-badge{background:#fef3c7;color:#92400e;border:1px solid #f59e0b;border-radius:999px;padding:2px 10px;font-size:11px;font-weight:700}.issue-viewer-backdrop{position:fixed;inset:0;z-index:1000;background:rgba(15,23,42,.72);display:grid;place-items:center;padding:20px}.issue-viewer{width:min(1400px,97vw);height:min(920px,94vh);background:var(--surface);border-radius:12px;box-shadow:0 24px 80px rgba(0,0,0,.35);display:grid;grid-template-rows:56px minmax(0,1fr) auto;overflow:hidden}.issue-viewer-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 16px;border-bottom:1px solid var(--line);font-size:14px}.issue-viewer-head>div:first-child{display:flex;align-items:center;gap:8px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.issue-viewer-dot{width:12px;height:12px;border-radius:999px;flex:none}.issue-viewer-actions{display:flex;align-items:center;gap:8px}.issue-viewer-actions .action{margin:0}.issue-viewer-body{display:grid;grid-template-columns:minmax(0,1fr) 320px;grid-template-rows:minmax(0,1fr);min-height:0}.issue-viewer-stage{position:relative;display:grid;place-items:center;background:#0f171c;min-height:0;min-width:0;overflow:hidden;padding:12px}.issue-viewer-stage img{position:absolute;inset:12px;width:calc(100% - 24px);height:calc(100% - 44px);object-fit:contain}.issue-viewer-stage .meta{color:#c4d0d6;padding:30px;text-align:center}.issue-viewer-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:999px;border:0;background:rgba(255,255,255,.88);color:#18262d;display:grid;place-items:center;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.3)}.issue-viewer-nav.prev{left:14px}.issue-viewer-nav.next{right:14px}.issue-viewer-count{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);background:rgba(0,0,0,.6);color:#fff;font-size:12px;padding:3px 10px;border-radius:999px;white-space:nowrap}.issue-viewer-info{border-left:1px solid var(--line);padding:14px;overflow:auto;display:grid;align-content:start;gap:10px;font-size:12px}.issue-viewer-info dl{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:0}.issue-viewer-info dt{color:var(--muted)}.issue-viewer-info dd{margin:0}.issue-viewer-text{margin:0;white-space:pre-wrap}.issue-viewer-comment{border:1px solid var(--line-soft);border-radius:6px;padding:7px;display:grid;gap:3px}.issue-viewer-comment small{color:var(--muted)}.issue-viewer-strip{display:flex;gap:8px;padding:10px 14px;border-top:1px solid var(--line);overflow-x:auto}.issue-viewer-strip button{flex:none;padding:0;border:2px solid transparent;border-radius:6px;background:none;cursor:pointer}.issue-viewer-strip button.active{border-color:var(--bog-cyan)}.issue-viewer-strip img{display:block;width:110px;height:66px;object-fit:cover;border-radius:4px}@media (max-width:900px){.issue-viewer-body{grid-template-columns:1fr;grid-template-rows:1fr auto}.issue-viewer-info{border-left:0;border-top:1px solid var(--line);max-height:35vh}}.sheet-align-backdrop{position:fixed;inset:0;z-index:1100;background:rgba(15,23,42,.72);display:grid;place-items:center;padding:20px}.sheet-align{width:min(1300px,97vw);height:min(900px,94vh);background:var(--surface);border-radius:12px;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.35)}.sheet-align footer,.sheet-align header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--line)}.sheet-align footer{border-top:1px solid var(--line);border-bottom:0;font-size:12px}.sheet-align footer>div{display:flex;gap:8px}.sheet-align footer .action,.sheet-align footer .primary-action{margin:0}.sheet-align header span{display:block;font-size:12px;color:var(--muted)}.sheet-align-help{display:flex;align-items:center;gap:6px;margin:0;padding:8px 14px;font-size:12px;color:var(--muted-strong)}.sheet-align-stage{overflow:auto;background:#e9eef1;padding:12px;container-type:size}.sheet-align-plan{position:relative;cursor:crosshair;margin:0 auto}.sheet-align-plan img{display:block;width:100%;height:auto;-webkit-user-select:none;user-select:none;box-shadow:0 4px 18px rgba(0,0,0,.18)}.sheet-align-point{position:absolute;transform:translate(-50%,-50%);width:24px;height:24px;border-radius:999px;display:grid;place-items:center;color:#fff;font-size:12px;font-weight:700;border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.4);pointer-events:none}.sheet-align-point.p1{background:#dc2626}.sheet-align-point.p2{background:#0097c3}.plan-canvas,.plan-canvas-details{position:absolute;left:0;top:0;width:100%;pointer-events:none}.plan-canvas-detail{position:absolute;display:block}.plan-canvas-picture{display:block;width:100%;height:auto;background:#fff;box-shadow:0 2px 12px rgba(20,45,55,.12);-webkit-user-select:none;user-select:none}.plan-panel-actions{display:flex;gap:6px}.floor-editor{width:min(520px,96vw)}.floor-list{list-style:none;margin:10px 0;padding:0;display:grid;gap:6px;max-height:min(50vh,420px);overflow:auto}.floor-list li{display:grid;grid-template-columns:1fr auto 30px 30px 30px;gap:6px;align-items:center}.floor-add input,.floor-list input{height:32px;border:1px solid var(--line);border-radius:6px;padding:0 9px;font-size:13px;min-width:0;background:var(--white);color:var(--ink)}.floor-list small{font-size:11px;color:var(--muted);min-width:44px;text-align:right}.floor-list button{height:30px;border:1px solid var(--line);border-radius:6px;background:var(--white);color:var(--muted);display:grid;place-items:center}.floor-list button:disabled{opacity:.35}.floor-add{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.floor-add .action{margin:0}.calibration-from-3d{display:grid;gap:6px;margin-bottom:12px;padding:10px;border:1px solid #b8d9e1;border-radius:7px;background:#f2fbfd;font-size:10px;line-height:1.45;color:#3c5b66}.calibration-from-3d strong{font-size:11px;color:#0f758e}:root{--surface:#fff;--surface-2:#eef3f5;--surface-glass:rgba(255,255,255,.92);--accent-soft:#eaf7fb;--ink-2:#26343c;--muted-strong:#52616a;--line-soft:#edf1f3;--canvas:#f3f8fa;--accent-ink:#315968;--accent-text:#007fa5}html[data-theme=dark]{color-scheme:dark;--ink:#e3eaee;--ink-2:#d3dde3;--muted:#93a3ad;--muted-strong:#a8b6be;--line:#2c3a42;--line-soft:#24313a;--panel:#1b252b;--white:#151d22;--surface:#182127;--surface-2:#1d282f;--surface-glass:rgba(24,33,39,.94);--accent-soft:#163541;--canvas:#121a1f;--accent-ink:#9fd3e3;--accent-text:#5cc6e6}html[data-theme=dark] .project-thumb:not(.has-image){filter:brightness(.42) saturate(1.1)}html[data-theme=dark],html[data-theme=dark] body{background:#11181d;color:var(--ink)}html[data-theme=dark] input,html[data-theme=dark] select,html[data-theme=dark] textarea{background:#1d282f;color:var(--ink);border-color:#34444d}html[data-theme=dark] ::placeholder{color:#6f808a}html[data-theme=dark],html[data-theme=dark] body{background:#182127}html[data-theme=dark] .sidebar{background:hsl(210 33% 17%)}html[data-theme=dark] .navitem{color:#e3eaee}html[data-theme=dark] .navitem.active{background:hsl(194 45% 17%)}html[data-theme=dark] .card,html[data-theme=dark] .segmented button{background:#182127}html[data-theme=dark] .viewer{background:linear-gradient(135deg,hsl(195 40% 17%),hsl(193 36% 17%));color:#a4b3bc}html[data-theme=dark] .ifc-panel,html[data-theme=dark] .plan-viewer{background:hsl(200 33% 17%)}html[data-theme=dark] .viewer-empty h3{color:#e3eaee}html[data-theme=dark] .action,html[data-theme=dark] .primary-action,html[data-theme=dark] .viewer-filebar{background:#182127}html[data-theme=dark] .viewer-filebar strong{color:#e3eaee}html[data-theme=dark] .icon-button{background:#182127}html[data-theme=dark] .pdf-frame{background:#1d282f}html[data-theme=dark] .ifc-stage{background:linear-gradient(160deg,hsl(197 41% 17%),hsl(196 35% 17%))}html[data-theme=dark] .ifc-status-card{background:rgba(24,33,39,.94)}html[data-theme=dark] .ifc-status-card strong{color:#e3eaee}html[data-theme=dark] .bim-viewer{background:hsl(197 41% 17%)}html[data-theme=dark] .bim-status{background:rgba(24,33,39,.94)}html[data-theme=dark] .bim-status strong{color:#e3eaee}html[data-theme=dark] .bim-status.error{border-color:hsl(8 45% 38%)}html[data-theme=dark] .bim-status.error svg{color:hsl(6 59% 68%)}html[data-theme=dark] .issue.selected{background:hsl(189 45% 17%)}html[data-theme=dark] .badge{background:#1d282f}html[data-theme=dark] .badge.critical,html[data-theme=dark] .badge.high{color:hsl(37 60% 75%);background:hsl(43 45% 17%)}html[data-theme=dark] .role-card{background:#182127}html[data-theme=dark] .role-card.selected{background:hsl(191 45% 17%)}html[data-theme=dark] .users-table th{background:hsl(210 33% 17%)}html[data-theme=dark] .role-pill,html[data-theme=dark] .status-pill{background:hsl(193 36% 17%)}html[data-theme=dark] .role-pill{color:hsl(194 54% 75%)}html[data-theme=dark] .status-pill.active{background:hsl(144 45% 17%);color:hsl(143 51% 75%)}html[data-theme=dark] .status-pill.invited{background:hsl(45 45% 17%);color:hsl(43 60% 68%)}html[data-theme=dark] .status-pill.disabled{background:#1d282f;color:#a4b3bc}html[data-theme=dark] .permissions-note{background:hsl(192 45% 17%)}html[data-theme=dark] .plan-toolbar{background:#182127}html[data-theme=dark] .icon-button.active{background:hsl(189 45% 17%);color:hsl(193 60% 68%)}html[data-theme=dark] .plan-active-meta span,html[data-theme=dark] .plan-active-meta strong{background:hsl(197 26% 17%);color:#a4b3bc}html[data-theme=dark] .plan-active-meta .ok{background:hsl(141 45% 17%);color:hsl(145 55% 75%)}html[data-theme=dark] .plan-active-meta .warn{background:hsl(27 45% 17%);color:hsl(32 60% 68%)}html[data-theme=dark] .plan-stage{background:#1d282f}html[data-theme=dark] .plan-zoom-label{color:#a4b3bc}html[data-theme=dark] .plan-calibration,html[data-theme=dark] .plan-library{background:rgba(24,33,39,.98);border:1px solid #2c3a42}html[data-theme=dark] .plan-panel-head{border-bottom:1px solid #2c3a42;background:#182127}html[data-theme=dark] .plan-panel-head strong{color:#e3eaee}html[data-theme=dark] .plan-empty-note,html[data-theme=dark] .plan-panel-head span{color:#a4b3bc}html[data-theme=dark] .plan-list-row{border-bottom:1px solid #2c3a42}html[data-theme=dark] .plan-list-row.active{background:hsl(189 45% 17%)}html[data-theme=dark] .plan-open{color:#e3eaee}html[data-theme=dark] .plan-open small{color:#a4b3bc}html[data-theme=dark] .plan-open>svg:last-child{color:hsl(145 50% 68%)}html[data-theme=dark] .plan-row-controls select{border:1px solid #2c3a42;background:#182127;color:#e3eaee}html[data-theme=dark] .plan-row-controls button{border:1px solid #2c3a42;background:#182127;color:#8f9fa9}html[data-theme=dark] .plan-point{border:2px solid #2c3a42}html[data-theme=dark] .issue-pin{border:1px solid #2c3a42}html[data-theme=dark] .plan-pin-list{border-top:1px solid #2c3a42}html[data-theme=dark] .plan-pin-list>strong{color:#e3eaee}html[data-theme=dark] .plan-pin-list>div{border:1px solid #2c3a42;background:#182127}html[data-theme=dark] .plan-pin-list span{color:#e3eaee}html[data-theme=dark] .plan-calibration-body>p,html[data-theme=dark] .plan-pin-list button,html[data-theme=dark] .plan-pin-list small{color:#a4b3bc}html[data-theme=dark] .calibration-apply,html[data-theme=dark] .calibration-capture{border:1px solid hsl(192 41% 38%);background:hsl(191 45% 17%);color:hsl(192 60% 75%)}html[data-theme=dark] .calibration-points fieldset{border:1px solid #2c3a42}html[data-theme=dark] .calibration-points label,html[data-theme=dark] .calibration-points legend{color:#a4b3bc}html[data-theme=dark] .calibration-points input{border:1px solid #2c3a42}html[data-theme=dark] .calibration-state{background:hsl(195 33% 17%)}html[data-theme=dark] .calibration-state span{color:#a4b3bc}html[data-theme=dark] .calibration-state strong{color:#e3eaee}html[data-theme=dark] .calibration-result{border:1px solid hsl(141 32% 30%);background:hsl(137 45% 17%);color:#a4b3bc}html[data-theme=dark] .calibration-result strong{color:hsl(145 55% 75%)}html[data-theme=dark] .calibration-result button{color:hsl(0 30% 68%)}html[data-theme=dark] .confirm-dialog label{color:#a4b3bc}html[data-theme=dark] .confirm-dialog input,html[data-theme=dark] .confirm-dialog select{background:#182127}html[data-theme=dark] .discipline-picker legend{color:#a4b3bc}html[data-theme=dark] .confirm-error{color:hsl(0 60% 68%);background:hsl(0 45% 17%);border:1px solid hsl(0 40% 30%)}html[data-theme=dark] .theme-option:hover{border-color:hsl(191 45% 38%)}html[data-theme=dark] .user-actions button{color:#a4b3bc}html[data-theme=dark] .user-actions button.danger:hover:not(:disabled){color:hsl(0 60% 68%)}html[data-theme=dark] .action.danger{color:hsl(0 60% 68%);border-color:hsl(0 45% 38%)}html[data-theme=dark] .action.danger:hover:not(:disabled){background:hsl(0 45% 17%)}html[data-theme=dark] .login-card label,html[data-theme=dark] .password-form label{color:#a4b3bc}html[data-theme=dark] .form-ok{color:hsl(143 60% 75%);background:hsl(138 45% 17%);border:1px solid hsl(141 40% 30%)}html[data-theme=dark] .offline-badge{background:hsl(48 45% 22%);color:hsl(23 60% 75%)}html[data-theme=dark] .issue-viewer-nav{background:rgba(24,33,39,.88);color:hsl(200 30% 75%)}html[data-theme=dark] .sheet-align-stage{background:#1d282f}html[data-theme=dark] .sheet-align-point{border:2px solid #2c3a42}html[data-theme=dark] .plan-canvas-picture{background:#182127}html[data-theme=dark] .calibration-from-3d{border:1px solid hsl(192 41% 38%);background:hsl(191 45% 17%);color:hsl(196 26% 75%)}html[data-theme=dark] .calibration-from-3d strong{color:hsl(192 60% 75%)}