*{box-sizing:border-box}body{color:#203344;background:#f4f6f8;margin:0;font:15px system-ui}header{background:#fff;border-bottom:1px solid #dce3e8;justify-content:space-between;align-items:center;padding:24px 5vw;display:flex}header strong{font-size:21px}header small{color:#62768a}main{max-width:1100px;margin:36px auto;padding:0 24px}h1{margin-bottom:8px;font-size:30px}p{color:#62768a;line-height:1.6}form{gap:12px;margin:28px 0;display:flex}input,button,a.button{font:inherit;border:1px solid #ccd8df;border-radius:8px;padding:11px 15px}input{flex:1;min-width:0}button,a.button{cursor:pointer;color:#244650;background:#fff;text-decoration:none;display:inline-block}button.primary{color:#fff;background:#087f91;border-color:#087f91}button:disabled{opacity:.5;cursor:wait}.cards{gap:18px;display:grid}.card{background:#fff;border:1px solid #dce3e8;border-radius:12px;padding:24px}.card h2{margin:0 0 8px}.actions{flex-wrap:wrap;gap:9px;margin-top:18px;display:flex}.badge{color:#087f91;float:right;background:#e9f6f4;border-radius:20px;padding:5px 9px;font-size:12px}.error{color:#a52b2b}.notice{background:#e9f1f7;border-radius:8px;padding:14px}#notice{color:#fff;z-index:2;background:#203344;padding:12px;position:sticky;top:0}#notice:empty{display:none}a{color:#087f91}progress{width:100%;margin-top:14px}.project-files{border:1px solid #e0e7ec;border-radius:8px;margin:20px 0;padding:0;list-style:none;overflow:hidden}.project-files li{background:#f8fafb;justify-content:space-between;align-items:center;gap:16px;padding:10px 14px;display:flex}.project-files span{overflow-wrap:anywhere}.remove-file{color:#d52c35;background:0 0;border:0;flex-shrink:0;padding:4px 8px;font-size:26px;line-height:1}.remove-file:hover{color:#a81521;background:#ffe9eb}button.delete-project{color:#bd2530;background:#fff;border-color:#efb9be}button.delete-project:hover{background:#fff0f1}.project-files{max-height:260px;overflow-y:auto}.upload-help{max-width:850px;font-size:12px}.dataset-section{border-top:1px solid #e0e7ec;margin:22px 0;padding-top:12px}.dataset-section h3{font-size:16px}.dataset-card{background:#f8fafb;border:1px solid #dce5e9;border-radius:8px;margin:12px 0;padding:16px}.dataset-card p{margin:6px 0;font-size:13px}.dataset-card details{margin-top:12px;font-size:13px}.dataset-card summary{cursor:pointer;color:#087f91}.dataset-file-list{max-height:200px;line-height:1.8;overflow:auto}.dataset-card strong{overflow-wrap:anywhere}.dataset-create{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;display:grid}.dataset-create label{gap:6px;font-size:13px;display:grid}.dataset-create select{font:inherit;background:#fff;border:1px solid #ccd8df;border-radius:8px;padding:12px}.dataset-create p{grid-column:1/-1;margin:0;font-size:12px}form{flex-wrap:wrap}.dataset-section>.dataset-create>label:first-child{grid-column:1/-1}[hidden]{display:none!important}.project-toolbar{gap:12px;margin:24px 0;display:flex}.project-toolbar input{background:#fff}.project-row{color:#203344;background:#fff;border:1px solid #dce3e8;border-radius:10px;align-items:center;gap:20px;padding:22px 24px;text-decoration:none;display:flex}.project-row:hover{background:#f9fdfd;border-color:#087f91}.project-row:focus-visible{outline-offset:3px;outline:3px solid #087f91}.project-row strong{overflow-wrap:anywhere;flex:1}.project-status{color:#62768a;font-size:13px}.project-row>span:last-child{color:#62768a;font-size:24px}.back-link{margin-bottom:14px;text-decoration:none;display:inline-block}.empty-projects{padding:28px 0}dialog{color:#203344;border:1px solid #dce3e8;border-radius:14px;width:min(480px,100% - 32px);padding:28px}dialog::backdrop{background:#142d4055}#create-form{gap:18px;margin:0;display:grid}#create-form h2{margin:0}#create-form label{gap:7px;display:grid}#create-form .actions{justify-content:flex-end;margin:0}#create-error{color:#a52b2b;margin:0}#create-error:empty{display:none}@media (width<=600px){.project-toolbar{flex-wrap:wrap}.project-toolbar input{min-width:170px}.project-row{gap:10px;padding:18px 14px}.project-status{text-align:right;max-width:100px}main{padding:0 16px}}.project-list-row{background:#fff;border:1px solid #dce3e8;border-radius:10px;align-items:center;gap:16px;padding-right:20px;display:flex}.project-list-row .project-row{background:0 0;border:0;flex:1;justify-content:space-between;min-width:0}.project-list-row:has(.project-row:hover){background:#f9fdfd;border-color:#087f91}.project-list-info{gap:8px;min-width:0;display:grid}.project-file-stats{color:#62768a;font-size:13px}.project-list-state{text-align:right;flex-shrink:0;gap:5px;display:grid}.project-part-count{font-size:14px}.project-part-details{gap:10px;font-size:12px;display:flex}.part-ready{color:#087f91}.part-missing{color:#75838e}.project-list-delete{padding:9px 12px;font-size:13px}@media (width<=700px){.project-list-row{gap:6px;padding-right:12px}.project-list-row .project-row{flex-direction:column;align-items:flex-start;gap:14px}.project-list-state{text-align:left}.project-list-state .project-status{text-align:left;max-width:none}.project-part-details{flex-wrap:wrap;gap:7px}}.underlay-upload{flex-wrap:wrap;align-items:center}.underlay-upload select,.alignment-options select{font:inherit;border:1px solid #ccd8df;border-radius:6px;max-width:100%;padding:10px}.underlay-upload label{font-size:13px}.underlay-upload input[type=number]{width:75px}.alignment-dialog{width:min(1400px,96vw);max-width:96vw}.alignment-views{grid-template-columns:1fr 1fr;gap:16px;margin-top:16px;display:grid}.alignment-source,.alignment-target{background:#e8edef;border:1px solid #ccd8df;height:52vh;min-height:250px;position:relative;overflow:hidden}.alignment-views canvas{touch-action:none;width:100%;height:100%;display:block}.alignment-options{gap:12px;display:flex}.alignment-dialog h2{margin-top:0}@media (width<=700px){.alignment-views{grid-template-columns:1fr}.alignment-source,.alignment-target{height:30vh}}.setup-step{border-top:1px solid #dce5e9;margin-top:28px;padding-top:24px;scroll-margin-top:50px}.setup-step h2{align-items:center;gap:12px;display:flex;margin-bottom:18px!important;font-size:20px!important}.step-number{color:#087f91;background:#e5f5f5;border-radius:50%;place-items:center;width:32px;height:32px;font-size:16px;display:inline-grid}.setup-step .dataset-section{border:0;margin:0;padding:0}.setup-step .dataset-section>h3{display:none}.placement-settings{margin:18px 0;font-size:13px}.placement-settings summary{cursor:pointer;color:#087f91}.placement-form{align-items:end;margin:12px 0;display:flex}.placement-form label{flex:1;gap:6px;min-width:110px;display:grid}.placement-form input{width:100%}.floor-form{margin:12px 0;display:flex}.floor-rows{gap:12px;width:100%;display:grid}.floor-row{align-items:end;gap:12px;display:flex}.floor-row>input{flex:1}.floor-row label{gap:5px;font-size:12px;display:grid}.floor-row label input{width:160px}.underlay-floor{background:#f8fafb;border:1px solid #dce5e9;border-radius:8px;margin:18px 0;padding:16px}.underlay-floor h3{margin-top:0;font-size:15px}.underlay-row{border-bottom:1px solid #e1e8ed;flex-wrap:wrap;align-items:center;gap:12px;padding:14px 0;display:flex}.underlay-row strong{overflow-wrap:anywhere;flex:1}.underlay-row>span{color:#62768a;font-size:12px}.underlay-row .placement-settings{width:100%;margin:0}.layer-default{align-items:center;gap:8px;font-size:13px;display:flex}.layer-default input{accent-color:#087f91;flex:none;width:17px;height:17px}.add-row{color:#19763c;background:#effaf2;border-color:#a6d9b9;margin-top:10px}.underlay-upload{border-bottom:1px solid #e1e8ed;margin:14px 0;padding:12px 0}.underlay-upload>input[type=file]{width:240px}.underlay-upload>label{align-items:center;gap:8px;display:flex}.project-actions{margin-bottom:20px}@media (width<=600px){.card{padding:16px}.floor-row{flex-wrap:wrap}.floor-row>input{min-width:130px}.placement-form button,.underlay-upload>input[type=file]{width:100%}}.dataset-file-choice{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:10px;display:flex}.dataset-file-choice p{overflow-wrap:anywhere;flex-basis:100%}.origin-form{background:#f7fafb;border:1px solid #e0e7ec;border-radius:8px;flex-wrap:wrap;align-items:end;gap:12px;width:100%;padding:14px;display:flex}.origin-form>strong,.origin-form>.layer-default{flex-basis:100%}.origin-form>label:not(.layer-default){flex:1;gap:6px;min-width:150px;font-size:13px;display:grid}.origin-form input[type=number]{width:100%}.origin-form input:disabled{color:#667b85;background:#eef2f4}.csv-origin-settings{grid-column:1/-1;width:100%;margin:8px 0}.csv-origin-form{margin:12px 0;display:block}.csv-origin-settings .placement-form{display:flex}.csv-origin-settings summary{font-size:13px}.backup-status{color:#536c7a;margin:24px 0;font-size:13px}.backup-status summary{cursor:pointer;font-weight:600}.backup-status p{max-width:720px;line-height:1.5}.backup-status button{padding:8px 14px;font-size:13px}.ifc-intro{max-width:800px;font-size:14px}.ifc-add{margin:14px 0}.ifc-model-card{background:#f8fafb;border:1px solid #dce5e9;border-radius:10px;margin:14px 0;padding:18px}.ifc-model-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.ifc-model-heading strong{overflow-wrap:anywhere;min-width:0}.ifc-main-badge,.ifc-secondary-badge{white-space:nowrap;border-radius:20px;padding:4px 9px;font-size:12px}.ifc-main-badge{color:#086b60;background:#def2ee;font-weight:600}.ifc-secondary-badge{color:#637583;background:#eaf0f4}.ifc-model-stats{margin:8px 0;font-size:13px}.ifc-model-card .actions{margin-top:12px}.ifc-model-card .actions button{padding:9px 12px;font-size:13px}.ifc-model-card .placement-settings{margin-bottom:0}.ifc-dialog{width:min(580px,100% - 32px)}.ifc-main-options{gap:12px;display:grid}.ifc-main-options label{align-items:flex-start;gap:10px;font-size:14px;display:flex}.ifc-main-options input{accent-color:#087f91;flex:none;margin-top:3px}.ifc-main-options p{margin:0;font-size:12px}.ifc-main-options .error{font-size:13px}.project-detail-card{margin-top:22px;padding:28px}.overview-heading{justify-content:space-between;align-items:center;gap:20px;display:flex}.overview-heading h2{margin:0;font-size:18px}.overview-building{margin:6px 0 0;font-size:13px}.overview-actions{flex-wrap:wrap;gap:8px;display:flex}.overview-actions button,.overview-actions a{padding:10px 14px;font-size:13px}a.button.primary{color:#fff;background:#087f91;border-color:#087f91}.project-total{background:#f3f8f9;border:1px solid #e0ebee;border-radius:10px;grid-template-columns:1fr auto;align-items:center;gap:4px 20px;margin:24px 0 18px;padding:18px 20px;display:grid}.total-label{font-size:14px;font-weight:600}.total-value{letter-spacing:-.6px;font-variant-numeric:tabular-nums;grid-area:1/2/3;font-size:26px}.project-total p{max-width:480px;margin:0;font-size:12px}.content-overview{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.content-summary{color:#203344;border:1px solid #dce5e9;border-radius:10px;flex-direction:column;min-width:0;padding:16px;text-decoration:none;transition:border-color .15s,background .15s;display:flex}.content-summary:hover{background:#f7fbfc;border-color:#087f91}.content-summary:focus-visible{outline-offset:2px;outline:3px solid #087f91}.content-heading{flex-direction:column;align-items:flex-start;gap:9px;margin-bottom:14px;display:flex}.content-heading h3{margin:0;font-size:14px;font-weight:600}.content-state{color:#667681;background:#f0f3f5;border-radius:20px;padding:3px 8px;font-size:11px;font-weight:500}.content-summary.ready .content-state{color:#267454;background:#e8f5ef}.content-summary.attention .content-state{color:#916019;background:#fff3dd}.content-value{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;font-size:16px;line-height:1.4}.content-detail{margin:6px 0 16px;font-size:12px;line-height:1.5}.content-manage{color:#087f91;margin-top:auto;font-size:12px}.overview-floors{color:#62768a;flex-wrap:wrap;align-items:center;gap:8px;margin:18px 0;font-size:12px;display:flex}.overview-floors>span{margin-right:4px}.floor-chip{color:#536b79;background:#f3f6f8;border-radius:6px;padding:5px 9px;text-decoration:none}.project-share{border-top:1px solid #e4ebef;margin-top:22px;padding-top:20px}.share-heading{align-items:center;gap:12px;margin-bottom:8px;font-size:13px;font-weight:600;display:flex}.share-active{color:#267454;font-size:11px;font-weight:400}.share-disabled{color:#8a632e;font-size:11px;font-weight:400}.share-link-row{gap:8px;display:flex}.share-link-row input{color:#526a79;text-overflow:ellipsis;background:#f8fafb;width:100%;font-size:13px}.share-link-row button{white-space:nowrap;font-size:13px}.share-settings{margin-top:12px;font-size:12px}.share-settings summary{cursor:pointer;color:#62768a;display:list-item}.share-settings p{margin:10px 0;font-size:12px}.share-settings .actions{margin:10px 0 0}.share-settings button{padding:8px 12px;font-size:12px}.project-actions:empty{display:none}.project-management{color:#62768a;border-top:1px solid #e0e7ec;margin-top:30px;padding-top:18px;font-size:13px}.project-management summary{cursor:pointer}.project-management button{margin-top:14px;font-size:13px;display:block}.project-edit-form{gap:18px;margin:0;display:grid}.project-edit-form h2{margin:0;font-size:22px}.project-edit-form .edit-intro{margin:0;font-size:13px}.project-edit-form label{gap:7px;font-size:14px;display:grid}.project-edit-form .actions{justify-content:flex-end;margin:0}.edit-error{color:#a52b2b;margin:0;font-size:13px}.edit-error:empty{display:none}@media (width<=950px){.content-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.content-heading{flex-flow:wrap;justify-content:space-between;align-items:center}}@media (width<=600px){.project-detail-card{padding:18px}.overview-heading{flex-direction:column;align-items:flex-start;gap:14px}.project-total{grid-template-columns:1fr;padding:14px}.total-value{grid-area:2/1}.project-total p{grid-row:3}.content-overview{gap:8px}.content-summary{padding:12px}.content-heading{flex-direction:column;align-items:flex-start}.content-value{font-size:14px}.share-link-row{flex-wrap:wrap}.share-link-row input{flex-basis:100%}h1{overflow-wrap:anywhere;font-size:26px}}.floor-review-dialog{width:min(820px,100% - 32px);max-height:90vh;overflow:auto}.floor-review-modes{gap:12px;display:grid}.floor-review-modes label,.floor-review-select{align-items:center;gap:10px!important;display:flex!important}.floor-review-modes input,.floor-review-select input{accent-color:#087f91;flex:none;width:17px;height:17px}.floor-review-list{gap:12px;display:grid}.floor-review-list[hidden]{display:none}.floor-review-row{background:#f8fafb;border:1px solid #dae5e9;border-radius:9px;padding:16px}.floor-review-state{color:#62768a;margin:8px 0;font-size:12px;display:block}.floor-review-comparison{white-space:pre-line;margin:10px 0;font-size:13px;line-height:1.65}.floor-review-fields{grid-template-columns:2fr 1fr;gap:12px;display:grid}.floor-review-fields input{width:100%;min-width:0}.floor-review-fields input:disabled{color:#75838e;background:#edf2f4}.floor-review-row .upload-help{margin:8px 0;font-size:12px}@media (width<=600px){.floor-review-fields{grid-template-columns:1fr}.floor-review-dialog{padding:18px}}.underlay-upload.upload-pending{background:#fff7d6;border:1px solid #ead18a;border-radius:8px;padding:12px}.underlay-upload.upload-running{background:#f0f7fa;border:1px solid #cedfe7;border-radius:8px;padding:12px}.underlay-upload .underlay-upload-hint{color:#76551a;flex-basis:100%;margin:0;font-size:12px;line-height:1.4}.underlay-upload .underlay-upload-hint[hidden]{display:none}.underlay-upload.upload-running .underlay-upload-hint{color:#536c7a}.cloud-add-form{flex-wrap:wrap;gap:12px;margin:18px 0;display:flex}.cloud-add-form input{flex:1;min-width:180px}.cloud-model-card{background:#f8fafb;border:1px solid #dce5e9;border-radius:10px;margin:14px 0;padding:18px}.cloud-model-card .actions button{padding:9px 12px;font-size:13px}.cloud-model-card>.layer-default{margin-top:16px}.cloud-file-list{color:#62768a;margin-top:12px;font-size:12px}.cloud-file-list summary{cursor:pointer}.cloud-file-list p{margin:8px 0;font-size:12px}.cloud-selection{border-top:1px solid #dce5e9;margin-top:8px;padding-top:8px}.multi-cloud .cloud-selection label{overflow-wrap:anywhere;align-items:center;gap:8px;font-size:12px;display:flex}.multi-cloud .cloud-selection input{flex:none;width:14px;margin:0}.model-alignment{max-height:95vh;overflow:auto}.model-alignment h3{margin:0 0 7px;font-size:14px}.model-alignment .alignment-source,.model-alignment .alignment-target{height:39vh;min-height:240px}.alignment-choices{grid-template-columns:1fr 1fr;gap:16px;margin:18px 0;display:grid}.alignment-choices label{gap:6px;font-weight:600;display:grid}.alignment-choices select{width:100%;font:inherit;background:#fff;border:1px solid #ccd8df;border-radius:8px;padding:10px}.model-alignment .alignment-options{flex-wrap:wrap;align-items:center;margin-top:14px}.height-option{align-items:center;gap:10px;font-size:13px;display:flex}.height-offset{width:130px}.alignment-guidance{margin:8px 0;font-size:12px}.scale-locked{color:#087f91;font-size:13px}.alignment-coordinates{margin-top:14px;font-size:13px}.alignment-coordinates summary{cursor:pointer;color:#087f91}.coordinate-fields{grid-template-columns:1fr 1fr;gap:10px;display:grid}.coordinate-fields label{align-items:center;gap:8px;display:flex}.coordinate-fields input{width:110px;padding:8px}.alignment-result{background:#edf5f5;border-radius:8px;padding:10px;font-size:13px}.alignment-result:empty{display:none}.alignment-result.alignment-warning{color:#73550e;background:#fff4d4}.model-alignment .actions button{padding:9px 12px;font-size:13px}.model-alignment .alignment-status{min-height:22px;font-size:13px}@media (width<=700px){.alignment-choices,.coordinate-fields{grid-template-columns:1fr}.model-alignment .alignment-source,.model-alignment .alignment-target{height:30vh}}.model-alignment .alignment-views{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.model-alignment .alignment-views section{min-width:0}@media (width<=700px){.model-alignment .alignment-views{grid-template-columns:minmax(0,1fr)}}.login{background:#fff;border:1px solid #d8e3e9;border-radius:14px;max-width:420px;margin:10vh auto;padding:32px}.login form{gap:18px;display:grid}.login label{gap:8px;display:grid}.login h1{font-size:24px}.login input{box-sizing:border-box;width:100%;min-width:0}#login-error{color:#ad2434;margin:0}.admin-session{justify-content:flex-end;margin:12px 24px;display:flex}
