:root{color-scheme:light;--bg:#f5f7fa;--panel:#fff;--panel-strong:#f8fafc;--panel-muted:#f3f5f8;--line:#e6eaf0;--line-strong:#d3dae3;--text:#16202b;--text-soft:#344150;--muted:#677488;--faint:#94a0b0;--accent:#0f766e;--accent-dark:#0c5e57;--accent-strong:#0a514b;--accent-soft:#e8f4f1;--accent-softer:#f1f8f6;--accent-ring:rgba(15,118,110,.16);--on-accent:#fff;--brand-grad:linear-gradient(135deg,#14857c,#0c5e57);--amber:#a15c08;--amber-soft:#fff4e5;--danger:#c0392b;--danger-soft:#fdeeec;--success:#0f766e;--sidebar-bg:#fff;--sidebar-text:#4a5666;--sidebar-active-bg:var(--accent-soft);--sidebar-active-text:var(--accent-strong);--sidebar-hover:#f1f4f8;--r-xs:6px;--r-sm:8px;--r:10px;--r-lg:14px;--r-xl:18px;--r-pill:999px;--shadow-xs:0 1px 2px rgba(16,32,45,.05);--shadow-sm:0 2px 6px rgba(16,32,45,.06);--shadow-md:0 6px 18px rgba(16,32,45,.08);--shadow-lg:0 18px 44px rgba(16,32,45,.12);--shadow:var(--shadow-lg);--ease:cubic-bezier(.22,.61,.36,1);--t-fast:.14s var(--ease);--t:.2s var(--ease)}.main--photos{min-width:0}.visually-hidden-input{height:1px;overflow:hidden;position:absolute;width:1px;clip:rect(0 0 0 0);white-space:nowrap}.photo-management-layout{align-items:start;display:grid;gap:16px;grid-template-columns:minmax(260px,320px) minmax(0,1fr) minmax(260px,320px)}.photo-workspace{display:grid;gap:16px}.photo-load-error{align-items:center;background:var(--danger-soft);border-color:#f2c4bd;color:#8a2b1c;display:flex;flex-wrap:wrap;gap:12px}.photo-load-error span{color:#8a2b1c;flex:1;font-weight:700;min-width:min(480px,100%);overflow-wrap:anywhere}.photo-detail-panel,.photo-sidebar{display:flex;flex-direction:column;gap:14px;max-height:calc(100vh - 170px);overflow:auto}.photo-cad-stage{min-width:0}.photo-command-panel{align-items:end;display:grid;gap:14px;grid-template-columns:auto minmax(0,1fr)}.photo-upload-stack{display:grid;gap:10px;min-width:0}.photo-upload-zone{background:#f8fafc;border:1px dashed var(--line-strong);border-radius:8px;-moz-column-gap:12px;column-gap:12px;cursor:pointer;display:grid;grid-template-areas:"icon title" "icon meta";grid-template-columns:auto minmax(0,1fr);min-height:96px;padding:16px;row-gap:3px;transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.photo-upload-zone.active,.photo-upload-zone:hover{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 0 0 3px #0f766e1a}.photo-upload-zone.busy{opacity:.78;pointer-events:none}.photo-upload-icon{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px var(--line);color:var(--accent);display:grid;grid-area:icon;height:44px;place-items:center;width:44px}.photo-upload-zone strong{align-self:end;color:var(--text);font-size:16px;grid-area:title;line-height:1.2;min-width:0}.photo-upload-zone small{color:var(--muted);grid-area:meta;min-width:0}.photo-folder-controls{align-items:end;display:grid;gap:8px;grid-template-columns:minmax(150px,220px) minmax(240px,340px) minmax(240px,1fr);min-width:0}.photo-folder-create{align-items:end;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto}.photo-stat-grid{align-items:stretch;display:flex;flex-wrap:wrap;gap:8px}.photo-stat-card{align-items:baseline;background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--text);-moz-column-gap:8px;column-gap:8px;cursor:pointer;display:grid;grid-template-columns:auto auto;min-width:0;padding:8px 10px;row-gap:2px;text-align:left;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.photo-stat-card:hover{border-color:var(--line-strong);transform:translateY(-1px)}.photo-stat-card.active{background:#eff6ff;border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1f}.photo-stat-card small,.photo-stat-card span{color:var(--muted);font-size:11px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-stat-card strong{color:var(--text);font-size:20px;grid-column:2;grid-row:1/span 2;line-height:1}.photo-stat-card small{grid-column:1}.photo-guidance-panel{padding-block:14px}.photo-drawing-target-select{min-width:0}.photo-tabs{background:var(--panel-strong);border:1px solid var(--line);border-radius:var(--r);display:inline-flex;gap:3px;margin-bottom:16px;padding:3px}.photo-tabs button{align-items:center;background:transparent;border:0;border-radius:var(--r-xs);color:var(--muted);cursor:pointer;display:inline-flex;font-weight:600;gap:7px;min-height:36px;padding:8px 14px;transition:background var(--t-fast),color var(--t-fast),box-shadow var(--t-fast)}.photo-tabs button:hover{color:var(--text)}.photo-tabs button em{align-items:center;background:#e7eaef;border-radius:var(--r-pill);color:var(--muted);display:inline-flex;font-size:12px;font-style:normal;height:22px;justify-content:center;min-width:24px;padding:0 7px}.photo-tabs button.active{background:var(--accent);box-shadow:0 1px 3px #0c5e5747;color:#fff;font-weight:700}.photo-tabs button.active em{background:#ffffff2e;color:#fff}.photo-list-view{display:grid;gap:16px}.photo-filter-panel{display:grid;gap:14px}.photo-filter-bar{align-items:end;display:grid;gap:10px;grid-template-columns:minmax(220px,1.35fr) minmax(160px,.85fr) minmax(170px,.85fr) minmax(220px,1.15fr) repeat(2,minmax(130px,.65fr)) auto}.photo-search-field{min-width:0}.photo-view-control{align-items:end;color:var(--muted);display:grid;font-size:12px;font-weight:800;gap:7px}.input-with-icon{display:block;position:relative}.input-with-icon svg{color:var(--muted);left:10px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.field-label .input-with-icon input{padding-left:34px}.photo-timeline{border-top:1px solid var(--line);display:grid;gap:9px;min-width:0;padding-top:12px}.photo-timeline-heading{align-items:center;color:var(--muted);display:inline-flex;font-size:12px;font-weight:800;gap:6px}.photo-timeline-track{display:flex;gap:8px;min-width:0;overflow-x:auto;padding-bottom:2px}.photo-timeline-track button{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--text);cursor:pointer;display:grid;gap:2px;min-width:86px;padding:9px 10px;text-align:left}.photo-timeline-track button.active{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 0 0 2px #0f766e1f}.photo-timeline-track strong{font-size:14px}.photo-timeline-track small,.photo-timeline-track span{color:var(--muted);font-size:11px;white-space:nowrap}.photo-grid-panel{min-width:0}.photo-grid-header{align-items:flex-start;display:flex;gap:12px;justify-content:space-between;margin-bottom:14px}.photo-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.photo-grid-card{background:#fff;border:1px solid var(--line);border-radius:8px;cursor:pointer;display:grid;gap:10px;grid-template-rows:auto 1fr auto;min-width:0;padding:10px;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.photo-grid-card:hover{border-color:var(--line-strong);transform:translateY(-1px)}.photo-grid-card.is-placed{box-shadow:inset 4px 0 0 var(--accent)}.photo-grid-card.is-unplaced{box-shadow:inset 4px 0 #d97706}.photo-grid-card.is-unlinked{box-shadow:inset 4px 0 #94a3b8}.photo-grid-card.active{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1f}.photo-grid-preview{aspect-ratio:4/3;background:#f3f4f6;border:0;border-radius:6px;cursor:zoom-in;display:block;overflow:hidden;padding:0;position:relative;width:100%}.photo-grid-preview img{display:block;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.photo-dialog-grid button>svg,.photo-grid-preview>svg,.photo-group-card-preview>svg,.photo-request-photo>svg,.photo-table-thumb>svg{color:var(--muted);display:block;margin:auto}.photo-grid-preview span{background:#141b24d1;border-radius:999px;bottom:7px;color:#fff;font-size:11px;font-weight:800;padding:4px 8px;position:absolute;right:7px}.photo-grid-preview .photo-status-pill{left:7px;position:absolute;top:7px}.photo-grid-body{display:grid;gap:6px;min-width:0}.photo-grid-body small,.photo-grid-body strong{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-grid-body small{color:var(--muted)}.photo-date-line{align-items:center;display:inline-flex!important;gap:5px}.photo-status-pill{align-items:center;border-radius:999px;display:inline-flex;font-size:11px;font-style:normal;font-weight:900;justify-content:center;line-height:1;max-width:100%;padding:4px 8px;white-space:nowrap;width:-moz-fit-content;width:fit-content}.photo-status-pill.is-placed{background:#dff7ef;color:#047857}.photo-status-pill.is-unplaced{background:var(--amber-soft);color:var(--amber)}.photo-status-pill.is-unlinked{background:#eef2f7;color:#475467}.photo-status-pill.is-open{background:#fff7ed;color:#c2410c}.photo-status-pill.is-fulfilled{background:#dff7ef;color:#047857}.photo-grid-actions{display:flex;flex-wrap:wrap;gap:8px}.photo-card-memo{color:var(--muted);display:-webkit-box;font-size:12px;line-height:1.45;margin:0;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.photo-tag-list{display:flex;flex-wrap:wrap;gap:5px;min-width:0}.photo-tag-list em{background:#eef6f5;border-radius:999px;color:var(--accent);font-size:11px;font-style:normal;font-weight:800;padding:3px 7px}.photo-tag-list--inline{max-width:240px}.photo-metadata-editor{border-top:1px solid var(--line);display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));padding-top:10px}.photo-metadata-actions,.photo-metadata-editor .field-label:nth-child(3),.photo-metadata-editor .field-label:nth-child(4){grid-column:1/-1}.photo-metadata-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.photo-table-wrap{overflow-x:auto}.photo-table{min-width:980px}.photo-table tbody tr.selected{background:#f0fdfa}.photo-table-name{align-items:center;display:flex;gap:10px;min-width:250px}.photo-table-name div{display:grid;gap:3px;min-width:0}.photo-table-memo,.photo-table-name small,.photo-table-name strong{overflow-wrap:anywhere}.photo-table-thumb{aspect-ratio:4/3;background:#f8fafc;border:1px solid var(--line);border-radius:6px;cursor:zoom-in;display:grid;flex:0 0 auto;overflow:hidden;padding:0;place-items:center;width:72px}.photo-table-thumb img{height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.photo-table-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.photo-table-edit-row td{background:#f8fafc}.photo-metadata-editor--table{align-items:end;grid-template-columns:minmax(160px,.8fr) minmax(130px,.65fr) minmax(220px,1fr) minmax(240px,1.2fr) auto}.photo-metadata-editor--table .field-label,.photo-metadata-editor--table .photo-metadata-actions{grid-column:auto}.photo-drawing-view{display:grid;gap:16px}.photo-drawing-toolbar{align-items:end;display:grid;gap:14px;grid-template-columns:minmax(320px,1fr) auto}.photo-drawing-toolbar-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.photo-request-view{display:grid;gap:16px}.photo-request-toolbar .section-heading{align-items:center}.photo-request-filter{background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:inline-flex;gap:4px;padding:4px}.photo-request-filter button{background:transparent;border:0;border-radius:6px;color:#475467;cursor:pointer;font-size:12px;font-weight:900;padding:7px 11px}.photo-request-filter button.active{background:var(--accent);color:#fff}.photo-request-grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.photo-request-card{background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:inset 4px 0 #f97316;display:grid;gap:12px;min-width:0;padding:14px}.photo-request-card.is-fulfilled{box-shadow:inset 4px 0 0 var(--accent)}.photo-request-card header{display:grid;gap:7px;justify-items:start;min-width:0}.photo-request-card header strong{color:var(--text);display:block;font-size:14px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-request-card p{color:#111827;font-size:14px;font-weight:800;line-height:1.55;margin:0}.photo-request-meta{display:flex;flex-wrap:wrap;gap:7px}.photo-request-meta span{align-items:center;background:#f1f5f9;border-radius:999px;color:var(--muted);display:inline-flex;font-size:12px;font-weight:800;gap:5px;padding:5px 8px}.photo-request-photo{align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;gap:10px;grid-template-columns:78px minmax(0,1fr);padding:8px}.photo-request-photo img{background:#e5e7eb;border-radius:6px;height:58px;-o-object-fit:cover;object-fit:cover;width:78px}.photo-request-photo div{display:grid;gap:3px;min-width:0}.photo-request-photo span,.photo-request-photo strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-request-photo span{color:var(--muted);font-size:12px}.photo-request-actions{display:flex;flex-wrap:wrap;gap:8px}.drawing-source-field{min-width:0}.drawing-source-picker{min-width:0;position:relative}.drawing-source-trigger{align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--text);cursor:pointer;display:grid;font:inherit;gap:12px;grid-template-columns:minmax(0,1fr) auto;min-height:38px;padding:8px 10px;text-align:left;width:100%}.drawing-source-trigger span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawing-source-count,.drawing-source-trigger strong{background:#dff7ef;border-radius:999px;color:#047857;display:inline-grid;font-size:12px;font-weight:900;line-height:1;min-height:24px;min-width:44px;place-items:center}.drawing-source-menu{background:#141b24eb;border:1px solid rgba(15,23,42,.18);border-radius:8px;box-shadow:0 18px 36px #0f172a38;display:grid;left:0;max-height:min(620px,72vh);overflow:auto;padding:6px;position:absolute;right:0;top:calc(100% + 6px);z-index:50}.drawing-source-menu button{align-items:center;background:transparent;border:0;border-radius:6px;color:#f8fafc;cursor:pointer;display:grid;font:inherit;font-size:13px;font-weight:750;gap:14px;grid-template-columns:minmax(0,1fr) auto;padding:8px 10px;text-align:left;width:100%}.drawing-source-menu button.active,.drawing-source-menu button:hover{background:#ffffff1f}.drawing-source-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drawing-source-count{background:#2563eb;color:#fff}.drawing-source-count.empty{background:#ffffff21;color:#cbd5e1}.photo-drawing-stage{min-width:0}.photo-drawing-stage .jwcad-source-viewer{grid-template-columns:minmax(240px,300px) minmax(0,1fr);min-height:max(760px,calc(100vh - 260px))}.photo-drawing-stage .jwcad-layer-panel{max-height:max(760px,calc(100vh - 260px))}.photo-drawing-stage .jwcad-three-host{height:max(720px,calc(100vh - 340px));min-height:680px}.photo-stage-header{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:12px}.photo-card-button span,.photo-stage-header div{min-width:0}.photo-stage-header small{color:var(--muted);display:block;margin-top:3px}.photo-stage-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.photo-legend-chip{align-items:center;background:#fff;border:1px solid var(--line);border-radius:999px;color:var(--muted);display:inline-flex;font-size:12px;font-weight:800;gap:5px;padding:6px 9px}.field-label{color:var(--text-soft);display:grid;font-size:12px;font-weight:600;gap:6px;letter-spacing:.01em}.field-label input,.field-label select,.field-label textarea{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-sm);color:var(--text);font:inherit;min-height:40px;padding:9px 11px;transition:border-color var(--t-fast),box-shadow var(--t-fast);width:100%}.field-label input::-moz-placeholder,.field-label textarea::-moz-placeholder{color:var(--faint)}.field-label input::placeholder,.field-label textarea::placeholder{color:var(--faint)}.field-label input:hover,.field-label select:hover,.field-label textarea:hover{border-color:var(--muted)}.field-label input:focus,.field-label select:focus,.field-label textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring);outline:none}.field-label textarea{line-height:1.55;min-height:108px;resize:vertical}.photo-filter-grid{display:grid;gap:8px;grid-template-columns:1fr 1fr}.photo-card-list{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.photo-card-button{background:#fff;border:1px solid var(--line);border-radius:8px;cursor:pointer;display:grid;gap:8px;padding:8px;text-align:left;width:100%}.photo-card-button.active{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1f}.photo-card-button.placing{background:var(--accent-soft);border-color:var(--accent)}.photo-card-thumb{aspect-ratio:4/3;background:#f3f4f6;border-radius:6px;display:block;overflow:hidden;position:relative;width:100%}.photo-card-thumb img{display:block;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.photo-card-thumb em{background:#141b24d1;border-radius:999px;bottom:6px;color:#fff;font-size:10px;font-style:normal;font-weight:800;padding:3px 7px;position:absolute;right:6px}.photo-card-body{display:grid;gap:2px}.photo-card-button small,.photo-card-button strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-card-button small{color:var(--muted);margin-top:2px}.photo-cad-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.photo-cad-chips em,.photo-link-row small{align-items:center;background:#eef2ff;border-radius:999px;color:#3730a3;display:inline-flex;font-size:11px;font-style:normal;gap:4px;line-height:1.2;max-width:100%;padding:3px 7px}.photo-cad-chips em{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-detail-image{background:#f3f4f6;max-height:220px;-o-object-fit:cover;object-fit:cover;width:100%}.photo-detail-image-button{background:#f3f4f6;border:0;border-radius:8px;cursor:zoom-in;display:block;overflow:hidden;padding:0;position:relative}.photo-detail-image-button span{align-items:center;background:#141b24d1;border-radius:999px;bottom:8px;color:#fff;display:inline-flex;font-size:12px;font-weight:800;gap:5px;padding:5px 8px;position:absolute;right:8px}.photo-detail-panel h3{font-size:16px;line-height:1.35;margin:0;overflow-wrap:anywhere}.photo-detail-actions{display:flex;flex-wrap:wrap;gap:8px}.photo-link-list{display:grid;gap:8px}.photo-link-row{border:1px solid var(--line);border-radius:8px;display:grid;gap:3px;padding:9px}.photo-link-row span{color:var(--muted);font-size:12px}.photo-empty-state{background:#f8fafc;border:1px dashed var(--line);border-radius:8px;color:var(--muted);display:grid;gap:10px;min-height:260px;padding:34px 18px;place-items:center;text-align:center}.photo-empty-state strong{color:var(--text);font-size:16px}.photo-empty-state span{max-width:420px}.photo-lightbox{background:#0c1118bd;display:grid;inset:0;padding:24px;place-items:center;position:fixed;z-index:1000}.photo-lightbox-panel{background:#fff;border-radius:8px;box-shadow:var(--shadow);display:grid;grid-template-rows:minmax(0,1fr) auto;max-height:min(860px,calc(100vh - 48px));overflow:hidden;position:relative;width:min(980px,100%)}.photo-lightbox-panel img{background:#111827;height:100%;max-height:calc(100vh - 150px);-o-object-fit:contain;object-fit:contain;width:100%}.photo-lightbox-loading{color:var(--muted);display:grid;font-weight:800;gap:10px;height:min(70vh,640px);place-items:center;width:min(78vw,980px)}.photo-lightbox-panel footer{align-items:center;border-top:1px solid var(--line);display:flex;gap:16px;justify-content:space-between;padding:12px 14px}.photo-lightbox-panel footer div{display:grid;gap:3px;min-width:0}.photo-lightbox-placement-actions{justify-items:end}.photo-lightbox-placement-actions small{text-align:right}.photo-lightbox-panel strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-lightbox-panel small,.photo-lightbox-panel span{color:var(--muted)}.photo-lightbox-close{background:#ffffffe6;border:0;border-radius:999px;color:var(--text);cursor:pointer;display:grid;height:36px;place-items:center;position:absolute;right:10px;top:10px;width:36px;z-index:1}.photo-group-panel{background:#fff;border-radius:8px;box-shadow:var(--shadow);display:grid;grid-template-rows:auto minmax(0,1fr);max-height:min(760px,calc(100vh - 48px));overflow:hidden;position:relative;width:min(920px,100%)}.photo-group-panel header{align-items:center;border-bottom:1px solid var(--line);display:flex;gap:16px;justify-content:space-between;padding:16px 18px}.photo-group-panel header div{display:grid;gap:4px;min-width:0}.photo-group-panel header span{color:var(--muted);font-size:13px}.photo-group-grid{background:#f8fafc;display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));overflow:auto;padding:16px}.photo-group-card{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--text);display:grid;gap:9px;min-width:0;padding:8px;text-align:left}.photo-group-card:hover{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1f}.photo-group-card-preview{background:transparent;border:0;color:inherit;cursor:zoom-in;display:grid;gap:9px;min-width:0;padding:0;text-align:left}.photo-group-card-preview img{aspect-ratio:4/3;background:#eef2f7;border-radius:6px;-o-object-fit:cover;object-fit:cover;width:100%}.photo-group-card-preview span{display:grid;gap:3px;min-width:0}.photo-group-card small,.photo-group-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-group-card small{color:var(--muted)}.photo-placement-delete{justify-content:center;width:100%}.photo-dialog-backdrop{background:#0c11189e;display:grid;inset:0;padding:24px;place-items:center;position:fixed;z-index:1000}.photo-dialog-panel{background:#fff;border-radius:8px;box-shadow:var(--shadow);display:grid;grid-template-rows:auto minmax(0,1fr) auto;max-height:min(820px,calc(100vh - 48px));overflow:hidden;position:relative;width:min(900px,100%)}.photo-dialog-panel--narrow{width:min(560px,100%)}.photo-dialog-panel footer,.photo-dialog-panel header{align-items:center;display:flex;gap:10px;padding:14px 16px}.photo-dialog-panel header{border-bottom:1px solid var(--line);justify-content:space-between}.photo-dialog-panel header div{display:grid;gap:3px;min-width:0}.photo-dialog-panel header strong{font-size:16px}.photo-dialog-panel header span{color:var(--muted);font-size:12px}.photo-dialog-panel footer{background:#f8fafc;border-top:1px solid var(--line);justify-content:flex-end}.photo-dialog-body{display:grid;gap:14px;overflow:auto;padding:16px}.photo-dialog-selected{align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;gap:12px;grid-template-columns:96px minmax(0,1fr);padding:10px}.photo-dialog-selected img{background:#f3f4f6;border-radius:6px;height:72px;-o-object-fit:cover;object-fit:cover;width:96px}.photo-dialog-selected div{display:grid;gap:4px;justify-items:start;min-width:0}.photo-dialog-selected span,.photo-dialog-selected strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-dialog-selected span{color:var(--muted);font-size:12px}.photo-dialog-links{display:flex;flex-wrap:wrap;gap:6px}.photo-dialog-links span,.photo-dialog-location{align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:8px;color:var(--muted);display:inline-flex;font-size:12px;font-weight:800;gap:6px;padding:8px 10px}.photo-dialog-location{color:var(--text);justify-content:flex-start;width:100%}.photo-dialog-location div{display:grid;gap:2px;min-width:0}.photo-dialog-location span,.photo-dialog-location strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-dialog-location span{color:var(--muted);font-size:12px}.photo-dialog-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));max-height:430px;overflow:auto}.photo-dialog-grid button{background:#fff;border:1px solid var(--line);border-radius:8px;cursor:pointer;display:grid;gap:7px;min-width:0;padding:7px;text-align:left}.photo-dialog-grid button:hover{border-color:var(--line-strong)}.photo-dialog-grid button.active{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 0 0 2px #0f766e24}.photo-dialog-grid img{aspect-ratio:4/3;background:#f3f4f6;border-radius:6px;-o-object-fit:cover;object-fit:cover;width:100%}.photo-dialog-grid span{color:var(--text);font-size:12px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-dialog-grid .photo-status-pill{justify-self:start}@media(max-width:1180px){.photo-command-panel{grid-template-columns:1fr}.photo-folder-controls{grid-template-columns:repeat(2,minmax(0,1fr))}.photo-management-layout{grid-template-columns:1fr}.photo-detail-panel,.photo-sidebar{max-height:none}.photo-card-list{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.photo-drawing-toolbar,.photo-filter-bar{grid-template-columns:1fr}.photo-drawing-toolbar-actions{justify-content:flex-start}.photo-drawing-stage .jwcad-source-viewer{grid-template-columns:1fr}}@media(max-width:720px){.photo-grid,.photo-stat-grid{grid-template-columns:1fr}.photo-stat-grid{display:grid}.photo-folder-controls,.photo-folder-create{grid-template-columns:1fr}.photo-grid-header,.photo-lightbox-panel footer,.photo-stage-header{align-items:flex-start;flex-direction:column}.photo-dialog-panel footer,.photo-dialog-panel header{align-items:stretch;flex-direction:column}.photo-dialog-panel footer .button{justify-content:center;width:100%}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Noto Sans JP,Meiryo,sans-serif;font-feature-settings:"palt" 1;letter-spacing:.01em;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}a{color:var(--accent-dark);text-decoration:none;transition:color var(--t-fast)}a:hover{color:var(--accent-strong)}:focus-visible{border-radius:4px;outline:2px solid var(--accent);outline-offset:2px}::-moz-selection{background:var(--accent-soft);color:var(--accent-strong)}::selection{background:var(--accent-soft);color:var(--accent-strong)}button,input,select,textarea{font:inherit}button{-webkit-tap-highlight-color:transparent}input[type=checkbox],input[type=radio],input[type=range],progress{accent-color:var(--accent)}select{cursor:pointer}.shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh;transition:grid-template-columns var(--t-fast)}.shell--sidebar-collapsed{grid-template-columns:76px minmax(0,1fr)}.sidebar{background:var(--sidebar-bg);border-right:1px solid var(--line);color:var(--sidebar-text);height:100vh;overflow:hidden;padding:20px 16px;position:sticky;top:0}.sidebar-topline{gap:8px;margin-bottom:18px}.brand,.sidebar-topline{align-items:center;display:flex}.brand{color:var(--text);font-size:16px;font-weight:700;gap:11px;letter-spacing:-.01em;min-width:0;text-decoration:none}.brand>span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.brand-mark{background:var(--brand-grad);border-radius:10px;box-shadow:0 2px 8px #0c5e5752;color:#fff;font-size:12px;font-weight:800;height:34px;letter-spacing:.02em;place-items:center;width:34px}.brand-mark,.sidebar-toggle{display:inline-grid;flex:0 0 auto}.sidebar-toggle{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--muted);cursor:pointer;height:34px;margin-left:auto;place-items:center;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast);width:34px}.sidebar-toggle:hover{background:var(--sidebar-hover);color:var(--text)}.shell--sidebar-collapsed .sidebar{padding:20px 12px}.shell--sidebar-collapsed .sidebar-topline{flex-direction:column;justify-content:center}.shell--sidebar-collapsed .brand>span:last-child{display:none}.shell--sidebar-collapsed .sidebar-toggle{margin-left:0}.shell--sidebar-collapsed .nav span,.shell--sidebar-collapsed .sidebar-account span,.shell--sidebar-collapsed .sidebar-project-context{display:none}.shell--sidebar-collapsed .nav a{justify-content:center;padding:8px}.shell--sidebar-collapsed .nav a.router-link-active:before{left:2px}.shell--sidebar-collapsed .sidebar-account{grid-template-columns:1fr;left:12px;right:12px}.shell--sidebar-collapsed .sidebar-account>div{display:none}.shell--sidebar-collapsed .sidebar-account button{width:100%}.nav{display:grid;gap:2px}.sidebar-project-context{background:var(--panel-strong);border:1px solid var(--line);border-radius:var(--r);display:grid;gap:4px;margin-bottom:16px;padding:11px 12px}.sidebar-project-context span{color:var(--faint);font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.sidebar-project-context strong{color:var(--text);font-size:13px;font-weight:700;line-height:1.35;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-account{align-items:center;border-top:1px solid var(--line);bottom:18px;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto;left:16px;padding-top:14px;position:absolute;right:16px}.sidebar-account>div{align-items:center;color:var(--text-soft);display:inline-flex;font-size:12px;font-weight:600;gap:8px;min-width:0}.sidebar-account span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-account button{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--muted);cursor:pointer;display:inline-grid;height:34px;place-items:center;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast);width:34px}.sidebar-account button:hover{background:var(--danger-soft);border-color:#f0c7c1;color:var(--danger)}.nav a{align-items:center;border-radius:var(--r-sm);color:var(--sidebar-text);display:flex;font-size:13.5px;font-weight:600;gap:11px;min-height:40px;padding:8px 12px;position:relative;transition:background var(--t-fast),color var(--t-fast)}.nav a svg{color:var(--faint);transition:color var(--t-fast)}.nav a:hover{background:var(--sidebar-hover);color:var(--text)}.nav a:hover svg{color:var(--muted)}.nav a.router-link-active{background:var(--sidebar-active-bg);color:var(--sidebar-active-text);font-weight:700}.nav a.router-link-active svg{color:var(--accent)}.nav a.router-link-active:before{background:var(--accent);border-radius:0 3px 3px 0;content:"";height:18px;left:0;position:absolute;top:50%;transform:translateY(-50%);width:3px}.main{margin:0;max-width:none;padding:26px clamp(18px,1.7vw,34px);width:100%}.shell-topbar{display:flex;justify-content:flex-end;margin:-8px 0 18px;min-height:36px}.case-user-link,.shell-account-link{align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-pill);box-shadow:var(--shadow-xs);color:var(--text-soft);display:inline-flex;font-size:13px;font-weight:700;gap:8px;max-width:min(360px,100%);min-width:0;padding:7px 12px;text-decoration:none;transition:border-color var(--t-fast),color var(--t-fast),background var(--t-fast)}.case-user-link:hover,.shell-account-link:hover{background:var(--accent-softer);border-color:#bad7d0;color:var(--accent-strong)}.case-user-link span,.shell-account-link span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.main--cad-view{max-width:none}.header{gap:16px;justify-content:space-between;margin-bottom:22px}.header,.header-actions{align-items:center;display:flex}.header-actions{flex-wrap:wrap;gap:10px;justify-content:flex-end}.title{font-size:25px;font-weight:700;letter-spacing:-.02em;line-height:1.25;margin:0}h2.title{font-size:18px;letter-spacing:-.01em}.subtitle{color:var(--muted);line-height:1.55;margin:7px 0 0}.ask-panel,.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-xs);padding:20px}.ask-panel{border-color:#cfe3df;box-shadow:var(--shadow-md)}.stack{display:grid;gap:16px}.row{flex-wrap:wrap;gap:10px}.row,.section-heading{align-items:center;display:flex}.section-heading{gap:12px;justify-content:space-between}.status-chip{align-items:center;background:var(--accent-soft);border-radius:var(--r-pill);color:var(--accent-strong);display:inline-flex;font-size:12px;font-weight:700;letter-spacing:.01em;min-height:26px;padding:4px 11px;white-space:nowrap}.status-chip.warning{background:var(--amber-soft);color:var(--amber)}.status-chip.critical,.status-chip.danger{background:var(--danger-soft);color:var(--danger)}.llm-error{background:var(--danger-soft);border:1px solid #f2c4bd;border-radius:var(--r);color:#8a2b1c;display:grid;gap:6px;line-height:1.55;overflow-wrap:anywhere;padding:13px 14px}.snackbar{align-items:center;background:#0f172af0;border:1px solid rgba(15,23,42,.12);border-radius:8px;bottom:22px;box-shadow:0 18px 38px #0f172a47;color:#fff;display:inline-flex;font-size:14px;font-weight:800;gap:9px;max-width:min(420px,calc(100vw - 32px));padding:12px 14px;position:fixed;right:22px;z-index:1400}.photo-upload-snackbar{align-items:stretch;display:grid;gap:10px;min-width:min(400px,calc(100vw - 32px))}.photo-upload-snackbar.is-success{background:#0d8070f5}.photo-upload-snackbar.is-error{background:#9a3412f5}.photo-upload-snackbar__body{align-items:center;display:flex;gap:10px;min-width:0}.photo-upload-snackbar__body>div{display:grid;gap:2px;min-width:0}.photo-upload-snackbar__body span,.photo-upload-snackbar__body strong{overflow-wrap:anywhere}.photo-upload-snackbar__body span{color:#ffffffc7;font-size:12px;font-weight:700}.photo-upload-snackbar__progress{background:#ffffff3d;border-radius:999px;height:4px;overflow:hidden}.photo-upload-snackbar__progress span{background:#fff;border-radius:inherit;display:block;height:100%;transition:width .22s ease}.snackbar-enter-active,.snackbar-leave-active{transition:opacity .18s ease,transform .18s ease}.snackbar-enter-from,.snackbar-leave-to{opacity:0;transform:translateY(10px)}.input,.textarea{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r-sm);color:var(--text);outline:none;padding:11px 13px;transition:border-color var(--t-fast),box-shadow var(--t-fast);width:100%}.input::-moz-placeholder,.textarea::-moz-placeholder{color:var(--faint)}.input::placeholder,.textarea::placeholder{color:var(--faint)}.input:hover,.textarea:hover{border-color:var(--muted)}.input:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.textarea{line-height:1.6;min-height:106px;resize:vertical}.button,.icon-button{align-items:center;border:0;border-radius:var(--r-sm);cursor:pointer;display:inline-flex;gap:8px;justify-content:center;min-height:40px;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast)}.button{background:var(--accent);box-shadow:0 1px 2px #0c5e573d;color:var(--on-accent);font-weight:700;letter-spacing:.01em;padding:10px 16px}.button:hover{background:var(--accent-dark);box-shadow:0 4px 12px #0c5e5742}.button:active{box-shadow:0 1px 2px #0c5e573d;transform:translateY(1px)}.button.secondary{background:var(--panel);border:1px solid var(--line-strong);box-shadow:var(--shadow-xs);color:var(--text-soft)}.button.secondary:hover{background:var(--panel-muted);border-color:var(--muted);color:var(--text)}.button.danger,.button.secondary.danger{background:var(--danger);border:0;box-shadow:0 1px 2px #a032263d;color:#fff}.button.danger:hover,.button.secondary.danger:hover{background:#a52f23}.button:disabled{box-shadow:none;cursor:not-allowed;opacity:.55;transform:none}.icon-button{background:var(--panel-muted);color:var(--muted);height:38px;width:38px}.icon-button:hover{background:#e4e9f0;color:var(--text)}.table{border-collapse:collapse;font-size:14px;width:100%}.table td,.table th{border-bottom:1px solid var(--line);padding:11px 10px;text-align:left;vertical-align:top}.table th{background:var(--panel-strong);color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.02em}.auth-page{background:radial-gradient(1100px 500px at 50% -8%,var(--accent-softer) 0,transparent 60%),var(--bg);display:grid;min-height:100vh;padding:24px;place-items:center}.auth-panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);display:grid;gap:18px;padding:32px;width:min(480px,100%)}.auth-brand{margin-bottom:0}.auth-form{display:grid;gap:14px}.auth-form .button{font-size:16px;min-height:48px}.auth-message{background:var(--accent-softer);border:1px solid #b9e0d7;border-radius:var(--r);color:var(--accent-strong);font-weight:700;line-height:1.5;margin:0;padding:12px 13px}.auth-links{align-items:center;color:var(--muted);display:flex;flex-wrap:wrap;font-size:13px;gap:12px;justify-content:space-between}.auth-links a,.link-button{color:var(--accent-strong);font-weight:700;text-decoration:none}.auth-links a:hover,.link-button:hover{text-decoration:underline}.link-button{align-items:center;background:transparent;border:0;cursor:pointer;display:inline-flex;gap:6px;padding:0}.link-button:disabled{cursor:not-allowed;opacity:.55}.auth-token-input{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;min-height:132px}.auth-actions{display:flex;flex-wrap:wrap;gap:10px}.admin-layout{align-items:start;display:grid;gap:16px;grid-template-columns:minmax(260px,320px) minmax(260px,320px) minmax(0,1fr)}.admin-layout--projects{grid-template-columns:minmax(0,1fr)}.admin-form-grid{display:grid;gap:10px;grid-template-columns:1fr 1fr}.admin-users-panel{min-width:0}.admin-table small,.admin-table strong{display:block;min-width:0}.admin-table small{color:var(--muted);margin-top:3px}.admin-table select{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--text);min-height:36px;padding:7px 9px}.admin-membership-list{display:flex;flex-wrap:wrap;gap:6px;min-width:0}.admin-membership-editor{align-items:center;display:grid;gap:8px;grid-template-columns:minmax(130px,1fr) minmax(120px,.8fr) auto}.project-members-page,.project-members-panel{margin-top:16px}.user-dialog{max-width:720px}.user-dialog-check{align-self:end;background:#fff;border:1px solid var(--line);border-radius:8px;min-height:40px;padding:8px 10px}.project-member-add,.project-member-manager{display:grid;gap:14px}.project-member-add{background:#f8fafc;border:1px solid var(--line);border-radius:var(--r);padding:14px}.project-member-add h3{color:var(--text);font-size:14px;font-weight:800;margin:0}.project-member-add--inline{background:#fff}.project-member-add-grid{align-items:end;display:grid;gap:10px;grid-template-columns:minmax(240px,1fr) auto}.project-owner-check{background:#fff;border:1px solid var(--line);border-radius:8px;min-height:40px;padding:8px 10px}.project-feature-permission-grid{align-items:center;background:var(--panel-strong);border:1px solid var(--line);border-radius:var(--r);display:grid;gap:8px 12px;grid-template-columns:minmax(120px,1fr) minmax(86px,auto) minmax(86px,auto);max-width:620px;padding:12px}.project-feature-permission-grid--table{background:transparent;border:0;max-width:540px;padding:0}.project-feature-permission-grid strong{color:var(--text);font-size:13px}.project-feature-head{color:var(--muted);font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.project-member-add-button{justify-self:start}.project-member-role-cell{display:grid;gap:8px;min-width:150px}.project-members-table td{vertical-align:top}.account-layout{align-items:stretch;display:grid;gap:16px;grid-template-columns:minmax(280px,460px) minmax(260px,1fr);margin-bottom:16px}.account-profile-panel,.account-projects-panel,.account-summary-panel{min-width:0}.account-form{display:grid;gap:14px}.account-form .button{justify-self:start}.account-stats{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.account-stats div{background:var(--panel-strong);border:1px solid var(--line);border-radius:var(--r);display:grid;gap:4px;padding:14px}.account-stats strong{color:var(--text);font-size:28px;line-height:1}.account-stats span{color:var(--muted);font-size:12px;font-weight:700}.account-project-table{margin-top:16px}.account-project-table td{vertical-align:top}.account-chip-list{display:flex;flex-wrap:wrap;gap:6px;min-width:0}.admin-checkbox-row{align-items:center;color:#394556;display:inline-flex;font-size:13px;font-weight:760;gap:8px}.admin-checkbox-row.compact{font-size:12px}.admin-checkbox-row input{accent-color:var(--accent);height:16px;width:16px}.case-home{background:var(--bg);color:var(--text);min-height:100vh}.case-topbar{-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);background:#ffffffd1;border-bottom:1px solid var(--line);display:grid;gap:16px;grid-template-columns:auto minmax(260px,520px) minmax(160px,1fr);min-height:60px;padding:10px 22px;position:sticky;top:0;z-index:30}.case-brand,.case-topbar{align-items:center;color:var(--text)}.case-brand{display:inline-flex;font-size:17px;font-weight:700;gap:11px;letter-spacing:-.01em;min-width:0;text-decoration:none}.case-search{align-items:center;background:var(--panel-strong);border:1px solid var(--line-strong);border-radius:var(--r-pill);color:var(--muted);display:grid;gap:8px;grid-template-columns:auto minmax(0,1fr);min-height:40px;min-width:0;padding:0 15px;transition:border-color var(--t-fast),box-shadow var(--t-fast),background var(--t-fast)}.case-search:focus-within{background:var(--panel);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-ring)}.case-search input{background:transparent;border:0;color:var(--text);min-width:0;outline:none}.case-search input::-moz-placeholder{color:var(--faint)}.case-search input::placeholder{color:var(--faint)}.case-user{align-items:center;color:var(--text-soft);display:inline-flex;font-size:13px;font-weight:600;gap:10px;justify-content:flex-end;min-width:0}.case-user span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.case-user-link{box-shadow:none}.case-user button{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--muted);cursor:pointer;display:inline-grid;height:36px;place-items:center;transition:background var(--t-fast),color var(--t-fast),border-color var(--t-fast);width:36px}.case-user button:hover{background:var(--danger-soft);border-color:#f0c7c1;color:var(--danger)}.case-layout{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:calc(100vh - 60px)}.case-sidebar{align-content:start;background:var(--sidebar-bg);border-right:1px solid var(--line);color:var(--sidebar-text);display:grid;gap:20px;padding:20px 16px}.case-sidebar section{display:grid;gap:4px;min-width:0}.case-sidebar h2{color:var(--faint);font-size:11px;font-weight:700;letter-spacing:.06em;margin:0 0 6px;text-transform:uppercase}.case-sidebar a,.case-sidebar button{align-items:center;background:transparent;border:0;border-radius:var(--r-sm);color:var(--sidebar-text);cursor:pointer;display:flex;font:inherit;font-size:13px;font-weight:600;min-height:38px;padding:8px 12px;text-align:left;transition:background var(--t-fast),color var(--t-fast);width:100%}.case-sidebar a:hover,.case-sidebar button:hover{background:var(--sidebar-hover);color:var(--text)}.case-sidebar span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.case-main{min-width:0;padding:24px clamp(18px,2vw,34px) 34px}.case-actions{align-items:center;border-bottom:1px solid var(--line);display:flex;gap:10px;justify-content:flex-start;margin-bottom:22px;min-height:44px;padding-bottom:18px}.case-heading{align-items:flex-end;display:flex;gap:16px;justify-content:space-between;margin-bottom:20px}.case-heading h1{font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.2;margin:0}.case-heading p{color:var(--muted);font-weight:500;margin:6px 0 0}.case-editor{margin-bottom:18px}.case-editor-grid{align-items:end;display:grid;gap:10px;grid-template-columns:minmax(160px,.8fr) minmax(240px,1.5fr) minmax(130px,.6fr) auto}.case-grid{align-items:stretch;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.case-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-xs);color:var(--text);cursor:pointer;display:grid;grid-template-rows:auto minmax(128px,1fr);min-width:0;overflow:hidden;position:relative;transition:border-color var(--t),box-shadow var(--t),transform var(--t)}.case-card:hover{border-color:#cfd6df;box-shadow:var(--shadow-md);transform:translateY(-3px)}.case-card.disabled{cursor:default;opacity:.7}.case-card-visual{background:linear-gradient(135deg,var(--accent-softer) 0,var(--accent-soft) 100%);border-bottom:1px solid var(--line);color:var(--accent);display:grid;min-height:104px;place-items:center;position:relative}.case-card.disabled .case-card-visual{background:var(--panel-muted);color:var(--faint)}.case-card-visual span{background:#ffffffe6;border-radius:var(--r-pill);box-shadow:var(--shadow-xs);color:var(--accent-strong);font-size:11px;font-weight:700;padding:4px 10px;position:absolute;right:10px;top:10px}.case-card.disabled .case-card-visual span{color:var(--muted)}.case-card-body{align-content:start;display:grid;gap:6px;min-width:0;padding:16px 16px 52px;text-align:left}.case-card-body h2,.case-card-body p,.case-card-body small,.case-company{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.case-card-body h2{color:var(--text);font-size:17px;font-weight:700;letter-spacing:-.01em;line-height:1.4;margin:0}.case-card-body p{color:var(--text-soft);font-weight:500;margin:0}.case-card-body small,.case-company{color:var(--muted);font-size:12px}.case-company{color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.case-card-actions{bottom:12px;display:inline-flex;gap:7px;opacity:0;position:absolute;right:12px;transform:translateY(3px);transition:opacity var(--t-fast),transform var(--t-fast)}.case-card:hover .case-card-actions{opacity:1;transform:none}.case-card-actions .icon-button{background:var(--panel);border:1px solid var(--line);height:34px;width:34px}.modal-backdrop{animation:backdrop-in .18s var(--ease);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a66;display:grid;inset:0;padding:22px;place-items:center;position:fixed;z-index:80}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}.project-dialog{animation:dialog-in .22s var(--ease);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:0 30px 80px #0f172a47;display:grid;grid-template-rows:auto minmax(0,1fr) auto;max-height:min(88vh,860px);overflow:hidden;width:min(980px,100%)}@keyframes dialog-in{0%{opacity:0;transform:translateY(10px) scale(.99)}to{opacity:1;transform:none}}.project-dialog-footer,.project-dialog-header{align-items:center;display:flex;gap:14px;justify-content:space-between;padding:16px 18px}.project-dialog-header{border-bottom:1px solid var(--line)}.project-dialog-header h2{color:var(--text);font-size:20px;line-height:1.25;margin:0}.project-dialog-header p{color:var(--muted);font-size:13px;font-weight:760;margin:4px 0 0}.project-dialog-body{background:var(--panel-strong);display:grid;gap:14px;min-height:0;overflow:auto;padding:18px}.project-dialog-section{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);display:grid;gap:12px;padding:16px}.project-dialog-section h3{color:var(--text);font-size:14px;font-weight:700;letter-spacing:-.005em;line-height:1.3;margin:0}.project-dialog-grid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.project-dialog-grid .span-2{grid-column:span 2}.project-dialog-footer{border-top:1px solid var(--line);justify-content:flex-end}.case-home .loading-panel{grid-template-columns:auto minmax(0,1fr);margin-bottom:16px}.project-overview{align-items:start;display:grid;gap:16px;grid-template-columns:minmax(280px,360px) minmax(360px,1fr)}.project-data-panel,.project-overview>.panel:last-child{grid-column:1/-1}.project-detail-grid{border:1px solid var(--line);border-radius:var(--r);display:grid;gap:0;margin:0;overflow:hidden}.project-detail-grid div{background:var(--panel);border-bottom:1px solid var(--line);display:grid;grid-template-columns:140px minmax(0,1fr);min-height:44px}.project-detail-grid div:last-child{border-bottom:0}.project-detail-grid dd,.project-detail-grid dt{align-items:center;display:flex;margin:0;min-width:0;padding:11px 14px}.project-detail-grid dt{background:var(--panel-strong);color:var(--muted);font-size:13px;font-weight:600}.project-detail-grid dd{color:var(--text);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-data-panel .project-detail-grid dd{overflow-wrap:anywhere;white-space:normal}.project-chip-list{display:flex;flex-wrap:wrap;gap:8px}.project-module-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.project-site-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}.project-site-card{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--text);cursor:pointer;display:grid;gap:3px 10px;grid-template-areas:"icon title" "icon detail";grid-template-columns:auto minmax(0,1fr);min-height:76px;min-width:0;padding:12px 38px 12px 12px;position:relative;text-align:left;transition:border-color .16s ease,box-shadow .16s ease}.project-site-card:hover{border-color:#9aa6b5}.project-site-card.active{background:var(--accent-soft);border-color:var(--accent);box-shadow:0 0 0 2px #0f766e1f}.project-site-icon{background:#f1f5f9;border-radius:8px;color:#394556;display:inline-grid;grid-area:icon;height:38px;place-items:center;width:38px}.project-site-card strong{align-self:end;color:#101828;grid-area:title}.project-site-card small,.project-site-card strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-site-card small{color:var(--muted);font-size:12px;grid-area:detail}.project-site-check{color:var(--accent-dark);position:absolute;right:12px;top:12px}.project-module-card{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--text);display:grid;gap:3px 10px;grid-template-areas:"icon title" "icon detail";grid-template-columns:auto minmax(0,1fr);min-height:86px;min-width:0;padding:14px;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease}.project-module-card:hover{border-color:#9aa6b5;box-shadow:0 8px 18px #141b241a;transform:translateY(-1px)}.project-module-icon{background:var(--accent-soft);border-radius:8px;color:var(--accent-dark);display:inline-grid;grid-area:icon;height:42px;place-items:center;width:42px}.project-module-card strong{align-self:end;color:#101828;grid-area:title}.project-module-card small,.project-module-card strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-module-card small{color:var(--muted);font-size:12px;grid-area:detail}.project-milestone-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.project-milestone{background:#fff;border:1px solid var(--line);border-radius:8px;display:grid;gap:4px;padding:11px 12px}.project-milestone span,.project-note-grid span{color:var(--muted);font-size:12px;font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-milestone strong,.project-note-grid strong{color:var(--text);font-size:14px}.project-link-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.project-link-grid a{align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;color:#25303d;display:inline-flex;font-size:13px;font-weight:760;gap:8px;min-height:38px;min-width:0;padding:8px 10px}.project-link-grid a:hover{background:#f8fafc;border-color:#9aa6b5}.project-link-grid span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-notice{background:#fff;border:1px solid var(--line);border-radius:8px;display:grid;gap:5px;padding:12px}.project-notice strong{color:var(--text)}.project-notice p{color:#394556;font-size:14px;line-height:1.55;margin:0}.project-notice small{color:var(--muted)}.project-note-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}.project-note-grid div{background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;gap:4px;padding:10px 11px}.muted{color:var(--muted)}.small{font-size:13px}.answer{line-height:1.72;white-space:pre-wrap}.loading-panel{align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-xs);color:var(--text);display:grid;gap:16px;grid-template-columns:auto minmax(180px,320px) minmax(240px,1fr);padding:16px}.loading-orbit{background:var(--accent-soft);border-radius:var(--r);color:var(--accent);display:grid;height:52px;place-items:center;width:52px}.loading-copy{display:grid;gap:4px}.inline-loading,.loading-copy span{color:var(--muted)}.inline-loading{align-items:center;display:inline-flex;gap:8px}.jwcad-progress{display:grid;gap:12px}.progress-heading{align-items:center;display:flex;gap:14px;justify-content:space-between}.progress-heading strong{color:var(--text);font-size:16px}.progress-bar{background:#e7edf3;border-radius:999px;height:10px;overflow:hidden}.progress-bar span{background:linear-gradient(90deg,#0f766e,#38bdf8);border-radius:inherit;display:block;height:100%;transition:width .22s ease}.progress-steps{display:flex;flex-wrap:wrap;gap:7px}.progress-steps span{align-items:center;background:#fff;border:1px solid var(--line);border-radius:999px;color:var(--muted);display:inline-flex;font-size:12px;min-height:26px;padding:3px 9px}.progress-steps span.done{background:var(--accent-soft);border-color:#0f766e47;color:var(--accent-dark)}.progress-steps span.active{background:var(--amber-soft);border-color:#f2b266;color:var(--amber)}.progress-note{color:var(--muted);font-size:12px;line-height:1.45;margin:0}.spin{animation:spin .9s linear infinite}.skeleton-stack{display:grid;gap:8px}.skeleton-stack span{animation:shimmer 1.2s ease-in-out infinite;background:linear-gradient(90deg,#ffffff24,#ffffff57,#ffffff24);background-size:220% 100%;border-radius:999px;display:block;height:10px}.skeleton-stack span:nth-child(2){width:82%}.skeleton-stack span:nth-child(3){width:58%}.evidence-section{margin-top:2px}.citation-grid{display:grid;gap:14px}.citation{background:#fff;border:1px solid var(--line);border-radius:8px;display:grid;gap:10px;padding:14px}.citation-head{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.preview-button{background:#eef2f6;border:0;border-radius:8px;cursor:pointer;overflow:hidden;padding:0;position:relative;text-align:left;width:100%}.preview-shell{animation:shimmer 1.15s ease-in-out infinite;background:linear-gradient(90deg,#eef2f6,#dbe4ee,#eef2f6);background-size:220% 100%;display:block;min-height:154px}.preview-shell.loaded{animation:none;background:#fff}.citation-preview{background:#fff;border:1px solid var(--line);border-radius:8px;display:block;max-height:360px;-o-object-fit:contain;object-fit:contain;-o-object-position:left top;object-position:left top;width:100%}.preview-action{align-items:center;background:#141b24d1;border-radius:999px;bottom:10px;color:#fff;display:inline-flex;font-size:13px;font-weight:700;gap:7px;padding:7px 10px;position:absolute;right:10px}.visual-summary{background:#f0fdfa;border-left:3px solid #0f766e;color:#17202a;line-height:1.58;padding:9px 11px;white-space:pre-wrap}.visual-summary-title{font-weight:750;margin-bottom:4px}.mode-switch,.segmented{align-items:center;background:var(--panel-strong);border:1px solid var(--line);border-radius:var(--r);display:inline-flex;gap:3px;padding:3px}.mode-switch{margin-bottom:16px}.mode-switch button,.segmented button{background:transparent;border:0;border-radius:var(--r-xs);color:var(--muted);cursor:pointer;font-weight:600;min-height:34px;padding:7px 13px;transition:background var(--t-fast),color var(--t-fast),box-shadow var(--t-fast)}.mode-switch button:hover,.segmented button:hover{color:var(--text)}.mode-switch button.active,.segmented button.active{background:var(--accent);box-shadow:0 1px 3px #0c5e5747;color:#fff;font-weight:700}.mode-switch button:disabled{color:#a3acb8;cursor:not-allowed}.site-selector{align-items:end;display:grid;gap:14px;grid-template-columns:minmax(260px,1fr) auto;margin-bottom:14px}.workspace-context{align-items:center;display:flex;gap:14px;justify-content:space-between;margin-bottom:14px}.workspace-context>div:first-child{display:grid;gap:3px}.workspace-context small,.workspace-context span{color:var(--muted)}.workspace-context strong{font-size:17px}.chat-model-selector{display:grid;gap:6px;min-width:min(320px,100%)}.chat-model-selector>span{align-items:center;color:var(--muted);display:inline-flex;font-size:12px;font-weight:800;gap:6px}.chat-model-selector select{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--text);font:inherit;font-weight:720;min-height:38px;padding:8px 10px;width:100%}.chat-model-selector select:focus{border-color:#0f766e;box-shadow:0 0 0 3px #0f766e1f;outline:none}.chat-model-selector small{overflow-wrap:anywhere}.workspace-context-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.main--schedule{min-width:0}.schedule-summary-grid{display:grid;gap:10px;grid-template-columns:repeat(4,minmax(78px,1fr));min-width:min(360px,100%)}.schedule-summary-grid div{background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;gap:3px;padding:9px 11px}.schedule-summary-grid span{color:var(--muted);font-size:12px;font-weight:800}.schedule-summary-grid strong{color:var(--text);font-size:20px;line-height:1}.schedule-toolbar{align-items:end;display:grid;gap:14px;grid-template-columns:minmax(260px,1.1fr) minmax(260px,1fr) auto}.schedule-toolbar-controls{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.schedule-toggle-row{align-items:center;display:flex;flex-wrap:wrap;gap:12px;grid-column:1/-1}.schedule-toggle-row>label:not(.field-label){align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;color:#394556;display:inline-flex;font-size:13px;font-weight:800;gap:7px;min-height:34px;padding:7px 10px}.field-label.compact{align-items:center;display:inline-grid;grid-template-columns:auto minmax(120px,150px)}.field-label.compact select{min-height:34px}.schedule-layout{align-items:stretch;display:grid;gap:16px;grid-template-columns:minmax(0,1fr) minmax(300px,360px)}.schedule-stage{display:grid;gap:14px;grid-template-rows:auto minmax(0,1fr);min-width:0}.schedule-stage-status{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.schedule-network-shell{--schedule-head-height:58px;--schedule-row-height:68px;display:grid;grid-template-columns:minmax(240px,300px) minmax(0,1fr);height:max(680px,calc(100vh - 360px));min-height:560px;width:100%}.schedule-task-list{background:#fffef8;border:1px solid var(--line);border-radius:8px 0 0 8px;height:100%;min-height:0;min-width:0;overflow:auto}.schedule-task-list-head{align-items:center;background:#fffbe6;border-bottom:1px solid var(--line);box-shadow:0 1px #0f172a0a;box-sizing:border-box;display:grid;gap:1px 8px;grid-template-areas:"no title" "no meta";grid-template-columns:42px minmax(0,1fr);height:var(--schedule-head-height);padding:10px 12px;position:sticky;top:0;z-index:2}.schedule-task-list-head span{color:var(--muted);font-size:12px;font-weight:900;grid-area:no}.schedule-task-list-head strong{color:var(--text);font-size:13px;grid-area:title}.schedule-task-list-head small{color:var(--muted);font-size:11px;font-weight:800;grid-area:meta}.schedule-task-list button{align-content:center;background:transparent;border:0;border-bottom:1px solid #ece7c8;box-sizing:border-box;color:var(--text);cursor:pointer;display:grid;gap:2px 8px;grid-template-areas:"no title cp" "no meta cp";grid-template-columns:42px minmax(0,1fr) auto;height:var(--schedule-row-height);min-height:var(--schedule-row-height);padding:9px 10px 9px 12px;position:relative;text-align:left;width:100%}.schedule-task-list button:hover{background:#fff7cc}.schedule-task-list button.active{background:#eaf2ff;box-shadow:inset 4px 0 #2563eb}.schedule-task-list button.critical{background:#fff4f1}.schedule-task-list button.critical.active{background:#fee4e2}.schedule-task-list-no{background:#f1f5f9;border-radius:999px;color:#475467;display:inline-grid;font-size:12px;font-weight:900;grid-area:no;height:28px;place-items:center;width:28px}.schedule-task-list strong{color:#111827;font-size:var(--schedule-title-font-size);grid-area:title;line-height:1.25}.schedule-task-list small,.schedule-task-list strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-task-list small{color:var(--muted);font-size:var(--schedule-meta-font-size);font-weight:760;grid-area:meta}.schedule-task-list em{align-self:center;background:#d92d20;border-radius:999px;color:#fff;font-size:10px;font-style:normal;font-weight:900;grid-area:cp;padding:3px 6px}.schedule-network-host{background:#f8fafc;border:1px solid var(--line);border-radius:8px;height:max(680px,calc(100vh - 360px));min-height:560px;overflow:auto;position:relative;width:100%}.schedule-network-shell .schedule-network-host{border-left:0;border-radius:0 8px 8px 0;height:100%;min-height:0}.schedule-network-canvas-mount{min-width:100%}.schedule-node-label-layer{left:0;min-width:100%;pointer-events:none;position:absolute;top:0;z-index:3}.schedule-node-label{align-content:end;background:transparent;border:0;border-radius:0;box-shadow:none;color:#111827;display:grid;gap:0;left:0;line-height:1.08;padding:0;position:absolute;text-align:left;text-rendering:geometricPrecision;text-shadow:-1px -1px 0 hsla(0,0%,100%,.96),1px -1px 0 hsla(0,0%,100%,.96),-1px 1px 0 hsla(0,0%,100%,.96),1px 1px 0 hsla(0,0%,100%,.96),0 2px 2px hsla(0,0%,100%,.86);top:0}.schedule-node-label small,.schedule-node-label span,.schedule-node-label strong{min-width:0;overflow:hidden;text-overflow:ellipsis}.schedule-node-label strong{color:#111827;display:-webkit-box;font-size:var(--schedule-title-font-size);font-weight:900;-webkit-line-clamp:1;-webkit-box-orient:vertical}.schedule-node-label span{color:#111827;display:block;font-size:var(--schedule-meta-font-size);font-weight:900;white-space:nowrap}.schedule-node-label small{color:#64748b;display:block;font-size:max(9px,calc(var(--schedule-meta-font-size) - 2px));font-weight:760;white-space:nowrap}.schedule-node-label.critical,.schedule-node-label.primary{color:#b42318}.schedule-node-label.selected{color:#1d4ed8}.schedule-node-label.critical small,.schedule-node-label.critical span,.schedule-node-label.critical strong,.schedule-node-label.primary small,.schedule-node-label.primary span,.schedule-node-label.primary strong{color:#b42318}.schedule-node-label.selected small,.schedule-node-label.selected span,.schedule-node-label.selected strong{color:#1d4ed8}.schedule-network-host canvas{cursor:grab;display:block;max-width:none;width:100%}.schedule-network-host canvas:active{cursor:grabbing}.schedule-zoom-controls{align-items:center;background:#fffffff0;border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 24px #0f172a1f;display:inline-flex;gap:4px;padding:4px;position:absolute;right:12px;top:12px;z-index:4}.schedule-zoom-controls button{background:transparent;border:0;border-radius:6px;color:var(--text);cursor:pointer;font-size:13px;font-weight:900;height:32px;min-width:38px}.schedule-zoom-controls button:hover:not(:disabled){background:#f1f5f9}.schedule-zoom-controls button:disabled{color:#a3acb8;cursor:not-allowed}.schedule-network-error,.schedule-network-overlay{background:#141b24d1;border-radius:8px;bottom:14px;color:#fff;font-size:13px;font-weight:800;left:14px;padding:8px 10px;position:absolute;z-index:2}.schedule-network-error{background:#fff4f1;border:1px solid #f3b0a2;color:var(--danger)}.schedule-empty,.schedule-loading{min-height:560px}.schedule-empty{align-content:center;background:#f8fafc;border:1px dashed var(--line);border-radius:8px;color:var(--muted);display:grid;gap:10px;place-items:center;text-align:center}.schedule-empty strong{color:var(--text);font-size:16px}.schedule-empty span{line-height:1.55;max-width:440px}.schedule-inspector{max-height:max(760px,calc(100vh - 246px));min-width:0;overflow:auto}.schedule-detail{display:grid;gap:14px}.schedule-detail>div:first-child{display:grid;gap:4px}.schedule-detail>div:first-child span{color:var(--muted);font-size:12px;font-weight:800}.schedule-detail>div:first-child strong{color:var(--text);font-size:18px;line-height:1.35;overflow-wrap:anywhere}.schedule-detail dl{border:1px solid var(--line);border-radius:8px;display:grid;gap:0;margin:0;overflow:hidden}.schedule-detail dl div{background:#fff;border-bottom:1px solid var(--line);display:grid;gap:10px;grid-template-columns:94px minmax(0,1fr);padding:9px 10px}.schedule-detail dl div:last-child{border-bottom:0}.schedule-detail dd,.schedule-detail dt{font-size:13px;line-height:1.45;margin:0;min-width:0;overflow-wrap:anywhere}.schedule-detail dt{color:var(--muted);font-weight:800}.schedule-detail-actions{display:flex;flex-wrap:wrap;gap:8px}.critical-path-callout{align-items:center;background:#fff4f1;border:1px solid #fecdca;border-radius:8px;display:flex!important;gap:10px;justify-content:space-between;padding:9px 10px}.critical-path-callout span,.critical-path-callout strong{font-size:13px!important;line-height:1.35!important}.critical-path-callout span{color:#b42318!important}.critical-path-callout strong{color:#7a271a!important}.schedule-edge-list{display:grid;gap:8px}.schedule-edge-list h3{font-size:14px;margin:2px 0 0}.schedule-edge-list button{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--text);cursor:pointer;display:grid;gap:3px;padding:9px 10px;text-align:left;width:100%}.schedule-edge-list button:hover{background:var(--accent-soft);border-color:var(--accent)}.schedule-edge-list button.critical{background:#fff4f1;border-color:#fecdca}.schedule-edge-list span,.schedule-edge-list strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-edge-list span{color:var(--muted);font-size:12px}.schedule-warnings{background:#fffbeb;border:1px solid #fde68a;border-radius:8px;color:#92400e;display:grid;font-size:12px;gap:6px;line-height:1.45;margin-top:14px;padding:10px}.critical-path-panel{border-top:1px solid var(--line);display:grid;gap:10px;margin-top:16px;padding-top:14px}.critical-path-panel h3{font-size:14px;margin:0}.critical-path-list{display:grid;gap:7px}.critical-path-list button{background:#fff;border:1px solid #fecdca;border-radius:8px;color:var(--text);cursor:pointer;display:grid;gap:2px 8px;grid-template-areas:"index title" "index meta";grid-template-columns:26px minmax(0,1fr);padding:8px 9px;text-align:left;width:100%}.critical-path-list button.active,.critical-path-list button:hover{background:#fff4f1}.critical-path-list span{background:#d92d20;border-radius:999px;color:#fff;display:grid;font-size:12px;font-weight:800;grid-area:index;height:24px;place-items:center;width:24px}.critical-path-list strong{color:var(--text);font-size:13px;grid-area:title}.critical-path-list small,.critical-path-list strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.critical-path-list small{color:var(--muted);font-size:12px;grid-area:meta}.focus-chip{align-items:center;background:#fff4f1;border-radius:999px;color:#b42318;display:inline-flex;font-weight:760;min-height:34px;padding:7px 11px}.focus-result-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.focus-card{background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;gap:12px;padding:13px}.focus-card>div:first-child{display:grid;gap:4px}.focus-card small{color:var(--muted)}.focus-actions{display:flex;flex-wrap:wrap;gap:8px}.site-document-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.drawing-upload-form{align-items:end;display:grid;gap:10px;grid-template-columns:minmax(220px,1.1fr) minmax(180px,1fr) minmax(140px,.7fr) minmax(220px,1.2fr) auto}.drawing-upload-form .button{min-width:116px}.drawing-upload-form.material-upload-form{grid-template-columns:minmax(190px,1fr) minmax(210px,1fr) minmax(180px,1fr) minmax(120px,.7fr) minmax(180px,1fr) auto}.drawing-notes-field textarea{min-height:72px}.site-document-card{align-items:start;background:#f8fafc;border:1px solid var(--line);border-radius:8px;color:var(--text);display:grid;gap:10px;grid-template-columns:auto minmax(0,1fr) auto;padding:12px}.site-document-card.link-card{transition:border-color .16s ease,background .16s ease,transform .16s ease}.site-document-card.link-card:hover{background:#f0fdfa;border-color:#9fc5c0;transform:translateY(-1px)}.site-document-card.drawing-card{grid-template-columns:124px minmax(0,1fr) auto}.site-document-card div{display:grid;gap:3px;min-width:0}.drawing-thumbnail{aspect-ratio:12/7;background:#fff;border:1px solid #d8dee6;border-radius:6px;color:var(--muted);display:grid;overflow:hidden;place-items:center;width:124px}.drawing-thumbnail img{background:#fff;height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.site-document-card small,.site-document-card span{color:var(--muted)}.site-document-card small,.site-document-card span,.site-document-card strong{overflow-wrap:anywhere}.card-action-icon{color:var(--muted)}.drawing-card-actions{align-items:start;display:inline-flex;gap:7px}.drawing-card-actions .icon-button{height:34px;width:34px}.drawing-edit-fields{display:grid;gap:8px}.drawing-edit-fields textarea{min-height:80px}.drawing-note-text{margin-bottom:0;white-space:pre-wrap}.material-toolbar{align-items:end;display:flex;flex-wrap:wrap;gap:14px;justify-content:space-between}.material-display-control,.material-search{align-items:center;color:var(--muted);display:flex;font-size:13px;font-weight:700;gap:8px;min-width:0}.material-search input{min-width:min(320px,58vw);width:min(460px,100%)}.material-browser{display:grid;gap:16px;min-width:0}.material-folder-create{align-items:end;display:grid;gap:10px;grid-template-columns:minmax(220px,360px) auto}.material-table{background:#fff;border:1px solid var(--line);border-radius:8px;min-width:760px;overflow:hidden;width:100%}.material-table td,.material-table th{vertical-align:middle}.material-folder-table--browse tbody tr,.material-section-title{cursor:pointer}.material-folder-table--browse tbody tr.selected,.material-folder-table--browse tbody tr:hover{background:#f0fdfa}.material-name-cell{align-items:center;display:flex;gap:12px;min-width:280px}.material-name-cell>svg{color:#6b7280;flex:0 0 auto}.material-name-cell>div:not(.material-file-thumb){display:grid;gap:2px;min-width:0}.material-name-cell small,.material-name-cell strong{overflow-wrap:anywhere}.material-name-link,.material-open-link{color:inherit;text-decoration:none}.material-name-link{width:-moz-fit-content;width:fit-content}.material-name-link:focus-visible,.material-name-link:hover{color:var(--accent);text-decoration:underline}.material-name-cell small{color:var(--muted)}.material-count-chip{background:#fff;border:1px solid var(--line);border-radius:6px;color:var(--text);display:inline-grid;font-weight:700;min-width:58px;padding:3px 8px;place-items:center}.material-folder-edit{align-items:center;display:flex;gap:7px;min-width:min(420px,100%)}.material-folder-edit input{min-width:180px}.material-folder-actions{align-items:center;display:flex;gap:7px;justify-content:flex-end}.material-file-sections{display:grid;gap:18px}.material-file-section{display:grid;gap:8px;min-width:0;overflow-x:auto}.material-section-title{align-items:center;background:transparent;border:0;color:var(--text);display:inline-flex;font:inherit;font-weight:800;gap:8px;padding:0;text-decoration:underline;width:-moz-fit-content;width:fit-content}.material-section-title em{color:var(--muted);font-size:12px;font-style:normal}.material-file-thumb{aspect-ratio:12/7;background:#fff;border:1px solid #d8dee6;border-radius:5px;color:var(--muted);display:grid;flex:0 0 auto;overflow:hidden;place-items:center;width:64px}.material-file-thumb.material-open-link:focus-visible,.material-file-thumb.material-open-link:hover{border-color:var(--accent);box-shadow:0 0 0 3px #14b8a624}.material-file-thumb img{height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.material-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;min-width:220px}.material-actions--compact{justify-content:flex-start;min-width:0}.material-file-folder{color:var(--muted);font-weight:700;max-width:220px;overflow-wrap:anywhere}.material-move-control{display:grid;gap:3px;min-width:min(280px,100%)}.material-move-control span{color:var(--muted);font-size:11px;font-weight:760}.material-move-control select{font-size:12px;min-height:34px;padding:6px 9px}.material-edit-row td{background:#f8fafc}.material-edit-fields{align-items:end;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(120px,.7fr) minmax(200px,1.2fr) auto}.material-edit-actions{align-items:center;display:flex;gap:8px}.upload-dialog{animation:dialog-in .22s var(--ease);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-xl);box-shadow:0 30px 80px #0f172a47;display:grid;gap:18px;max-height:min(88vh,760px);overflow:auto;padding:20px;width:min(760px,100%)}.dialog-header{align-items:flex-start;display:flex;gap:16px;justify-content:space-between}.dialog-header .subtitle{margin-top:6px}.upload-dialog .eyebrow{color:var(--accent);font-size:12px;font-weight:800;letter-spacing:.08em;margin:0 0 6px}.drawing-upload-form.material-upload-form.upload-dialog-form{grid-template-columns:repeat(2,minmax(0,1fr))}.upload-dialog-form .dialog-actions,.upload-dialog-form .drawing-notes-field{grid-column:1/-1}.upload-mode-field{align-items:start;display:grid;gap:8px;grid-column:1/-1}.upload-mode-field>span{color:var(--text);font-size:13px;font-weight:760}.upload-dialog-form input[readonly]{background:#f8fafc;color:var(--muted)}.upload-dialog-form .dialog-actions{justify-content:flex-end}@media(max-width:1200px){.drawing-upload-form.material-upload-form,.material-edit-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.drawing-upload-form.material-upload-form .button,.material-edit-actions{grid-column:1/-1}}@media(max-width:700px){.drawing-upload-form.material-upload-form,.material-edit-fields{grid-template-columns:1fr}.upload-dialog{max-height:calc(100vh - 20px);padding:16px}.drawing-upload-form.material-upload-form.upload-dialog-form{grid-template-columns:1fr}.upload-dialog-form .dialog-actions{align-items:stretch;flex-direction:column-reverse}.material-display-control,.material-folder-create,.material-search,.material-toolbar{align-items:stretch;flex-direction:column}.material-search input{min-width:0;width:100%}.material-folder-create{display:flex}}.site-source-summary{background:#f8fafc;border:1px solid var(--line);border-radius:8px;color:var(--muted);display:grid;font-size:12px;gap:3px;min-width:180px;padding:10px 12px}.site-source-summary strong{color:var(--text);font-size:14px}.room-review{display:grid;gap:14px}.room-review-toolbar{align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;display:flex;flex-wrap:wrap;gap:12px;padding:12px}.check-row.compact{font-size:13px;min-height:30px}.review-metrics{align-items:center;color:var(--muted);display:inline-flex;font-size:13px;gap:8px;margin-left:auto}.review-metrics span{background:#eef2f6;border-radius:999px;padding:5px 8px}.room-review-layout{align-items:start;display:grid;gap:16px;grid-template-columns:minmax(0,1fr) 360px}.plan-review-stage,.room-review-inspector{background:#fff;border:1px solid var(--line);border-radius:8px}.plan-review-stage{overflow:auto;padding:12px}.plan-review-canvas{background:#fff;box-shadow:0 1px 2px #141b241f;margin:0 auto;min-width:860px;position:relative;width:min(100%,1360px)}.plan-review-image,.plan-review-overlay{display:block;height:100%;inset:0;position:absolute;width:100%}.plan-review-image{-o-object-fit:contain;object-fit:contain}.plan-review-overlay{color:#0f766e}.plan-grid line{stroke:#0f766e38;stroke-width:.65;vector-effect:non-scaling-stroke}.room-candidate{color:#0f766e;cursor:pointer}.room-candidate polygon{fill-opacity:.24;stroke-width:1.5}.room-candidate.review{color:#a15c08}.room-candidate.selected{color:#b42318}.room-candidate.selected polygon{fill-opacity:.34;stroke-width:2.4}.room-candidate text{fill:#141b24;font-size:13px;font-weight:750;paint-order:stroke;pointer-events:none;stroke:#fff;stroke-width:3px}.room-seed{fill:#d64b3c;stroke:#fff;stroke-width:1.5}.room-seed,.vertex-handle{vector-effect:non-scaling-stroke}.vertex-handle{cursor:grab;fill:#fff;stroke:#b42318;stroke-width:2}.room-review-inspector{display:grid;gap:14px;max-height:780px;overflow:hidden;padding:16px}.room-review-inspector h2{font-size:16px;margin:0 0 6px}.selected-room-card{background:#f8fafc;display:grid;gap:12px;padding:12px}.room-review-table-wrap,.selected-room-card{border:1px solid var(--line);border-radius:8px}.room-review-table-wrap{overflow:auto}.room-review-table{font-size:13px}.room-review-table td,.room-review-table th{padding:8px;white-space:nowrap}.room-review-table tbody tr{cursor:pointer}.room-review-table tbody tr.selected,.room-review-table tbody tr:hover{background:#e6f4f1}.model-layout{align-items:start;display:grid;gap:16px;grid-template-columns:minmax(280px,340px) minmax(0,1fr)}.model-tools{grid-column:1;grid-row:1}.model-inspector{grid-column:1;grid-row:2}.model-stage{align-self:stretch;grid-column:2;grid-row:1/span 2}.model-inspector,.model-tools{align-self:start;background:#fff;padding:16px}.model-inspector,.model-stage,.model-tools{border:1px solid var(--line);border-radius:8px}.model-stage{background:#eef2f6;min-height:680px;overflow:hidden}.plan-model-layout .model-stage{background:#fff}.model-plan-viewer{background:#fff;display:grid;grid-template-rows:auto 1fr;height:680px;min-height:520px}.plan-view-toolbar{align-items:center;background:#f8fafc;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:10px;padding:10px}.model-plan-canvas{overflow:auto;padding:14px}.model-plan-svg{background:#fff;border:1px solid var(--line);border-radius:8px;display:block;min-height:560px;min-width:820px;width:100%}.model-plan-grid line{stroke:#0f766e29;stroke-width:.6;vector-effect:non-scaling-stroke}.model-plan-grid line.major{stroke:#0f766e57;stroke-width:1}.model-plan-floors polygon{fill:#eef2f6;stroke:#93a0ad;stroke-width:1.3;vector-effect:non-scaling-stroke}.model-plan-focus{fill:#ef444414;stroke:#ef4444;stroke-dasharray:.18 .12;stroke-width:3}.model-plan-focus,.model-plan-vision rect{pointer-events:none;vector-effect:non-scaling-stroke}.model-plan-vision rect{fill:#7c3aed1f;stroke:#7c3aed;stroke-dasharray:.22 .16;stroke-width:2}.model-plan-vision path{fill:none;opacity:.68;pointer-events:none;stroke:#16a34a;stroke-dasharray:.28 .2;stroke-linecap:round;stroke-width:6;vector-effect:non-scaling-stroke}.model-plan-cad-lines path{fill:none;opacity:.72;stroke:#b42318;stroke-linecap:square;stroke-width:1.4;vector-effect:non-scaling-stroke}.model-plan-cad-lines text{fill:#7a2e25;font-weight:700;paint-order:stroke;pointer-events:none;stroke:#fff;stroke-width:.08}.model-plan-room{cursor:pointer}.model-plan-room polygon{fill-opacity:.34;stroke:#ffffffd1;stroke-width:.8;vector-effect:non-scaling-stroke}.model-plan-room:hover polygon{fill-opacity:.46}.model-plan-floors polygon.focused,.model-plan-room.focused polygon,.model-plan-structural polygon.focused{fill-opacity:.56;stroke:#ef4444;stroke-width:3}.model-plan-room text{fill:#141b24;font-weight:760;paint-order:stroke;pointer-events:none;stroke:#fff;stroke-width:.12}.model-plan-walls path{cursor:pointer;fill:none;pointer-events:stroke;stroke:#263442;stroke-linecap:square;stroke-width:3.2;vector-effect:non-scaling-stroke}.model-plan-walls path.outline{stroke:#5f6c7a;stroke-width:4.4}.model-plan-mep-routes path.focused,.model-plan-openings path.focused,.model-plan-structural path.focused,.model-plan-walls path.focused{stroke:#ef4444;stroke-width:6}.model-plan-openings path{cursor:pointer;fill:none;pointer-events:stroke;stroke-linecap:round;stroke-width:4;vector-effect:non-scaling-stroke}.model-plan-openings path.door{stroke:#f59e0b}.model-plan-openings path.window{stroke:#0ea5e9}.model-plan-structural polygon{cursor:pointer;fill:#64748b21;stroke:#64748b;stroke-width:1.4;vector-effect:non-scaling-stroke}.model-plan-structural path{cursor:pointer;fill:none;opacity:.7;pointer-events:stroke;stroke:#475569;stroke-linecap:square;stroke-width:3.4;vector-effect:non-scaling-stroke}.model-plan-structural circle{cursor:pointer;fill:#64748b;stroke:#fff;stroke-width:1.2;vector-effect:non-scaling-stroke}.model-plan-mep-routes path{cursor:pointer;fill:none;opacity:.86;pointer-events:stroke;stroke-linecap:round;stroke-linejoin:round;stroke-width:2.2;vector-effect:non-scaling-stroke}.model-plan-mep-routes path.electrical{stroke:#facc15;stroke-dasharray:.2 .14}.model-plan-mep-routes path.water_supply{stroke:#2563eb}.model-plan-mep-routes path.drainage{stroke:#7c3aed;stroke-dasharray:.3 .16}.model-plan-mep-routes path.gas{stroke:#f97316}.model-plan-mep-routes path.hvac{stroke:#06b6d4;stroke-dasharray:.12 .14}.model-plan-mep-routes path.fire_protection{stroke:#dc2626;stroke-dasharray:.18 .12}.model-plan-mep-fixtures circle{cursor:pointer;stroke:#fff;stroke-width:1.2;vector-effect:non-scaling-stroke}.model-plan-mep-fixtures circle.electrical{fill:#facc15}.model-plan-mep-fixtures circle.water_supply{fill:#2563eb}.model-plan-mep-fixtures circle.drainage{fill:#7c3aed}.model-plan-mep-fixtures circle.gas{fill:#f97316}.model-plan-mep-fixtures circle.hvac{fill:#06b6d4}.model-plan-mep-fixtures circle.fire_protection{fill:#dc2626}.model-plan-sprinklers circle{cursor:pointer;fill:#d64b3c;stroke:#fff;stroke-width:1.5;vector-effect:non-scaling-stroke}.model-plan-mep-fixtures circle.focused,.model-plan-sprinklers circle.focused,.model-plan-structural circle.focused{fill:#ef4444;stroke:#fff;stroke-width:3}.three-viewer{height:680px;min-height:480px;overflow:hidden;position:relative;width:100%}.three-canvas-host,.three-viewer canvas{height:100%;width:100%}.three-viewer canvas{display:block}.three-state{background:#eef2f6;color:var(--muted);display:grid;inset:0;place-items:center;position:absolute;z-index:1}.three-state.error{color:var(--danger)}.check-row,.select-row,.source-link,.tool-heading,.warning-item{align-items:center;display:flex;gap:8px}.tool-heading{margin-bottom:14px}.tool-subheading{border-top:1px solid var(--line);color:var(--muted);font-size:12px;font-weight:750;margin:14px 0 6px;padding-top:12px}.model-inspector h2,.source-list h3,.tool-heading h2{font-size:15px;margin:0}.check-row{color:#25303d;cursor:pointer;min-height:34px}.check-row input{accent-color:var(--accent);height:16px;width:16px}.select-row{align-items:flex-start;color:#25303d;flex-direction:column;font-size:13px;font-weight:700;gap:6px}.select-row select{background:#fff;border:1px solid var(--line);border-radius:8px;color:var(--text);font:inherit;min-height:36px;padding:7px 9px;width:100%}.model-source-summary{background:#f8fafc;color:var(--muted);font-size:12px;gap:5px;padding:10px}.model-source-summary,.qa-summary-card{border:1px solid var(--line);border-radius:8px;display:grid;margin-top:12px}.qa-summary-card{background:#fff;gap:10px;padding:11px}.summary-card-head{align-items:center;display:flex;gap:10px;justify-content:space-between}.assumption-list h3,.summary-card-head h3{font-size:13px;margin:0}.summary-grid{display:grid;gap:6px;grid-template-columns:repeat(3,minmax(0,1fr))}.summary-grid div{background:#f8fafc;border-radius:8px;display:grid;gap:2px;min-width:0;padding:8px}.assumption-item small,.assumption-item span,.qa-check span,.qa-summary-card p,.summary-grid span{color:var(--muted);font-size:12px;line-height:1.45}.summary-grid strong{font-size:14px}.qa-summary-card p{margin:0}.assumption-list,.qa-checks{display:grid;gap:7px}.assumption-item,.qa-check{background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;gap:3px;padding:8px}.qa-check.warn{background:var(--amber-soft);border-color:#f1c78e}.qa-check.fail{background:#fff4f1;border-color:#f3b0a2}.assumption-item strong,.qa-check strong{font-size:12px}.parsed-drawing-list{display:grid;gap:6px;margin-top:10px}.parsed-drawing-list div{background:#fff;border:1px solid var(--line);border-radius:8px;display:grid;font-size:12px;gap:3px;padding:8px 9px}.parsed-drawing-list strong{color:var(--text)}.parsed-drawing-list small,.parsed-drawing-list span{color:var(--muted)}.model-metrics{border-top:1px solid var(--line);display:grid;gap:8px;grid-template-columns:1fr;margin-top:16px;padding-top:16px}.model-metrics div{align-items:center;color:var(--muted);display:flex;font-size:13px;gap:10px;justify-content:space-between}.model-metrics strong{color:var(--text);font-size:16px}.bim-system-list{border-top:1px solid var(--line);display:grid;gap:7px;margin-top:14px;padding-top:14px}.bim-system-item{align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;display:grid;gap:2px 8px;grid-template-columns:auto minmax(0,1fr);padding:8px}.system-swatch{border-radius:999px;box-shadow:0 0 0 2px #ffffffe6,0 0 0 3px #141b2414;grid-row:span 2;height:12px;width:12px}.bim-system-item strong{font-size:12px;min-width:0}.bim-system-item small{color:var(--muted);font-size:11px;line-height:1.35}.warning-list{display:grid;gap:8px;margin-top:16px}.warning-item{align-items:flex-start;background:var(--amber-soft);border-radius:8px;color:var(--amber);font-size:13px;line-height:1.45;padding:9px}.model-inspector{display:grid;gap:14px}.inspector-head{align-items:flex-start;display:flex;gap:10px;justify-content:space-between}.inspector-list{display:grid;gap:9px;margin:0}.inspector-list div{display:grid;gap:2px}.inspector-list dt{color:var(--muted);font-size:12px}.inspector-list dd{font-size:14px;margin:0}.source-list{display:grid;gap:10px}.source-link{background:#f8fafc;border:1px solid var(--line);border-radius:8px;color:#25303d;font-size:13px;justify-content:space-between;min-height:36px;padding:8px 10px}.source-link.static{justify-content:flex-start}.source-preview{background:#fff;border:1px solid var(--line);border-radius:8px;display:block;max-height:220px;-o-object-fit:contain;object-fit:contain;-o-object-position:left top;object-position:left top;width:100%}.back-link{align-items:center;color:var(--muted);display:inline-flex;font-size:13px;font-weight:720;gap:6px;margin-bottom:8px}.parse-error-panel{align-items:start;background:#fff7f5;border-color:#f3b0a2;color:var(--danger);display:grid;gap:10px;grid-template-columns:auto minmax(0,1fr)}.parse-error-panel p{color:#7a2e25;margin:5px 0 0}.parse-warning-panel{align-items:start;background:#fffbeb;border-color:#f7d47a;color:#9a5b00;display:grid;gap:10px;grid-template-columns:auto minmax(0,1fr)}.parse-warning-panel p{color:#6f4400;margin:5px 0 0}.parse-error-body{min-width:0}.cad-meta-list{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0}.cad-meta-list div{background:#fff;border:1px solid #f0c7bd;border-radius:8px;display:grid;gap:2px;min-width:126px;padding:8px 10px}.cad-meta-list dt{color:#9a4b3d;font-size:11px;font-weight:760}.cad-meta-list dd{color:#2f1f1d;font-size:13px;font-weight:760;margin:0}.cad-parse-attempts{display:grid;gap:5px;margin-top:12px}.cad-parse-attempts span{color:#7a2e25;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;overflow-wrap:anywhere}.parse-error-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.cad-source-summary-panel{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between}.cad-source-summary-panel>div:first-child{align-items:center;display:flex;flex-wrap:wrap;gap:9px}.cad-entity-summary span,.cad-source-summary-panel span{color:var(--muted);font-size:13px}.cad-entity-summary{align-items:center;display:flex;flex-wrap:wrap;gap:6px}.cad-entity-summary span{background:#eef2f6;border-radius:999px;padding:5px 8px}.jwcad-source-viewer{display:grid;gap:16px;grid-template-columns:320px minmax(0,1fr);min-height:720px}.jwcad-source-viewer--panel-collapsed{grid-template-columns:minmax(0,1fr)}.jwcad-canvas-shell,.jwcad-layer-panel{background:#fff;border:1px solid var(--line);border-radius:8px}.jwcad-layer-panel{align-content:start;display:grid;gap:10px;max-height:720px;overflow:auto;padding:14px}.jwcad-layer-panel-head{align-items:center;display:flex;gap:10px;justify-content:space-between;min-width:0;padding-bottom:4px}.jwcad-layer-panel-head strong{color:var(--text);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jwcad-layer-actions{display:flex;gap:8px}.jwcad-panel-toggle{flex:0 0 auto}.compact-button{font-size:12px;min-height:32px;padding:6px 9px}.cad-layer-list{display:grid;gap:6px}.cad-layer-row{align-items:center;background:#f8fafc;border:1px solid var(--line);border-radius:8px;display:grid;font-size:12px;gap:8px;grid-template-columns:auto auto minmax(0,1fr) auto auto;min-height:32px;padding:6px 8px}.cad-layer-row--photo{background:#eff6ff;border-color:#2563eb47}.cad-layer-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cad-layer-row small,.cad-layer-state{color:var(--muted)}.cad-layer-state{background:#eef2f7;border-radius:999px;font-size:10px;font-weight:700;padding:2px 5px;white-space:nowrap}.cad-layer-state.active{background:#dbeafe;color:#1d4ed8}.cad-layer-swatch{border:1px solid rgba(15,23,42,.18);border-radius:6px;box-shadow:0 0 0 2px #fff,0 0 0 3px #141b2414;height:20px;width:20px}.cad-layer-photo-swatch{background:#2563eb;border-radius:5px;box-shadow:0 0 0 2px #fff,0 0 0 3px #2563eb2e;display:grid;height:18px;place-items:center;width:18px}.cad-layer-photo-swatch:before{border:1.5px solid #fff;border-radius:2px;content:"";height:7px;width:9px}.cad-layer-color-control{cursor:pointer;display:grid;height:28px;place-items:center;position:relative;width:28px}.cad-layer-color-control:hover .cad-layer-swatch{box-shadow:0 0 0 2px #fff,0 0 0 4px #0f766e3d}.cad-layer-color-control:focus-within .cad-layer-swatch{box-shadow:0 0 0 2px #fff,0 0 0 4px #3b82f659}.cad-layer-color-input{border:0;cursor:pointer;height:100%;inset:0;margin:0;opacity:0;padding:0;position:absolute;width:100%}.jwcad-canvas-shell{display:grid;grid-template-rows:auto 1fr;min-width:0;overflow:hidden}.jwcad-canvas-toolbar{align-items:center;background:#f8fafc;border-bottom:1px solid var(--line);display:flex;flex-wrap:wrap;gap:8px;padding:10px 12px}.jwcad-canvas-toolbar span{background:#eef2f6;border-radius:999px;color:var(--muted);font-size:13px;padding:5px 8px}.jwcad-canvas{background:#e9edf2;min-height:680px;overflow:hidden;padding:14px;position:relative}.jwcad-three-host{background:#fff;border:1px solid var(--line-strong);border-radius:8px;height:680px;min-height:640px;width:100%}.jwcad-three-host canvas{border-radius:8px;cursor:grab;display:block;height:100%;width:100%}.jwcad-photo-overlay{z-index:4}.jwcad-photo-overlay,.jwcad-request-overlay{inset:14px;pointer-events:none;position:absolute}.jwcad-request-overlay{z-index:5}.jwcad-photo-pin{background:transparent;border:0;cursor:pointer;height:0;margin:0;padding:0;pointer-events:auto;position:absolute;width:0}.jwcad-photo-pin:before{background:#0f766e;border-radius:999px;box-shadow:0 0 0 2px #fff;content:"";height:12px;left:0;position:absolute;transform:translate(-50%);width:3px}.jwcad-photo-pin.is-down:before{top:7px}.jwcad-photo-pin.is-up:before{bottom:7px}.jwcad-photo-pin-anchor{background:#0f766e;border:3px solid #fff;border-radius:999px;box-shadow:0 5px 14px #0f172a47;height:12px;left:0;position:absolute;top:0;transform:translate(-50%,-50%);width:12px;z-index:3}.jwcad-photo-pin-bubble{background:#e5e7eb;border:4px solid #fff;border-radius:10px;box-shadow:0 9px 18px #0f172a42,0 0 0 2px #2563eb61;display:block;height:58px;left:50%;overflow:hidden;position:absolute;transform:translate(-50%);width:58px;z-index:2}.jwcad-photo-pin.is-down .jwcad-photo-pin-bubble{top:19px}.jwcad-photo-pin.is-up .jwcad-photo-pin-bubble{bottom:19px}.jwcad-photo-pin.align-left .jwcad-photo-pin-bubble{left:auto;right:-18px;transform:none}.jwcad-photo-pin.align-right .jwcad-photo-pin-bubble{left:-18px;transform:none}.jwcad-photo-pin-bubble img{display:block;height:100%;-o-object-fit:cover;object-fit:cover;width:100%}.jwcad-photo-pin-placeholder{color:#64748b;display:grid;font-size:12px;font-weight:800;height:100%;place-items:center;width:100%}.jwcad-photo-pin-badge{background:#2563eb;border:3px solid #fff;border-radius:999px;box-shadow:0 7px 14px #2563eb47;color:#fff;display:grid;font-size:11px;font-weight:900;height:22px;line-height:1;place-items:center;position:absolute;right:-4px;top:-4px;width:22px}.jwcad-photo-pin.is-cluster .jwcad-photo-pin-bubble{background:#2563eb;border:4px solid #fff;border-radius:999px;box-shadow:0 10px 22px #2563eb57,0 0 0 3px #0f172a14;display:grid;height:50px;place-items:center;width:50px}.jwcad-photo-pin-cluster-count{color:#fff;font-size:15px;font-weight:900;line-height:1}.jwcad-photo-pin.is-selected .jwcad-photo-pin-anchor,.jwcad-photo-pin.is-selected:before{background:#1d4ed8}.jwcad-photo-pin.is-selected .jwcad-photo-pin-bubble{box-shadow:0 14px 30px #1d4ed84d,0 0 0 3px #2563eb3d}.jwcad-request-pin{background:transparent;border:0;cursor:pointer;height:0;margin:0;padding:0;pointer-events:auto;position:absolute;width:0}.jwcad-request-pin:before{background:#f97316;border-radius:999px;box-shadow:0 0 0 2px #fff;content:"";height:14px;left:0;position:absolute;transform:translate(-50%);width:3px}.jwcad-request-pin.is-down:before{top:7px}.jwcad-request-pin.is-up:before{bottom:7px}.jwcad-request-pin-anchor{background:#f97316;border:3px solid #fff;border-radius:999px;box-shadow:0 7px 16px #0f172a47;height:14px;left:0;position:absolute;top:0;transform:translate(-50%,-50%);width:14px;z-index:3}.jwcad-request-pin-bubble{background:#f97316;border:3px solid #fff;border-radius:999px;box-shadow:0 10px 22px #0f172a3d,0 0 0 2px #f973165c;color:#fff;display:grid;height:36px;left:50%;padding:0;place-items:center;position:absolute;transform:translate(-50%);width:36px;z-index:2}.jwcad-request-pin.is-down .jwcad-request-pin-bubble{top:21px}.jwcad-request-pin.is-up .jwcad-request-pin-bubble{bottom:21px}.jwcad-request-pin.align-left .jwcad-request-pin-bubble{left:auto;right:-20px;transform:none}.jwcad-request-pin.align-right .jwcad-request-pin-bubble{left:-20px;transform:none}.jwcad-request-pin-icon{background:transparent;border-radius:999px;color:#fff;display:grid;flex:0 0 auto;font-size:18px;font-weight:900;height:100%;line-height:1;place-items:center;width:100%}.jwcad-request-pin-tooltip{background:#111827f2;border:2px solid #fff;border-radius:8px;box-shadow:0 14px 28px #0f172a4d;color:#fff;display:block;font-size:13px;font-weight:800;left:50%;line-height:1.45;max-width:280px;opacity:0;overflow:hidden;overflow-wrap:anywhere;padding:9px 11px;pointer-events:none;position:absolute;text-align:left;transform:translate(-50%,6px);transition:opacity .14s ease,transform .14s ease;white-space:normal;width:-moz-max-content;width:max-content;z-index:7}.jwcad-request-pin.is-down .jwcad-request-pin-tooltip{top:64px}.jwcad-request-pin.is-up .jwcad-request-pin-tooltip{bottom:64px;transform:translate(-50%,-6px)}.jwcad-request-pin.align-left .jwcad-request-pin-tooltip{left:auto;right:-20px;transform:translateY(6px)}.jwcad-request-pin.align-right .jwcad-request-pin-tooltip{left:-20px;transform:translateY(6px)}.jwcad-request-pin:focus-visible .jwcad-request-pin-tooltip,.jwcad-request-pin:hover .jwcad-request-pin-tooltip{opacity:1;transform:translate(-50%)}.jwcad-request-pin.is-up:focus-visible .jwcad-request-pin-tooltip,.jwcad-request-pin.is-up:hover .jwcad-request-pin-tooltip{transform:translate(-50%)}.jwcad-request-pin.align-left:focus-visible .jwcad-request-pin-tooltip,.jwcad-request-pin.align-left:hover .jwcad-request-pin-tooltip,.jwcad-request-pin.align-right:focus-visible .jwcad-request-pin-tooltip,.jwcad-request-pin.align-right:hover .jwcad-request-pin-tooltip{transform:translateY(0)}.jwcad-three-host.is-placing-photo canvas{cursor:crosshair}.jwcad-three-host canvas:active{cursor:grabbing}.jwcad-three-host.is-placing-photo canvas:active{cursor:crosshair}.jwcad-render-error{background:#fff7f5;border:1px solid #f3b0a2;border-radius:8px;bottom:18px;color:var(--danger);font-size:13px;left:26px;margin:0;max-width:min(620px,calc(100% - 52px));padding:9px 10px;position:absolute}body.cad-viewer-expanded{overflow:hidden}.cad-viewer-frame{min-width:0}.cad-viewer-frame--expanded{background:#e9edf2;display:grid;gap:10px;grid-template-rows:auto minmax(0,1fr);inset:0;padding:10px;position:fixed;z-index:120}.cad-viewer-expanded-toolbar{align-items:center;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-xs);display:flex;gap:12px;justify-content:space-between;min-width:0;padding:10px 12px}.cad-viewer-expanded-toolbar>div{display:grid;gap:2px;min-width:0}.cad-viewer-expanded-toolbar span{color:var(--muted);font-size:12px;font-weight:700}.cad-viewer-expanded-toolbar strong{color:var(--text);font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cad-viewer-frame--expanded .jwcad-source-viewer{grid-template-columns:minmax(260px,340px) minmax(0,1fr);height:100%;min-height:0}.cad-viewer-frame--expanded .jwcad-source-viewer--panel-collapsed{grid-template-columns:minmax(0,1fr)}.cad-viewer-frame--expanded .jwcad-layer-panel{height:100%;max-height:none}.cad-viewer-frame--expanded .jwcad-canvas,.cad-viewer-frame--expanded .jwcad-canvas-shell,.cad-viewer-frame--expanded .jwcad-three-host{min-height:0}.cad-viewer-frame--expanded .jwcad-canvas{display:grid;height:100%}.cad-viewer-frame--expanded .jwcad-three-host{height:100%}.main--cad-view .jwcad-source-viewer{grid-template-columns:minmax(260px,340px) minmax(0,1fr);height:max(760px,calc(100vh - 350px));min-height:0}.main--cad-view .jwcad-source-viewer--panel-collapsed{grid-template-columns:minmax(0,1fr)}.main--cad-view .jwcad-layer-panel{height:100%;max-height:none}.main--cad-view .jwcad-canvas-shell{min-height:0}.main--cad-view .jwcad-canvas{display:grid;height:100%;min-height:0}.main--cad-view .jwcad-three-host{height:100%;min-height:0}.pdf-dialog{background:transparent;border:0;border-radius:8px;height:min(840px,calc(100vh - 36px));padding:0;width:min(1180px,calc(100vw - 36px))}.pdf-dialog::backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0c1118ad}.pdf-dialog-panel{background:#fff;border-radius:8px;box-shadow:0 24px 80px #00000052;display:grid;grid-template-rows:auto 1fr;height:100%;overflow:hidden;width:100%}.pdf-dialog-head{align-items:center;background:#f8fafc;border-bottom:1px solid var(--line);display:flex;gap:12px;justify-content:space-between;padding:12px 14px}.dialog-actions{align-items:center;display:flex;gap:8px}.pdf-frame{background:#2b3038;border:0;height:100%;width:100%}@keyframes spin{to{transform:rotate(1turn)}}@keyframes shimmer{0%{background-position:180% 0}to{background-position:-40% 0}}@media(max-width:900px){.case-topbar,.shell{grid-template-columns:1fr}.case-topbar{gap:10px;position:static}.case-user{justify-content:space-between}.case-layout{grid-template-columns:1fr}.case-sidebar{border-right:0;padding:14px}.case-main{padding:18px 14px 28px}.case-actions,.case-heading{align-items:stretch;flex-direction:column}.shell-topbar{justify-content:stretch;margin-top:0}.case-user-link,.shell-account-link{justify-content:center;max-width:100%}.account-layout,.account-stats,.case-editor-grid,.drawing-upload-form,.project-dialog-grid,.project-overview{grid-template-columns:1fr}.modal-backdrop{align-items:stretch;padding:10px}.project-dialog{max-height:calc(100vh - 20px)}.project-dialog-grid .span-2{grid-column:auto}.project-detail-grid div{grid-template-columns:112px minmax(0,1fr)}.sidebar{height:auto;position:static}.shell--sidebar-collapsed .sidebar,.sidebar{padding:14px}.shell--sidebar-collapsed .sidebar-topline{flex-direction:row;justify-content:space-between}.shell--sidebar-collapsed .brand>span:last-child,.shell--sidebar-collapsed .nav span,.shell--sidebar-collapsed .sidebar-account span{display:inline}.shell--sidebar-collapsed .sidebar-project-context{display:grid}.shell--sidebar-collapsed .nav a{justify-content:flex-start;padding:8px 12px}.shell--sidebar-collapsed .sidebar-account{grid-template-columns:minmax(0,1fr) auto;position:static}.shell--sidebar-collapsed .sidebar-account>div{display:inline-flex}.shell--sidebar-collapsed .sidebar-account button{width:34px}.brand{margin-bottom:12px}.sidebar-topline .brand{margin-bottom:0}.nav{grid-template-columns:repeat(3,minmax(0,1fr))}.main{padding:18px}.auth-page{align-items:start;padding:14px}.admin-layout,.admin-membership-editor,.project-member-add-grid{grid-template-columns:1fr}.citation-head,.header,.section-heading{align-items:flex-start}.loading-panel,.site-selector{grid-template-columns:1fr}.workspace-context{align-items:stretch;flex-direction:column}.schedule-layout,.schedule-toolbar{grid-template-columns:1fr}.schedule-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.schedule-toolbar-controls{justify-content:flex-start}.schedule-network-shell{grid-template-columns:1fr;height:auto;min-height:0}.schedule-task-list{border-radius:8px 8px 0 0;height:auto;max-height:300px}.schedule-network-shell .schedule-network-host{border-left:1px solid var(--line);border-radius:0 0 8px 8px;border-top:0;height:560px;min-height:500px}.schedule-empty,.schedule-loading,.schedule-network-host{height:560px;min-height:500px}.schedule-inspector{max-height:none}.mode-switch{display:flex;width:100%}.mode-switch button{flex:1}.model-layout{grid-template-columns:1fr}.model-inspector,.model-stage,.model-tools{grid-column:auto;grid-row:auto}.plan-model-layout .model-stage{grid-row:1}.plan-model-layout .model-tools{grid-row:2}.plan-model-layout .model-inspector{grid-row:3}.cad-viewer-frame--expanded .jwcad-source-viewer,.jwcad-source-viewer,.room-review-layout{grid-template-columns:1fr}.jwcad-layer-panel{max-height:360px}.cad-viewer-frame--expanded .jwcad-layer-panel{max-height:240px}.review-metrics{flex-wrap:wrap;margin-left:0;width:100%}.plan-review-canvas{min-width:720px}.room-review-inspector{max-height:none}.model-plan-viewer,.model-stage,.three-viewer{height:520px;min-height:520px}.model-plan-svg{min-height:460px;min-width:700px}.jwcad-three-host{height:500px;min-height:500px}}
