/* Product finish: shared visual language across every inspection section */
:root{--surface-quiet:#f7fafb;--border-soft:#dce7eb;--ink-strong:#173b48;--accent:#0b7285;--accent-soft:#e8f4f2;--focus-ring:#2a9d8f}
body{background:radial-gradient(circle at 90% -10%,#e5f3f0 0,transparent 30rem),#f3f7f8;color:#284652}
main{max-width:1480px;margin:0 auto}
.topbar{box-shadow:0 1px 0 #fff,0 8px 22px #102f3c08}
.topbar .crumb strong{color:var(--ink-strong)}
.page-heading,.section-intro,.list-header{animation:product-enter .24s ease both}
.page-heading p,.section-intro p,.list-header p{color:#607780}
.panel,.viewer,.output-row,.observation,.work-order-card,.task-card,.project-card,.stats-strip{border-color:var(--border-soft)}
.panel-heading{padding-bottom:12px;border-bottom:1px solid #e6eef0}
.panel-heading .eyebrow,.section-intro .eyebrow,.list-header .eyebrow{color:var(--accent);font-weight:750}
.panel-lead{color:#5d737c}
.status-line,.notice,.annotation-status{border-radius:11px}
.status-line strong{color:var(--accent)}
.btn{min-height:40px}.btn.small{min-height:34px}.btn.primary{background:linear-gradient(135deg,#0b7285,#176b82);border-color:#0b7285}.btn.primary:hover:not(:disabled){background:linear-gradient(135deg,#138a8d,#155e75)}
.badge{font-weight:700;letter-spacing:.035em}
/* Make every tool section feel like one product rather than separate prototypes. */
.workspace,.survey-cloud-workspace,.cloud-workspace,.recognition-workspace,.inspection-tools-panel,.registration-panel,.report-workspace-grid{animation:product-enter .24s ease both}
.workspace>*,.survey-cloud-workspace>*,.cloud-workspace>*,.recognition-workspace>*,.inspection-tools-panel>*,.registration-panel>*,.report-workspace-grid>*{min-width:0}
.viewer-top,.survey-cloud-toolbar,.cloud-library-toolbar,.cloud-workspace [data-cloud-form],.inspection-action-row,.inspection-consent{border-color:var(--border-soft);box-shadow:0 5px 15px #102f3c08}
.viewer-top h3,.survey-cloud-toolbar h3{color:var(--ink-strong)}
.viewer-footer,.survey-cloud-note{color:#71858c;font-size:10px}
.output-row,.model-import-row,.observation,.work-order-card{transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease,background .18s ease}
.output-row:hover,.model-import-row:hover,.observation:hover,.work-order-card:hover{transform:translateY(-2px);border-color:#b9d8d2;box-shadow:0 12px 26px #102f3c12;background:#fbfefd}
.project-layout>#project-content{animation:product-enter .2s ease both}
.project-layout .section-nav{box-shadow:0 10px 24px #102f3c0b}
.project-layout .section-nav button.active{font-weight:750}
.empty{box-shadow:0 10px 24px #102f3c08}
/* Consistent data density for tables, imports, and metadata panels. */
table{border-collapse:separate;border-spacing:0;overflow:hidden;border:1px solid var(--border-soft);border-radius:11px;background:#fff}th{background:#f4f8f8;color:#60777e;font-size:10px;letter-spacing:.06em;text-transform:uppercase}td,th{padding:11px 12px;border-bottom:1px solid #e7eef0}tr:last-child td{border-bottom:0}tr:hover td{background:#f8fbfb}
/* Better focus and dialogs. */
:focus-visible{outline:3px solid #55ad9b;outline-offset:3px}dialog{border:1px solid #d5e4e6;background:#fff}dialog::backdrop{background:#102f3c88;backdrop-filter:blur(3px)}.dialog-close{width:32px;height:32px;border-radius:50%;background:#f1f6f6!important;color:#56717a!important}.dialog-close:hover{background:#e2efed!important;color:#0b7285!important}
#toast{font-weight:650}
/* Clear loading affordances across lazy-loaded sections. */
[role=status].loading,.panel.loading{position:relative;overflow:hidden;color:transparent!important;min-height:84px;background:linear-gradient(100deg,#fff 25%,#edf5f4 45%,#fff 65%);background-size:220% 100%;animation:product-shimmer 1.4s infinite}
[role=status].loading:after,.panel.loading:after{content:'Loading workspace';position:absolute;inset:0;display:grid;place-items:center;color:#6b858e;font-size:11px}
/* Utility affordance injected by product-finish.js. */
.product-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:100;background:linear-gradient(90deg,#2a9d8f,#6d85f5,#2a9d8f);transform-origin:left;animation:product-progress 1.1s ease-out forwards;pointer-events:none}.back-to-top{position:fixed;right:22px;bottom:22px;z-index:30;width:40px;height:40px;border:1px solid #cfe0e3;border-radius:50%;background:#fff;color:#0b7285;box-shadow:0 8px 20px #102f3c1f;font-size:18px;opacity:0;pointer-events:none;transform:translateY(8px);transition:opacity .2s,transform .2s}.back-to-top.visible{opacity:1;pointer-events:auto;transform:none}.back-to-top:hover{background:#eaf5f3}
@keyframes product-enter{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes product-shimmer{to{background-position:-220% 0}}@keyframes product-progress{from{transform:scaleX(.05)}to{transform:scaleX(1)}}
@media(max-width:700px){main{width:100%}.panel{padding:20px}.page-heading,.section-intro,.list-header{gap:15px}.back-to-top{right:14px;bottom:14px;width:36px;height:36px}.output-row,.model-import-row{overflow-wrap:anywhere}}
@media(prefers-reduced-motion:reduce){.page-heading,.section-intro,.list-header,.workspace,.survey-cloud-workspace,.cloud-workspace,.recognition-workspace,.inspection-tools-panel,.registration-panel,.report-workspace-grid{animation:none}.product-progress{display:none}}
.mobile-nav-toggle{display:none;align-items:center;justify-content:center;flex-direction:column;gap:4px;width:38px;height:38px;margin-right:12px;padding:8px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);cursor:pointer}.mobile-nav-toggle span{display:block;width:17px;height:2px;border-radius:4px;background:#0b7285;transition:transform .18s,opacity .18s}.nav-open .mobile-nav-toggle span:nth-child(1){transform:translateY(6px) rotate(45deg)}.nav-open .mobile-nav-toggle span:nth-child(2){opacity:0}.nav-open .mobile-nav-toggle span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
@media(max-width:900px){.mobile-nav-toggle{display:inline-flex}.sidebar{position:fixed;inset:0 auto 0 0;width:278px!important;max-width:calc(100vw - 46px);padding:24px 18px!important;transform:translateX(-105%);transition:transform .22s ease;box-shadow:18px 0 40px #102f3c35;overflow:auto;z-index:60}.nav-open .sidebar{transform:none}.nav-open:after{content:'';position:fixed;inset:0;background:#102f3c66;z-index:50;backdrop-filter:blur(2px)}.sidebar .brand{display:flex!important;padding:0 9px 34px!important}.sidebar .brand>span:last-child,.sidebar .nav-label,.sidebar .nav>span:not(.nav-icon),.sidebar .sidebar-info,.sidebar .sidebar-rule,.sidebar .identity>div,.sidebar .identity>.avatar,.sidebar .external{display:block}.sidebar .nav{justify-content:flex-start;padding:12px 14px}.sidebar .identity{justify-content:flex-start}.sidebar .logout{margin-left:auto}.shell{margin-left:0!important}.topbar{padding:0 24px!important}.topbar-right{margin-left:auto}}
@media(max-width:600px){.topbar{padding:0 14px!important}.mobile-nav-toggle{margin-right:8px}.topbar-right{gap:5px}.demo-badge{display:none}.topbar-right>.btn{font-size:0;padding:9px 10px}.topbar-right>.btn:before{content:'＋';font-size:16px}.section-nav{overflow-x:auto}.project-layout .section-nav{position:relative;top:auto}.project-layout .section-nav .nav-group{min-width:220px}}
@media(prefers-reduced-motion:reduce){.sidebar,.mobile-nav-toggle span{transition:none}}
