:root{--ph-info: var(--ph-action);--ph-fg-4: var(--ph-zinc-400);--ph-glass-bg-light: rgba(255,255,255,.65);--ph-glass-bg-dark: rgba(255,255,255,.06);--ph-glass-border-light: rgba(15,19,28,.08);--ph-glass-border-dark: rgba(255,255,255,.12);--ph-glass-blur: 20px;--ph-glass-blur-sm: 12px;--ph-radius-2xl: 32px;--ph-radius-3xl: 40px;--ph-shadow-xl: 0 24px 56px rgba(11,26,46,.14), 0 8px 16px rgba(11,26,46,.06);--ph-shadow-glow: 0 8px 24px rgba(30,95,224,.28);--ph-shadow-inset: inset 0 1px 0 rgba(255,255,255,.6);--ph-font-display: "Inter", ui-sans-serif, sans-serif;--ph-tracking-tightest: -.04em;--ph-tracking-tighter: -.02em;--ph-tracking-tight: -.01em;--ph-tracking-wide: .04em;--ph-tracking-wider: .12em;--ph-tracking-widest: .2em;--ph-ease-in-out: cubic-bezier(.65, 0, .35, 1);--ph-ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ph-dur-slower: .8s;--ink-900: var(--ph-navy-950);--ink-800: var(--ph-navy-900);--ink-700: var(--ph-navy-800);--ink-600: var(--ph-navy-700);--ink-500: var(--ph-zinc-600);--ink-400: var(--ph-zinc-500);--ink-300: var(--ph-zinc-400);--ink-200: var(--ph-zinc-300);--ink-100: var(--ph-zinc-200);--ink-50: var(--ph-panel);--blue-700: var(--ph-blue-700);--blue-600: var(--ph-blue-500);--blue-500: var(--ph-blue-400);--blue-400: var(--ph-blue-300);--blue-300: var(--ph-blue-200);--blue-200: var(--ph-blue-100);--blue-100: var(--ph-blue-50);--blue-50: var(--ph-blue-50);--bg-app: var(--ph-bg);--bg-surface: var(--ph-white);--bg-raised: var(--ph-white);--bg-sunken: var(--ph-panel);--bg-grid: var(--ph-zinc-200);--text-strong: var(--ph-fg-1);--text-body: var(--ph-fg-2);--text-muted: var(--ph-fg-3);--text-soft: var(--ph-fg-4);--text-on-primary: var(--ph-fg-on-brand);--border-subtle: var(--ph-border-subtle);--border-default: var(--ph-border);--border-strong: var(--ph-border-strong);--success-700: #047857;--success-600: #059669;--success-500: var(--ph-success);--success-100: #D1FAE5;--success-50: var(--ph-success-bg);--warning-700: #B45309;--warning-600: #D97706;--warning-500: var(--ph-warning);--warning-100: #FEF3C7;--warning-50: var(--ph-warning-bg);--danger-700: #B91C1C;--danger-600: #DC2626;--danger-500: var(--ph-danger);--danger-100: #FEE2E2;--danger-50: var(--ph-danger-bg);--info-600: var(--ph-blue-500);--info-100: var(--ph-blue-100);--info-50: var(--ph-blue-50);--d-arq: var(--ph-disc-arch);--d-est: var(--ph-disc-struct);--d-hid: var(--ph-disc-mep);--d-ele: #EAB308;--d-avac: var(--ph-disc-civil);--d-tel: #A855F7;--d-spcl: var(--ph-zinc-600);--d-arq-soft: #EDE4FE;--d-est-soft: #FFE4D2;--d-hid-soft: #CFFAFE;--d-ele-soft: #FEF3C7;--d-avac-soft: #ECFCCB;--d-tel-soft: #F3E8FF;--d-spcl-soft: var(--ph-zinc-100);--r-xs: var(--ph-radius-xs);--r-sm: var(--ph-radius-sm);--r-md: var(--ph-radius-md);--r-lg: var(--ph-radius-lg);--r-xl: var(--ph-radius-xl);--r-pill: var(--ph-radius-pill);--s-1: var(--ph-space-1);--s-2: var(--ph-space-2);--s-3: var(--ph-space-3);--s-4: var(--ph-space-4);--s-5: var(--ph-space-5);--s-6: var(--ph-space-6);--s-7: var(--ph-space-8);--s-8: var(--ph-space-10);--s-9: var(--ph-space-14, 56px);--s-10: var(--ph-space-18, 72px);--shadow-xs: var(--ph-shadow-xs);--shadow-sm: var(--ph-shadow-sm);--shadow-md: var(--ph-shadow-md);--shadow-lg: var(--ph-shadow-lg);--glow-blue: 0 0 0 3px rgba(30,95,224,.2);--glow-blue-soft: var(--ph-shadow-glow);--font-sans: var(--ph-font-sans);--font-mono: var(--ph-font-mono);--ease-out: var(--ph-ease-out);--ease-in-out: var(--ph-ease-in-out);--dur-fast: var(--ph-dur-fast);--dur-base: var(--ph-dur-base);--dur-slow: var(--ph-dur-slow);--blue: var(--ph-blue-500);--blue-light: var(--ph-blue-400);--blue-pale: var(--ph-blue-50);--blue-mid: var(--ph-blue-100);--text: var(--ph-fg-1);--text-2: var(--ph-fg-2);--text-3: var(--ph-fg-3);--border: var(--ph-border);--border-2: var(--ph-border-subtle);--surface: var(--ph-bg-raised);--bg: var(--ph-bg);--red: var(--ph-danger);--green: var(--ph-success);--amber: var(--ph-warning);--purple: var(--ph-disc-arch);--sidebar-w: 224px;--radius: var(--ph-radius-md);--clay-r: var(--ph-radius-xl);--shadow: var(--ph-shadow-sm);--sb-bg: var(--ph-bg-raised);--sb-active: var(--ph-blue-50);--sb-hover: var(--ph-panel);--sb-text: var(--ph-fg-2);--sb-text-hi: var(--ph-fg-1);--sb-border: var(--ph-border);--sb-section: var(--ph-fg-3)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg-app);color:var(--text-body);font-family:var(--font-sans);font-size:14px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"ss01","cv11"}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--ink-200);border-radius:var(--r-pill);border:2px solid var(--bg-app)}::-webkit-scrollbar-thumb:hover{background:var(--ink-300)}input,select,textarea,button{font-family:var(--font-sans)}::selection{background:var(--blue-200);color:var(--ink-900)}input:focus,select:focus,textarea:focus{outline:none}button{cursor:pointer;touch-action:manipulation}a{text-decoration:none;color:inherit;touch-action:manipulation}.t-display{font-size:56px;line-height:1.04;letter-spacing:-.025em;font-weight:600;color:var(--text-strong)}.t-h1{font-size:40px;line-height:1.1;letter-spacing:-.02em;font-weight:600;color:var(--text-strong)}.t-h2{font-size:28px;line-height:1.18;letter-spacing:-.015em;font-weight:600;color:var(--text-strong)}.t-h3{font-size:20px;line-height:1.25;letter-spacing:-.01em;font-weight:600;color:var(--text-strong)}.t-h4{font-size:16px;line-height:1.35;font-weight:600;color:var(--text-strong)}.t-body{font-size:15px;line-height:1.55;font-weight:400;color:var(--text-body)}.t-body-sm{font-size:13px;line-height:1.5;font-weight:400;color:var(--text-body)}.t-caption{font-size:12px;line-height:1.4;font-weight:500;color:var(--text-muted);letter-spacing:.01em}.t-overline{font-size:11px;line-height:1.4;font-weight:600;color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase}.t-mono{font-family:var(--font-mono);font-size:13px;line-height:1.5;color:var(--text-body);font-feature-settings:"zero" 1}.ph-display-1{font-family:var(--ph-font-display);font-size:clamp(48px,7vw,76px);font-weight:700;line-height:1.05;letter-spacing:var(--ph-tracking-tightest);color:var(--ph-fg-1)}.ph-display-2{font-family:var(--ph-font-display);font-size:clamp(36px,5.2vw,60px);font-weight:700;line-height:1.05;letter-spacing:var(--ph-tracking-tighter);color:var(--ph-fg-1)}.ph-h1{font-size:36px;font-weight:700;line-height:1.2;letter-spacing:var(--ph-tracking-tighter);color:var(--ph-fg-1)}.ph-h2{font-size:30px;font-weight:600;line-height:1.2;letter-spacing:var(--ph-tracking-tight);color:var(--ph-fg-1)}.ph-h3{font-size:24px;font-weight:600;line-height:1.2;letter-spacing:var(--ph-tracking-tight);color:var(--ph-fg-1)}.ph-h4{font-size:20px;font-weight:600;line-height:1.2;color:var(--ph-fg-1)}.ph-h5{font-size:18px;font-weight:600;line-height:1.2;color:var(--ph-fg-1)}.ph-body-lg{font-size:18px;font-weight:400;line-height:1.5;color:var(--ph-fg-2)}.ph-body{font-size:15px;font-weight:400;line-height:1.5;color:var(--ph-fg-2)}.ph-body-sm{font-size:13px;font-weight:400;line-height:1.5;color:var(--ph-fg-2)}.ph-caption{font-size:12px;font-weight:500;line-height:1.5;color:var(--ph-fg-3)}.ph-eyebrow{font-size:11px;font-weight:600;line-height:1;letter-spacing:var(--ph-tracking-widest);text-transform:uppercase;color:var(--ph-fg-3)}.ph-mono{font-family:var(--ph-font-mono);font-size:13px;font-weight:500;color:var(--ph-fg-1)}.ph-brand{font-weight:700;letter-spacing:-.02em}.ph-brand .ph-brand-1{color:var(--ph-navy-900)}.ph-brand .ph-brand-2{color:var(--ph-blue-500)}.bp-grid{background-image:linear-gradient(var(--bg-grid) 1px,transparent 1px),linear-gradient(90deg,var(--bg-grid) 1px,transparent 1px);background-size:24px 24px}.bp-grid-fine{background-image:linear-gradient(var(--bg-grid) 1px,transparent 1px),linear-gradient(90deg,var(--bg-grid) 1px,transparent 1px);background-size:8px 8px;background-color:var(--bg-surface)}#root{display:flex;height:100vh;overflow:hidden}.app-shell{flex:1;display:flex;height:100vh;overflow:hidden}.loading-screen{flex:1;display:grid;place-items:center;background:var(--bg-app)}.sidebar{width:var(--sidebar-w);background:var(--ink-900);border-right:1px solid var(--ink-800);display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;z-index:120;padding:0;transform:translate(-100%);transition:transform var(--dur-base) var(--ease-out),box-shadow var(--dur-base);box-shadow:none;flex-shrink:0}.sidebar.sidebar-open{transform:translate(0);box-shadow:0 0 40px #0b1f3666}.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b1f3666;z-index:119;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}@media (min-width:1024px){.sidebar{position:relative;transform:none!important;box-shadow:none!important}.sidebar-overlay{display:none!important}.topbar-hamburger{display:none}}.main{flex:1;display:flex;flex-direction:column;height:100vh;overflow:hidden;width:100%;min-width:0}.topbar{background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);padding:0 var(--s-6);height:56px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;z-index:50;box-shadow:var(--shadow-xs);gap:var(--s-4)}.content{padding:var(--s-6) var(--s-7);flex:1;overflow-y:auto;min-height:0;width:100%;max-width:none}.content.gantt-mode{padding:0;overflow:hidden;display:flex;flex-direction:column}.auth-shell{flex:1;min-height:100vh;background:radial-gradient(ellipse at top,var(--blue-50) 0%,var(--bg-app) 60%);display:grid;place-items:center;padding:var(--s-6)}.auth-card{width:min(100%,420px);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-xl);padding:var(--s-8) var(--s-7);box-shadow:var(--shadow-lg);margin:auto}.register-card{width:min(100%,480px)}.sb-logo{padding:18px 16px 14px;border-bottom:1px solid var(--sb-border)}.sb-logo-img{display:block;width:100%;max-width:110px;height:auto;margin:0 auto}.sb-section{padding:18px 14px 5px;font-size:10px;font-weight:600;color:var(--sb-section);letter-spacing:.1em;text-transform:uppercase}.sb-item{display:flex;align-items:center;gap:9px;padding:8px 12px;border-radius:var(--r-md);margin:1px 8px;color:var(--sb-text);font-size:13px;font-weight:500;cursor:pointer;transition:all var(--dur-fast) var(--ease-out);border:none;background:none;width:calc(100% - 16px);text-align:left}.sb-item:hover{background:var(--sb-hover);color:var(--sb-text-hi)}.sb-item.locked{opacity:.68}.sb-item.locked .icon{filter:grayscale(1)}.sb-item.active{background:#1b4fe02e;color:#fff;font-weight:600;box-shadow:none;position:relative}.sb-item.active:before{content:"";position:absolute;left:-8px;top:50%;transform:translateY(-50%);width:3px;height:60%;background:var(--blue-400);border-radius:0 var(--r-pill) var(--r-pill) 0}.sb-item .icon{width:18px;height:18px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:14px;color:currentColor}.sb-item .icon svg{display:block}.sb-badge{margin-left:auto;background:#ffffff1f;color:var(--ink-200);font-size:10px;font-weight:600;padding:1px 6px;border-radius:var(--r-pill);border:1px solid rgba(255,255,255,.1)}.sb-item.active .sb-badge{background:#0003;color:#fff}.sb-nav{flex:1;overflow-y:auto;padding-top:var(--s-1)}.sb-bottom{padding:var(--s-4);border-top:1px solid var(--ink-800)}.sb-user{display:flex;align-items:center;gap:var(--s-2);margin-bottom:var(--s-2)}.sb-user-info{min-width:0}.sb-avatar{width:32px;height:32px;border-radius:50%;background:var(--blue-600);color:var(--ink-100);font-weight:600;font-size:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:2px solid rgba(255,255,255,.15);overflow:hidden}img.sb-avatar{object-fit:cover;background:transparent;display:block}.sb-user-name{font-size:13px;font-weight:600;color:var(--ink-100);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sb-user-role{font-size:11px;color:var(--ink-500)}.sb-logout{width:100%;padding:6px;border-radius:var(--r-sm);border:1px solid var(--ink-700);background:transparent;color:var(--ink-500);font-size:12px;font-weight:500;cursor:pointer;transition:all var(--dur-fast);text-align:center}.sb-logout:hover{background:var(--ink-800);color:var(--ink-300)}.page-title{font-size:16px;font-weight:600;color:var(--text-strong);letter-spacing:-.2px}.tb-actions{display:flex;gap:8px;align-items:center}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:var(--r-md);font-size:13px;font-weight:600;border:1.5px solid transparent;transition:all var(--dur-fast) var(--ease-out);cursor:pointer;letter-spacing:-.005em;touch-action:manipulation}.btn-primary{background:var(--ph-blue-500);color:#fff;border-color:var(--ph-blue-500);box-shadow:var(--ph-shadow-glow)}.btn-primary:hover{background:var(--ph-blue-600);border-color:var(--ph-blue-600);box-shadow:0 10px 28px #1e5fe057}.btn-primary:active{background:var(--ph-blue-700);box-shadow:var(--ph-shadow-sm);transform:translateY(.5px)}.btn-primary:focus-visible{outline:none;box-shadow:var(--ph-shadow-glow),var(--glow-blue)}.btn-secondary{background:var(--bg-surface);color:var(--text-body);border:1.5px solid var(--border-default);box-shadow:var(--shadow-xs)}.btn-secondary:hover{background:var(--bg-sunken);box-shadow:var(--shadow-sm)}.btn-secondary:active{background:var(--bg-sunken);box-shadow:none}.btn-ghost{background:transparent;color:var(--text-muted);border:none;padding:7px 10px}.btn-ghost:hover{background:var(--bg-sunken);color:var(--text-body)}.btn-danger{background:var(--danger-50);color:var(--danger-600);border:1.5px solid var(--danger-100)}.btn-danger:hover{background:var(--danger-100)}.btn-sm{padding:4px 10px;font-size:12px}.card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}.card:hover{box-shadow:var(--shadow-md)}.card-header{padding:var(--s-5) var(--s-5) 0;display:flex;align-items:center;justify-content:space-between}.card-body{padding:var(--s-5)}.stat-card{padding:var(--s-5);border-radius:var(--r-lg);background:var(--bg-surface);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);transition:box-shadow var(--dur-fast) var(--ease-out)}.stat-card:hover{box-shadow:var(--shadow-md)}.stat-label{font-size:11px;font-weight:600;color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;margin-bottom:7px}.stat-value{font-size:26px;font-weight:600;color:var(--text-strong);letter-spacing:-.03em}.stat-sub{font-size:12px;color:var(--text-muted);margin-top:4px}.home-widgets-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}@media (max-width:768px){.home-widgets-row{grid-template-columns:1fr}}.home-root{padding:0 32px 48px}.home-two-col{display:grid;grid-template-columns:380px 1fr;gap:24px;align-items:flex-start}.home-col-main{display:flex;flex-direction:column;gap:20px}.home-col-aside{display:flex;flex-direction:column;gap:16px}@media (max-width:900px){.home-root{padding:0 16px 40px}.home-two-col{grid-template-columns:1fr}}.demandas-section-title{font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;margin-bottom:6px;display:flex;align-items:center;gap:8px;color:var(--text-muted)}.demandas-section-title:after{content:"";flex:1;height:1px;background:var(--border-subtle)}.demanda-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:var(--r-md);cursor:pointer;transition:background var(--dur-fast);border-left:3px solid transparent}.demanda-item:hover{background:var(--bg-sunken)}.demanda-item--overdue{border-left-color:#dc2626}.demanda-item--today{border-left-color:#f59e0b}.demanda-item--upcoming{border-left-color:var(--border-subtle)}.cal-week-outer{overflow-x:auto}.cal-week-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;min-width:500px}.cal-week-col{min-height:160px;border:1px solid var(--border-subtle);border-radius:var(--r-sm);padding:6px;background:var(--bg-surface)}.cal-week-col.today{outline:2px solid var(--ph-blue-500);outline-offset:-1px}.cal-week-header{font-size:10px;font-weight:700;text-align:center;padding:4px 2px 6px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.cal-week-header.today{color:var(--ph-blue-500)}.cal-week-daynum{font-size:12px;font-weight:700;text-align:center;margin-bottom:4px;color:var(--text-muted)}.cal-week-daynum.today{color:var(--ph-blue-500)}.cal-view-toggle{display:flex;gap:2px;background:var(--bg-sunken);border-radius:var(--r-sm);padding:2px}.cal-view-btn{padding:4px 12px;border-radius:var(--r-xs,4px);border:none;background:transparent;font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;transition:all var(--dur-fast)}.cal-view-btn.active{background:var(--bg-surface);color:var(--text-strong);box-shadow:var(--shadow-xs)}.feed-card{transition:box-shadow var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out);cursor:pointer}.feed-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.feed-group-label{display:flex;align-items:center;gap:10px;font-size:11px;font-weight:700;letter-spacing:.07em;color:var(--text-muted);text-transform:uppercase;margin-bottom:10px}.feed-group-label:after{content:"";flex:1;height:1px;background:var(--border-subtle)}.widget--urgent{border-top:3px solid #f59e0b!important}.widget--projects{border-top:2px solid var(--ph-blue-500)!important}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--r-sm);border:none;background:transparent;color:var(--text-soft);cursor:pointer;flex-shrink:0;transition:background var(--dur-fast),color var(--dur-fast)}.btn-icon:hover{background:var(--bg-sunken);color:var(--text-body)}.home-stats-bar{display:flex;align-items:center;gap:6px;margin-top:10px;flex-wrap:wrap}.home-stat-pill{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--r-pill);font-size:12px;font-weight:600;border:1px solid transparent}.home-stat-pill--blue{background:var(--ph-blue-50);color:var(--ph-blue-500);border-color:var(--ph-blue-100)}.home-stat-pill--amber{background:var(--ph-warning-bg);color:#b45309;border-color:#fde68a}.home-stat-pill--green{background:var(--ph-success-bg);color:#059669;border-color:#a7f3d0;cursor:pointer;border:none}.awaiting-item{border-radius:var(--r-sm);transition:background var(--dur-fast)}.awaiting-item:hover{background:var(--bg-sunken)!important}.proj-status-card-btn{transition:box-shadow var(--dur-fast) var(--ease-out),border-color var(--dur-fast)}.proj-status-card-btn:hover{border-color:var(--ph-blue-200)!important;box-shadow:var(--shadow-sm)}.feed-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 20px;text-align:center;color:var(--text-muted);gap:12px}.feed-empty-icon{width:48px;height:48px;border-radius:50%;background:var(--bg-sunken);display:flex;align-items:center;justify-content:center;color:var(--text-soft)}.feed-empty p{font-size:13.5px;color:var(--text-muted);margin:0}.kanban-wrap{display:flex;gap:var(--s-3);overflow-x:auto;padding-bottom:var(--s-5);align-items:flex-start}.kanban-col{min-width:224px;width:224px;flex-shrink:0;background:var(--bg-sunken);border:1px solid var(--border-subtle);border-radius:var(--r-lg);overflow:hidden;transition:border-color var(--dur-fast);box-shadow:var(--shadow-xs)}.kanban-col.drag-over{border-color:var(--blue-600);background:var(--blue-50)}.kanban-col-header{padding:10px 14px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-subtle);background:var(--bg-surface)}.kanban-col-title{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}.kanban-count{background:var(--ink-100);color:var(--text-muted);font-size:11px;font-weight:600;padding:1px 7px;border-radius:var(--r-pill)}.kanban-col-body{padding:var(--s-2);display:flex;flex-direction:column;gap:6px;min-height:80px}.k-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-md);padding:var(--s-3);cursor:pointer;transition:all var(--dur-fast) var(--ease-out);box-shadow:var(--shadow-xs)}.k-card:hover{border-color:var(--blue-300);box-shadow:var(--shadow-sm)}.k-card.dragging{opacity:.4}.k-card-name{font-size:13px;font-weight:500;color:var(--text-strong);margin-bottom:3px}.k-card-sub{font-size:11px;color:var(--text-muted);margin-bottom:8px}.k-card-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:4px}.tag{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:var(--r-pill);font-size:11px;font-weight:500;border:1px solid transparent}.tag-blue{background:var(--blue-50);color:var(--blue-600);border-color:var(--blue-100)}.tag-green{background:var(--success-50);color:var(--success-600);border-color:var(--success-100)}.tag-red{background:var(--danger-50);color:var(--danger-600);border-color:var(--danger-100)}.tag-amber{background:var(--warning-50);color:var(--warning-600);border-color:var(--warning-100)}.tag-purple{background:var(--d-tel-soft);color:var(--d-tel);border-color:#e0c8f5}.tag-gray{background:var(--ink-50);color:var(--text-muted);border-color:var(--ink-200)}.k-followup{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--text-muted)}.k-followup.overdue{color:var(--danger-600)}.ph-sheet-wrap{display:flex;flex-direction:column;background:var(--ph-bg-raised);border:1px solid var(--ph-border);border-radius:var(--ph-radius-lg);overflow:hidden;box-shadow:var(--ph-shadow-sm);min-height:0}.ph-sheet-toolbar{display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--ph-border-subtle);background:var(--ph-bg-sunken);font-size:12px;flex-wrap:wrap}.ph-sheet-toolbar .spacer{flex:1}.ph-sheet-meta{font-size:11px;color:var(--ph-fg-3);font-variant-numeric:tabular-nums;letter-spacing:.02em}.ph-sheet-meta strong{color:var(--ph-fg-1);font-weight:600}.ph-sheet-density{display:inline-flex;background:var(--ph-bg-raised);border:1px solid var(--ph-border);border-radius:var(--ph-radius-pill);padding:2px;flex-shrink:0}.ph-sheet-density button{border:none;background:transparent;font-size:11px;font-weight:600;padding:4px 12px;border-radius:var(--ph-radius-pill);color:var(--ph-fg-3);cursor:pointer;letter-spacing:.02em;transition:all var(--ph-dur-fast) var(--ph-ease-out)}.ph-sheet-density button.active{background:var(--ph-blue-500);color:#fff;box-shadow:var(--ph-shadow-xs)}.ph-sheet-density button:not(.active):hover{color:var(--ph-fg-1)}.ph-sheet-scroll{flex:1;overflow:auto;min-height:0}.ph-sheet{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}.ph-sheet--fixed{table-layout:fixed}.ph-sheet thead th{position:sticky;top:0;z-index:2;background:var(--ph-bg-sunken);padding:10px 12px;text-align:left;font-size:10.5px;font-weight:600;color:var(--ph-fg-3);letter-spacing:.12em;text-transform:uppercase;border-bottom:1px solid var(--ph-border);white-space:nowrap;-webkit-user-select:none;user-select:none}.ph-sheet thead th.ph-num{text-align:right}.ph-sheet tbody td{padding:9px 12px;border-bottom:1px solid var(--ph-border-subtle);color:var(--ph-fg-1);vertical-align:top}.ph-sheet--fixed tbody td{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ph-sheet--fixed td.ph-col-descricao{white-space:normal;overflow-wrap:break-word;text-overflow:unset}.ph-sheet tbody tr{cursor:pointer;transition:background var(--ph-dur-fast) var(--ph-ease-out)}.ph-sheet tbody tr:nth-child(2n) td{background:var(--ph-zinc-25)}.ph-sheet tbody tr.selected td{background:#1e5fe01a;box-shadow:inset 3px 0 0 0 var(--ph-blue-500)}.ph-sheet tbody tr.selected:hover td{background:#1e5fe024}.ph-sheet td.ph-num{text-align:right;font-family:var(--ph-font-mono);font-size:11.5px;color:var(--ph-fg-1);white-space:nowrap}.ph-sheet td.ph-mute{color:var(--ph-fg-3)}.ph-sheet td.ph-mono{font-family:var(--ph-font-mono);font-size:11.5px}.ph-sheet tbody tr.ph-group td{font-weight:600;color:var(--ph-fg-1);text-transform:uppercase;letter-spacing:.05em}.ph-sheet tbody tr.ph-group-d0 td{background:var(--ph-panel);color:#1e3a5f;font-size:11px;font-weight:700;letter-spacing:.06em;box-shadow:inset 3px 0 0 0 var(--blue-500,#3b82f6)}.ph-sheet tbody tr.ph-group-d1 td{background:var(--ph-panel);color:#374151;font-size:10.5px;font-weight:600;letter-spacing:.04em}.ph-sheet tbody tr.ph-group-d2 td{background:var(--ph-panel);color:#4b5563;font-size:10px;font-weight:600;letter-spacing:.03em;text-transform:none}.ph-sheet tbody tr.ph-group.selected td{background:#1e5fe024!important;box-shadow:inset 3px 0 0 0 var(--ph-blue-500)}.ph-sheet tbody tr.ph-group.selected:hover td{background:#1e5fe02e!important}.quant-chevron-btn{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;padding:0;border:0;background:transparent;color:var(--ph-fg-3);font-size:9px;line-height:1;cursor:pointer;border-radius:3px}.quant-chevron-btn:hover{background:#1e5fe01f;color:var(--ph-blue-600)}.ph-sheet tfoot td{padding:11px 12px;background:var(--ph-bg-sunken);font-weight:600;color:var(--ph-fg-1);border-top:2px solid var(--ph-border);position:sticky;bottom:0;z-index:1}.ph-sheet tfoot td.ph-num{text-align:right;font-family:var(--ph-font-mono)}.ph-sheet--no-zebra tbody tr:nth-child(2n) td{background:transparent}.ph-sheet--no-zebra tbody tr:hover td{background:transparent}.ph-sheet--dense tbody td{padding:2px 8px;font-size:11px;line-height:1.3;vertical-align:middle}.ph-sheet--dense thead th{padding:4px 8px;font-size:10px}.ph-sheet--dense tfoot td{padding:4px 8px}.ph-sheet--dense tbody td.ph-num{font-size:10.5px}.ph-sheet--dense.ph-sheet--fixed td.ph-col-descricao{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ph-sheet--dense tbody tr.ph-group td{padding-top:3px;padding-bottom:3px}.ph-sheet-empty{padding:48px 20px;text-align:center;color:var(--ph-fg-3);font-size:12px}.ph-sheet-overflow{padding:14px;text-align:center;color:var(--ph-fg-3);font-size:11.5px;background:var(--ph-bg-sunken);border-top:1px solid var(--ph-border-subtle)}.leaf-source-tag{display:inline-block;margin-left:5px;padding:0 4px;border-radius:3px;background:var(--bg-sunken);font-family:var(--font-sans);font-size:9px;font-weight:600;letter-spacing:.04em;color:var(--text-3);text-transform:uppercase;line-height:13px;height:13px;vertical-align:1px;white-space:nowrap}tr.selected .leaf-source-tag{background:#fff;color:var(--ph-blue-600)}.quant-cost-cell{padding:0 4px!important}.quant-cost-input-wrap{display:inline-flex;align-items:center;justify-content:flex-end;gap:5px;width:100%}.quant-cost-dot{display:inline-block;width:5px;height:5px;border-radius:50%;flex-shrink:0}.quant-cost-dot.tenant{background:var(--text-3)}.quant-cost-dot.project{background:var(--ph-blue-500)}.quant-cost-input{width:100%;min-width:0;border:1px solid transparent;background:transparent;font-family:var(--ph-font-mono);font-size:11px;color:var(--ph-fg-1);padding:3px 5px;border-radius:4px;text-align:right;transition:border-color .12s,background .12s}.quant-cost-input::placeholder{color:var(--text-3)}.quant-cost-input:hover:not(:disabled):not(:focus){border-color:var(--border-subtle);background:#fff}.quant-cost-input:focus{outline:none;border-color:var(--ph-blue-500);background:#fff;box-shadow:0 0 0 2px #1e5fe01f}.quant-cost-input:disabled{cursor:default;color:var(--text-3)}.ph-sheet tfoot td{background:var(--bg-sunken);border-top:2px solid var(--border);font-size:12px}.quant-panel{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--bg-surface)}.quant-panel-topbar{display:flex;align-items:center;gap:5px;padding:6px 8px;border-bottom:1px solid var(--border-subtle);background:var(--bg-sunken);flex-shrink:0}.quant-topbar-search{flex:1;min-width:0;height:26px!important;font-size:11px!important;padding:0 8px!important;border-radius:5px!important}.quant-panel-topbar .btn{flex-shrink:0;height:26px;padding:0 8px;font-size:11px;gap:4px}.quant-bases-toggle-btn{display:inline-flex;align-items:center;gap:4px}.quant-bases-toggle-btn.active{background:var(--blue-50);border-color:var(--blue-200);color:var(--blue-600)}.quant-bases-count{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:15px;padding:0 4px;border-radius:99px;background:var(--blue-600);color:#fff;font-size:9px;font-weight:700}.quant-filter-menu-wrap{position:relative;flex-shrink:0}.quant-filter-btn{display:inline-flex;align-items:center;gap:4px}.quant-filter-btn.active{background:var(--blue-50);border-color:var(--blue-200);color:var(--blue-600)}.quant-filter-menu{position:absolute;top:calc(100% + 5px);right:0;z-index:60;width:236px;max-width:calc(100vw - 24px);background:var(--bg-surface);border:1px solid var(--border-default);border-radius:9px;box-shadow:0 12px 30px #0f172a33;padding:8px;display:flex;flex-direction:column;gap:6px}.quant-filter-menu-row{display:flex;flex-direction:column;gap:3px}.quant-filter-menu-label{font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}.quant-filter-menu-row .form-input{height:28px;font-size:12px;padding:0 8px}.quant-filter-menu-toggle{display:flex;align-items:center;gap:7px;width:100%;padding:7px 8px;border:1px solid var(--border-subtle);border-radius:7px;background:var(--bg-surface);color:var(--text-body);font-size:12px;font-weight:600;cursor:pointer;text-align:left;transition:all .12s}.quant-filter-menu-toggle:hover{border-color:var(--blue-400,#60a5fa);background:var(--blue-50,#eff6ff)}.quant-filter-menu-toggle.active{background:var(--blue-50);border-color:var(--blue-200);color:var(--blue-600)}.quant-bases-section{padding:8px 10px;border-bottom:1px solid var(--border-subtle);background:var(--bg-surface);display:flex;flex-direction:column;gap:6px}.quant-panel-table-wrap{flex:1;min-height:0;overflow:auto;background:var(--bg-surface)}.quant-panel-table-wrap .ph-sheet{font-size:11px}.quant-bases-control{position:relative;display:inline-flex}.quant-bases-popover{position:absolute;top:calc(100% + 6px);right:0;min-width:300px;max-width:360px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:12px;box-shadow:var(--shadow-lg);padding:10px;z-index:30}.quant-bases-popover-head{margin-bottom:8px}.quant-bases-popover-head strong{display:block;font-size:12px;color:var(--text-strong)}.quant-bases-popover-head span{display:block;font-size:10.5px;color:var(--text-muted);margin-top:1px}.quant-bases-error{margin-top:8px;padding:6px 8px;border:1px solid var(--danger-100);border-radius:6px;background:var(--danger-50);color:var(--danger-600);font-size:11px}.quant-bases-note{margin-top:8px;padding:6px 8px;border:1px solid var(--border-subtle);border-radius:6px;background:var(--bg-sunken);color:var(--text-muted);font-size:10.5px}.quant-bases-list{list-style:none;margin:8px 0 0;padding:0;max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.quant-bases-list li{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--border-subtle);border-radius:8px;background:var(--bg-sunken)}.quant-bases-list li.inactive{opacity:.55}.quant-bases-empty{display:block;padding:10px;font-size:11px;color:var(--text-muted);text-align:center;border:1px dashed var(--border-subtle);border-radius:8px;background:transparent}.quant-bases-toggle{display:inline-flex;align-items:center}.quant-bases-toggle input{width:14px;height:14px;accent-color:var(--blue-600)}.quant-bases-name{flex:1;min-width:0;display:flex;flex-direction:column}.quant-bases-name strong{font-size:11.5px;font-weight:600;color:var(--text-strong);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.quant-bases-name span{font-size:10px;color:var(--text-muted)}.quant-bases-delete{width:22px;height:22px;border:none;background:transparent;border-radius:6px;color:var(--text-3);font-size:14px;line-height:1;cursor:pointer;flex-shrink:0}.quant-bases-delete:hover{background:var(--danger-50);color:var(--danger-600)}.table-wrap{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--border-subtle);background:var(--bg-surface);box-shadow:var(--shadow-sm)}table{width:100%;border-collapse:collapse}thead th{padding:10px 16px;text-align:left;font-size:11px;font-weight:600;color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;background:var(--bg-sunken);border-bottom:1px solid var(--border-default)}tbody td{padding:12px 16px;border-bottom:1px solid var(--border-subtle);font-size:13px;color:var(--text-body)}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--blue-50)}tbody tr{cursor:pointer;transition:background .1s}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b1f3673;z-index:300;display:flex;align-items:center;justify-content:center;padding:var(--s-5);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fadeOverlay var(--dur-base) var(--ease-out)}@keyframes fadeOverlay{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-surface);border-radius:var(--r-xl);border:1px solid var(--border-subtle);box-shadow:var(--shadow-lg);width:100%;max-height:90vh;overflow-y:auto;animation:modalIn var(--dur-base) var(--ease-out)}@keyframes modalIn{0%{opacity:0;transform:scale(.97) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-sm{max-width:460px}.modal-md{max-width:600px}.modal-lg{max-width:800px}.modal-xl{max-width:1040px}.rte-modal{display:flex;flex-direction:column;max-height:88vh}.rte-modal .rte-modal-editor{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.rte-modal .rte-modal-editor .rich-editor-wrap{flex:1;min-height:0;display:flex;flex-direction:column}.rte-modal .rte-modal-editor .rich-editor-wrap>div:not(.rich-toolbar){flex:1;min-height:0;display:flex;flex-direction:column}.rte-modal .rte-modal-editor .rich-content{flex:1;min-height:0!important;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}.rte-field-btn{width:100%;text-align:left;display:flex;align-items:center;gap:10px;padding:11px 13px;border:1px solid var(--border-default);border-radius:9px;background:var(--bg-app);color:var(--text-body);font-size:13px;cursor:pointer;transition:border-color .12s,background .12s}.rte-field-btn:hover{border-color:var(--blue-600);background:var(--bg-surface)}.rte-field-btn-empty{cursor:default;color:var(--text-muted);font-style:italic}.rte-field-btn-empty:hover{border-color:var(--border-default);background:var(--bg-app)}.rte-field-btn .rte-field-btn-label{flex:1;min-width:0}.rte-field-btn .rte-field-btn-hint{color:var(--text-muted);font-size:12px}.modal-header{padding:var(--s-6) var(--s-6) 0;display:flex;align-items:flex-start;justify-content:space-between}.modal-title{font-size:16px;font-weight:600;color:var(--text-strong)}.modal-body{padding:var(--s-5) var(--s-6)}.modal-footer{padding:0 var(--s-6) var(--s-6);display:flex;gap:var(--s-2);justify-content:flex-end}.close-btn{background:transparent;border:1px solid var(--border-subtle);width:30px;height:30px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:16px;cursor:pointer;flex-shrink:0;transition:all var(--dur-fast)}.close-btn:hover{background:var(--bg-sunken);color:var(--text-strong);border-color:var(--border-default)}.form-grid{display:grid;gap:14px}.form-grid-2{grid-template-columns:1fr 1fr}.form-group{display:flex;flex-direction:column;gap:5px}.form-group.span-2{grid-column:1/-1}label{font-size:11px;font-weight:600;color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase}.form-input{padding:8px 12px;border:1.5px solid var(--border-default);border-radius:var(--r-md);font-size:13px;color:var(--text-strong);background:var(--bg-surface);transition:all var(--dur-fast) var(--ease-out);width:100%;touch-action:manipulation}.form-input:hover{border-color:var(--border-strong)}.form-input:focus{border-color:var(--blue-600);box-shadow:var(--glow-blue)}.form-input::placeholder{color:var(--text-soft)}textarea.form-input{resize:vertical;min-height:80px}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.cal-day-name{text-align:center;font-size:10px;font-weight:600;color:var(--text-muted);padding:6px 0;letter-spacing:.04em}.cal-day{border:1px solid var(--border-subtle);border-radius:10px;min-height:78px;padding:5px}.cal-day.today{border-color:var(--blue-600);background:var(--blue-50)}.cal-day.other-month{background:var(--bg-app);opacity:.5}.cal-day-num{font-size:11px;font-weight:600;color:var(--text-body);margin-bottom:3px}.cal-day.today .cal-day-num{color:var(--blue-600)}.cal-event{background:var(--blue-50);color:var(--blue-600);font-size:9px;font-weight:600;padding:2px 5px;border-radius:5px;margin-bottom:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border:1px solid var(--blue-200)}.cal-event.meeting{background:#f0fdf4;color:#16a34a;border-color:#bbf7d0}.cal-event.followup{background:var(--warning-50);color:var(--warning-600);border-color:var(--warning-100)}.cal-event.deadline{background:#fef2f2;color:var(--red);border-color:#fecaca}.pipe-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.tabs{display:flex;gap:2px;background:var(--bg-sunken);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:3px}.tab{padding:5px 14px;border-radius:var(--r-md);font-size:12px;font-weight:500;color:var(--text-muted);border:none;background:transparent;cursor:pointer;transition:all var(--dur-fast) var(--ease-out)}.tab.active{background:var(--bg-surface);color:var(--blue-600);box-shadow:var(--shadow-sm);font-weight:600}.fu-item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border-subtle)}.fu-item:last-child{border-bottom:none}.fu-check{width:18px;height:18px;border:1px solid var(--border-subtle);border-radius:5px;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s}.fu-check.done{background:var(--green);border-color:var(--green)}.fu-check.done:after{content:"";width:10px;height:10px;background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat}.fu-check:hover:not(.done){border-color:var(--blue-600)}.empty-state{text-align:center;padding:40px 20px;color:var(--text-3)}.empty-state .icon{font-size:36px;margin-bottom:12px}.empty-state p{font-size:13px}.badge{padding:3px 9px;border-radius:var(--r-pill);font-size:11px;font-weight:500;border:1px solid transparent}.divider{height:1px;background:var(--border-2);margin:16px 0}.search-input{padding:7px 12px 7px 34px;border:1.5px solid var(--border-default);border-radius:var(--r-md);font-size:13px;color:var(--text-strong);background:var(--bg-surface);width:230px;transition:all var(--dur-base) var(--ease-out)}.search-input:hover{border-color:var(--border-strong)}.search-input:focus{border-color:var(--blue-600);width:270px;box-shadow:var(--glow-blue)}.search-wrap{position:relative}.search-icon{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:13px;pointer-events:none}.conn-arrow{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:500;color:var(--blue-600);background:var(--blue-50);padding:4px 10px;border-radius:var(--r-pill);border:1px solid var(--blue-200)}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-up{animation:fadeUp .2s ease}@keyframes scaleIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.scale-in{animation:scaleIn .17s ease}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.boot-spinner{display:inline-block;width:22px;height:22px;border:2.5px solid var(--border-default);border-top-color:var(--blue-600);border-radius:50%;animation:spin .8s linear infinite}.pill-stage{padding:3px 9px;border-radius:var(--r-pill);font-size:11px;font-weight:500;white-space:nowrap;border:1px solid transparent}.portal-wrap{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-app);font-family:var(--font-sans)}.portal-header{background:var(--sb-bg);color:#fff;padding:0 24px;height:58px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 12px #0003}.portal-logo{display:flex;align-items:center;gap:10px}.portal-logo-icon{width:34px;height:34px;background:#ffffff1f;border-radius:9px;display:flex;align-items:center;justify-content:center;border:1.5px solid rgba(255,255,255,.15)}.portal-project-name{font-weight:600;font-size:14px;letter-spacing:-.3px}.portal-client-name{font-size:10px;opacity:.5;margin-top:1px;font-weight:500}.portal-body{max-width:900px;margin:0 auto;padding:32px 20px 60px}.portal-card{background:var(--bg-surface);border-radius:var(--r-xl);border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);overflow:hidden;margin-bottom:20px}.portal-card-header{padding:14px 22px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;background:var(--bg-sunken)}.portal-card-title{font-weight:600;font-size:13.5px;color:var(--text-strong);display:flex;align-items:center;gap:8px}.portal-card-body{padding:18px 22px}.portal-stage-step{padding:10px 6px;text-align:center;font-size:10px;font-weight:600;letter-spacing:.04em;flex:1}.portal-stage-step.done{background:var(--blue-600);color:#fff}.portal-stage-step.current{background:var(--blue-500);color:#fff}.portal-stage-step.upcoming{background:var(--bg-sunken);color:var(--text-muted)}.ml-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border-subtle)}.ml-row:last-child{border-bottom:none}.ml-status-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.ml-status-dot.entregue{background:#10b981}.ml-status-dot.em_andamento{background:#f59e0b}.ml-status-dot.pendente{background:#cbd5e1}.portal-file-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--border-subtle);border-radius:12px;background:var(--bg-sunken);margin-bottom:8px;box-shadow:3px 3px #4f7ef812}.portal-file-icon{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:18px;background:var(--blue-50);border:1.5px solid var(--blue-200);flex-shrink:0}.portal-login{min-height:100vh;background:linear-gradient(135deg,#2e3d5c,#4f7ef8);display:flex;align-items:center;justify-content:center}.portal-login-card{background:var(--bg-surface);border-radius:var(--r-xl);padding:48px;width:420px;box-shadow:var(--shadow-lg);border:1px solid var(--border-subtle)}.portal-timeline-item{display:flex;gap:14px;padding-bottom:18px;position:relative}.portal-timeline-item:before{content:"";position:absolute;left:13px;top:28px;bottom:0;width:2px;background:var(--border-subtle)}.portal-timeline-item:last-child:before{display:none}.portal-tl-dot{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0;z-index:1;border:1px solid var(--border-subtle);background:var(--bg-surface)}.ml-internal-row{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--border-subtle)}.ml-internal-row:last-child{border-bottom:none}.ml-status-badge{padding:3px 9px;border-radius:99px;font-size:11px;font-weight:600;border:1.5px solid transparent}.ml-status-badge.entregue{background:#ecfdf5;color:#059669;border-color:#a7f3d0}.ml-status-badge.em_andamento{background:var(--warning-50);color:var(--warning-600);border-color:var(--warning-100)}.ml-status-badge.pendente{background:var(--bg-app);color:var(--text-muted);border-color:var(--border-default)}.proj-page{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-app);z-index:200;display:flex;flex-direction:column;overflow:hidden}.proj-top-header{padding:0 28px}@media (max-width:520px){.proj-top-header{padding:0 12px}}.proj-page-header{background:var(--bg-surface);border-bottom:1px solid var(--border-default);padding:0 28px;height:56px;display:flex;align-items:center;gap:16px;flex-shrink:0;box-shadow:var(--shadow-sm)}.proj-page-body{flex:1;display:flex;overflow:hidden}.proj-sidebar{width:260px;background:var(--bg-surface);border-right:1px solid var(--border-default);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto}.proj-content{flex:1;overflow-y:auto;padding:24px}.proj-nav-item{display:flex;align-items:center;gap:10px;padding:10px 16px;font-size:12.5px;font-weight:600;color:var(--text-body);cursor:pointer;border-left:3px solid transparent;transition:all .15s}.proj-nav-item:hover{background:var(--bg-app);color:var(--text-strong)}.proj-nav-item.active{background:var(--blue-50);color:var(--blue-600);border-left-color:var(--blue-600);font-weight:600}.proj-nav-section{padding:16px 16px 6px;font-size:10px;font-weight:600;color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase}.proj-info-row{display:flex;flex-direction:column;gap:3px;padding:10px 16px;border-bottom:1px solid var(--border-subtle)}.proj-info-label{font-size:10px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.proj-info-value{font-size:12.5px;color:var(--text-strong);font-weight:600}.timeline{display:flex;flex-direction:column;gap:0}.tl-item{display:flex;gap:16px;position:relative}.tl-item:before{content:"";position:absolute;left:15px;top:32px;bottom:-8px;width:2px;background:var(--border-subtle)}.tl-item:last-child:before{display:none}.tl-dot{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;border:1px solid var(--border-subtle);background:var(--bg-surface);z-index:1}.tl-dot.meeting{background:#f0fdf4;border-color:#bbf7d0}.tl-dot.task{background:var(--blue-50);border-color:var(--blue-200)}.tl-dot.file{background:#f5f3ff;border-color:#ddd6fe}.tl-dot.message{background:#fffbeb;border-color:#fde68a}.tl-dot.stage{background:#ecfdf5;border-color:#a7f3d0}.tl-dot.note{background:var(--bg-app);border-color:var(--border-default)}.tl-body{flex:1;padding-bottom:20px}.tl-title{font-size:12.5px;font-weight:600;color:var(--text-strong);margin-bottom:2px}.tl-meta{font-size:11px;color:var(--text-muted);margin-bottom:6px}.tl-content{font-size:12.5px;color:var(--text-body);background:var(--bg-app);border-radius:10px;padding:10px 12px;line-height:1.6;border:1px solid var(--border-subtle)}.msg-wrap{display:flex;flex-direction:column;height:100%}.msg-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:4px 0 16px}.msg-bubble{max-width:72%;padding:10px 14px;border-radius:14px;font-size:12.5px;line-height:1.6;border:2px solid transparent}.msg-bubble.sent{background:var(--blue-600);color:#fff;align-self:flex-end;border-bottom-right-radius:4px;border-color:var(--blue-500)}.msg-bubble.received{background:var(--bg-surface);border:1px solid var(--border-subtle);color:var(--text-strong);align-self:flex-start;border-bottom-left-radius:4px}.msg-bubble.internal{background:#fffbeb;border:1.5px solid #fde68a;color:var(--text-strong);align-self:flex-start;border-bottom-left-radius:4px}.msg-meta{font-size:10px;margin-top:4px;opacity:.7}.msg-input-wrap{border-top:1px solid var(--border-default);padding:14px 0 0;display:flex;flex-direction:column;gap:8px}.msg-type-tabs{display:flex;gap:4px}.msg-type-btn{padding:4px 10px;border-radius:6px;font-size:11px;font-weight:600;border:1px solid var(--border-subtle);background:transparent;color:var(--text-body);cursor:pointer;transition:all .15s}.msg-type-btn.active.cliente{border-color:var(--blue-600);color:var(--blue-600);background:var(--blue-50)}.msg-type-btn.active.interno{border-color:#b45309;color:#b45309;background:#fffbeb}.file-drop{border:1.5px dashed var(--border-default);border-radius:var(--r-xl);padding:32px;text-align:center;cursor:pointer;transition:all .2s}.file-drop:hover,.file-drop.dragover{border-color:var(--blue-600);background:var(--blue-50)}.file-item{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--border-subtle);border-radius:14px;background:var(--bg-surface);transition:all .15s;box-shadow:var(--shadow-sm)}.file-item:hover{border-color:var(--blue-600);box-shadow:var(--shadow-md)}.file-icon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;border:1px solid var(--border-subtle)}.file-icon.pdf{background:#fef2f2;border-color:#fecaca}.file-icon.dwg{background:#fffbeb;border-color:#fde68a}.file-icon.img{background:#f0fdf4;border-color:#bbf7d0}.file-icon.doc{background:var(--blue-50);border-color:var(--blue-200)}.file-icon.other{background:var(--bg-app);border-color:var(--border-default)}.file-name{font-size:12.5px;font-weight:600;color:var(--text-strong)}.file-meta{font-size:11px;color:var(--text-muted);margin-top:2px}.memorial-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--shadow-sm)}.memorial-header{padding:14px 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-subtle);background:var(--bg-sunken)}.memorial-body{padding:18px}.disc-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-xl);overflow:hidden;transition:all .15s;box-shadow:var(--shadow-sm)}.disc-card:hover{box-shadow:var(--shadow-md)}.disc-header{padding:14px 18px;display:flex;align-items:center;gap:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.disc-header:hover{background:var(--bg-app)}.disc-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0;border:1px solid var(--border-subtle)}.disc-progress-bar{height:5px;background:var(--bg-sunken);border-radius:99px;overflow:hidden;flex:1}.disc-progress-fill{height:5px;border-radius:99px;transition:width .5s cubic-bezier(.4,0,.2,1)}.cl-fase{margin-bottom:0}.cl-fase-header{padding:9px 18px;background:var(--bg-app);border-bottom:1px solid var(--border-subtle);border-top:1px solid var(--border-subtle);display:flex;align-items:center;justify-content:space-between;cursor:pointer}.cl-fase-header:hover{background:var(--blue-50)}.cl-fase-title{font-size:10.5px;font-weight:600;color:var(--text-body);letter-spacing:.06em;text-transform:uppercase}.cl-items{padding:4px 0}.cl-item{display:flex;align-items:flex-start;gap:10px;padding:8px 18px;transition:background .1s;cursor:pointer}.cl-item:hover{background:var(--bg-app)}.cl-item.done .cl-item-text{text-decoration:line-through;color:var(--text-muted)}.cl-item.na .cl-item-text{color:var(--text-muted);font-style:italic}.cl-checkbox{width:17px;height:17px;border:1px solid var(--border-subtle);border-radius:4px;flex-shrink:0;margin-top:1px;display:flex;align-items:center;justify-content:center;transition:all .15s}.cl-checkbox.done{background:var(--green);border-color:var(--green)}.cl-checkbox.na{background:var(--text-3);border-color:var(--text-3)}.cl-checkbox.done:after{content:"";width:11px;height:11px;background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat}.cl-checkbox.na:after{content:"–";color:#fff;font-size:11px;font-weight:600}.cl-item-text{font-size:12.5px;color:var(--text-strong);line-height:1.5}.cl-item-sub{font-size:10.5px;color:var(--text-3);margin-top:2px}.proj-total-bar{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-xl);padding:18px 22px;margin-bottom:20px;box-shadow:var(--shadow-sm)}.annot-panel{background:var(--bg-sunken);border-top:1px solid var(--border-subtle);padding:14px 18px 14px 46px;animation:fadeUp .18s ease}.annot-entry{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--border-subtle)}.annot-entry:last-child{border-bottom:none}.annot-avatar{width:26px;height:26px;border-radius:50%;background:var(--blue-50);color:var(--blue-600);font-size:10px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:1.5px solid var(--blue-200)}.annot-img{max-width:100%;max-height:320px;border-radius:8px;border:1px solid var(--border-subtle);margin-top:6px;display:block;cursor:zoom-in}.annot-img:hover{opacity:.92}.annot-badge{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:600;padding:2px 7px;border-radius:99px;background:var(--blue-50);color:var(--blue-600);border:1.5px solid var(--blue-200)}.annot-badge.has-annot{background:#fff7ed;color:#c2410c;border-color:#fed7aa}.paste-zone{border:1.5px dashed var(--border-default);border-radius:10px;padding:10px 14px;font-size:12px;color:var(--text-muted);text-align:center;cursor:pointer;transition:all .2s;margin-top:8px}.paste-zone:focus,.paste-zone.active{border-color:var(--blue-600);background:var(--blue-50);color:var(--blue-600);outline:none}.paste-zone:hover{border-color:var(--blue-400)}.instr-badge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;border:1px solid var(--border-subtle);background:var(--bg-app);color:var(--text-muted);font-size:10px;font-weight:600;cursor:pointer;flex-shrink:0;transition:all .15s;line-height:1}.instr-badge.has-instr{border-color:#7c3aed;background:#f5f3ff;color:#7c3aed}.instr-badge:hover{border-color:var(--blue);background:var(--blue-50);color:var(--blue-600)}.instr-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0d1b2a80;z-index:400;display:flex;align-items:center;justify-content:center;padding:20px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.instr-modal{background:var(--bg-surface);border-radius:var(--r-xl);border:1px solid var(--border-subtle);box-shadow:var(--shadow-lg);width:100%;max-width:640px;max-height:85vh;overflow-y:auto}.instr-modal-header{padding:20px 24px 0;display:flex;gap:12px;align-items:flex-start}.instr-modal-body{padding:16px 24px 24px}.instr-img{max-width:100%;border-radius:10px;border:1px solid var(--border-subtle);margin-top:8px;cursor:zoom-in;display:block}.instr-img:hover{opacity:.9}.instr-editor-panel{background:var(--bg-sunken);border-top:1px solid var(--border-subtle);padding:12px 18px 12px 46px}.gantt-wrap{display:flex;flex-direction:column;background:var(--bg-surface);flex:1;min-height:0;overflow:hidden}.gantt-toolbar{padding:11px 20px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;gap:12px;background:var(--bg-surface);flex-shrink:0}.gantt-scale-btn{padding:4px 12px;border-radius:8px;font-size:11.5px;font-weight:600;border:1px solid var(--border-subtle);background:transparent;color:var(--text-body);cursor:pointer;transition:all .15s}.gantt-scale-btn.active{border-color:var(--blue-600);color:var(--blue-600);background:var(--blue-50);box-shadow:var(--shadow-sm)}.gantt-body{display:flex;flex-direction:row;flex:1;overflow:hidden;min-height:0}.gantt-labels{width:340px;flex-shrink:0;border-right:1px solid var(--border-subtle);overflow-x:hidden;overflow-y:auto;background:var(--bg-surface)}.gantt-chart{flex:1;overflow-x:scroll;overflow-y:auto;position:relative}.gantt-chart::-webkit-scrollbar{height:10px}.gantt-chart::-webkit-scrollbar-track{background:var(--bg-sunken);border-radius:0}.gantt-chart::-webkit-scrollbar-thumb{background:var(--ink-400);border-radius:99px;border:1px solid var(--border-subtle)}.gantt-chart::-webkit-scrollbar-thumb:hover{background:var(--blue-600)}.gantt-label-row{padding:0 14px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border-subtle);cursor:default}.gantt-label-row.disc{background:var(--bg-app);font-weight:600;font-size:12px;color:var(--text-strong)}.gantt-label-row.stage{background:var(--bg-surface);font-size:12px;color:var(--text-body);padding-left:28px}.gantt-label-row.stage:hover{background:var(--blue-50)}.gantt-row{border-bottom:1px solid var(--border-subtle);position:relative}.gantt-row.disc{background:var(--bg-app)}.gantt-row.stage{background:var(--bg-surface)}.gantt-row.stage:hover{background:var(--bg-sunken)}.gantt-header-cell{border-right:1px solid var(--border-subtle);font-size:10px;font-weight:600;color:var(--text-muted);letter-spacing:.04em;text-align:center;background:var(--bg-app);display:flex;align-items:center;justify-content:center;flex-shrink:0}.gantt-cell{border-right:1px solid var(--border-subtle);flex-shrink:0;position:relative}.gantt-cell.weekend{background:var(--bg-sunken)}.gantt-bar{position:absolute;border-radius:6px;cursor:grab;-webkit-user-select:none;user-select:none;display:flex;align-items:center;padding:0 6px;font-size:10px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:filter .15s;box-shadow:var(--shadow-sm)}.gantt-bar:hover{filter:brightness(1.07)}.gantt-bar:active{cursor:grabbing}.gantt-bar-handle{position:absolute;width:8px;top:0;bottom:0;cursor:ew-resize;opacity:0;transition:opacity .15s}.gantt-bar-handle.left{left:0;border-radius:4px 0 0 4px}.gantt-bar-handle.right{right:0;border-radius:0 4px 4px 0;background:#ffffff4d}.gantt-bar:hover .gantt-bar-handle{opacity:1}.gantt-today-line{position:absolute;top:0;bottom:0;width:2px;background:var(--danger-500);opacity:.8;pointer-events:none;z-index:10}.gantt-today-line:before{content:"";position:absolute;top:0;left:-4px;width:10px;height:10px;background:var(--danger-500);border-radius:50%}.gantt-date-modal{position:fixed;z-index:500;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:14px;padding:16px;box-shadow:var(--shadow-lg);min-width:260px}.model3d-workspace{height:100%;min-height:0;display:flex;flex-direction:column;gap:8px;padding:8px;background:var(--bg-sunken)}.model3d-hero{display:grid;grid-template-columns:minmax(220px,1fr) auto auto;align-items:center;gap:var(--s-3);background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--s-2) var(--s-3);box-shadow:var(--shadow-sm)}.model3d-hero-main{min-width:0}.model3d-kicker{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--blue-600);margin-bottom:4px}.model3d-hero h2{font-size:16px;font-weight:600;color:var(--text-strong);margin:0;line-height:1.2}.model3d-hero p{display:none}.model3d-stats{display:flex;align-items:stretch;gap:var(--s-2);flex-wrap:wrap;justify-content:flex-end}.model3d-stat{min-width:68px;padding:6px 9px;border:1px solid var(--border-subtle);border-radius:var(--r-md);background:var(--bg-sunken)}.model3d-stat span{display:block;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:2px}.model3d-stat strong{font-size:16px;font-weight:600;color:var(--text-strong);line-height:1}.model3d-stat-warn{background:var(--warning-50);border-color:var(--warning-100)}.model3d-upload-btn{white-space:nowrap;justify-self:end}.model3d-alert{background:var(--danger-50);border:1px solid var(--danger-100);border-radius:var(--r-md);color:var(--danger-600);font-size:12px;font-weight:600;padding:10px 13px}.model3d-alert.compact{margin:10px 12px 0;padding:8px 11px}.model3d-color-panel,.model3d-filter-panel,.model3d-mapping-panel,.model3d-material-panel{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden;min-height:0;display:flex;flex-direction:column}.model3d-accordion{min-height:auto}.model3d-accordion.collapsed{flex:0 0 auto}.model3d-accordion.expanded{min-height:0}.model3d-accordion-head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;border:none;background:var(--bg-sunken);color:inherit;text-align:left;cursor:pointer;border-bottom:1px solid transparent;font-family:var(--font-sans);transition:background var(--dur-fast)}.model3d-accordion.expanded .model3d-accordion-head{border-bottom-color:var(--border-subtle)}.model3d-accordion-head:hover{background:var(--blue-50)}.model3d-accordion-head strong{display:block;font-size:13px;font-weight:600;color:var(--text-strong)}.model3d-accordion-head span:not(.model3d-accordion-indicator){display:block;font-size:11px;color:var(--text-muted);margin-top:2px}.model3d-accordion-indicator{flex-shrink:0;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--blue-600);background:var(--blue-50);border:1px solid var(--blue-100);border-radius:var(--r-pill);padding:3px 8px}.model3d-accordion-body{min-height:0;display:flex;flex-direction:column;overflow:hidden}.model3d-list-panel .model3d-accordion-body,.model3d-color-panel .model3d-accordion-body,.model3d-material-panel .model3d-accordion-body{flex:1}.model3d-color-body{gap:0;background:var(--bg-surface)}.model3d-color-header{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border-bottom:1px solid var(--border-subtle);background:var(--bg-sunken)}.model3d-color-template-row{display:flex;align-items:center;gap:6px;min-width:0;width:100%}.model3d-color-template-row .form-input{flex:1;height:32px;padding:6px 10px;font-size:12px}.model3d-color-template-row .btn{flex-shrink:0}.model3d-color-rename-btn{flex-shrink:0;width:28px;height:28px;border-radius:6px;border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:13px;line-height:1;transition:border-color .12s,color .12s}.model3d-color-rename-btn:hover{border-color:var(--blue-400);color:var(--blue-600)}.model3d-color-rename-btn:disabled{opacity:.5;cursor:not-allowed}.model3d-color-summary{font-size:11px;color:var(--text-muted)}.model3d-color-inline-error{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;background:#fef2f2;border-top:1px solid #fecaca;color:#b91c1c;font-size:11.5px;font-weight:600}.model3d-color-inline-error button{background:transparent;border:0;color:#b91c1c;cursor:pointer;font-size:14px;line-height:1;padding:0 4px}.model3d-rule-list{display:flex;flex-direction:column;gap:8px;padding:10px 12px;overflow-y:auto;background:var(--bg-surface);min-height:0;flex:1}.model3d-rule-empty{padding:24px 12px;text-align:center;font-size:12px;color:var(--text-muted);border:1px dashed var(--border-subtle);border-radius:12px;background:var(--bg-sunken)}.model3d-rule-card{display:flex;flex-direction:column;gap:8px;padding:8px 10px;border:1px solid var(--border-subtle);border-radius:10px;background:var(--bg-sunken);transition:border-color .15s,opacity .15s}.model3d-rule-card:hover{border-color:var(--blue-200)}.model3d-rule-card.disabled{opacity:.55}.model3d-rule-header{display:flex;align-items:center;gap:8px;min-width:0}.model3d-rule-toggle{width:26px;height:26px;border-radius:50%;border:2px solid var(--border-subtle);background:var(--bg-surface);cursor:pointer;padding:0;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;transition:border-color .15s,box-shadow .15s}.model3d-rule-toggle.on{border-color:currentColor}.model3d-rule-toggle .model3d-rule-dot{width:14px;height:14px;border-radius:50%;display:block}.model3d-rule-count{flex:1;min-width:0;font-size:11px;color:var(--text-3);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model3d-rule-body{display:flex;flex-direction:column;gap:5px}.model3d-match-row{display:grid;grid-template-columns:120px minmax(0,1fr) 22px;gap:6px;align-items:center}.model3d-match-row .form-input{height:30px;padding:4px 8px;font-size:12px;min-width:0}.model3d-match-remove{width:22px;height:22px;border-radius:5px;border:1px solid transparent;background:transparent;color:var(--text-3);cursor:pointer;padding:0;line-height:1;font-size:14px;display:inline-flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.model3d-match-remove:hover{background:#ef44441a;color:var(--danger-600,#dc2626)}.model3d-rule-add-match{border:0;background:transparent;color:var(--ph-blue-600);font-size:11px;font-weight:600;cursor:pointer;padding:2px 0}.model3d-rule-add-match:hover{text-decoration:underline}.model3d-rule-body-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px;flex-wrap:wrap}.model3d-rule-mode{display:inline-flex;align-items:center;gap:4px}.model3d-rule-mode-label{font-size:10px;color:var(--text-3);font-weight:600;margin-right:2px}.model3d-rule-mode-btn{height:22px;min-width:28px;padding:0 8px;border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:.05em;border-radius:5px;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.model3d-rule-mode-btn:hover{border-color:var(--blue-400);color:var(--blue-600)}.model3d-rule-mode-btn.active{background:var(--ph-blue-600);border-color:var(--ph-blue-600);color:#fff}.model3d-swatches{display:inline-flex;align-items:center;gap:3px;flex-shrink:0}.model3d-swatch{width:16px;height:16px;border-radius:50%;border:2px solid transparent;padding:0;cursor:pointer;transition:transform .12s,border-color .12s}.model3d-swatch:hover{transform:scale(1.15)}.model3d-swatch.active{border-color:var(--text-strong);transform:scale(1.15)}.model3d-swatch-custom{position:relative;width:16px;height:16px;border-radius:50%;border:1px dashed var(--border);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;background:var(--bg-surface);color:var(--text-3);font-size:11px;font-weight:600;line-height:1}.model3d-swatch-custom input[type=color]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;width:100%;height:100%;cursor:pointer;border:0;padding:0}.model3d-swatch-custom:hover{border-color:var(--blue-400);color:var(--blue-600)}.model3d-color-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-top:1px solid var(--border-subtle);background:var(--bg-sunken);flex-wrap:wrap}.model3d-color-footer-actions{display:flex;gap:6px;flex-wrap:wrap}.model3d-color-footer .btn{padding:6px 11px}.model3d-filter-summary{padding:10px 12px;border-bottom:1px solid var(--border-subtle);background:var(--bg-surface)}.model3d-filter-summary .btn{width:100%;justify-content:center}.model3d-filter-groups{display:flex;flex-direction:column;gap:10px;padding:10px 12px;overflow-y:auto;min-height:0;background:var(--bg-surface)}.model3d-filter-group{border:1px solid var(--border-subtle);border-radius:12px;background:var(--bg-sunken);overflow:hidden}.model3d-filter-group-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-bottom:1px solid var(--border-subtle)}.model3d-filter-group-head strong{font-size:12px;font-weight:600;color:var(--text-strong)}.model3d-filter-group-head span{font-size:10.5px;color:var(--text-muted);font-weight:600}.model3d-filter-options{display:flex;flex-direction:column;gap:2px;max-height:128px;overflow-y:auto;padding:6px}.model3d-check-row{display:flex;align-items:center;gap:8px;padding:6px 7px;border-radius:8px;font-size:12px;color:var(--text-body);cursor:pointer;min-width:0;text-transform:none;letter-spacing:0;font-weight:600}.model3d-check-row:hover{background:var(--blue-50);color:var(--blue-600)}.model3d-check-row input{width:15px;height:15px;accent-color:var(--blue-600);flex-shrink:0}.model3d-check-row span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model3d-filter-empty{padding:10px;font-size:11.5px;color:var(--text-muted);text-align:center}.model3d-filter-strip{border-bottom:1px solid var(--border-subtle);background:var(--bg-surface);flex-shrink:0}.model3d-filter-strip-head{display:grid;grid-template-columns:minmax(136px,auto) minmax(0,1fr);align-items:center;gap:10px;padding:8px 10px;background:var(--bg-surface)}.model3d-filter-strip-head>div:first-child{min-width:0}.model3d-filter-strip-head strong{display:block;font-size:12.5px;font-weight:600;color:var(--text-strong);line-height:1.15}.model3d-filter-strip-head span{display:block;font-size:10.5px;color:var(--text-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model3d-filter-tabs{display:flex;align-items:center;justify-content:flex-end;gap:7px;min-width:0;flex-wrap:wrap}.model3d-filter-tab{height:34px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 12px;border:1px solid var(--border-subtle);border-radius:10px;background:var(--bg-sunken);color:var(--text-body);font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.04em;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,color .15s,box-shadow .15s}.model3d-filter-tab:hover,.model3d-filter-tab.open{border-color:var(--blue-200);background:var(--blue-50);color:var(--blue-600)}.model3d-filter-tab.selected{border-color:var(--blue-600);background:var(--blue-50);color:var(--blue-600);box-shadow:var(--shadow-sm)}.model3d-filter-tab strong{min-width:19px;height:19px;border-radius:99px;background:var(--blue-600);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:10px;line-height:1;margin:0}.model3d-filter-tab-wrap{position:relative;min-width:0}.model3d-filter-tab-wrap>.model3d-filter-tab{width:100%}.model3d-filter-menu{position:absolute;top:calc(100% + 6px);left:0;width:max(100%,240px);z-index:30;display:grid;gap:5px;max-height:260px;overflow-y:auto;padding:8px;border:1px solid var(--border-subtle);border-radius:12px;background:var(--bg-surface);box-shadow:var(--shadow-lg)}.model3d-filter-option-btn{min-height:32px;display:flex;align-items:center;padding:7px 10px;border:1px solid var(--border-subtle);border-radius:8px;background:var(--bg-sunken);color:var(--text-body);font-family:var(--font-sans);font-size:11px;font-weight:600;text-align:left;cursor:pointer}.model3d-filter-option-btn:hover,.model3d-filter-option-btn.selected{border-color:var(--blue-600);background:var(--blue-50);color:var(--blue-600)}.model3d-filter-option-btn>strong{min-width:0;white-space:normal;overflow:visible;text-overflow:clip;font-size:11px;font-weight:600;line-height:1.25}.model3d-filter-clear{height:34px;padding:0 10px;border:1px solid var(--border-subtle);border-radius:10px;background:var(--bg-surface);color:var(--text-muted);font-family:var(--font-sans);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap}.model3d-filter-clear:disabled{opacity:.45;cursor:not-allowed}.model3d-filter-clear:not(:disabled):hover{border-color:#fecaca;background:#fef2f2;color:var(--red)}.model3d-filter-popover{display:grid;grid-template-columns:140px minmax(0,1fr);align-items:start;gap:10px;padding:8px 10px 10px;border-top:1px solid var(--border-subtle);background:var(--bg-sunken)}.model3d-filter-popover-title{padding:8px 10px;border:1.5px solid var(--blue-200);border-radius:10px;background:var(--blue-50);min-width:0}.model3d-filter-popover-title strong{display:block;font-size:11.5px;font-weight:600;color:var(--blue-600);line-height:1.15}.model3d-filter-popover-title span{display:block;font-size:10px;font-weight:600;color:var(--text-muted);margin-top:3px}.model3d-filter-options.compact{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:5px;max-height:118px;overflow-y:auto;padding:0;background:transparent}.model3d-filter-options.compact .model3d-check-row{background:var(--bg-surface);border:1px solid var(--border-subtle);padding:6px 8px}.model3d-filter-options.compact .model3d-check-row:hover{border-color:var(--blue-200)}.model3d-filter-topbar{display:grid;grid-template-columns:minmax(130px,auto) minmax(0,1fr) 28px;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid var(--border-subtle);background:var(--bg-sunken)}.model3d-filter-topbar>div:first-child{min-width:0}.model3d-filter-topbar strong{display:block;font-size:12.5px;font-weight:700;color:var(--text-strong);line-height:1.15}.model3d-filter-topbar span{display:block;font-size:10.5px;color:var(--text-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model3d-filter-topbar .model3d-filter-tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:6px;align-items:start;position:relative;z-index:20}.model3d-filter-tabs--vertical{display:flex;flex-direction:column;align-items:stretch;gap:6px;flex-wrap:nowrap;justify-content:flex-start}.model3d-filter-tabs--vertical .model3d-filter-tab-wrap{width:100%}.model3d-filter-tabs--vertical .model3d-filter-tab,.model3d-filter-tabs--vertical .model3d-filter-clear{width:100%;height:32px;justify-content:space-between;padding:0 12px}.model3d-filters-stack{display:flex;flex-direction:column;height:100%;min-height:0}.model3d-filters-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border-subtle);background:var(--bg-sunken)}.model3d-filters-head>div{min-width:0}.model3d-filters-head strong{display:block;font-size:12.5px;font-weight:700;color:var(--text-strong);line-height:1.15}.model3d-filters-head span{display:block;font-size:10.5px;color:var(--text-muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model3d-filters-body{flex:1;min-height:0;overflow-y:auto;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.model3d-filter-topbar .model3d-filter-tab,.model3d-filter-topbar .model3d-filter-clear{width:100%;height:32px;min-width:0;padding:0 10px;font-size:11px}.model3d-filter-topbar .model3d-filter-tab>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model3d-ghost-opacity-row{display:flex;flex-direction:column;align-items:stretch;gap:6px;padding:10px 12px;border-top:1px solid var(--border-subtle);background:var(--bg-sunken)}.model3d-ghost-opacity-row label{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;font-weight:600;color:var(--text-muted);white-space:nowrap}.model3d-ghost-opacity-row label strong{font-size:11.5px;font-weight:700;color:var(--ph-blue-600);min-width:34px;text-align:right}.model3d-ghost-opacity-row input[type=range]{width:100%;accent-color:var(--ph-blue-500)}.model3d-filter-drawer-panel{border-bottom:1px solid var(--border-subtle);flex-shrink:0}.model3d-filter-drawer-panel .model3d-filter-strip-head{grid-template-columns:1fr;align-items:start;padding:10px 12px}.model3d-filter-drawer-panel .model3d-filter-tabs{justify-content:flex-start;display:grid;grid-template-columns:1fr 1fr;align-items:stretch}.model3d-filter-drawer-panel .model3d-filter-tab,.model3d-filter-drawer-panel .model3d-filter-clear{width:100%;height:36px}.model3d-filter-drawer-panel .model3d-filter-popover{grid-template-columns:1fr;padding:10px 12px}.model3d-filter-drawer-panel .model3d-filter-options.compact{grid-template-columns:1fr;max-height:180px}.model3d-mapping-list{display:flex;flex-direction:column;gap:9px;padding:10px 12px;background:var(--bg-surface)}.model3d-mapping-field{display:flex;flex-direction:column;gap:5px}.model3d-mapping-field span{font-size:9.5px;font-weight:600;color:var(--text-3);letter-spacing:.06em;text-transform:uppercase}.model3d-mapping-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 12px 12px;background:var(--bg-surface)}.model3d-mapping-actions .btn{justify-content:center}.model3d-material-sheets{border-bottom:1px solid var(--border-subtle);background:var(--bg-surface)}.model3d-material-sheets-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:0;background:var(--bg-surface);color:var(--text);text-align:left;cursor:pointer}.model3d-material-sheets-toggle:hover{background:var(--blue-50)}.model3d-material-sheets-toggle strong{display:block;font-size:11.5px;font-weight:700;color:var(--text-strong)}.model3d-material-sheets-toggle span{display:block;font-size:10.5px;font-weight:700;color:var(--blue-600)}.model3d-material-sheets-toggle div span{margin-top:2px;color:var(--text-3);font-weight:600}.model3d-material-sheets-body{border-top:1px solid var(--border-subtle);background:var(--bg-sunken)}.model3d-material-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 12px;border-bottom:1px solid var(--border-subtle);background:var(--bg-surface)}.model3d-material-actions .btn{justify-content:center}.model3d-material-error{margin:8px 12px 0;padding:8px 10px;border:1px solid var(--danger-100);border-radius:var(--r-md);background:var(--danger-50);color:var(--danger-600);font-size:11px;font-weight:600}.model3d-material-bases{display:flex;flex-direction:column;gap:6px;max-height:148px;overflow-y:auto;padding:10px 12px;background:var(--bg-surface)}.model3d-material-bases.standalone{max-height:none;flex:1;min-height:0}.model3d-material-bases-panel .model3d-material-sheets-body{flex:1;min-height:0;display:flex;flex-direction:column}.model3d-material-base{display:grid;grid-template-columns:34px minmax(0,1fr) auto 24px;align-items:center;gap:8px;padding:8px;border:1px solid var(--border-subtle);border-radius:10px;background:var(--bg-sunken)}.model3d-material-base.inactive{opacity:.55}.model3d-material-excel-icon{width:32px;height:32px;display:inline-flex!important;align-items:center;justify-content:center;margin:0!important;border-radius:8px;background:#ecfdf3!important;color:#087443!important;border:1px solid #abefc6;font-size:9px!important;font-weight:800!important;letter-spacing:.04em}.model3d-material-base-name{min-width:0}.model3d-material-base strong{display:block;font-size:11.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model3d-material-base span{display:block;font-size:10px;color:var(--text-3);margin-top:2px}.model3d-material-toggle{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:600;color:var(--text-3);text-transform:none;letter-spacing:0}.model3d-material-toggle input{width:14px;height:14px;accent-color:var(--blue)}.model3d-material-empty{padding:10px;text-align:center;color:var(--text-3);font-size:11.5px;line-height:1.4}.model3d-quantities-section{border-top:1px solid var(--border-subtle);background:var(--bg-surface);display:flex;flex-direction:column;min-height:0}.model3d-quantities-section.open{flex:1}.model3d-quantities-empty{margin:10px 12px;padding:12px;border:1px dashed var(--border-subtle);border-radius:var(--r-md);background:var(--bg-sunken);color:var(--text-3);font-size:11.5px;line-height:1.45;text-align:center}.model3d-material-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border-subtle);background:var(--bg-sunken);color:var(--text-3);font-size:10.5px;font-weight:600}.model3d-material-table-wrap{flex:1;min-height:0;overflow:auto;background:var(--bg-surface)}.model3d-material-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:11px;background:var(--bg-surface);font-variant-numeric:tabular-nums}.model3d-material-table thead{position:sticky;top:0;z-index:1;background:var(--bg-app)}.model3d-material-table th{position:relative;padding:7px 8px;border:1px solid var(--border-subtle);text-align:left;color:var(--text-muted);font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;background:var(--bg-sunken)}.model3d-material-table td{padding:7px 8px;border:1px solid var(--border-subtle);vertical-align:top;color:var(--text-2);background:var(--bg-surface)}.model3d-material-table tr{cursor:pointer}.model3d-material-table tbody tr:nth-child(2n) td{background:var(--bg-app)}.model3d-material-table tbody tr:hover td{background:var(--blue-50)}.model3d-material-table tr.selected td{background:var(--blue-50);outline:2px solid var(--blue-600);outline-offset:-2px}.model3d-material-table tr.unlinked td{color:var(--text-muted)}.model3d-material-table td strong{display:block;white-space:normal;overflow:visible;text-overflow:clip;color:var(--text-strong);font-size:11.5px;line-height:1.35}.model3d-material-table td span{display:block;white-space:normal;overflow:visible;text-overflow:clip;color:var(--text-3);font-size:10px;line-height:1.35;margin-top:2px}.model3d-material-code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#334155!important;white-space:normal;overflow-wrap:anywhere}.model3d-material-qty{text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#111827!important}.model3d-material-empty-cell{text-align:center!important;color:var(--text-3)!important;padding:24px 10px!important}.model3d-col-resize{position:absolute;top:0;right:-3px;width:7px;height:100%;cursor:col-resize;z-index:2}.model3d-col-resize:hover{background:var(--blue-200)}.model3d-eap-row td{font-weight:600;background:var(--bg-sunken)!important;color:var(--text-strong)!important}.model3d-eap-row td:first-child{white-space:normal}.model3d-eap-row.level-1 td{background:#eef4ff!important;color:var(--blue-600)!important;text-transform:uppercase;letter-spacing:.04em}.model3d-eap-row.level-2 td:first-child{padding-left:18px}.model3d-eap-row.level-3 td:first-child{padding-left:32px;background:var(--ph-panel)!important}.model3d-grid{flex:1;min-height:0;display:grid;grid-template-columns:320px minmax(520px,1fr) 360px;gap:12px;align-items:stretch}.model3d-grid.model3d-overlay-mode{grid-template-columns:minmax(520px,1fr)}.model3d-grid.hide-left{grid-template-columns:minmax(520px,1fr) 360px}.model3d-grid.hide-right{grid-template-columns:320px minmax(520px,1fr)}.model3d-grid.hide-left.hide-right{grid-template-columns:minmax(520px,1fr)}.model3d-side-panel{min-height:0;display:flex;flex-direction:column;gap:10px;overflow:hidden}.model3d-panel,.model3d-viewer-panel{min-height:0;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}.model3d-list-panel{display:flex;flex-direction:column}.model3d-list-panel.expanded,.model3d-filter-panel.expanded,.model3d-color-panel.expanded{flex:1 1 auto}.model3d-material-panel.expanded{flex:1 1 52%}.model3d-mapping-panel.expanded{flex:0 0 auto}.model3d-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border-subtle);background:var(--bg-sunken)}.model3d-panel-head strong,.model3d-viewer-bar strong{display:block;font-size:13px;font-weight:600;color:var(--text);line-height:1.2}.model3d-panel-head span,.model3d-viewer-bar span{display:block;font-size:11px;color:var(--text-3);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model3d-list{list-style:none;margin:0;padding:8px;overflow-y:auto;display:flex;flex-direction:column;gap:7px}.model3d-item{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:flex-start;padding:10px;border:1px solid var(--border-subtle);border-radius:12px;background:var(--bg-surface);cursor:default;transition:border-color .15s,background .15s,transform .15s,box-shadow .15s}.model3d-item.ready{cursor:pointer}.model3d-item.ready:hover{border-color:var(--blue-200);background:var(--blue-50);box-shadow:var(--shadow-sm)}.model3d-item.active{border-color:var(--blue);background:var(--blue-50);box-shadow:var(--shadow-md)}.model3d-item.disabled{opacity:.72}.model3d-item-icon{width:34px;height:34px;border-radius:10px;border:1px solid var(--border-subtle);background:var(--bg-app);color:var(--text-2);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;line-height:1}.model3d-item.active .model3d-item-icon{background:var(--blue);border-color:var(--blue);color:#fff}.model3d-item-body{min-width:0}.model3d-item-title{font-size:12.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:3px}.model3d-item.active .model3d-item-title{color:var(--blue)}.model3d-item-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:10.5px;color:var(--text-3);margin-bottom:5px}.model3d-file-name{font-size:10.5px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.model3d-item-actions{display:flex;flex-direction:column;align-items:center;gap:4px;flex-shrink:0;opacity:0;pointer-events:none;transition:opacity .15s}.model3d-item:hover .model3d-item-actions,.model3d-item.active .model3d-item-actions{opacity:1;pointer-events:auto}.model3d-delete,.model3d-replace{width:24px;height:24px;border:2px solid transparent;border-radius:8px;background:transparent;color:var(--text-3);font-size:13px;font-weight:600;line-height:1;cursor:pointer;flex-shrink:0}.model3d-delete:hover{background:var(--danger-50);border-color:var(--danger-100);color:var(--danger-600)}.model3d-replace:hover{background:var(--blue-50);border-color:var(--blue-100);color:var(--blue-600)}.model3d-item-hover-details{display:none;align-items:center;gap:6px;flex-wrap:wrap;font-size:10.5px;color:var(--text-3);margin-top:4px}.model3d-item:hover .model3d-item-hover-details,.model3d-item.active .model3d-item-hover-details{display:flex}.model3d-offset-actions{display:flex;gap:6px;margin-top:2px}.model3d-offset-save{padding:3px 10px;border-radius:6px;border:none;background:var(--blue-500,#3b82f6);color:#fff;font-size:11px;cursor:pointer}.model3d-offset-save:disabled{opacity:.5;cursor:not-allowed}.model3d-offset-cancel{padding:3px 10px;border-radius:6px;border:1px solid var(--border-2);background:transparent;color:var(--text-2);font-size:11px;cursor:pointer}.model3d-meta-editor{display:flex;flex-direction:column;gap:4px;padding:6px 0 4px;border-top:1px solid var(--border-1);margin-top:4px}.model3d-meta-editor select{font-size:12px;padding:2px 6px;border:1px solid var(--border-2);border-radius:4px;background:var(--bg-2);color:var(--text-1)}.model3d-meta-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px;min-height:16px}.model3d-meta-tag{display:inline-flex;align-items:center;height:17px;padding:0 6px;border-radius:99px;font-size:9.5px;font-weight:600;color:#fff;white-space:nowrap}.model3d-meta-tag--building{background:var(--bg-3);color:var(--text-2);border:1px solid var(--border-2)}.model3d-meta-tag--empty{background:transparent;color:var(--text-3);border:1px dashed var(--border-2);font-weight:400;font-size:9px;cursor:pointer}.model3d-status{display:inline-flex;align-items:center;height:20px;padding:0 8px;border-radius:99px;border:1.5px solid transparent;font-size:9.5px;font-weight:600;letter-spacing:.02em}.model3d-status.ready{background:var(--success-50);color:var(--success-600);border-color:var(--success-100)}.model3d-status.processing{background:var(--warning-50);color:var(--warning-600);border-color:var(--warning-100)}.model3d-status.error{background:var(--danger-50);color:var(--danger-600);border-color:var(--danger-100)}.model3d-status.idle{background:var(--bg-app);color:var(--text-muted);border-color:var(--border-default)}.vf-root{display:flex;flex-direction:column}.vf-active-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 12px;background:var(--blue-50,#eff6ff);border-bottom:1px solid var(--blue-100,#dbeafe);flex-shrink:0}.vf-active-chips{display:flex;flex-wrap:wrap;gap:4px;flex:1;min-width:0}.vf-active-chip{font-size:10.5px;font-weight:600;color:var(--blue-700,#1d4ed8);background:var(--blue-100,#dbeafe);border-radius:999px;padding:1px 7px;white-space:nowrap}.vf-reset-btn{border:none;background:transparent;color:var(--blue-600,#2563eb);font-size:11px;font-weight:700;cursor:pointer;padding:0;text-decoration:underline;white-space:nowrap;flex-shrink:0}.vf-reset-btn:hover{color:var(--blue-800,#1e40af)}.vf-section{border-top:1px solid var(--border-subtle);padding:6px 0 4px}.vf-section--presets{border-top:none;padding-bottom:2px}.vf-section-head{display:flex;align-items:center;justify-content:space-between;padding:2px 12px 6px}.vf-section-label{font-size:9.5px;font-weight:700;color:var(--text-3);text-transform:uppercase;letter-spacing:.07em}.vf-section-actions{display:flex;gap:2px}.vf-section-action{border:none;background:none;cursor:pointer;font-size:10px;font-weight:600;color:var(--blue-600,#2563eb);padding:2px 5px;border-radius:4px;white-space:nowrap}.vf-section-action:hover{background:var(--blue-50,#eff6ff)}.vf-section-action--primary{font-size:10.5px}.vf-preset-form{padding:4px 12px 10px;display:flex;flex-direction:column;gap:6px}.vf-preset-form-actions{display:flex;gap:6px}.vf-presets-empty{padding:2px 12px 10px;font-size:11.5px;color:var(--text-muted);line-height:1.5}.vf-presets-list{display:flex;flex-direction:column;gap:3px;padding:2px 10px 8px}.vf-preset-item{display:flex;align-items:center;gap:4px}.vf-preset-apply{flex:1;display:flex;align-items:center;gap:6px;text-align:left;padding:6px 10px;border-radius:8px;border:1px solid var(--border-subtle);background:var(--bg-sunken);color:var(--text-body);font-size:12px;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s;overflow:hidden}.vf-preset-apply span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vf-preset-apply:hover{background:var(--blue-50,#eff6ff);border-color:var(--blue-200,#bfdbfe);color:var(--blue-700,#1d4ed8)}.vf-preset-delete{width:24px;height:24px;flex-shrink:0;border-radius:6px;border:none;background:transparent;color:var(--text-muted);font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.vf-preset-delete:hover{background:var(--red-50,#fef2f2);color:var(--red-500,#ef4444)}.vf-item{display:grid;grid-template-columns:10px 1fr auto 26px;align-items:center;gap:7px;padding:5px 12px;border-radius:6px;margin:0 4px;transition:background .12s}.vf-item--off{background:var(--bg-sunken);opacity:.65}.vf-item:hover{background:var(--bg-sunken)}.vf-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.vf-dot--building{border-radius:2px;background:var(--text-3)}.vf-dot--filter{background:#0ea5e9}.vf-name{font-size:12px;font-weight:500;color:var(--text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vf-rule-count{font-size:10px;font-weight:700;color:var(--text-3);background:var(--bg-app);border:1px solid var(--border-subtle);border-radius:999px;padding:0 5px;white-space:nowrap}.vf-rule-count--zero{color:#b45309;background:#fef3c7;border-color:#fde68a}.vf-rule-item{display:flex;flex-direction:column;gap:0;padding:4px 12px;margin:0 4px;border-radius:6px;transition:background .12s}.vf-rule-item:hover{background:var(--bg-sunken)}.vf-rule-item--nomatch{opacity:.7}.vf-rule-item-row{display:grid;grid-template-columns:10px 1fr auto 26px;align-items:center;gap:7px}.vf-rule-item-opacity{display:grid;grid-template-columns:auto 1fr 32px;align-items:center;gap:8px;padding:4px 0 2px 17px}.vf-opacity-label{font-size:10px;font-weight:600;color:var(--text-3);white-space:nowrap}.vf-pct{font-size:10px;font-weight:600;color:var(--text-2);text-align:right;white-space:nowrap}.vf-slider{width:100%;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:2px;background:var(--border-2,#cbd5e1);outline:none;cursor:pointer}.vf-slider::-webkit-slider-thumb{-webkit-appearance:none;width:13px;height:13px;border-radius:50%;background:var(--blue-500,#3b82f6);cursor:pointer;box-shadow:0 1px 3px #0003}.vf-slider::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:var(--blue-500,#3b82f6);cursor:pointer;border:none}.vf-eye-btn{width:26px;height:26px;border-radius:6px;border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--blue-500,#3b82f6);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .12s,border-color .12s,color .12s;flex-shrink:0;-webkit-tap-highlight-color:transparent;outline:none}.vf-eye-btn:focus{outline:none}.vf-eye-btn:hover{background:var(--blue-50,#eff6ff);border-color:var(--blue-200,#bfdbfe)}.vf-eye-btn--off{color:var(--text-3);background:var(--bg-sunken);border-color:transparent}.vf-eye-btn--off:hover{background:var(--bg-app);border-color:var(--border-default)}.vf-empty{display:flex;flex-direction:column;align-items:center;gap:7px;padding:28px 20px;text-align:center}.vf-empty>span:first-of-type{font-size:13px;font-weight:600;color:var(--text-body)}.vf-empty-hint{font-size:11.5px;color:var(--text-muted);line-height:1.5}.vf-param-rule{display:flex;flex-direction:column;gap:7px;margin:0 8px 8px;padding:8px;border:1px solid var(--border-subtle);border-radius:8px;background:var(--bg-sunken)}.vf-param-head{display:grid;grid-template-columns:26px minmax(0,1fr) auto 22px;align-items:center;gap:7px}.vf-param-head .form-input{height:30px;padding:4px 8px;font-size:12px;min-width:0}.vf-param-category{height:30px;padding:4px 8px;font-size:12px;width:100%;min-width:0}.vf-param-count{font-size:10px;font-weight:700;color:var(--text-3);white-space:nowrap}.vf-param-matches{display:flex;flex-direction:column;gap:5px}.vf-param-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.vf-param-opacity{display:grid;grid-template-columns:auto minmax(0,1fr) 32px;align-items:center;gap:7px;font-size:10.5px;font-weight:700;color:var(--text-3)}.model3d-empty{flex:1;min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;padding:24px 18px;color:var(--text-3);font-size:12px;line-height:1.5}.model3d-empty.compact{min-height:120px}.model3d-empty strong{font-size:13px;color:var(--text);font-weight:600}.model3d-empty-icon,.model3d-orbit-mark{width:52px;height:52px;border-radius:14px;border:1.5px solid var(--blue-200);background:var(--blue-50);color:var(--blue-600);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px;box-shadow:var(--shadow-sm)}.model3d-viewer-panel{display:flex;flex-direction:column}.model3d-viewer-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--border-subtle);background:var(--bg-sunken);min-height:50px}.model3d-viewer-bar>div{min-width:0}.model3d-viewer-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap;flex-shrink:0}.model3d-canvas-wrap{flex:1;min-height:0;position:relative;background:var(--bg-surface);overflow:hidden}.model3d-canvas-wrap>.model3d-viewer-empty{height:100%;min-height:520px;border:none;background:transparent}.model3d-canvas-wrap>div:not(.model3d-viewer-empty):not(.m3d-capture-chip):not(.m3d-camera-controls):not(.m3d-context-menu):not(.m3d-walk-ui):not(.overlay){height:100%}.m3d-walk-ui{position:absolute;top:52px;left:12px;z-index:25;width:min(270px,calc(100% - 24px));height:auto;pointer-events:auto}.m3d-walk-toggle{border:1px solid #93c5fd;border-radius:999px;background:#fffffff2;padding:8px 13px;color:#1d4ed8;font-size:12px;font-weight:700;cursor:pointer;box-shadow:0 2px 10px #0f172a1f}.m3d-walk-toggle.active{background:#1d4ed8;color:#fff}.m3d-walk-panel{display:flex;flex-direction:column;gap:9px;margin-top:8px;padding:12px;max-height:min(430px,70dvh);overflow:auto;border:1px solid var(--border-subtle);border-radius:10px;background:#fffffff7;box-shadow:0 8px 28px #0f172a2e;font-size:11px}.m3d-walk-panel-head{display:flex;align-items:center;justify-content:space-between;font-size:13px}.m3d-walk-panel-head button{border:0;background:transparent;font-size:20px;cursor:pointer}.m3d-walk-panel label{display:flex;flex-direction:column;gap:3px;font-weight:600}.m3d-walk-panel .form-input{height:30px;padding:3px 7px;font-size:12px}.m3d-walk-panel p{margin:2px 0;color:var(--text-muted);line-height:1.35}.m3d-walk-settings-link{border:0;background:transparent;padding:3px 0;text-align:left;color:var(--blue-600,#2563eb);font-size:11px;font-weight:650;cursor:pointer}.m3d-walk-hint{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:8;max-width:calc(100% - 24px);padding:6px 10px;border-radius:999px;background:#0f172acc;color:#fff;font-size:11px;text-align:center;pointer-events:none}.m3d-minimap{position:absolute;left:16px;bottom:16px;z-index:9;width:220px;height:220px;border:2px solid #1d4ed8;border-radius:9px;box-shadow:0 3px 16px #0f172a4d;cursor:crosshair;overflow:hidden}.m3d-minimap-image{display:block;width:100%;height:100%;pointer-events:none}.m3d-minimap-image-local{clip-path:circle(50% at 50% 50%)}.m3d-minimap-radius{position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid rgba(29,78,216,.5);border-radius:50%;pointer-events:none}.m3d-minimap-cone{position:absolute;width:220px;height:220px;z-index:1;pointer-events:none;transform-origin:50% 50%}.m3d-minimap-cone path{fill:#2563eb33;stroke:#1d4ed8d9;stroke-width:2}.m3d-minimap-zoom{position:absolute;left:146px;bottom:24px;z-index:10;padding:4px 6px;border:1px solid #93a9cf;border-radius:5px;background:#fffffff0;color:#1e3a8a;font-size:10px;font-weight:700;cursor:pointer}.m3d-minimap-title{position:absolute;top:5px;left:5px;z-index:3;padding:3px 6px;border-radius:4px;background:#ffffffe6;font-size:10px;font-weight:700;pointer-events:none}.m3d-minimap-marker{position:absolute;z-index:2;width:21px;height:21px;display:flex;align-items:center;justify-content:center;border:2px solid white;border-radius:50%;background:#2563eb;color:#fff;font-size:12px;line-height:1;box-shadow:0 1px 5px #0f172a;pointer-events:none}.project-floor-editor{margin-top:16px;display:flex;flex-direction:column;gap:12px}.project-floor-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.project-floor-actions>span{margin-right:auto;font-size:12px;color:var(--text-muted)}.project-floor-row{display:grid;grid-template-columns:80px minmax(140px,1fr) 130px auto;gap:8px 10px;align-items:center;padding:8px 0;border:0;border-bottom:1px solid var(--border-subtle);border-radius:0;background:transparent}.project-floor-row label{display:flex;flex-direction:column;gap:5px;font-size:11px}.project-floor-row.archived{opacity:.6}.project-floor-hint{font-size:12px;color:var(--text-muted);margin:0;line-height:1.5}.project-floor-bindings{grid-column:1/-1;font-size:10px;color:var(--text-muted)}.project-floor-bindings summary{cursor:pointer;width:fit-content}.project-floor-bindings>div{display:flex;gap:8px;flex-wrap:wrap;padding-top:6px}.project-floor-picker{display:flex;gap:8px 14px;flex-wrap:wrap;max-height:180px;overflow:auto}.project-floor-picker label{display:flex;gap:6px;align-items:center;font-size:12px}.project-floor-import-modal{width:1000px;max-width:95vw;max-height:90vh}.project-floor-import-modal .modal-body{overflow:auto;display:flex;flex-direction:column;gap:14px}.project-floor-import-modal p{font-size:12px;line-height:1.5}.project-floor-import-table{overflow:auto}.project-floor-import-table table{border-collapse:collapse;width:100%;font-size:12px}.project-floor-import-table th,.project-floor-import-table td{padding:8px;text-align:left;border-bottom:1px solid var(--border-subtle);min-width:90px}.project-floor-import-table td:nth-child(4){min-width:160px}.project-floor-error{color:var(--ph-danger,#dc2626)}@media (max-width:800px){.project-floor-row{grid-template-columns:80px 1fr}.project-floor-row>button{grid-column:1/-1}}.model3d-canvas-wrap>.m3d-context-menu{height:auto}.model3d-split{display:flex;flex-direction:row;align-items:stretch;height:100%;min-height:520px;gap:0}.model3d-split-viewer{position:relative;flex:1;min-width:240px;height:100%;border:1px solid var(--border-subtle);border-radius:var(--r-lg);overflow:hidden;background:var(--bg-surface)}.model3d-split-viewer>div:not(.model3d-tool-rail):not(.model3d-tool-drawer){height:100%}.model3d-split.with-sheet .model3d-split-viewer{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}.model3d-split.with-sheet{padding-right:0}.model3d-split-handle{flex-shrink:0;width:10px;cursor:ew-resize;position:relative;display:flex;align-items:center;justify-content:center;background:transparent}.model3d-split-handle:before{content:"";position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%);width:1px;background:var(--border-subtle)}.model3d-split-handle:hover:before,.model3d-split-handle:active:before{width:3px;background:var(--blue-400)}.model3d-split-grip{position:relative;width:4px;height:36px;border-radius:2px;background:var(--border);transition:background .15s;z-index:1}.model3d-split-handle:hover .model3d-split-grip{background:var(--blue-500)}.model3d-split-sheet{flex-shrink:0;min-width:280px;max-width:75%;height:100%;border:none;border-left:1px solid var(--border-subtle);border-radius:0;overflow:hidden;background:var(--bg-surface);display:flex;flex-direction:column;box-shadow:-1px 0 #0f172a0a}.model3d-viewer-empty{height:100%;min-height:520px;border:1.5px dashed var(--border-default);border-radius:var(--r-lg);background:var(--bg-sunken);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:9px;color:var(--text-3);padding:20px}.model3d-viewer-empty strong{font-size:14px;color:var(--text);font-weight:600}.model3d-viewer-empty span{max-width:360px;font-size:12px;line-height:1.55}.model3d-help{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:7px 10px;border-top:1px solid var(--border-subtle);background:var(--bg-surface);font-size:10.5px;color:var(--text-3)}.model3d-help span{padding:3px 7px;border-radius:99px;background:var(--bg-sunken);border:1px solid var(--border-subtle);white-space:nowrap}.model3d-props-wrap{min-height:0;display:flex;flex-direction:column;gap:10px;overflow:hidden}.model3d-props-wrap>.card{flex:1 1 48%;min-height:0;height:auto!important;border-radius:var(--r-lg)!important;box-shadow:var(--shadow-sm)!important}.model3d-upload-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:#0d1b2a85;padding:18px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.model3d-upload-modal{width:480px;max-width:96vw;padding:20px}.model3d-upload-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.model3d-upload-head span{display:block;font-size:10px;font-weight:600;color:var(--blue);letter-spacing:.08em;text-transform:uppercase;margin-bottom:4px}.model3d-upload-head h2{font-size:17px;font-weight:600;margin:0;color:var(--text)}.model3d-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:112px;border:1.5px dashed var(--border-default);border-radius:var(--r-lg);background:var(--bg-sunken);text-align:center;cursor:pointer;margin-bottom:12px;padding:18px;color:var(--text-3);transition:all .15s}.model3d-dropzone:hover,.model3d-dropzone.has-file{border-color:var(--blue);background:var(--blue-50);color:var(--blue-600)}.model3d-dropzone strong{font-size:13px;color:var(--text)}.model3d-dropzone span{font-size:11.5px}.model3d-upload-note{font-size:11px;color:var(--text-3);line-height:1.5;margin-bottom:12px}.model3d-progress{margin-bottom:12px}.model3d-progress-label{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:var(--text-body);font-weight:600;margin-bottom:6px}.model3d-progress-track{height:6px;border-radius:99px;background:var(--bg-sunken);overflow:hidden}.model3d-progress-track>div{height:100%;background:var(--blue-600);border-radius:99px;transition:width .2s}.model3d-progress-track>div.indeterminate{animation:indeterminate 1.4s ease infinite}.model3d-upload-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}@keyframes indeterminate{0%{transform:translate(-100%) scaleX(.5)}to{transform:translate(200%) scaleX(.5)}}.sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:99;display:block}.topbar-hamburger{display:flex}.hide-sm{display:inherit}.show-sm{display:none}@media (max-width:1280px){.content{padding:20px 22px}.topbar{padding:0 22px}.model3d-grid{grid-template-columns:300px minmax(420px,1fr)}.model3d-grid.hide-left{grid-template-columns:minmax(420px,1fr)}.model3d-grid.hide-right{grid-template-columns:300px minmax(420px,1fr)}.model3d-grid.hide-left.hide-right{grid-template-columns:minmax(420px,1fr)}.model3d-props-wrap{grid-column:1/-1}.model3d-props-wrap>.card{height:auto!important;min-height:220px}.model3d-side-panel{grid-template-rows:minmax(180px,.8fr) minmax(260px,1.2fr)}}@media (max-width:1024px){:root{--sidebar-w:200px}.content{padding:18px}.topbar{padding:0 18px}.kanban-col{min-width:200px;width:200px}.stat-value{font-size:22px}.model3d-workspace{padding:8px}.model3d-hero{grid-template-columns:1fr;align-items:start}.model3d-stats{justify-content:flex-start}.model3d-upload-btn{justify-self:start}.model3d-grid{grid-template-columns:1fr}.model3d-side-panel{grid-template-rows:auto auto}.model3d-list-panel{max-height:320px}.model3d-viewer-panel{min-height:560px}.model3d-filter-strip-head{grid-template-columns:1fr}.model3d-filter-tabs{justify-content:flex-start}.model3d-color-template-row{min-width:0;width:100%}.model3d-rule-row{grid-template-columns:24px minmax(0,1fr) minmax(0,1fr) 68px 28px}.model3d-rule-row label:nth-of-type(2),.model3d-rule-row label:nth-of-type(3){grid-column:auto}}.model3d-viewer-panel{position:relative}.model3d-config-rail{position:absolute;left:14px;top:76px;z-index:12;display:flex;flex-direction:column;gap:8px;pointer-events:none;align-items:flex-start}.model3d-config-drawer{position:absolute;top:76px;left:122px;bottom:44px;width:min(360px,calc(100% - 160px));z-index:11;background:var(--bg-surface);border:2.5px solid var(--border);border-radius:16px;box-shadow:0 18px 40px #2e3d5c38,var(--shadow);display:flex;flex-direction:column;overflow:hidden}.model3d-config-body{flex:1;min-height:0;overflow:hidden;padding:10px;display:flex;flex-direction:column}.model3d-config-body>.model3d-panel,.model3d-config-body>.model3d-mapping-panel,.model3d-config-body>.model3d-color-panel{flex:1;min-height:0;border-radius:12px;box-shadow:none}.model3d-config-body .model3d-accordion.expanded{display:flex;flex-direction:column}.model3d-config-body .model3d-accordion.expanded .model3d-accordion-body{flex:1;min-height:0}.model3d-config-body .model3d-mapping-list{flex:1;min-height:0;overflow-y:auto}.model3d-config-body .model3d-mapping-actions{flex-shrink:0;border-top:1px solid var(--border-subtle);padding-top:10px}.model3d-config-body .model3d-accordion-head.static{cursor:default}.model3d-tool-btn-primary{background:var(--blue)!important;border-color:var(--blue)!important;color:#fff!important}.model3d-tool-btn-primary strong{color:#fff!important}.model3d-tool-rail{position:absolute;right:14px;top:14px;z-index:12;display:flex;flex-direction:column;gap:8px;pointer-events:none;align-items:flex-end}.quant-sidebar-toggle{position:absolute;right:0;top:50%;transform:translateY(-50%);z-index:13;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:14px 7px;border:none;border-right:none;border-radius:10px 0 0 10px;background:var(--ph-blue-600);color:#fff;font-family:var(--font-sans);font-size:10.5px;font-weight:700;letter-spacing:.12em;cursor:pointer;box-shadow:-3px 4px 14px #0f172a2e;transition:background .15s,padding-right .15s}.quant-sidebar-toggle:hover{background:var(--ph-blue-700,#1d4ed8);padding-right:10px}.quant-sidebar-toggle .quant-sidebar-toggle-label{writing-mode:vertical-rl;transform:rotate(180deg);line-height:1}.model3d-tool-btn{pointer-events:auto;width:94px;min-height:58px;border:1px solid var(--border-subtle);border-radius:14px;background:var(--bg-surface);box-shadow:var(--shadow);color:var(--text-2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;font-weight:600;transition:all .15s;-webkit-tap-highlight-color:transparent;outline:none}.model3d-tool-btn:focus{outline:none}.model3d-tool-btn strong{font-size:16px;color:var(--blue);line-height:1}.model3d-tool-btn span{font-size:9.5px;letter-spacing:.02em}.model3d-tool-btn:hover,.model3d-tool-btn.active{border-color:var(--blue-600);background:var(--blue-50);color:var(--blue-600);box-shadow:var(--shadow-md)}.model3d-rail-toggle{display:none}.model3d-rail-sep{pointer-events:none;width:40px;height:1px;margin:2px 0;align-self:flex-end;background:var(--border-default)}.model3d-action-group{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.model3d-action-btn{pointer-events:auto;width:44px;height:44px;border:1px solid var(--border-subtle);border-radius:50%;background:var(--bg-surface);box-shadow:var(--shadow);color:var(--text-2);display:flex;align-items:center;justify-content:center;transition:all .15s;-webkit-tap-highlight-color:transparent;outline:none}.model3d-action-btn:focus{outline:none}.model3d-action-btn:hover:not(:disabled),.model3d-action-btn.active{border-color:var(--blue-600);background:var(--blue-50);color:var(--blue-600);box-shadow:var(--shadow-md)}.model3d-action-btn:disabled{opacity:.4;cursor:not-allowed}.model3d-views-menu{position:absolute;right:calc(100% + 8px);top:0;z-index:14;display:flex;flex-direction:column;gap:2px;padding:6px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:10px;box-shadow:var(--shadow-lg);min-width:120px}.model3d-views-menu button{pointer-events:auto;text-align:left;padding:7px 10px;border:none;border-radius:7px;background:transparent;color:var(--text-2);font-size:12px;font-weight:600;cursor:pointer}.model3d-views-menu button:hover{background:var(--blue-50);color:var(--blue-600)}.model3d-viewer-floatbar{position:absolute;bottom:14px;left:50%;transform:translate(-50%);z-index:13;display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:999px;box-shadow:var(--shadow-lg)}.model3d-floatbar-label{font-size:12px;font-weight:600;color:var(--text-2)}.model3d-axis-btn{padding:4px 10px;border:1px solid var(--border-subtle);border-radius:7px;background:var(--bg-surface);color:var(--text-2);font-size:11px;font-weight:700;cursor:pointer;transition:all .15s}.model3d-axis-btn:hover,.model3d-axis-btn.active{border-color:var(--blue-600);background:var(--blue-50);color:var(--blue-600)}.model3d-floatbar-close{padding:4px 10px;border:none;border-radius:7px;background:transparent;color:var(--text-3);font-size:11px;font-weight:600;cursor:pointer}.model3d-floatbar-close:hover{color:var(--blue-600)}.model3d-tool-drawer{position:absolute;top:14px;right:118px;bottom:14px;width:min(560px,calc(100% - 140px));z-index:11;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);display:none;flex-direction:column;overflow:hidden}.model3d-tool-drawer.open{display:flex}.model3d-tool-resize-handle{position:absolute;top:0;bottom:0;left:-5px;width:10px;z-index:15;cursor:ew-resize}.model3d-tool-resize-handle:after{content:"";position:absolute;top:14px;bottom:14px;left:4px;width:2px;border-radius:99px;background:transparent}.model3d-tool-resize-handle:hover:after{background:var(--blue-200)}.model3d-tool-head{padding:14px 16px;border-bottom:1px solid var(--border-subtle);display:flex;align-items:flex-start;justify-content:space-between;gap:12px;background:var(--bg-sunken)}.model3d-tool-head strong{display:block;font-size:14px;color:var(--text-strong)}.model3d-tool-head span{display:block;font-size:11px;color:var(--text-muted);margin-top:2px}.model3d-tool-close{width:28px;height:28px;border-radius:8px;border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-2);font-weight:600}.model3d-tool-actions{display:flex;gap:8px;flex-wrap:wrap;padding:10px 12px}.model3d-tool-actions.tight{padding:0;margin-top:8px;gap:6px}.model3d-tool-panel-wrap{overflow:hidden}.model3d-tool-panel{height:100%;min-height:0;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;overflow:hidden}.model3d-tool-body{flex:1;min-height:0;overflow:auto;padding:10px}.model3d-tool-body>.card{height:100%!important;min-height:0!important;box-shadow:none!important;border-radius:12px!important}.model3d-interference-focus{margin:0 12px 10px;padding:12px;border:1.5px solid var(--blue-200);border-radius:var(--r-lg);background:var(--blue-50);display:grid;gap:8px}.model3d-interference-focus strong{font-size:13px;color:var(--text)}.model3d-interference-focus p{font-size:12px;color:var(--text-2);line-height:1.45;margin:0}.model3d-interference-meta{display:grid;gap:3px;font-size:11px;color:var(--text-3)}.model3d-interference-columns{flex:1;min-height:0;overflow:auto;padding:0 12px 12px;display:grid;gap:10px}.model3d-interference-column{border:1px solid var(--border-subtle);border-radius:var(--r-lg);background:var(--bg-app);overflow:hidden}.model3d-interference-column-head{display:flex;justify-content:space-between;align-items:center;padding:9px 11px;background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);font-size:11px;font-weight:600;color:var(--text-body);text-transform:uppercase;letter-spacing:.04em}.model3d-interference-column-head strong{background:var(--bg-sunken);color:var(--text-body);border-radius:99px;padding:1px 7px;font-size:11px}.model3d-interference-list{display:grid;gap:8px;padding:8px}.model3d-interference-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:10px;cursor:pointer;transition:all .15s;box-shadow:var(--shadow-sm)}.model3d-interference-card:hover,.model3d-interference-card.selected{border-color:var(--blue-600);background:var(--blue-50)}.model3d-interference-card-title{font-size:12.5px;font-weight:600;color:var(--text);line-height:1.25}.model3d-interference-card-sub{font-size:10.5px;color:var(--text-3);margin-top:4px}.model3d-interference-card-tags{display:flex;gap:5px;flex-wrap:wrap;margin-top:8px}.model3d-interference-empty{font-size:12px;color:var(--text-3);text-align:center;padding:14px 8px}@media (max-width:768px){.hide-sm{display:none}.show-sm{display:inline}.content{padding:16px}.topbar{padding:0 16px}.form-grid-2{grid-template-columns:1fr}.modal{border-radius:14px}.modal-sm,.modal-md,.modal-lg,.modal-xl{max-width:calc(100vw - 32px)}.modal-header{padding:18px 18px 0}.modal-body{padding:16px 18px}.modal-footer{padding:0 18px 18px}.kanban-wrap{padding-bottom:16px}.kanban-col{min-width:186px;width:186px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.stat-grid-auto{grid-template-columns:repeat(2,1fr)!important}.cal-grid{gap:2px}.cal-day{min-height:58px;padding:3px}.cal-day-name{font-size:9px}.model3d-workspace{padding:8px;gap:8px}.model3d-hero{padding:14px;border-radius:14px}.model3d-hero h2{font-size:18px}.model3d-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.model3d-stat{min-width:0;padding:8px}.model3d-viewer-panel{min-height:500px}.model3d-filter-popover{grid-template-columns:1fr}.model3d-filter-options.compact{grid-template-columns:1fr;max-height:150px}.model3d-canvas-wrap>div,.model3d-viewer-empty{min-height:200px}.model3d-split{min-height:0}.model3d-canvas-wrap,.model3d-viewer-panel,.model3d-workspace{overflow:hidden}.model3d-rule-row{grid-template-columns:24px minmax(0,1fr) 68px 28px}.model3d-rule-row label:nth-of-type(2){grid-column:2 / span 3}.model3d-rule-row label:nth-of-type(3){grid-column:2 / span 3}.model3d-tool-rail{right:8px;top:8px;gap:6px}.model3d-config-rail{left:8px;top:62px;gap:6px}.model3d-rail-toggle{display:flex}.model3d-config-rail>.model3d-tool-btn:not(.model3d-rail-toggle),.model3d-tool-rail>.model3d-tool-btn:not(.model3d-rail-toggle),.model3d-tool-rail>.model3d-rail-sep,.model3d-tool-rail>.model3d-action-group{display:none}.model3d-config-rail.expanded>.model3d-tool-btn,.model3d-tool-rail.expanded>.model3d-tool-btn,.model3d-tool-rail.expanded>.model3d-rail-sep{display:flex}.model3d-tool-rail.expanded>.model3d-action-group{display:flex}.model3d-config-rail.expanded,.model3d-tool-rail.expanded{z-index:22}.model3d-config-drawer{top:62px;left:76px;right:8px;bottom:36px;width:auto}.model3d-tool-btn{width:58px;min-width:58px;min-height:52px;border-radius:13px;padding:4px 3px}.model3d-tool-btn strong{font-size:14px}.model3d-tool-btn span{font-size:8.5px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model3d-tool-drawer{top:8px;left:8px;right:76px;bottom:8px;width:auto!important;max-width:none!important}.model3d-tool-resize-handle{display:none}.model3d-tool-head{padding:12px 14px}.model3d-tool-head strong{font-size:13px}.model3d-tool-head span{font-size:10.5px}.m3d-split-view{flex-direction:column}.m3d-split-view>.model3d-canvas-wrap{flex:1;min-height:320px}.m3d-bottom-bar{position:relative;left:auto;bottom:auto;transform:none;width:100%;border-radius:0;border:none;border-top:1px solid var(--border-subtle);box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--bg-surface);padding:4px 2px;gap:0;justify-content:space-around;flex-shrink:0;z-index:auto}.m3d-bottom-btn{padding:8px 4px;font-size:11px;gap:2px;flex-direction:column;border-radius:8px;flex:1;justify-content:center}.m3d-bottom-btn:focus-visible,.m3d-bottom-btn:focus{outline:none}.m3d-camera-controls{bottom:64px;right:10px}.m3d-capture-chip{bottom:64px}.model3d-action-btn{width:38px;height:38px}.model3d-action-btn:focus-visible{outline:none}}.rich-editor-wrap{display:flex;flex-direction:column;border:1px solid var(--border-default);border-radius:var(--r-lg);overflow:hidden;background:var(--bg-surface);transition:border-color .15s,box-shadow .15s}.rich-editor-wrap:focus-within{border-color:var(--blue-600);box-shadow:0 0 0 3px #4f7ef81f}.rich-toolbar{display:flex;flex-wrap:wrap;gap:3px;padding:6px 8px;border-bottom:1px solid var(--border-subtle);background:var(--bg-sunken);align-items:center}.rich-tbtn{padding:3px 7px;border-radius:7px;border:1px solid var(--border-default);background:var(--bg-surface);color:var(--text-body);font-size:11px;font-weight:600;cursor:pointer;line-height:1.5;min-width:26px;font-family:var(--font-sans);transition:all .1s;white-space:nowrap}.rich-tbtn:hover{background:var(--blue-50);border-color:var(--blue-200);color:var(--blue-600)}.rich-tbtn-active{background:var(--blue-50)!important;border-color:var(--blue-600)!important;color:var(--blue-600)!important}.rich-tbtn-wide{padding:3px 10px}.rich-sep{display:inline-block;width:1px;height:18px;background:var(--border-default);margin:0 2px;flex-shrink:0}.rich-content{padding:12px 14px;font-size:13px;line-height:1.8;color:var(--text-strong);outline:none;font-family:var(--font-sans)}.rich-content>*+*{margin-top:6px}.rich-content p{margin:0}.rich-content h1{font-size:17px;font-weight:600;color:var(--text-strong);padding-bottom:5px;border-bottom:1px solid var(--border-subtle);margin-top:14px;margin-bottom:6px}.rich-content h2{font-size:14px;font-weight:600;color:var(--text-body);margin-top:12px;margin-bottom:4px;display:flex;align-items:center;gap:6px}.rich-content h2:before{content:"";display:inline-block;width:3px;height:14px;background:var(--blue-600);border-radius:2px}.rich-content h3{font-size:12px;font-weight:600;color:var(--text-body);text-transform:uppercase;letter-spacing:.06em;margin-top:10px;margin-bottom:3px}.rich-content ul,.rich-content ol{padding-left:22px;margin:6px 0}.rich-content ul{list-style-type:disc}.rich-content ol{list-style-type:decimal}.rich-content li{margin:3px 0}.rich-content li p{margin:0}.rich-content ul li::marker{color:var(--blue-600)}.rich-content ol li::marker{color:var(--blue-600);font-weight:600}.rich-content blockquote{border-left:3px solid var(--blue-600);background:var(--blue-50);border-radius:0 8px 8px 0;padding:8px 12px;color:var(--text-body);font-style:normal;margin:8px 0}.rich-content blockquote p{margin:0}.rich-content code{background:var(--bg-sunken);border:1px solid var(--border-subtle);border-radius:5px;padding:1px 5px;font-size:12px;font-family:var(--font-mono);color:#7c3aed}.rich-content pre{background:#1e293b;color:#e2e8f0;border-radius:10px;padding:12px 14px;overflow-x:auto;margin:8px 0;border:2px solid rgba(255,255,255,.06)}.rich-content pre code{background:none;border:none;padding:0;color:inherit;font-size:12px}.rich-content img,.rich-content .rich-img{max-width:100%;height:auto;border-radius:10px;border:1px solid var(--border-subtle);box-shadow:var(--shadow-sm);margin:8px 0;display:block;cursor:zoom-in}.rich-content img.ProseMirror-selectednode{outline:3px solid var(--blue-600);outline-offset:2px}.rich-content .rich-img-wrap{position:relative;display:inline-block;max-width:100%;margin:8px 0;line-height:0}.rich-content .rich-img-wrap img{max-width:100%;height:auto;margin:0}.rich-content .rich-img-handle{position:absolute;right:-5px;bottom:-5px;width:14px;height:14px;border-radius:4px;background:var(--blue-600);border:2px solid #fff;box-shadow:var(--shadow-sm);cursor:nwse-resize;opacity:0;transition:opacity .12s}.rich-content .rich-img-wrap:hover .rich-img-handle,.rich-content .rich-img-wrap.is-resizing .rich-img-handle{opacity:1}.rich-content .rich-img-wrap.is-resizing img{outline:2px solid var(--blue-600);outline-offset:2px}.rich-content hr{border:none;border-top:1px solid var(--border-default);margin:14px 0}.rich-content a{color:var(--blue-600);text-decoration:underline;text-underline-offset:2px;cursor:pointer}.rich-content mark{background:#fde68a;padding:0 2px;border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone}.rich-content table{border-collapse:collapse;width:100%;margin:10px 0;table-layout:fixed;overflow:hidden}.rich-content table td,.rich-content table th{border:1px solid var(--border-default);padding:6px 9px;vertical-align:top;position:relative;min-width:40px}.rich-content table th{background:var(--bg-sunken);font-weight:700;text-align:left}.rich-content table .selectedCell:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#2563eb1f;pointer-events:none}.rich-content table .column-resize-handle{position:absolute;right:-2px;top:0;bottom:0;width:4px;background:var(--blue-600);cursor:col-resize}.rich-content p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--text-muted);font-style:italic;pointer-events:none;float:left;height:0}@media (max-width:480px){.content{padding:12px}.topbar{padding:0 12px;height:52px}.page-title{font-size:14px}.auth-shell{padding:12px}.auth-card{padding:28px 20px;border-radius:16px}.btn{padding:6px 11px;font-size:12px;min-height:36px}.btn-sm{padding:4px 8px;font-size:11px;min-height:32px}.form-grid-2{grid-template-columns:1fr}.modal{border-radius:12px;margin:0}.modal-sm,.modal-md,.modal-lg,.modal-xl{max-width:calc(100vw - 16px)}.overlay{padding:8px}.stat-grid-auto{grid-template-columns:1fr 1fr!important}.stat-value{font-size:20px}.kanban-col{min-width:172px;width:172px}.tb-actions .btn{padding:6px 10px}.cal-day{min-height:48px}.cal-event{display:none}.search-input{width:160px}.search-input:focus{width:180px}.proj-page-body{flex-direction:column}.proj-sidebar{width:100%;border-right:none;border-bottom:1px solid var(--border-subtle);max-height:200px}.model3d-hero p{font-size:12px}.model3d-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.model3d-item{grid-template-columns:30px minmax(0,1fr) auto;padding:9px}.model3d-item-icon{width:30px;height:30px;border-radius:8px}.model3d-help,.m3d-camera-controls,.m3d-config-corner-btn,.model3d-tool-rail,.model3d-config-rail{display:none}.model3d-color-template-row,.model3d-color-actions{flex-direction:column;align-items:stretch}.model3d-color-actions .btn,.model3d-color-template-row .btn{width:100%;justify-content:center}.model3d-rule-row{grid-template-columns:24px minmax(0,1fr) 54px 28px}.model3d-rule-row label:nth-of-type(2),.model3d-rule-row label:nth-of-type(3){grid-column:2 / span 3}.model3d-upload-actions{flex-direction:column-reverse}.model3d-upload-actions .btn{width:100%;justify-content:center}.m3d-bottom-bar{gap:1px;padding:3px;bottom:8px;max-width:calc(100vw - 16px);backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--bg-surface);box-shadow:none}.m3d-bottom-btn{padding:5px 8px;font-size:11px;gap:3px}.m3d-config-modal,.m3d-panel-modal{width:calc(100vw - 12px);height:calc(100dvh - 60px);min-height:0;border-radius:10px}}@media (max-width:390px){.content{padding:10px}.topbar{padding:0 10px;height:50px}.page-title{font-size:13px;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn{min-height:40px}.btn-sm{min-height:32px}.modal-sm,.modal-md,.modal-lg,.modal-xl{max-width:calc(100vw - 10px)}.stat-grid-auto{grid-template-columns:1fr!important}.stat-value{font-size:18px}.kanban-col{min-width:85vw;width:85vw}.home-widgets-row{gap:10px;margin-bottom:16px}.card-body,.card-header{padding:12px}.auth-card{padding:20px 14px}.search-input{width:120px}.search-input:focus{width:150px}}.compare-report-md{font-size:13px;color:#334155;line-height:1.75}.compare-report-md h1,.compare-report-md h2,.compare-report-md h3{font-size:14px;font-weight:700;color:#1e293b;margin:14px 0 6px}.compare-report-md p{margin:0 0 10px}.compare-report-md ul,.compare-report-md ol{padding-left:20px;margin:0 0 10px}.compare-report-md li{margin-bottom:4px}.compare-report-md strong{font-weight:700;color:#1e293b}.compare-report-md table{width:100%;border-collapse:collapse;font-size:12px;margin:12px 0}.compare-report-md th{background:#e2e8f0;color:#1e293b;font-weight:700;padding:7px 10px;text-align:left;border:1px solid var(--border-subtle)}.compare-report-md td{padding:6px 10px;border:1px solid #e2e8f0;vertical-align:top}.compare-report-md tr:nth-child(2n) td{background:var(--ph-panel)}.compare-report-md code{background:var(--ph-panel);padding:1px 5px;border-radius:4px;font-size:11px}.model3d-form-section{border:1px solid var(--ph-border-subtle);border-radius:8px;background:#fff}.model3d-form-section>summary{cursor:pointer;padding:10px 14px;font-size:13px;font-weight:700;color:var(--ph-fg-1);list-style:none;display:flex;align-items:center;justify-content:space-between}.model3d-form-section>summary:after{content:"▾";font-size:11px;color:var(--ph-fg-3);transition:transform .12s}.model3d-form-section:not([open])>summary:after{transform:rotate(-90deg)}.model3d-form-section[open]>summary{border-bottom:1px solid var(--ph-border-subtle)}.model3d-form-section>.form-grid{padding:12px 14px}.brief-row{transition:background .12s}.brief-row:hover{background:var(--bg-app)}.brief-shell{display:flex;height:100%;overflow:hidden}.brief-side{width:300px;flex-shrink:0;display:flex;flex-direction:column;overflow-y:auto}.brief-focus-body{flex-direction:row}@media (max-width:760px){.brief-focus-body{flex-direction:column;overflow-y:auto}.brief-focus-instr{width:100%!important;flex-shrink:0;border-right:none!important;border-bottom:2px solid var(--border-default);max-height:40vh}}@media (max-width:860px){.brief-shell{flex-direction:column}.brief-side{width:100%;max-height:148px;flex-shrink:0}.brief-side-list{flex-direction:row!important;flex-wrap:nowrap!important;overflow-x:auto}.brief-side-list>button{width:auto!important;min-width:180px;flex-shrink:0}}.m3d-model-filters{padding:8px 12px;display:flex;flex-direction:column;gap:4px;border-bottom:1px solid var(--border-subtle)}.int-detail-drawer-host{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;pointer-events:none}.int-detail-drawer{pointer-events:auto;position:fixed;top:12px;right:12px;bottom:12px;width:min(420px,calc(100vw - 24px));background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:16px;box-shadow:-8px 0 40px #00000038;display:flex;flex-direction:column;overflow:hidden}@media (max-width:768px){.int-detail-drawer{top:auto;right:0;left:0;bottom:0;width:100%;max-height:80vh;border-radius:16px 16px 0 0}}.m3d-split-view{position:relative;display:flex;flex-direction:row;flex:1;min-height:0;min-width:0;overflow:hidden}.m3d-resize-handle{width:4px;background:var(--border-subtle);cursor:col-resize;flex-shrink:0;transition:background .15s}.m3d-resize-handle:hover{background:var(--blue-400,#60a5fa)}.m3d-sidebar{display:flex;flex-direction:column;min-width:280px;background:var(--bg-surface,#fff);border-left:1px solid var(--border-subtle);overflow:hidden;flex-shrink:0}.m3d-sidebar-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 12px;border-bottom:1px solid var(--border-subtle);flex-shrink:0}.m3d-sidebar-head strong{font-size:14px;font-weight:700;color:var(--text-1)}.m3d-sidebar-body{flex:1;overflow-y:auto;display:flex;flex-direction:column}.m3d-panel-close{width:28px;height:28px;border-radius:8px;border:1px solid var(--border-subtle);background:transparent;color:var(--text-3);font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:background .12s,color .12s}.m3d-panel-close:hover{background:var(--bg-sunken);color:var(--text-1)}.m3d-bottom-bar{position:absolute;bottom:16px;left:50%;transform:translate(-50%);z-index:12;display:flex;align-items:center;gap:6px;padding:5px 6px;background:rgba(var(--bg-surface-rgb,255,255,255),.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--border-subtle);border-radius:999px;box-shadow:0 4px 16px #0000001f;pointer-events:all;white-space:nowrap}.m3d-bottom-bar *{-webkit-tap-highlight-color:transparent}.m3d-bottom-bar *:focus,.m3d-bottom-bar *:focus-visible{outline:none!important;box-shadow:none!important}.m3d-bottom-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--text-body);font-size:13px;font-weight:500;cursor:pointer;transition:background .12s,color .12s,border-color .12s;position:relative;-webkit-tap-highlight-color:transparent;outline:none}.m3d-bottom-btn:focus,.m3d-bottom-btn:focus-visible{outline:none;box-shadow:none}.m3d-bottom-btn:hover{background:var(--blue-50,#eff6ff);color:var(--blue-600,#2563eb)}.m3d-bottom-btn.active{background:var(--blue-600,#2563eb);color:#fff}.m3d-bottom-btn.active:hover{background:var(--blue-700,#1d4ed8)}.m3d-bottom-badge{position:absolute;top:-4px;right:4px;min-width:16px;height:16px;border-radius:999px;background:var(--red-500,#ef4444);color:#fff;font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 3px;line-height:1;border:2px solid rgba(var(--bg-surface-rgb,255,255,255),.9)}.m3d-bottom-btn.active .m3d-bottom-badge{background:#fff;color:var(--red-500,#ef4444)}.m3d-visibility-tab{display:block}.m3d-vis-filter-divider{display:flex;align-items:center;gap:8px;padding:10px 14px 6px;font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em;border-top:1px solid var(--border-subtle);margin-top:4px}.m3d-vis-filter-divider:after{content:"";flex:1;height:1px;background:var(--border-subtle)}.m3d-models-tab{display:flex;flex-direction:column}.m3d-models-tab-actions{padding:10px 12px;border-bottom:1px solid var(--border-subtle)}.m3d-config-modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:18px;background:#0f172a38}.m3d-config-modal{position:relative;width:min(980px,calc(100% - 20px));height:min(760px,calc(100% - 20px));min-height:360px;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border-subtle);border-radius:8px;background:var(--bg-surface);box-shadow:0 22px 60px #0f172a3d;animation:m3d-config-modal-in .16s ease-out}.m3d-config-modal-head{height:46px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;border-bottom:1px solid var(--border-subtle);background:var(--bg-surface);flex-shrink:0}.m3d-config-modal-head strong{font-size:14px;font-weight:700;color:var(--text-strong)}.m3d-config-modal-body{flex:1;min-height:0;overflow-y:auto;background:var(--ph-panel)}.m3d-config-modal-body>.m3d-config-tab{min-height:100%}.m3d-floating-layer{display:block;padding:0;background:transparent;pointer-events:none}.m3d-floating-window{position:absolute;pointer-events:auto;min-width:280px;min-height:280px;max-width:calc(100% - 12px);max-height:calc(100% - 12px);z-index:1}.m3d-floating-window--focused{z-index:2}.m3d-panel-modal.m3d-floating-window{position:absolute}.m3d-floating-handle{cursor:move;touch-action:none;-webkit-user-select:none;user-select:none}.m3d-floating-handle .m3d-panel-close{cursor:pointer}.m3d-resize-handle{position:absolute;z-index:9;touch-action:none}.m3d-resize-n{top:0;left:6px;right:6px;height:5px;cursor:n-resize}.m3d-resize-s{bottom:0;left:6px;right:6px;height:5px;cursor:s-resize}.m3d-resize-e{right:0;top:6px;bottom:6px;width:5px;cursor:e-resize}.m3d-resize-w{left:0;top:6px;bottom:6px;width:5px;cursor:w-resize}.m3d-resize-nw{top:0;left:0;width:10px;height:10px;cursor:nw-resize}.m3d-resize-ne{top:0;right:0;width:10px;height:10px;cursor:ne-resize}.m3d-resize-sw{bottom:0;left:0;width:10px;height:10px;cursor:sw-resize}.m3d-resize-se{bottom:0;right:0;width:10px;height:10px;cursor:se-resize}.m3d-panel-modal{position:relative;width:min(820px,calc(100% - 20px));height:min(760px,calc(100% - 20px));min-height:360px;display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border-subtle);border-radius:8px;background:var(--bg-surface);box-shadow:0 22px 60px #0f172a3d;animation:m3d-config-modal-in .16s ease-out}.m3d-panel-modal .m3d-sidebar-body{flex:1;min-height:0;overflow-y:auto;background:var(--bg-surface)}.m3d-panel-modal--models{width:min(760px,calc(100% - 20px))}.m3d-panel-modal--filters{width:min(820px,calc(100% - 20px))}.m3d-panel-modal--interferences{width:min(1080px,calc(100% - 20px))}.m3d-panel-modal--quantities{width:min(1240px,calc(100% - 20px));height:min(820px,calc(100% - 20px))}.m3d-panel-modal--quantities .m3d-sidebar-body{overflow:hidden}.m3d-panel-modal--properties{width:min(620px,calc(100% - 20px))}@keyframes m3d-config-modal-in{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.m3d-config-tab{display:flex;flex-direction:column;min-height:100%;background:var(--ph-panel);container-type:inline-size}.m3d-config-nav{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px;padding:6px;border-bottom:1px solid var(--border-subtle);background:#fffffff5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.m3d-config-nav-item{height:34px;min-width:0;display:flex;align-items:center;justify-content:center;gap:5px;padding:0 6px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-muted);font-family:var(--font-sans);font-size:10.5px;font-weight:650;cursor:pointer;transition:background .15s,border-color .15s,color .15s,box-shadow .15s}.m3d-config-nav-item svg{flex-shrink:0}.m3d-config-nav-item span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m3d-config-nav-item:hover{background:var(--bg-sunken);color:var(--text-strong)}.m3d-config-nav-item.active{border-color:var(--blue-200);background:var(--blue-50);color:var(--blue-700,#1d4ed8);box-shadow:0 1px 2px #0f172a0a}.m3d-navigation-settings{display:flex;flex-direction:column;gap:12px;padding:20px;max-width:720px;width:100%;border:1px solid var(--border-subtle);border-radius:8px;background:var(--bg-surface)}.m3d-navigation-settings h3{margin:0;font-size:15px;color:var(--text-strong)}.m3d-navigation-settings p{margin:0;font-size:12px;line-height:1.5;color:var(--text-muted)}.m3d-navigation-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.m3d-navigation-fields label{display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:650;color:var(--text-strong)}.m3d-navigation-fields .form-input{height:35px;font-size:12px}@media (max-width:560px){.m3d-navigation-fields{grid-template-columns:1fr}}.m3d-config-content{display:flex;flex-direction:column;flex:1;min-height:0;padding:8px;container-type:inline-size}.m3d-config-content>.model3d-color-panel,.m3d-config-content>.model3d-mapping-panel{width:100%;border:1px solid var(--border-subtle);border-radius:8px;box-shadow:0 1px 3px #0f172a0a;overflow:hidden;background:var(--bg-surface)}.m3d-config-content .model3d-accordion-head{min-height:58px;padding:12px 14px;background:var(--bg-surface)}.m3d-config-content .model3d-accordion-head:hover{background:var(--bg-surface)}.m3d-config-content .model3d-accordion-head strong{font-size:14px}.m3d-config-content .model3d-accordion-indicator{border:0;border-radius:6px;background:var(--bg-sunken);padding:5px 8px;color:var(--text-muted);letter-spacing:0;text-transform:none}.m3d-config-content .model3d-color-header{gap:5px;padding:8px 10px;background:var(--ph-panel)}.m3d-config-content .model3d-color-template-row{gap:5px}.m3d-config-content .model3d-color-template-row .form-input{height:30px;padding:4px 8px}.m3d-config-field-label{font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}.m3d-config-field{display:flex;flex-direction:column;gap:3px}.m3d-config-field>span,.m3d-config-rule-label{font-size:9px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.m3d-config-field .form-input{height:31px;padding:4px 8px}.m3d-config-rule-label{display:flex;align-items:center;gap:5px;margin-top:2px;padding-top:7px;border-top:1px solid var(--border-subtle)}.m3d-config-rule-label span{padding:2px 5px;border-radius:4px;background:var(--bg-sunken);font-size:9px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--text-muted)}.m3d-config-content .model3d-color-summary{display:inline-flex;align-items:center;min-height:16px;color:var(--text-muted);font-size:10px;font-weight:500}.m3d-config-content .model3d-rule-list{gap:7px;padding:8px 10px}.m3d-config-content .model3d-rule-card{gap:7px;padding:8px;border-radius:6px;background:var(--bg-surface);box-shadow:0 1px 2px #0f172a09}.m3d-config-content .model3d-rule-card:hover{border-color:var(--blue-300,#93c5fd)}.m3d-config-content .model3d-rule-body{gap:5px}.m3d-config-content .model3d-match-row{grid-template-columns:minmax(110px,.9fr) minmax(120px,1.1fr) 28px;gap:7px}.m3d-config-content .model3d-match-row .form-input{height:30px;padding:4px 7px;font-size:11px}.m3d-config-content .model3d-match-remove{width:24px;height:24px}.m3d-config-content .model3d-rule-add-match{min-height:24px;display:inline-flex;align-items:center;font-size:10px;text-decoration:none}.m3d-config-content .model3d-rule-add-match:hover{text-decoration:none;color:var(--blue-700,#1d4ed8)}.m3d-config-content .model3d-color-footer{position:sticky;bottom:0;z-index:3;padding:7px 10px;background:#f8fafcfa;box-shadow:0 -1px 0 var(--border-subtle)}.m3d-config-content .model3d-color-footer .btn{min-height:28px;padding:4px 8px;font-size:10.5px}.m3d-config-content .model3d-mapping-list{gap:0;padding:0;background:var(--ph-panel)}.m3d-config-content .model3d-mapping-field{position:relative;display:grid;gap:7px;padding:10px 10px 11px 13px;border-bottom:5px solid #eef2f7;background:var(--bg-surface)}.m3d-config-content .model3d-mapping-field:before{content:"";position:absolute;left:0;top:10px;bottom:11px;width:3px;background:#cbd5e1}.m3d-config-content .model3d-mapping-field:last-child{border-bottom:0}.m3d-mapping-input{display:flex;flex-direction:column;gap:3px}.m3d-mapping-input>span{font-size:8.5px;font-weight:650;color:var(--text-muted)}.m3d-config-content .model3d-mapping-field .form-input{height:30px;padding:4px 8px;font-size:11px}.m3d-config-content .model3d-mapping-section-title{margin:0;padding:13px 14px 7px;border-top:1px solid var(--border-subtle);background:var(--ph-panel);color:var(--text-strong);font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.m3d-config-content .model3d-qcols-list{padding:8px;background:var(--ph-panel)}.m3d-config-content .model3d-qcol-row{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:6px!important;align-items:end!important;margin-bottom:6px!important;padding:8px;border:1px solid var(--border-subtle);border-radius:6px;background:var(--bg-surface)}.m3d-qcol-input{grid-column:1 / -1;display:flex;flex-direction:column;gap:3px;min-width:0}.m3d-qcol-input>span{font-size:8.5px;font-weight:650;color:var(--text-muted)}.m3d-qcol-input .form-input{width:100%;height:30px;min-width:0;padding:4px 8px;font-size:11px}.m3d-qcol-group{grid-column:2;display:flex;align-items:center;justify-self:end;gap:6px;font-size:10.5px;color:var(--text-muted);cursor:pointer}.m3d-qcol-actions{grid-column:1;grid-row:3;display:flex;align-items:center;justify-content:flex-start;gap:5px}.m3d-qcol-actions .btn{width:25px;height:25px;padding:0;justify-content:center;line-height:1}.m3d-qcol-actions .m3d-qcol-delete{color:var(--danger-500)}.m3d-qcol-add{width:100%;justify-content:center}.m3d-config-content .model3d-mapping-actions{position:sticky;bottom:0;z-index:3;padding:7px 10px;border-top:1px solid var(--border-subtle);background:#fffffffa}.m3d-config-content .model3d-mapping-actions .btn{min-height:28px;padding:4px 8px;font-size:10.5px}@container (min-width:560px){.m3d-config-content .model3d-mapping-field{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:14px}.m3d-config-content .model3d-qcol-row{grid-template-columns:repeat(2,minmax(0,1fr))}.m3d-qcol-input{grid-column:auto}.m3d-qcol-group{grid-column:2}.m3d-qcol-actions{grid-column:1;grid-row:2}}@container (max-width:470px){.m3d-config-nav{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:1100px){.m3d-config-nav-item{font-size:10px;gap:4px;padding:0 5px}.m3d-config-content{padding:9px}.m3d-config-content .model3d-match-row{grid-template-columns:1fr 28px}.m3d-config-content .model3d-match-row .form-input:first-child{grid-column:1}.m3d-config-content .model3d-match-row .form-input:nth-child(2){grid-column:1}.m3d-config-content .model3d-match-remove{grid-column:2;grid-row:1 / span 2;align-self:center}}@media (max-width:700px){.m3d-config-modal-backdrop{padding:0;align-items:flex-end}.m3d-config-modal{width:100%!important;height:80dvh!important;min-height:0;border-radius:16px 16px 0 0;box-shadow:0 -8px 32px #00000038}.m3d-floating-layer{display:flex;align-items:flex-end;background:#0000002e}.m3d-floating-window{position:relative!important;left:auto!important;top:auto!important;width:100%!important;height:68dvh!important;max-height:68dvh!important;min-height:0!important;border-radius:16px 16px 0 0!important;border-bottom:none!important;box-shadow:0 -8px 32px #00000038!important}.m3d-resize-handle{display:none!important}.m3d-floating-handle{cursor:default}.m3d-has-panel .m3d-camera-controls,.m3d-has-panel .m3d-capture-chip{display:none}}.m3d-sidebar-body .vis-panel{position:static;width:auto;background:transparent;border:none;box-shadow:none;border-radius:0;overflow:visible}.m3d-sidebar-body .model3d-material-panel,.m3d-sidebar-body .model3d-filter-panel,.m3d-sidebar-body .model3d-color-panel,.m3d-sidebar-body .model3d-mapping-panel{overflow:visible;flex-shrink:0}.m3d-sidebar-body .model3d-filter-groups,.m3d-sidebar-body .model3d-rule-list{overflow:visible;max-height:none}.m3d-presets-section{border-top:1px solid var(--border-subtle);padding:0}.m3d-presets-head{display:flex;align-items:center;justify-content:space-between;padding:10px 14px 8px;font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em}.m3d-preset-form{padding:8px 12px 10px;display:flex;flex-direction:column;gap:6px;border-bottom:1px solid var(--border-subtle)}.m3d-preset-form-actions{display:flex;gap:6px}.m3d-presets-empty{padding:10px 14px 12px;font-size:12px;color:var(--text-muted);line-height:1.5}.m3d-presets-list{display:flex;flex-direction:column;gap:2px;padding:4px 8px 10px}.m3d-preset-item{display:flex;align-items:center;gap:4px}.m3d-preset-apply{flex:1;text-align:left;padding:7px 10px;border-radius:8px;border:1px solid var(--border-subtle);background:var(--bg-sunken);color:var(--text-body);font-size:12.5px;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m3d-preset-apply:hover{background:var(--blue-50,#eff6ff);border-color:var(--blue-200,#bfdbfe);color:var(--blue-700,#1d4ed8)}.m3d-preset-delete{width:24px;height:24px;flex-shrink:0;border-radius:6px;border:none;background:transparent;color:var(--text-muted);font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.m3d-preset-delete:hover{background:var(--red-50,#fef2f2);color:var(--red-500,#ef4444)}.m3d-quantities-tab{display:flex;flex-direction:column;flex:1;min-height:0}.m3d-quantities-tab>.model3d-tool-panel{flex:1;min-height:0}.m3d-ifc-filter-bar{border-bottom:1px solid var(--border-subtle);flex-shrink:0;background:var(--bg-sunken)}.m3d-ifc-filter-bar-head{display:flex;align-items:center;justify-content:space-between;padding:6px 12px 4px;font-size:10px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.07em}.m3d-ifc-filter-bar-count{font-size:10px;font-weight:600;color:var(--blue-600,#2563eb);text-transform:none;letter-spacing:0}.m3d-ifc-filter-bar .model3d-filter-tabs--vertical{display:grid;grid-template-columns:1fr 1fr;flex-direction:unset;gap:4px;padding:0 10px 8px;align-items:start}.m3d-ifc-filter-bar .model3d-filter-tabs--vertical .model3d-filter-tab-wrap{width:100%}.m3d-ifc-filter-bar .model3d-filter-tabs--vertical .model3d-filter-tab,.m3d-ifc-filter-bar .model3d-filter-tabs--vertical .model3d-filter-clear{width:100%;height:26px;font-size:10.5px;padding:0 8px;justify-content:space-between}.m3d-ifc-filter-bar .model3d-filter-tabs--vertical .model3d-filter-clear{grid-column:span 2;height:24px}.m3d-ifc-filter-bar .model3d-filter-menu{min-width:180px}.m3d-ghost-opacity-row{display:flex;flex-direction:column;gap:4px;padding:10px 14px 12px;border-top:1px solid var(--border-subtle)}.m3d-ghost-opacity-row label{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--text-body)}.m3d-ghost-opacity-row label strong{font-size:12px;color:var(--text-strong)}.m3d-ghost-opacity-row input[type=range]{width:100%;accent-color:var(--blue-600,#2563eb)}.m3d-capture-chip{position:absolute;bottom:76px;left:50%;transform:translate(-50%);z-index:14;display:flex;align-items:center;gap:8px;padding:7px 12px 7px 14px;background:rgba(var(--bg-surface-rgb,255,255,255),.96);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--blue-200,#bfdbfe);border-radius:999px;box-shadow:0 4px 16px #00000024;font-size:12px;color:var(--text-body);white-space:nowrap}.m3d-capture-chip span{font-size:12px;color:var(--text-muted)}.m3d-capture-chip button{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;border:none;background:var(--blue-600,#2563eb);color:#fff;font-size:12px;font-weight:600;cursor:pointer;transition:background .12s}.m3d-capture-chip button:hover{background:var(--blue-700,#1d4ed8)}.m3d-camera-controls{position:absolute;bottom:76px;right:14px;z-index:12;display:flex;flex-direction:column;gap:6px;pointer-events:all}.m3d-config-corner-btn{position:absolute;top:14px;right:14px;z-index:12;pointer-events:all}.m3d-corner-rail{position:absolute;top:14px;right:14px;z-index:12;pointer-events:all;display:flex;flex-direction:column;gap:8px}.m3d-corner-badge{position:absolute;top:-5px;right:-5px;min-width:16px;height:16px;padding:0 4px;border-radius:99px;background:var(--blue-600,#2563eb);color:#fff;font-size:9px;font-weight:700;line-height:16px;text-align:center;box-shadow:0 1px 3px #00000040;pointer-events:none}.m3d-section-panel{position:absolute;right:calc(100% + 8px);top:0;z-index:14;display:flex;flex-direction:column;gap:10px;padding:12px 14px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:10px;box-shadow:var(--shadow-lg);min-width:192px}.m3d-face-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.m3d-face-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 6px;border:1px solid var(--border-subtle);border-radius:8px;background:var(--bg-surface);color:var(--text-2);font-size:10px;font-weight:600;cursor:pointer;transition:all .12s;line-height:1}.m3d-face-btn:hover{border-color:var(--blue-400,#60a5fa);background:var(--blue-50,#eff6ff);color:var(--blue-600,#2563eb)}.m3d-face-btn.active{border-color:var(--blue-600,#2563eb);background:var(--blue-600,#2563eb);color:#fff}.m3d-face-btn.cut{border-color:var(--blue-300,#93c5fd);background:var(--blue-50,#eff6ff);color:var(--blue-700,#1d4ed8)}.m3d-face-symbol{font-size:14px;line-height:1}.m3d-face-label{font-size:9px;font-weight:600;letter-spacing:.3px;text-transform:uppercase}.m3d-face-slider{display:flex;flex-direction:column;gap:5px;padding-top:4px;border-top:1px solid var(--border-subtle)}.m3d-face-slider-head{display:flex;justify-content:space-between;font-size:11px;font-weight:600;color:var(--text-2)}.m3d-face-slider input[type=range]{width:100%;accent-color:var(--blue-600,#2563eb);cursor:pointer}.m3d-context-menu{position:fixed;z-index:200;height:auto;width:max-content;background:var(--ph-bg-raised,#fff);border:1px solid var(--ph-border,#DCE2EC);border-radius:var(--ph-radius-md,12px);box-shadow:var(--ph-shadow-lg,0 12px 32px rgba(11,26,46,.12));padding:5px;min-width:172px;display:flex;flex-direction:column;gap:2px}.m3d-context-menu button{display:flex;align-items:center;gap:9px;padding:8px 10px;border:none;border-radius:var(--ph-radius-sm,8px);background:transparent;color:var(--ph-fg-2,#353D4F);font-size:12.5px;font-weight:500;cursor:pointer;width:100%;text-align:left;white-space:nowrap;transition:background .12s,color .12s}.m3d-context-menu button:hover{background:var(--ph-blue-50,#E8F0FF);color:var(--ph-blue-600,#1849B5)}.model3d-viewer-panel{position:relative;flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.model3d-workspace{display:flex;flex-direction:column;height:100%;min-height:0}.m3d-split-view>.model3d-canvas-wrap{flex:1;min-height:200px;min-width:0}.project-floor-layout,.m3d-navigation-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.75fr);gap:24px;align-items:start}.project-info-layout{container-type:inline-size;container-name:project-info;min-width:0}.project-info-floor-row{display:grid;grid-template-columns:minmax(0,804px) minmax(300px,1fr);gap:28px;align-items:start;max-width:1312px}.project-info-floor-aside{position:sticky;top:16px;align-self:start}.project-floor-layout.full-width{grid-template-columns:1fr}.project-floor-layout.full-width .project-floor-row,.project-floor-table-head{grid-template-columns:80px minmax(140px,1fr) 130px 76px}.project-floor-layout.full-width .project-floor-row>button{grid-column:auto}@container project-info (max-width:1100px){.project-info-floor-row{grid-template-columns:minmax(0,804px)}.project-info-floor-aside{position:static}}@container floor-editor (max-width:480px){.project-floor-layout.full-width .project-floor-row{grid-template-columns:70px minmax(100px,1fr)}.project-floor-layout.full-width .project-floor-row>button{grid-column:2}.project-floor-table-head{display:none!important}}.project-floor-editor{container-type:inline-size;container-name:floor-editor}.project-floor-scope{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.project-floor-scope>strong{font-size:12px;color:var(--text-strong);font-weight:600}.project-floor-building-filter{display:flex;flex-direction:column;gap:6px;font-size:10px;font-weight:600;color:var(--text-muted);margin:0;min-width:220px}.project-floor-building-filter .form-input{max-width:360px;color:var(--text-strong);font-weight:400}.project-floor-building-options{font-size:11px;color:var(--text-muted)}.project-floor-building-options>summary{color:var(--blue-600);cursor:pointer;font-size:11px}.project-floor-building-options[open]{width:100%;order:2;border-bottom:1px solid var(--border-subtle);padding-bottom:10px}.project-floor-building-options p{font-size:11px;margin:10px 0;line-height:1.5}.project-floor-building-options>label{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;font-size:12px;color:var(--text-strong);text-transform:none;letter-spacing:normal}.project-floor-building-options>label>span:last-child{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-muted)}.project-floor-building-options input{accent-color:var(--blue-600)}.project-floor-table-head{display:grid;gap:10px;margin-top:4px;font-size:10px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.project-floor-empty{margin:8px 0;font-size:12px;color:var(--text-muted)}.project-floor-form,.m3d-navigation-form{min-width:0;display:flex;flex-direction:column;gap:8px}.project-floor-form .project-floor-row{grid-template-columns:80px minmax(140px,1fr) 130px 76px}.project-floor-form .project-floor-row>button{justify-self:end}@container floor-editor (max-width:480px){.project-floor-form .project-floor-row{grid-template-columns:70px minmax(100px,1fr)}.project-floor-form .project-floor-row>button{grid-column:2}}.project-floor-aside{min-width:0;border-left:1px solid var(--border-subtle);padding-left:24px;position:sticky;top:12px;align-self:start}.m3d-navigation-layout{grid-template-columns:minmax(210px,1fr) minmax(250px,1.1fr)}.m3d-navigation-form .m3d-navigation-fields{grid-template-columns:1fr}.project-floor-section{min-width:0;margin:0;padding:0}.project-floor-section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.project-floor-section-head strong{font-size:12px;font-weight:600;color:var(--text-strong)}.project-floor-section-head>span{font-size:10px;color:var(--text-muted)}.project-floor-section-context{font-size:11px;color:var(--text-muted);margin-top:10px;padding-bottom:10px;border-bottom:1px solid var(--border-subtle)}.project-floor-section-building{display:flex;flex-direction:column;gap:5px;margin-top:12px;font-size:11px}.project-floor-section-drawing{max-height:420px;overflow-y:auto;overflow-x:hidden;margin:18px 0 4px;background:var(--bg-surface)}.project-floor-section-plot{position:relative}.project-floor-section svg{display:block;overflow:visible}.floor-section-datum{stroke:#a6a6a6;stroke-width:1;stroke-dasharray:28 12 6 12;fill:none}.floor-section-datum.selected{stroke:var(--blue-600,#2563eb)}.floor-section-head-outline{stroke:var(--blue-600,#2563eb);stroke-width:1;fill:var(--bg-surface)}.floor-section-head-fill{fill:var(--blue-600,#2563eb)}.floor-section-label{position:absolute;right:34px;left:20px;display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;height:44px;padding:0;border:0;background:transparent;color:var(--text-strong);text-align:right;min-width:0;font-family:inherit}.floor-section-label span{display:block;font-size:12px;line-height:16px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase}.floor-section-label strong{font-size:12px;font-weight:400;font-variant-numeric:tabular-nums;line-height:16px}button.floor-section-label{cursor:pointer}button.floor-section-label:focus-visible{outline:1px solid var(--blue-300);outline-offset:3px}button.floor-section-label:hover,.floor-section-label.selected{color:var(--blue-600,#2563eb)}.project-floor-section-readout{margin-top:12px;padding-top:10px;border-top:1px solid var(--border-subtle)}.project-floor-section p{font-size:11px;color:var(--text-muted);line-height:1.5;margin:8px 0 0}.project-floor-section .floor-section-camera-confirmed{color:var(--blue-600,#2563eb)}.project-floor-section .floor-section-camera-warning{color:#c2410c}@container floor-editor (max-width:700px){.project-floor-layout{grid-template-columns:1fr}.project-floor-layout>.project-floor-aside{position:static;border-left:0;border-top:1px solid var(--border-subtle);padding:20px 0 0}}@container (max-width:580px){.m3d-navigation-layout{grid-template-columns:1fr}.m3d-navigation-layout>.project-floor-aside{position:static;border-left:0;border-top:1px solid var(--border-subtle);padding:20px 0 0}}.model-loading-dialog{margin:auto;outline:none;border:1px solid #e3e8ef;border-radius:16px;padding:20px;width:min(340px,calc(100vw - 40px));box-sizing:border-box;color:#26344d;background:#fff;box-shadow:0 24px 80px #17243b30;font-family:inherit}.model-loading-dialog::backdrop{background:#e9edf2}.model-loading-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;background:#edf2fc;color:#4267a8;font-weight:700;margin-bottom:12px}.model-loading-dialog h2{font-size:17px;line-height:1.3;margin:0 0 10px}.model-loading-dialog p{font-size:12px;line-height:1.5;color:#647086;margin:0 0 16px}.model-loading-count{display:flex;justify-content:space-between;gap:12px;font-size:12px;margin-bottom:8px}.model-loading-count strong{font-variant-numeric:tabular-nums}.model-loading-dialog progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:8px;width:100%;height:8px;overflow:hidden;background:#edf0f5}.model-loading-dialog progress::-webkit-progress-bar{background:#edf0f5}.model-loading-dialog progress::-webkit-progress-value{background:#5274b3;border-radius:8px}.model-loading-dialog progress::-moz-progress-bar{background:#5274b3}.model-loading-dialog .model-loading-detail{margin:14px 0 0;font-size:12px;overflow-wrap:anywhere}.model-loading-dialog button{margin-top:20px;border:0;border-radius:10px;padding:11px 18px;background:#30466f;color:#fff;font:inherit;cursor:pointer}.m3d-quick-visibility{display:flex;align-items:flex-start;pointer-events:none;font-family:var(--font-sans)}.m3d-quick-visibility-panel{position:relative;width:300px;min-width:0;max-width:calc(100vw - 90px);max-height:100%;display:flex;flex-direction:column;background:var(--bg-surface,#fff);border:1px solid var(--border-subtle);border-radius:0 10px 10px;box-shadow:0 6px 24px #0f172a21;overflow:hidden;pointer-events:auto}.m3d-quick-visibility-head{display:flex;align-items:center;gap:5px;padding:9px 10px 8px;flex-shrink:0}.m3d-quick-visibility-head strong{font-size:12px;font-weight:700;color:var(--text-strong);flex:1}.m3d-quick-visibility-pin,.m3d-quick-visibility-close{width:26px;height:26px;display:grid;place-items:center;background:transparent;color:var(--text-3);border:0;border-radius:5px;cursor:pointer}.m3d-quick-visibility-pin:hover,.m3d-quick-visibility-close:hover{background:var(--bg-sunken)}.m3d-quick-visibility-pin.is-pinned{color:var(--blue-600,#2563eb);background:var(--blue-50,#eff6ff)}.m3d-quick-visibility-groups{display:flex;gap:3px;padding:0 8px 8px;flex-shrink:0}.m3d-quick-visibility-groups button{display:flex;align-items:center;justify-content:center;gap:5px;flex:1;min-width:0;padding:7px 3px;border:0;border-radius:6px;background:var(--bg-sunken);color:var(--text-3);font-size:11px;font-weight:650;cursor:pointer}.m3d-quick-visibility-groups button[aria-pressed=true]{color:var(--blue-600,#2563eb);background:var(--blue-50,#eff6ff)}.m3d-quick-visibility-groups button span{font-size:10px;opacity:.75}.m3d-quick-visibility-body{min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.m3d-quick-visibility-body .vf-root{height:auto;overflow:visible}.m3d-quick-visibility-body .vf-rule-item{padding:5px 8px}.m3d-quick-visibility-body .vf-rule-item-row{grid-template-columns:10px minmax(0,1fr) 26px}.m3d-quick-visibility-body .vf-name{font-size:11.5px}.m3d-quick-visibility-body .vf-compact-row{display:grid;grid-template-columns:8px minmax(0,1fr) 49px 26px;align-items:center;gap:6px;padding:5px 8px;margin:0 4px;border-radius:6px;min-height:36px}.m3d-quick-visibility-body .vf-compact-row:hover{background:var(--bg-sunken)}.m3d-quick-visibility-body .vf-compact-row .vf-name{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vf-compact-opacity{display:flex;align-items:center;justify-content:center;gap:3px;padding:4px 2px;min-height:26px;background:transparent;border:1px solid transparent;border-radius:5px;color:var(--text-3);font-size:10px;font-weight:650;cursor:pointer;white-space:nowrap}.vf-compact-opacity:hover:not(:disabled),.vf-compact-opacity[aria-expanded=true],.vf-compact-opacity.is-active{color:var(--blue-600,#2563eb);background:var(--blue-50,#eff6ff)}.vf-compact-opacity:disabled{opacity:.45;cursor:default}.m3d-quick-transparency{position:absolute;left:10px;right:10px;z-index:2;padding:9px 10px 11px;border:1px solid var(--blue-200,#bfdbfe);border-radius:8px;background:var(--bg-surface,#fff);box-shadow:0 5px 18px #0f172a2e}.m3d-quick-transparency-head{display:flex;align-items:center;gap:5px;margin-bottom:9px;font-size:10.5px;font-weight:650;color:var(--text-2)}.m3d-quick-transparency-head span{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.m3d-quick-transparency-head button{display:grid;place-items:center;width:20px;height:20px;padding:0;background:transparent;border:0;border-radius:4px;color:var(--text-3);cursor:pointer}.m3d-quick-transparency-control{display:grid;grid-template-columns:minmax(0,1fr) 32px;gap:10px;align-items:center}.m3d-quick-transparency-control span{font-size:10px;font-weight:700;text-align:right;color:var(--blue-600,#2563eb)}.m3d-quick-transparency .vf-slider:focus-visible{outline:2px solid var(--blue-600,#2563eb);outline-offset:4px}.m3d-quick-visibility-body .vf-active-chips{gap:3px}.m3d-quick-visibility-body .vf-active-chip{font-size:9px}.m3d-quick-visibility-body .vf-slider:focus-visible{outline:2px solid var(--blue-600,#2563eb);outline-offset:3px}.m3d-quick-visibility-body .vf-eye-btn:focus-visible,.m3d-quick-visibility button:focus-visible{outline:2px solid var(--blue-600,#2563eb);outline-offset:2px}.m3d-quick-visibility-hint{flex-shrink:0;border-top:1px solid var(--border-subtle);padding:7px 10px;color:var(--text-3);font-size:9.5px;line-height:1.4}@media (max-width:640px){.m3d-quick-visibility{left:6px;max-width:calc(100% - 12px)}.m3d-quick-visibility-panel{width:270px}.m3d-quick-visibility-hint{display:none}}.project-floor-editor-organized .project-floor-editor-fields{display:flex;flex-direction:column;gap:16px;border:0;padding:0;margin:0;min-width:0}.project-floor-toolbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.project-floor-editor-organized .project-floor-building-filter{min-width:200px;max-width:300px;flex:1;gap:7px}.project-floor-editor-organized .project-floor-building-filter .form-input{width:100%;max-width:none;height:36px}.project-floor-count{font-size:11px;color:var(--text-muted);padding-bottom:10px;white-space:nowrap}.project-floor-add{margin-left:auto;min-height:36px;gap:6px}.project-floor-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px solid var(--border-subtle)}.project-floor-tools .btn{min-height:30px;gap:6px}.project-floor-editor.project-floor-editor-organized .project-floor-form{gap:0}.project-floor-editor-organized .project-floor-table-head,.project-floor-editor.project-floor-editor-organized .project-floor-form .project-floor-row{grid-template-columns:72px minmax(120px,1fr) 112px 40px;gap:10px;padding:10px 12px}.project-floor-editor-organized .project-floor-table-head{margin:0;background:var(--bg-app);border-radius:8px;font-size:10px;align-items:center}.project-floor-editor-organized .project-floor-table-head>span:last-child{text-align:center}.project-floor-editor-organized .project-floor-row{min-height:56px;border-bottom:1px solid var(--border-subtle)}.project-floor-editor-organized .project-floor-row:last-child{border-bottom:0}.project-floor-editor-organized .project-floor-row .form-input{width:100%;min-width:0;height:34px;padding:6px 10px}.project-floor-editor-organized .project-floor-row>input[type=number]{font-variant-numeric:tabular-nums}.project-floor-editor-organized .project-floor-row.is-new{background:var(--blue-50);border-radius:8px;margin-top:6px}.project-floor-editor.project-floor-editor-organized .project-floor-row>button.project-floor-more{grid-column:auto;display:flex;align-items:center;justify-content:center;justify-self:center;width:32px;height:32px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-muted);cursor:pointer}.project-floor-more:hover,.project-floor-more[aria-expanded=true]{background:var(--blue-50)!important;color:var(--blue-600)!important;border-color:var(--blue-100)!important}.project-floor-more:focus-visible{outline:2px solid var(--blue-600);outline-offset:2px}.project-floor-cota-label{display:none}.project-floor-row-options{grid-column:1/-1;display:flex;align-items:flex-end;flex-wrap:wrap;gap:12px;padding:12px;background:var(--bg-app);border-radius:8px;margin:2px 0 4px}.project-floor-row-options .project-floor-transfer{display:flex;flex-direction:column;gap:6px;min-width:180px;flex:1;font-size:11px;color:var(--text-muted);margin:0}.project-floor-native-links{flex:1;min-width:140px;display:flex;flex-direction:column;gap:6px;font-size:11px;color:var(--text-muted)}.project-floor-native-links>div{display:flex;gap:4px;flex-wrap:wrap}.project-floor-native-links>div>span{font-size:10px;padding:4px 7px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:5px;color:var(--text-strong)}.project-floor-row-options .project-floor-delete{margin-left:auto;min-height:34px;color:var(--ph-danger,#dc2626);gap:6px}.project-floor-editor-organized .project-floor-empty{padding:20px 12px;text-align:center;margin:0}@container floor-editor (max-width:520px){.project-floor-toolbar{align-items:center;gap:10px}.project-floor-editor-organized .project-floor-building-filter{min-width:160px;max-width:none}.project-floor-count{padding-bottom:0}.project-floor-add{flex-basis:100%;margin-left:0}.project-floor-editor.project-floor-editor-organized .project-floor-form .project-floor-row{grid-template-columns:64px minmax(100px,1fr) 40px;padding:12px 4px}.project-floor-editor.project-floor-editor-organized .project-floor-row>input:nth-child(1){grid-column:1;grid-row:1}.project-floor-editor.project-floor-editor-organized .project-floor-row>input:nth-child(2){grid-column:2;grid-row:1}.project-floor-cota-label{display:block;grid-column:1;grid-row:2;font-size:10px;color:var(--text-muted)}.project-floor-editor-organized .project-floor-row>input[type=number]{grid-column:2;grid-row:2;max-width:140px}.project-floor-editor.project-floor-editor-organized .project-floor-row>button.project-floor-more{grid-column:3;grid-row:1}.project-floor-editor-organized .project-floor-table-head{display:none}.project-floor-row-options .project-floor-transfer{min-width:100%}}.project-info-organized{width:100%;box-sizing:border-box;padding:28px 32px 48px;display:flex;flex-direction:column;gap:24px;max-width:1280px;margin:0 auto;color:var(--ph-fg-1)}.project-info-intro{display:flex;align-items:center;justify-content:space-between;gap:20px}.project-info-intro h1{margin:0 0 6px;font-size:24px;font-weight:600;letter-spacing:-.035em;line-height:1.3}.project-info-intro p{margin:0;font-size:13px;color:var(--ph-fg-3);line-height:1.6}.project-info-save{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ph-fg-3);max-width:380px;line-height:1.5}.project-info-save svg{flex-shrink:0}.project-info-save-saved{color:var(--ph-success-fg)}.project-info-save-saving{color:var(--ph-action)}.project-info-save-error{color:var(--ph-danger-fg);flex-wrap:wrap}.project-info-save-error button{border:0;padding:4px;background:transparent;color:inherit;text-decoration:underline;cursor:pointer}.project-info-shortcuts{display:flex;flex-wrap:wrap;gap:8px;padding:10px;border:1px solid var(--ph-border);background:var(--ph-panel);border-radius:var(--ph-radius-lg)}.project-info-shortcuts button{display:flex;align-items:center;gap:9px;min-height:40px;padding:8px 14px;border:1px solid transparent;border-radius:var(--ph-radius-sm);background:transparent;color:var(--ph-fg-2);font:500 12px var(--ph-font-sans);cursor:pointer}.project-info-shortcuts button:hover{background:var(--ph-bg);border-color:var(--ph-border);color:var(--ph-action)}.project-info-organized button:focus-visible,.project-info-organized input:focus-visible{outline:2px solid var(--ph-action);outline-offset:3px}.project-info-identity{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:24px;align-items:start}.project-info-card{min-width:0;padding:22px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-lg);background:var(--ph-panel);scroll-margin-top:16px}.project-info-card-toggle{width:100%;display:flex;align-items:center;gap:12px;padding:0;border:0;background:transparent;color:inherit;text-align:left;font-family:var(--ph-font-sans);cursor:pointer}.project-info-section-icon{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--ph-radius-sm);background:var(--ph-bg);border:1px solid var(--ph-border);color:var(--ph-action);flex-shrink:0}.project-info-section-title{flex:1;min-width:0}.project-info-section-heading{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:14px;font-weight:600;line-height:1.4}.project-info-section-description{display:block;margin-top:4px;font-size:12px;font-weight:400;line-height:1.5;color:var(--ph-fg-3)}.project-info-count{display:inline-flex;align-items:center;justify-content:center;min-width:23px;height:22px;padding:0 6px;border-radius:6px;background:var(--ph-bg);border:1px solid var(--ph-border);color:var(--ph-fg-3);font-size:11px;font-weight:500}.project-info-chevron{color:var(--ph-fg-3);font-size:20px;width:24px;text-align:center;flex-shrink:0}.project-info-fields{display:grid;gap:18px;margin-top:22px}.project-info-organized label{text-transform:none;letter-spacing:normal}.project-info-project-fields{grid-template-columns:minmax(0,1fr) 150px}.project-info-project-fields>div:last-child{grid-column:1 / -1}.project-info-owner-fields{grid-template-columns:minmax(0,1fr)}.project-info-optional{display:inline-block;color:var(--ph-fg-3);font-size:10px;font-weight:400;margin-left:4px}.project-info-field-help{font-size:11px;color:var(--ph-fg-3);margin-top:7px;line-height:1.5}.project-info-card-body{margin-top:20px}.project-info-card-heading{flex:1;min-width:0}.project-info-card-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.project-info-section-content{margin-top:20px}.project-info-section-content>.project-info-card-body{margin-top:0}.project-info-organized .project-info-floor-aside{position:static;padding:20px;margin-top:20px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg)}.project-info-section-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px}.project-info-phase-head{display:grid;grid-template-columns:60px 88px minmax(0,1fr) 128px;gap:12px;padding:0 12px 10px;color:var(--ph-fg-3);font-size:12px}.project-info-phase-row+.project-info-phase-row{margin-top:8px}.project-info-discipline-list{display:flex;flex-direction:column;gap:8px;margin-top:0}.project-info-discipline-head{display:grid;grid-template-columns:60px 88px minmax(0,1fr);gap:12px;padding:0 12px 2px;font-size:12px;color:var(--ph-fg-3)}.project-info-building-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.project-info-building-head{display:grid;grid-template-columns:88px minmax(0,1fr) 170px 36px;gap:12px;padding:0 12px 2px;font-size:12px;color:var(--ph-fg-3)}.project-info-building-row,.project-info-building-add,.project-info-phase-row,.project-info-option,.project-info-organized .project-floor-form .project-floor-row{background:var(--ph-bg);border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);padding:12px;min-height:70px;align-items:center;gap:12px}.project-info-building-row,.project-info-building-add{display:grid;grid-template-columns:88px minmax(0,1fr) 170px 36px}.project-info-building-add{grid-template-columns:88px minmax(0,1fr) 170px}.project-info-building-code{font-weight:600!important;text-align:center}.project-info-building-ifc{grid-column:1 / -1}.project-info-phase-row{display:grid;grid-template-columns:24px 24px 88px minmax(0,1fr) 80px 36px}.project-info-order-actions{display:flex;gap:8px}.project-info-organized .project-info-icon-action{width:36px;height:36px;padding:0;flex-shrink:0}.project-info-organized .ph-button.project-info-delete-action:not(:disabled){color:var(--ph-danger-fg)}.project-info-organized .ph-button.project-info-delete-action:hover:not(:disabled){background:var(--ph-danger-bg);border-color:var(--ph-danger-fg)}.project-info-option{display:grid;grid-template-columns:24px 24px 88px minmax(0,1fr);cursor:pointer;font-size:14px;font-weight:400;-webkit-user-select:none;user-select:none;transition:border-color var(--ph-dur-fast)}.project-info-option:hover{border-color:var(--ph-border-strong)}.project-info-option.is-selected{background:var(--ph-bg);border-color:var(--ph-border)}.project-info-option.is-orphan{border-style:dashed}.project-info-option>input[type=checkbox]{accent-color:var(--ph-action)!important;margin:0!important}.project-info-option>span{margin-top:0!important}.project-info-color-cell{width:24px;height:24px;border-radius:7px;border:2px solid rgba(0,0,0,.08);box-sizing:border-box}.project-info-value-cell{display:flex;align-items:center;min-width:0;min-height:var(--ph-control-md);padding:10px 12px;box-sizing:border-box;border:1px solid var(--ph-border-strong);border-radius:var(--ph-radius-sm);background:var(--ph-bg);color:var(--ph-fg-1);font-size:14px;font-weight:400;line-height:1.5;overflow-wrap:anywhere}.project-info-code-cell{justify-content:center;font-weight:600;text-align:center;white-space:nowrap;overflow:hidden}.project-info-name-cell{display:block;height:var(--ph-control-md);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-info-organized .project-floor-form{gap:8px!important}.project-info-organized .project-floor-editor.project-floor-editor-organized .project-floor-form .project-floor-row{padding:12px;gap:12px;border-bottom:1px solid var(--ph-border)}.project-info-organized .project-floor-form .project-floor-row:last-child{border-bottom:1px solid var(--ph-border)}.project-info-organized .project-floor-table-head{background:transparent;font-size:12px;font-weight:400;text-transform:none;letter-spacing:normal;color:var(--ph-fg-3);gap:12px;padding:0 12px 2px}.project-info-organized .project-floor-editor-organized .project-floor-table-head,.project-info-organized .project-floor-editor.project-floor-editor-organized .project-floor-form .project-floor-row{grid-template-columns:88px minmax(0,1fr) 112px 36px}.project-info-organized .project-floor-editor.project-floor-editor-organized .project-floor-form .project-floor-row>button.project-floor-more{width:36px;height:36px;border:1px solid var(--ph-border-strong);background:var(--ph-bg);border-radius:var(--ph-radius-sm);color:var(--ph-fg-2)}.project-info-phase-row>input:first-of-type,.project-info-organized .project-floor-row>input:first-of-type{font-weight:600!important;text-align:center}.project-info-organized .project-floor-form .project-floor-row.is-new{background:var(--ph-bg);border-color:var(--ph-border)}.project-info-organized .project-floor-form .project-floor-row.archived{opacity:.65}.project-info-organized input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=color]),.project-info-organized select.form-input{height:var(--ph-control-md)!important;min-height:var(--ph-control-md)!important;padding:10px 12px!important;border-width:1px!important;border-color:var(--ph-border-strong)!important;border-radius:var(--ph-radius-sm)!important;background:var(--ph-bg)!important;color:var(--ph-fg-1);font-size:14px!important;line-height:1.5}.project-info-organized input:disabled,.project-info-organized select:disabled{background:var(--ph-disabled-bg)!important;color:var(--ph-disabled-fg)}.project-info-organized .project-floor-building-filter{font-size:12px;font-weight:500;color:var(--ph-fg-2)}.project-info-organized .project-info-card-actions>button,.project-info-organized .project-floor-tools>button,.project-info-organized .project-floor-add{min-height:var(--ph-control-sm)!important;padding:8px 12px!important;border-width:1px!important;border-radius:var(--ph-radius-sm)!important;box-shadow:none!important;font-size:14px!important;font-weight:600;line-height:1.3}.project-info-building-row>label,.project-info-building-add>label{font-size:12px!important;line-height:1.5;color:var(--ph-fg-2)!important}.project-info-organized .project-info-phase-row>input,.project-info-organized .project-info-building-row>input{min-width:0}@container project-info (max-width:900px){.project-info-organized .project-info-floor-aside{max-width:none}.project-info-identity{grid-template-columns:minmax(0,1fr)}.project-info-owner-fields{grid-template-columns:minmax(0,1fr) 180px}}@media (max-width:600px){.project-info-organized{padding:22px 16px 32px;gap:18px}.project-info-intro{flex-direction:column;align-items:flex-start;gap:12px}.project-info-intro h1{font-size:22px}.project-info-save{font-size:11px}.project-info-shortcuts{gap:4px;padding:6px}.project-info-shortcuts button{padding:7px 8px;gap:6px;min-height:40px}.project-info-card,.project-info-organized .project-info-floor-aside{padding:16px}.project-info-section-description{font-size:11px}.project-info-section-icon{width:32px;height:32px}.project-info-card-toggle{gap:10px}.project-info-project-fields,.project-info-owner-fields{grid-template-columns:minmax(0,1fr)}.project-info-section-toolbar{flex-direction:column;align-items:stretch;gap:16px}.project-info-card-actions{flex-wrap:wrap}.project-info-building-head{display:none}.project-info-organized .project-info-building-row{grid-template-columns:88px minmax(0,1fr) 36px}.project-info-building-row>input:nth-of-type(2),.project-info-building-add>input:nth-of-type(2){grid-column:1 / -1;grid-row:2}.project-info-building-row>label,.project-info-building-add>label{grid-column:1 / -1;grid-row:3}.project-info-building-row>button{grid-column:3;grid-row:1}.project-info-organized .project-info-building-add{grid-template-columns:88px minmax(0,1fr)}.project-info-building-ifc{grid-row:4}.project-info-organized .project-floor-editor.project-floor-editor-organized .project-floor-form .project-floor-row{grid-template-columns:88px minmax(0,1fr) 36px}.project-info-organized .project-floor-editor.project-floor-editor-organized .project-floor-row>input:nth-child(2){grid-column:1 / -1;grid-row:2}.project-info-organized .project-floor-row>.project-floor-cota-label{grid-column:1;grid-row:3;font-size:12px}.project-info-organized .project-floor-editor-organized .project-floor-row>input[type=number]{grid-column:2 / -1;grid-row:3;max-width:none}.project-info-phase-head,.project-info-discipline-head{display:none}.project-info-organized .project-info-phase-row{grid-template-columns:24px 24px minmax(0,1fr) 36px;gap:10px}.project-info-phase-row>input:nth-of-type(1){grid-column:3}.project-info-phase-row>input:nth-of-type(2){grid-column:1 / -1;grid-row:2}.project-info-phase-row>div:nth-of-type(3){grid-column:1 / 4;flex-direction:row!important}.project-info-phase-row>div:nth-of-type(3)>button{width:36px!important;height:32px!important}.project-info-phase-row>button:last-child{grid-column:4;grid-row:1}.project-info-option{grid-template-columns:24px 24px minmax(0,1fr);gap:10px}.project-info-option>span:last-child{grid-column:1 / -1;grid-row:2}}.project-marcos{width:100%;max-width:1280px;box-sizing:border-box;padding:28px 32px 48px;display:flex;flex-direction:column;gap:24px;background:var(--ph-bg);color:var(--ph-fg-2)}.marcos-page-header{display:flex;align-items:center;justify-content:space-between;gap:20px}.marcos-heading{display:flex;align-items:center;gap:10px}.marcos-heading h1{margin:0;font-size:24px;line-height:1.3;font-weight:650;color:var(--ph-navy)}.marcos-page-header p{margin:8px 0 0;font-size:14px;line-height:1.6;color:var(--ph-fg-3)}.marcos-page-header>button{flex-shrink:0}.marcos-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;box-sizing:border-box;border:1px solid var(--ph-border);border-radius:6px;background:var(--ph-bg-raised);color:var(--ph-fg-3);font-size:12px;font-weight:500}.marcos-filters,.marcos-month,.marcos-calendar,.marcos-empty{background:var(--ph-panel);border:1px solid var(--ph-border);border-radius:var(--ph-radius-lg)}.marcos-filters{padding:20px}.marcos-filter-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}.marcos-view-switch{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised)}.marcos-view-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:8px 12px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--ph-fg-2);font:inherit;font-size:13px;font-weight:600;cursor:pointer}.marcos-view-button[aria-pressed=true]{background:var(--ph-action);color:#fff}.marcos-view-button:hover:not([aria-pressed=true]){background:var(--ph-panel)}.marcos-checkbox{display:inline-flex;align-items:center;gap:8px;font-size:13px;line-height:1.5;font-weight:500;color:var(--ph-fg-2);letter-spacing:normal;text-transform:none;cursor:pointer}.marcos-checkbox input{width:16px;height:16px;margin:0;accent-color:var(--ph-action);flex-shrink:0}.marcos-filter-label{margin-bottom:10px;color:var(--ph-fg-2);font-size:13px;font-weight:600}.marcos-type-filters{display:flex;flex-wrap:wrap;gap:8px}.marcos-type-filter{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:8px 10px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);color:var(--ph-fg-2);font:inherit;font-size:12px;line-height:1.4;font-weight:500;cursor:pointer}.marcos-type-filter:hover{border-color:var(--ph-action)}.marcos-type-filter[aria-pressed=true]{color:var(--ph-action);background:var(--ph-blue-50);border-color:var(--ph-action)}.marcos-filter-status{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:12px;border-top:1px solid var(--ph-border);color:var(--ph-fg-3);font-size:12px}.marcos-clear-filters{padding:6px 0;border:0;border-radius:4px;color:var(--ph-action);background:transparent;font:inherit;font-weight:600;cursor:pointer}.marcos-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:52px 24px;text-align:center}.marcos-empty-icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-md);background:var(--ph-bg-raised);color:var(--ph-action)}.marcos-empty h2{margin:18px 0 8px;font-size:17px;line-height:1.4;color:var(--ph-fg-1);font-weight:600}.marcos-empty p{max-width:480px;margin:0;font-size:14px;line-height:1.7;color:var(--ph-fg-3)}.marcos-timeline{display:flex;flex-direction:column;gap:20px}.marcos-month{padding:20px}.marcos-month-heading{display:flex;align-items:center;gap:10px;margin:0 0 16px;font-size:15px;font-weight:600;color:var(--ph-fg-1)}.marcos-month-heading>svg{color:var(--ph-action)}.marcos-month-items{display:flex;flex-direction:column;gap:10px}.marco-card{display:grid;grid-template-columns:40px minmax(0,1fr) 16px;align-items:center;gap:14px;width:100%;min-height:86px;padding:16px;text-align:left;background:var(--ph-bg-raised);border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);cursor:pointer;color:var(--ph-fg-3);font:inherit;transition:border-color .15s,background .15s}.marco-card:hover{border-color:var(--ph-action)}.marco-type-icon{width:40px;height:40px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--marco-tint);color:var(--marco-color);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;box-sizing:border-box}.marco-card-heading{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.marco-card-title{font-size:14px;font-weight:600;color:var(--ph-fg-1);overflow-wrap:anywhere}.marco-type-badge{padding:3px 7px;border-radius:6px;background:var(--marco-tint);color:var(--marco-color);font-size:11px;font-weight:600}.marco-portal-indicator{display:inline-flex;color:var(--ph-action)}.marco-card-meta{margin-top:6px;display:flex;flex-wrap:wrap;gap:10px;color:var(--ph-fg-3);font-size:12px;line-height:1.5;overflow-wrap:anywhere}.marco-card-people{margin-top:8px;display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:var(--ph-fg-2);font-size:12px}.marcos-calendar{padding:20px;min-width:0}.marcos-calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:20px}.marcos-calendar-toolbar h2{margin:0;font-size:17px;font-weight:600;color:var(--ph-fg-1)}.marcos-calendar-navigation{display:flex;gap:8px}.marcos-calendar-navigation button{width:36px;padding:0}.marcos-calendar-scroll{overflow-x:auto;padding:2px}.marcos-calendar-weekdays,.marcos-calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;min-width:630px}.marcos-calendar-weekdays{margin-bottom:8px}.marcos-calendar-weekdays>div{padding:8px 0;text-align:center;color:var(--ph-fg-3);font-size:12px;font-weight:600}.marcos-calendar-day{min-height:112px;min-width:0;padding:8px;background:var(--ph-bg-raised);border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm)}.marcos-calendar-day.is-empty{background:transparent;border-color:transparent}.marcos-calendar-day.is-today{border-color:var(--ph-action)}.marcos-calendar-date{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;margin-bottom:6px;color:var(--ph-fg-2);font-size:12px;font-weight:600;border-radius:6px}.is-today .marcos-calendar-date{background:var(--ph-action);color:#fff}.marcos-calendar-events{display:flex;flex-direction:column;gap:4px}.marcos-calendar-event{width:100%;display:block;padding:5px 6px;text-align:left;border:1px solid transparent;border-radius:4px;background:var(--marco-tint);color:var(--marco-color);font:inherit;font-size:11px;line-height:1.5;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}.marcos-calendar-event:hover{border-color:var(--marco-color)}.marcos-calendar-more{color:var(--ph-fg-3);font-size:11px}.marco-dialog{display:flex;flex-direction:column;overflow:hidden;background:var(--ph-bg-raised)}.marco-dialog .modal-header{flex-shrink:0;padding:24px;border-bottom:1px solid var(--ph-border)}.marco-dialog .modal-body{overflow-y:auto;min-height:0;padding:24px;gap:18px!important}.marco-dialog .modal-footer{flex-shrink:0;padding:16px 24px;border-top:1px solid var(--ph-border);background:var(--ph-panel);flex-wrap:wrap}.marco-dialog .close-btn{width:36px;height:36px}.marco-form-field{min-width:0;display:flex;flex-direction:column;gap:7px}.marco-form-error{padding:12px;border:1px solid var(--ph-danger-fg);border-radius:var(--ph-radius-sm);background:var(--ph-danger-bg);color:var(--ph-danger-fg);font-size:13px;line-height:1.5}.marco-form-field>label,.marco-field-label{font-size:13px;color:var(--ph-fg-2);font-weight:600;letter-spacing:normal;text-transform:none}.marco-dialog .form-input{height:44px;min-width:0;padding:10px 12px;font-size:14px;border:1px solid var(--ph-border-strong);border-radius:var(--ph-radius-sm);box-sizing:border-box}.marco-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.marco-dialog .rte-field-btn{border-color:var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-panel);min-height:44px}.marco-dialog a{overflow-wrap:anywhere}.marco-dialog label.ph-button{text-transform:none;letter-spacing:normal;font-size:13px}.marco-upload-control{position:relative;overflow:hidden}.marco-upload-control input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.marco-upload-control:focus-within{outline:2px solid var(--ph-action);outline-offset:3px}.marco-portal-setting{padding:14px;background:var(--ph-panel);border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm)}.marco-detail-title{margin:0;font-size:20px;line-height:1.5;font-weight:600;color:var(--ph-fg-1);overflow-wrap:anywhere}.marco-detail-people{margin-top:18px;padding:16px;background:var(--ph-panel);border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);display:flex;flex-wrap:wrap;gap:20px;font-size:13px;color:var(--ph-fg-2)}.marco-detail-people>div{min-width:0}.marco-detail-people>div>div{min-width:0;overflow-wrap:anywhere}.marco-detail-person-label{margin-bottom:4px;font-size:12px;font-weight:500;color:var(--ph-fg-3)}.marco-detail-section-title{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--ph-fg-2)}.marco-detail-notes{padding:16px;background:var(--ph-panel);border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);font-size:14px;line-height:1.7;color:var(--ph-fg-2)}.marco-attachments{display:flex;flex-direction:column;gap:8px}.marco-attachment{display:flex;align-items:center;gap:10px;min-height:44px;padding:10px 12px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);font-size:13px;color:var(--ph-fg-1);text-decoration:none}.marco-attachment:hover{border-color:var(--ph-action)}.marco-card:focus-visible,.marcos-type-filter:focus-visible,.marcos-view-button:focus-visible,.marcos-clear-filters:focus-visible,.marcos-calendar-event:focus-visible,.marcos-calendar-scroll:focus-visible{outline:2px solid var(--ph-action);outline-offset:3px}@media (max-width: 700px){.project-marcos{padding:20px 16px 32px;gap:20px}.marcos-page-header{align-items:flex-start;flex-direction:column;gap:16px}.marcos-heading h1{font-size:21px}.marcos-filters,.marcos-month,.marcos-calendar{padding:16px}.marcos-filter-toolbar{align-items:flex-start;gap:14px}.marcos-view-switch{width:100%;box-sizing:border-box}.marcos-view-button{flex:1;padding:8px}.marcos-empty{padding:36px 20px}.marco-card{gap:10px;padding:12px;grid-template-columns:36px minmax(0,1fr) 14px}.marco-type-icon{width:36px;height:36px}.marco-card-heading{gap:6px}.marco-dialog .modal-header,.marco-dialog .modal-body{padding:18px}.marco-dialog .modal-footer{padding:14px 18px}.marco-form-grid{grid-template-columns:1fr}}.ml-sidebar{width:260px;flex-shrink:0;border-right:1px solid var(--border-subtle);background:var(--bg-sunken);display:flex;flex-direction:column;min-height:0}.ml-sidebar-mode{display:flex;gap:3px;padding:3px;margin:12px 10px 0;border:1px solid var(--border-subtle);border-radius:9px;background:var(--bg-app)}.ml-sidebar-mode button{flex:1;min-width:0;border:0;border-radius:6px;padding:7px 5px;font-size:11.5px;font-weight:600;color:var(--text-muted);cursor:pointer;background:transparent}.ml-sidebar-mode button[aria-pressed=true]{background:var(--bg-surface);color:var(--blue-600);box-shadow:0 1px 3px #0f172a17}.ml-building-folders{display:flex;flex:1;flex-direction:column;min-height:0}.ml-building-title{padding:12px 14px 8px;font-size:10px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.ml-building-scroll{flex:1;overflow-y:auto;padding:0 8px 12px}.ml-building-list,.ml-building-children{list-style:none;padding:0;margin:0}.ml-building-children{margin-left:19px;padding-left:5px;border-left:1px solid var(--border-subtle)}.ml-building-row{display:flex;align-items:center}.ml-building-row>button:last-child{flex:1;min-width:0}.ml-building-expand{display:flex;align-items:center;justify-content:center;width:20px;flex-shrink:0;border:0;background:transparent;padding:8px 0;color:var(--text-muted);cursor:pointer}.ml-building-expand span{display:inline-flex;transition:transform .12s}.ml-building-divider{height:1px;background:var(--border-subtle);margin:8px 4px}.ml-building-hint{padding:9px 8px;margin:0;color:var(--text-muted);font-size:11.5px;line-height:1.5}.ml-building-hint .btn{margin-top:5px}@media (max-width: 700px){.ml-sidebar{width:218px}.ml-sidebar-mode button{font-size:11px}}.ml-batch-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:700;background:#0f172a80;display:flex;align-items:center;justify-content:center;padding:24px}.ml-batch-modal{background:var(--bg-surface);color:var(--text-strong);width:min(1120px,100%);max-height:calc(100dvh - 48px);border-radius:16px;box-shadow:0 24px 70px #0f172a47;display:flex;flex-direction:column;overflow:hidden}.ml-batch-header,.ml-batch-footer{padding:18px 22px;display:flex;align-items:center;gap:12px;flex-shrink:0}.ml-batch-header{justify-content:space-between;border-bottom:1px solid var(--border-default)}.ml-batch-header h2{font-size:18px;margin:0 0 5px}.ml-batch-header p{font-size:12px;color:var(--text-muted);margin:0}.ml-batch-content{padding:18px 22px;overflow-y:auto;min-height:0}.ml-batch-hint{font-size:12px;line-height:1.6;color:var(--text-muted);margin:0 0 12px}.ml-batch-defaults{padding:14px;background:var(--bg-app);border:1px solid var(--border-default);border-radius:10px;margin-bottom:16px}.ml-batch-defaults summary{cursor:pointer;font-size:13px;font-weight:600}.ml-batch-defaults[open] summary{margin-bottom:12px}.ml-batch-defaults .btn{margin-top:12px}.ml-batch-rows{display:grid;gap:14px}.ml-batch-section-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;font-size:13px;margin-bottom:8px}.ml-batch-section-heading span{font-size:12px;color:var(--text-muted)}.ml-batch-fields.ml-batch-individual{grid-template-columns:1fr 1fr}.ml-batch-individual .project-floor-picker{margin-top:8px}.ml-batch-row{border:1px solid var(--border-default);border-radius:12px;padding:16px}.ml-batch-row-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.ml-batch-row-heading strong{display:block;font-size:13px;overflow-wrap:anywhere}.ml-batch-row-heading small{display:block;margin-top:4px;color:var(--text-muted);font-size:11px}.ml-batch-action{flex-shrink:0;font-size:11px;font-weight:600;background:var(--blue-50);color:var(--blue-600);border-radius:6px;padding:5px 8px}.ml-batch-action-reissue{color:#92400e;background:#fffbeb}.ml-batch-fields{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.ml-batch-fields label,.ml-batch-fields>div>span{font-size:11px;font-weight:600}.ml-batch-fields .form-input{display:block;width:100%;margin-top:5px;font-size:12px}.ml-batch-name{grid-column:span 3}.ml-batch-wide{grid-column:1 / -1}.ml-batch-wide .project-floor-picker{margin-top:6px}.ml-batch-error{color:var(--danger-600, #dc2626);font-size:12px;line-height:1.5;margin:10px 0 0}.ml-batch-row>.ml-batch-hint{margin:12px 0 0}.ml-batch-footer{border-top:1px solid var(--border-default);background:var(--bg-app)}.ml-batch-footer>div{flex:1;font-size:12px;color:var(--text-muted)}.ml-batch-progress-modal{width:min(560px,100%);outline:none}.ml-batch-progress-content{padding:36px 32px;overflow-y:auto;text-align:center}.ml-batch-progress-content h2{margin:18px 0 8px;font-size:20px}.ml-batch-spinner{width:42px;height:42px;margin:0 auto;border:4px solid var(--blue-50);border-top-color:var(--blue-600);border-radius:50%;animation:ml-batch-spin 1s linear infinite}.ml-batch-progress-count{display:flex;justify-content:space-between;gap:12px;margin-top:24px;font-size:12px;color:var(--text-muted);text-align:left}.ml-batch-progress-count strong{color:var(--blue-600)}.ml-batch-progress-bar{display:block;width:100%;height:10px;margin:8px 0 20px;border:0;border-radius:6px;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bg-app)}.ml-batch-progress-bar::-webkit-progress-bar{background:var(--bg-app);border-radius:6px}.ml-batch-progress-bar::-webkit-progress-value{background:var(--blue-600);border-radius:6px;transition:width .25s}.ml-batch-progress-bar::-moz-progress-bar{background:var(--blue-600);border-radius:6px}.ml-batch-progress-stage{min-height:82px;display:flex;flex-direction:column;gap:7px;font-size:13px}.ml-batch-progress-stage span{color:var(--text-body);overflow-wrap:anywhere}.ml-batch-progress-stage small,.ml-batch-progress-note{color:var(--text-muted);font-size:12px}.ml-batch-progress-note{margin:18px 0 0}@keyframes ml-batch-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.ml-batch-spinner{animation:none}.ml-batch-progress-bar::-webkit-progress-value{transition:none}}@media (max-width: 700px){.ml-batch-overlay{padding:8px}.ml-batch-modal{max-height:calc(100dvh - 16px)}.ml-batch-header,.ml-batch-content,.ml-batch-footer{padding:14px}.ml-batch-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.ml-batch-fields.ml-batch-individual{grid-template-columns:1fr}.ml-batch-progress-content{padding:28px 20px}.ml-batch-name{grid-column:1 / -1}.ml-batch-row-heading,.ml-batch-footer{flex-wrap:wrap}.ml-batch-footer>div{flex-basis:100%}}:root{--ph-navy: #1B3358;--ph-blue: #1E5FE0;--ph-white: #FFFFFF;--ph-navy-950: #0B1A2E;--ph-navy-900: #122541;--ph-navy-800: #1B3358;--ph-navy-700: #234374;--ph-navy-600: #2C5390;--ph-blue-50: #E8F0FF;--ph-blue-100: #CFE0FF;--ph-blue-200: #9FC0FF;--ph-blue-300: #6FA0FF;--ph-blue-400: #3F80FF;--ph-blue-500: #1E5FE0;--ph-blue-600: #1849B5;--ph-blue-700: #143A93;--ph-blue-800: #0F2E76;--ph-zinc-25: #FBFCFE;--ph-zinc-50: #F5F7FB;--ph-zinc-100: #ECEFF5;--ph-zinc-200: #DCE2EC;--ph-zinc-300: #C2CAD8;--ph-zinc-400: #9AA3B5;--ph-zinc-500: #6E7689;--ph-zinc-600: #4F586B;--ph-zinc-700: #353D4F;--ph-zinc-800: #1F2532;--ph-zinc-900: #0F131C;--ph-success: #10B981;--ph-success-bg: #ECFDF5;--ph-warning: #F59E0B;--ph-warning-bg: #FFFBEB;--ph-danger: #EF4444;--ph-danger-bg: #FEF2F2;--ph-disc-arch: #8B5CF6;--ph-disc-struct: #F97316;--ph-disc-mep: #06B6D4;--ph-disc-civil: #84CC16;--ph-black: #000000;--ph-panel: #FAFAFA;--ph-bg: #FFFFFF;--ph-bg-raised: #FFFFFF;--ph-bg-sunken: #FAFAFA;--ph-bg-inverse: #0B1A2E;--ph-fg-1: #0B1A2E;--ph-fg-2: #353D4F;--ph-fg-3: #4F586B;--ph-fg-on-brand: #FFFFFF;--ph-border: #DCE2EC;--ph-border-strong: #6E7689;--ph-border-subtle: #ECEFF5;--ph-action: #1E5FE0;--ph-action-hover: #1849B5;--ph-action-pressed: #143A93;--ph-focus: #1E5FE0;--ph-success-fg: #047857;--ph-warning-fg: #92400E;--ph-danger-fg: #B91C1C;--ph-info-fg: #143A93;--ph-info-bg: #E8F0FF;--ph-disabled-bg: #ECEFF5;--ph-disabled-fg: #6E7689;--ph-overlay: rgba(11,26,46,.48);--ph-space-0: 0px;--ph-space-1: 4px;--ph-space-2: 8px;--ph-space-3: 12px;--ph-space-4: 16px;--ph-space-5: 20px;--ph-space-6: 24px;--ph-space-8: 32px;--ph-space-10: 40px;--ph-space-12: 48px;--ph-space-16: 64px;--ph-space-20: 80px;--ph-space-24: 96px;--ph-radius-xs: 4px;--ph-radius-sm: 8px;--ph-radius-md: 12px;--ph-radius-lg: 16px;--ph-radius-xl: 24px;--ph-radius-pill: 999px;--ph-border-width: 1px;--ph-border-width-strong: 2px;--ph-font-sans: "Inter", ui-sans-serif, system-ui, sans-serif;--ph-font-mono: "JetBrains Mono", ui-monospace, Consolas, monospace;--ph-text-xs: 12px;--ph-text-sm: 14px;--ph-text-md: 16px;--ph-text-lg: 18px;--ph-text-xl: 24px;--ph-text-2xl: 32px;--ph-text-3xl: 40px;--ph-text-display: 56px;--ph-weight-regular: 400;--ph-weight-medium: 500;--ph-weight-semibold: 600;--ph-weight-bold: 700;--ph-leading-tight: 1.2;--ph-leading-normal: 1.5;--ph-leading-relaxed: 1.65;--ph-shadow-xs: 0 1px 2px rgba(11,26,46,.04);--ph-shadow-sm: 0 2px 8px rgba(11,26,46,.06);--ph-shadow-md: 0 8px 24px rgba(11,26,46,.1);--ph-shadow-lg: 0 24px 56px rgba(11,26,46,.16);--ph-dur-fast: .15s;--ph-dur-base: .22s;--ph-dur-slow: .32s;--ph-ease-out: cubic-bezier(.16,1,.3,1);--ph-z-base: 0;--ph-z-sticky: 20;--ph-z-popover: 40;--ph-z-dialog: 100;--ph-z-toast: 120;--ph-control-sm: 36px;--ph-control-md: 44px;--ph-control-lg: 52px;--ph-content-max: 1200px;--ph-sidebar-width: 256px}@layer projehub-foundation{@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/InterVariable-DiVDrmQJ.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/JetBrainsMono-Regular-BQaDgvhP.woff2) format("woff2")}.ph-ds{color:var(--ph-fg-1);background:var(--ph-bg);font:400 var(--ph-text-md) / var(--ph-leading-normal) var(--ph-font-sans);color-scheme:light}.ph-ds *,.ph-ds *:before,.ph-ds *:after{box-sizing:border-box}.ph-ds button,.ph-ds input,.ph-ds textarea,.ph-ds select{font:inherit}.ph-ds button{cursor:pointer}.ph-ds button:disabled,.ph-ds input:disabled,.ph-ds select:disabled{cursor:not-allowed}.ph-ds :where(button,a,input,textarea,select,summary,[tabindex]):focus-visible{outline:2px solid var(--ph-focus);outline-offset:3px}.ph-ds a{color:var(--ph-action);text-underline-offset:3px}.ph-ds svg{flex-shrink:0;vertical-align:middle}}.ph-ds .ph-logo{height:auto;max-width:100%;object-fit:contain;display:block}.ph-ds .ph-heading{font-weight:600;line-height:1.2;letter-spacing:-.025em;margin:0}.ph-ds .ph-text{margin:0;overflow-wrap:anywhere}.ph-ds .ph-muted{color:var(--ph-fg-3)}.ph-ds .ph-mono{font-family:var(--ph-font-mono);font-weight:400}.ph-ds .ph-type-xs{font-size:var(--ph-text-xs)}.ph-ds .ph-type-sm{font-size:var(--ph-text-sm)}.ph-ds .ph-type-md{font-size:var(--ph-text-md)}.ph-ds .ph-type-lg{font-size:var(--ph-text-lg)}.ph-ds .ph-type-xl{font-size:var(--ph-text-xl)}.ph-ds .ph-type-2xl{font-size:var(--ph-text-2xl)}.ph-ds .ph-type-3xl{font-size:clamp(28px,4vw,var(--ph-text-3xl))}.ph-ds .ph-type-display{font-size:clamp(36px,5vw,var(--ph-text-display))}.ph-ds .ph-panel{background:var(--ph-panel);border:1px solid var(--ph-border-subtle);border-radius:var(--ph-radius-md)}.ph-ds .ph-stack{display:flex;min-width:0}.ph-ds .ph-grid{display:grid;grid-template-columns:repeat(var(--ph-columns, 3),minmax(0,1fr));gap:var(--ph-space-6)}.ph-ds .ph-divider{border:0;border-top:1px solid var(--ph-border);margin:var(--ph-space-6) 0}.ph-ds .ph-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--ph-radius-sm);font-size:14px;font-weight:600;line-height:1.3;white-space:normal;text-align:center;text-decoration:none;transition:background var(--ph-dur-fast),border-color var(--ph-dur-fast),box-shadow var(--ph-dur-fast)}.ph-ds .ph-size-sm{min-height:var(--ph-control-sm);padding:8px 12px}.ph-ds .ph-size-md{min-height:var(--ph-control-md);padding:10px 16px}.ph-ds .ph-size-lg{min-height:var(--ph-control-lg);padding:14px 24px}.ph-ds .ph-button-primary{background:var(--ph-action);color:#fff}.ph-ds .ph-button-primary:hover:not(:disabled){background:var(--ph-action-hover)}.ph-ds .ph-button-primary:active:not(:disabled){background:var(--ph-action-pressed)}.ph-ds .ph-button-secondary{background:#fff;border-color:var(--ph-border-strong);color:var(--ph-navy)}.ph-ds .ph-button-secondary:hover:not(:disabled){background:var(--ph-panel);border-color:var(--ph-navy)}.ph-ds .ph-button-ghost{background:transparent;color:var(--ph-action)}.ph-ds .ph-button-ghost:hover:not(:disabled){background:var(--ph-blue-50)}.ph-ds .ph-button-danger{background:var(--ph-danger-fg);color:#fff}.ph-ds .ph-button-danger:hover:not(:disabled){background:#991b1b}.ph-ds .ph-button:disabled{background:var(--ph-disabled-bg);border-color:transparent;color:var(--ph-disabled-fg)}.ph-ds .ph-icon-button{padding:10px;min-width:44px;min-height:44px}.ph-ds .ph-field{display:flex;flex-direction:column;gap:8px;min-width:0;font-size:14px}.ph-ds .ph-field>label,.ph-ds .ph-radio-group>legend{font-weight:600;color:var(--ph-fg-2)}.ph-ds .ph-input{width:100%;min-width:0;min-height:44px;border:1px solid var(--ph-border-strong);background:#fff;border-radius:var(--ph-radius-sm);padding:10px 12px;color:var(--ph-fg-1);font-size:14px;line-height:1.5}.ph-ds .ph-input::placeholder{color:var(--ph-fg-3);opacity:1}.ph-ds .ph-input:focus{border-color:var(--ph-focus)}.ph-ds .ph-input[aria-invalid=true]{border-color:var(--ph-danger-fg)}.ph-ds .ph-input:disabled{background:var(--ph-disabled-bg);color:var(--ph-disabled-fg)}.ph-ds .ph-input:read-only:not(select){background:var(--ph-panel)}.ph-ds .ph-textarea{resize:vertical;min-height:112px}.ph-ds .ph-select{padding-right:32px}.ph-ds .ph-field-hint{font-size:12px;color:var(--ph-fg-3)}.ph-ds .ph-field-error{font-size:12px;color:var(--ph-danger-fg)}.ph-ds .ph-choice{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-size:14px;cursor:pointer}.ph-ds .ph-choice:has(input:disabled){cursor:not-allowed;color:var(--ph-disabled-fg)}.ph-ds .ph-choice input{accent-color:var(--ph-action);width:18px;height:18px;margin:0;flex-shrink:0}.ph-ds .ph-radio-group{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:4px;font-size:14px}.ph-ds .ph-radio-group legend{margin-bottom:8px}.ph-ds .ph-switch{position:relative}.ph-ds .ph-switch input{position:absolute;opacity:0;width:40px;height:24px}.ph-ds .ph-switch-track{position:relative;display:block;width:40px;height:24px;border-radius:999px;background:var(--ph-fg-3);flex-shrink:0;transition:background var(--ph-dur-fast)}.ph-ds .ph-switch-track:after{content:"";position:absolute;left:3px;top:3px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform var(--ph-dur-fast)}.ph-ds .ph-switch input:checked+.ph-switch-track{background:var(--ph-action)}.ph-ds .ph-switch input:checked+.ph-switch-track:after{transform:translate(16px)}.ph-ds .ph-switch input:focus-visible+.ph-switch-track{outline:2px solid var(--ph-focus);outline-offset:3px}.ph-ds .ph-switch input:disabled+.ph-switch-track{opacity:.5}.ph-ds .ph-slider{width:100%;accent-color:var(--ph-action);min-height:32px}.ph-ds .ph-avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--ph-blue-50);color:var(--ph-info-fg);font-size:14px;font-weight:600;flex-shrink:0;overflow:hidden}.ph-ds .ph-avatar img{width:100%;height:100%;object-fit:cover}.ph-ds .ph-badge{display:inline-flex;align-items:center;align-self:flex-start;gap:4px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.5;white-space:nowrap}.ph-ds .ph-tone-neutral{background:var(--ph-zinc-100);color:var(--ph-fg-2)}.ph-ds .ph-tone-info{background:var(--ph-info-bg);color:var(--ph-info-fg)}.ph-ds .ph-tone-success{background:var(--ph-success-bg);color:var(--ph-success-fg)}.ph-ds .ph-tone-warning{background:var(--ph-warning-bg);color:var(--ph-warning-fg)}.ph-ds .ph-tone-danger{background:var(--ph-danger-bg);color:var(--ph-danger-fg)}.ph-ds .ph-chip{display:inline-flex;align-items:center;border:1px solid var(--ph-border-strong);border-radius:999px;background:#fff;overflow:hidden}.ph-ds .ph-chip button{min-height:36px;background:none;border:0;color:var(--ph-fg-2);padding:6px 12px;font-size:14px}.ph-ds .ph-chip button+button{padding:6px 10px;border-left:1px solid var(--ph-border)}.ph-ds .ph-chip.ph-selected{background:var(--ph-blue-50);border-color:var(--ph-action)}.ph-ds .ph-chip.ph-selected button{color:var(--ph-info-fg)}.ph-ds .ph-card{background:#fff;border:1px solid var(--ph-border);border-radius:var(--ph-radius-lg);overflow:hidden;min-width:0}.ph-ds .ph-card>header{padding:24px 24px 0;display:grid;gap:8px}.ph-ds .ph-card-body{padding:24px}.ph-ds .ph-card>footer{padding:16px 24px;background:var(--ph-panel);border-top:1px solid var(--ph-border-subtle)}.ph-ds .ph-alert{display:flex;align-items:flex-start;gap:12px;border-radius:var(--ph-radius-sm);padding:16px;font-size:14px;line-height:1.5}.ph-ds .ph-alert strong{display:block;margin-bottom:4px}.ph-ds .ph-progress{width:100%;height:8px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:999px;overflow:hidden;accent-color:var(--ph-action);background:var(--ph-zinc-100)}.ph-ds .ph-progress::-webkit-progress-bar{background:var(--ph-zinc-100)}.ph-ds .ph-progress::-webkit-progress-value{background:var(--ph-action);border-radius:999px}.ph-ds .ph-progress::-moz-progress-bar{background:var(--ph-action)}.ph-ds .ph-spinner{display:inline-block;width:18px;height:18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ph-spin .8s linear infinite}@keyframes ph-spin{to{transform:rotate(360deg)}}.ph-ds .ph-skeleton{display:block;background:var(--ph-zinc-100);border-radius:4px;animation:ph-pulse 1.5s ease-in-out infinite}@keyframes ph-pulse{50%{opacity:.5}}.ph-ds .ph-empty{display:grid;justify-items:center;gap:12px;text-align:center;padding:40px 24px}.ph-ds .ph-empty-icon{width:64px;height:64px;display:grid;place-items:center;background:var(--ph-blue-50);color:var(--ph-action);border-radius:16px;margin-bottom:4px}.ph-ds .ph-breadcrumbs{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0;font-size:14px;color:var(--ph-fg-3)}.ph-ds .ph-breadcrumbs li{display:flex;align-items:center;gap:8px}.ph-ds .ph-breadcrumbs a{text-decoration:none}.ph-ds .ph-tabs>[role=tablist]{display:flex;gap:8px;border-bottom:1px solid var(--ph-border);overflow:auto}.ph-ds .ph-tabs [role=tab]{min-height:44px;flex-shrink:0;padding:12px 16px;border:0;border-bottom:2px solid transparent;background:none;font-size:14px;color:var(--ph-fg-3);font-weight:500}.ph-ds .ph-tabs [role=tab][aria-selected=true]{border-color:var(--ph-action);color:var(--ph-action);font-weight:600}.ph-ds .ph-tabs [role=tab]:disabled{color:var(--ph-disabled-fg)}.ph-ds .ph-tabs [role=tabpanel]{padding:24px 0}.ph-ds .ph-tabs [role=tabpanel][hidden]{display:none}.ph-ds .ph-accordion{border:1px solid var(--ph-border);border-radius:12px;overflow:hidden}.ph-ds .ph-accordion details+details{border-top:1px solid var(--ph-border)}.ph-ds .ph-accordion summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;min-height:52px;cursor:pointer;font-size:14px;font-weight:600}.ph-ds .ph-accordion summary::-webkit-details-marker{display:none}.ph-ds .ph-accordion details[open] summary svg{transform:rotate(180deg)}.ph-ds .ph-accordion details>div{padding:0 20px 20px;font-size:14px;color:var(--ph-fg-2)}.ph-ds .ph-dialog{padding:0;border:1px solid var(--ph-border);border-radius:16px;box-shadow:var(--ph-shadow-lg);width:min(560px,calc(100vw - 32px));max-height:calc(100dvh - 48px);color:var(--ph-fg-1);background:#fff;font:inherit}.ph-ds .ph-dialog::backdrop{background:var(--ph-overlay)}.ph-ds .ph-dialog>header{padding:24px;display:flex;align-items:center;justify-content:space-between;gap:16px;border-bottom:1px solid var(--ph-border-subtle)}.ph-ds .ph-dialog-body{padding:24px}.ph-ds .ph-dialog>footer{padding:16px 24px;background:var(--ph-panel);border-top:1px solid var(--ph-border-subtle);display:flex;gap:12px;justify-content:flex-end;flex-wrap:wrap}.ph-ds .ph-dialog.ph-drawer{margin:0 0 0 auto;height:100dvh;max-height:100dvh;width:min(480px,100vw);border-radius:0;border-top:0;border-bottom:0;display:none}.ph-ds .ph-dialog.ph-drawer[open]{display:block}.ph-ds .ph-popover-wrap{position:relative;display:inline-block}.ph-ds .ph-popover{position:absolute;z-index:var(--ph-z-popover);left:0;top:calc(100% + 8px);width:240px;max-width:calc(100vw - 48px);padding:16px;background:#fff;border:1px solid var(--ph-border);border-radius:12px;box-shadow:var(--ph-shadow-md);font-size:14px}.ph-ds .ph-popover-end{right:0;left:auto}.ph-ds .ph-menu{display:flex;flex-direction:column;gap:4px}.ph-ds .ph-menu button{display:flex;align-items:center;gap:8px;border:0;background:#fff;padding:10px 8px;text-align:left;color:var(--ph-fg-2);min-height:44px;border-radius:8px;font-size:14px}.ph-ds .ph-menu button:hover:not(:disabled){background:var(--ph-panel)}.ph-ds .ph-menu button:disabled{color:var(--ph-disabled-fg)}.ph-ds .ph-toast-region{position:fixed;z-index:var(--ph-z-toast);bottom:24px;right:24px;max-width:calc(100vw - 48px)}.ph-ds .ph-toast{display:flex;align-items:center;gap:12px;padding:8px 12px 8px 20px;border:1px solid var(--ph-border);border-radius:12px;box-shadow:var(--ph-shadow-md);font-size:14px}.ph-ds .ph-stepper{display:flex;list-style:none;padding:0;margin:0;gap:24px}.ph-ds .ph-stepper li{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ph-fg-3)}.ph-ds .ph-stepper li>span{width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--ph-border-strong);border-radius:50%;flex-shrink:0}.ph-ds .ph-stepper li.ph-active>span{background:var(--ph-action);color:#fff;border-color:var(--ph-action)}.ph-ds .ph-stepper li[aria-current=step]{font-weight:600;color:var(--ph-fg-1)}.ph-ds .ph-stepper small{display:block;font-size:12px}.ph-ds .ph-table-scroll{overflow:auto;max-width:100%;border:1px solid var(--ph-border);border-radius:12px}.ph-ds .ph-table{border-collapse:collapse;width:100%;font-size:14px;text-align:left}.ph-ds .ph-table caption{text-align:left;padding:16px 20px;font-weight:600;border-bottom:1px solid var(--ph-border-subtle)}.ph-ds .ph-table th{background:var(--ph-panel);color:var(--ph-fg-2);font-weight:500}.ph-ds .ph-table th,.ph-ds .ph-table td{padding:14px 20px;border-bottom:1px solid var(--ph-border-subtle);white-space:nowrap}.ph-ds .ph-table tr:last-child td{border-bottom:0}.ph-ds .ph-table tbody tr:hover{background:var(--ph-panel)}.ph-ds .ph-pagination{display:flex;align-items:center;justify-content:flex-end;gap:16px;font-size:14px;flex-wrap:wrap}.ph-ds .ph-upload{padding:24px;border:1px dashed var(--ph-border-strong);border-radius:12px;background:var(--ph-panel);display:grid;gap:12px;justify-items:start;font-size:14px}.ph-ds .ph-upload>label{font-weight:600}.ph-ds .ph-upload>svg{color:var(--ph-action)}.ph-ds .ph-input[type=file]{padding:8px;font-size:12px}.ph-ds .ph-input::file-selector-button{border:0;border-radius:4px;background:var(--ph-blue-50);color:var(--ph-info-fg);padding:8px;margin-right:12px;font:inherit;cursor:pointer}@media (max-width: 1023px){.ph-ds .ph-grid{grid-template-columns:repeat(min(var(--ph-columns, 3),2),minmax(0,1fr))}}@media (max-width: 639px){.ph-ds .ph-grid{grid-template-columns:1fr}.ph-ds .ph-stepper{flex-direction:column;gap:16px}.ph-ds .ph-card-body,.ph-ds .ph-card>header{padding:20px}.ph-ds .ph-dialog>header,.ph-ds .ph-dialog-body{padding:20px}.ph-ds .ph-toast-region{right:16px;bottom:16px;max-width:calc(100vw - 32px)}}@media (prefers-reduced-motion: reduce){.ph-ds *,.ph-ds *:before,.ph-ds *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.ph-ds .ph-spinner{border-right-color:currentColor;border-style:dotted}}html,body,#root,.app-shell,.main,.content{background:var(--ph-bg)}.sidebar{background:var(--ph-bg-raised);border-color:var(--ph-border)}.sb-logo{padding:20px 24px;border-color:var(--ph-border-subtle)}.sb-logo-img{width:160px;max-width:100%;height:auto}.sb-section{color:var(--ph-fg-3);letter-spacing:.08em}.sb-item{color:var(--ph-fg-2);border-radius:var(--ph-radius-sm);min-height:40px}.sb-item:hover{background:var(--ph-panel);color:var(--ph-fg-1)}.sb-item.active{background:var(--ph-blue-50);color:var(--ph-action)}.sb-item.active:before{background:var(--ph-action)}.sb-badge,.sb-item.active .sb-badge{background:var(--ph-blue-50);color:var(--ph-info-fg);border-color:transparent}.sb-bottom{border-color:var(--ph-border-subtle);background:var(--ph-panel)}.sb-avatar{background:var(--ph-blue-50);color:var(--ph-info-fg);border-color:var(--ph-blue-100)}.sb-user-name{color:var(--ph-fg-1)}.sb-user-role{color:var(--ph-fg-3)}.sb-logout{color:var(--ph-fg-2);border-color:var(--ph-border-strong);background:var(--ph-bg-raised);min-height:36px}.sb-logout:hover{background:var(--ph-blue-50);color:var(--ph-action)}.topbar{background:var(--ph-bg-raised);box-shadow:none}.page-title{color:var(--ph-fg-1);font-size:var(--ph-text-lg);font-weight:600;letter-spacing:-.025em}.auth-shell{background:var(--ph-bg)}.auth-card{background:var(--ph-panel);border-color:var(--ph-border-subtle);border-radius:var(--ph-radius-lg);box-shadow:none}.btn{border-radius:var(--ph-radius-sm);border-width:1px;line-height:1.4;transition:background var(--ph-dur-fast),border-color var(--ph-dur-fast)}.btn-primary{background:var(--ph-action);border-color:var(--ph-action);color:var(--ph-fg-on-brand);box-shadow:none}.btn-primary:hover:not(:disabled){background:var(--ph-action-hover);border-color:var(--ph-action-hover);box-shadow:none}.btn-primary:active:not(:disabled){background:var(--ph-action-pressed);border-color:var(--ph-action-pressed);transform:none;box-shadow:none}.btn-secondary{background:var(--ph-bg-raised);border-color:var(--ph-border-strong);color:var(--ph-navy);box-shadow:none}.btn-secondary:hover:not(:disabled){background:var(--ph-panel);border-color:var(--ph-navy);box-shadow:none}.btn-ghost{color:var(--ph-action)}.btn-ghost:hover:not(:disabled){background:var(--ph-blue-50);color:var(--ph-action-hover)}.btn-danger{background:var(--ph-danger-fg);border-color:var(--ph-danger-fg);color:var(--ph-fg-on-brand)}.btn-danger:hover:not(:disabled){background:#991b1b;border-color:#991b1b}.btn:disabled{background:var(--ph-disabled-bg);border-color:transparent;color:var(--ph-disabled-fg);box-shadow:none;transform:none}.auth-card .btn:not(.btn-sm),.topbar .btn:not(.btn-sm){min-height:var(--ph-control-md)}.card,.stat-card{background:var(--ph-panel);border-color:var(--ph-border);border-radius:var(--ph-radius-lg);box-shadow:none}.card:hover{box-shadow:var(--ph-shadow-sm)}.table-wrap,.ph-sheet-wrap{border-color:var(--ph-border);box-shadow:none}thead th,.ph-sheet thead th,.ph-sheet-toolbar,.ph-sheet tfoot td{background:var(--ph-panel)}.ph-sheet tbody tr:nth-child(2n) td{background:var(--ph-panel)}.ph-sheet tbody tr:hover td{background:var(--ph-blue-50)}.ph-sheet tbody tr.ph-group-d0 td,.ph-sheet tbody tr.ph-group-d1 td,.ph-sheet tbody tr.ph-group-d2 td{background:var(--ph-panel);color:var(--ph-fg-2)}.ph-sheet tbody tr.ph-group.selected td{background:var(--ph-blue-50)!important;color:var(--ph-info-fg)}.kanban-col{background:var(--ph-panel);box-shadow:none}.kanban-col.drag-over{background:var(--ph-blue-50)}.tabs{background:var(--ph-panel);border-radius:var(--ph-radius-md)}.tab{border-radius:var(--ph-radius-sm)}.tab.active{background:var(--ph-bg-raised);color:var(--ph-action);box-shadow:var(--ph-shadow-xs)}.form-input{background:var(--ph-bg-raised);border:1px solid var(--ph-border-strong);border-radius:var(--ph-radius-sm);color:var(--ph-fg-1)}.form-input::placeholder{color:var(--ph-fg-3);opacity:1}.form-input:focus{border-color:var(--ph-focus);box-shadow:none}.form-input:disabled{background:var(--ph-disabled-bg);color:var(--ph-disabled-fg)}.auth-card .form-input{min-height:var(--ph-control-md);font-size:var(--ph-text-sm)}.modal{border-color:var(--ph-border);border-radius:var(--ph-radius-lg);box-shadow:var(--ph-shadow-lg)}.modal-header,.modal-body{background:var(--ph-bg-raised)}.modal-footer{background:var(--ph-panel);border-top:1px solid var(--ph-border-subtle);padding-top:var(--ph-space-4)}.overlay{background:var(--ph-overlay)}.search-input{background:var(--ph-bg-raised);border:1px solid var(--ph-border-strong);border-radius:var(--ph-radius-sm)}.search-input:focus{box-shadow:none;border-color:var(--ph-focus)}.cal-day{background:var(--ph-bg-raised);border-radius:var(--ph-radius-sm)}.portal-header{background:var(--ph-bg-raised);color:var(--ph-fg-1);border-bottom:1px solid var(--ph-border);box-shadow:none}.portal-logo-icon{background:var(--ph-blue-50);border-color:var(--ph-blue-100);color:var(--ph-action)}.portal-client-name{color:var(--ph-fg-3);opacity:1}.portal-login{background:var(--ph-bg)}.portal-login-card,.portal-card{background:var(--ph-panel);border-color:var(--ph-border);border-radius:var(--ph-radius-lg);box-shadow:none}.portal-file-item{background:var(--ph-panel);box-shadow:none}.ml-batch-modal{border:1px solid var(--ph-border);border-radius:var(--ph-radius-lg);box-shadow:var(--ph-shadow-lg)}.ml-batch-defaults,.ml-batch-row,.ml-batch-footer{background:var(--ph-panel)}.ph-page-toolbar{flex-wrap:wrap}.ph-template-layout>*,.ph-agenda-layout>*,.ph-profile-page{min-width:0}.ph-template-nav{overflow-x:auto;flex-shrink:0}.ph-template-nav>button{flex-shrink:0;white-space:nowrap}.ph-shared-checklist-sidebar,.brief-side{border-right:1px solid var(--ph-border)}.project-floor-editor-organized .project-floor-table-head,.project-floor-row-options{background:var(--ph-panel)}.m3d-config-content .model3d-mapping-field{border-bottom-color:var(--ph-panel)}.m3d-config-content .model3d-color-footer{background:var(--ph-panel)}input[type=checkbox],input[type=radio],input[type=range]{accent-color:var(--ph-action)}.ph-ds .model-loading-dialog{background:var(--ph-panel);border-color:var(--ph-border);color:var(--ph-fg-1);box-shadow:var(--ph-shadow-lg)}.ph-ds .model-loading-dialog::backdrop{background:var(--ph-bg)}.ph-ds .model-loading-icon{background:var(--ph-blue-50);color:var(--ph-info-fg);border-radius:var(--ph-radius-sm)}.ph-ds .model-loading-dialog p{color:var(--ph-fg-3)}.ph-ds .model-loading-dialog progress,.ph-ds .model-loading-dialog progress::-webkit-progress-bar{background:var(--ph-border-subtle)}.ph-ds .model-loading-dialog progress::-webkit-progress-value{background:var(--ph-action)}.ph-ds .model-loading-dialog progress::-moz-progress-bar{background:var(--ph-action)}.ph-ds .model-loading-dialog button{background:var(--ph-action);border-radius:var(--ph-radius-sm)}.ph-ds .model-loading-dialog button:hover{background:var(--ph-action-hover)}:where(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:2px solid var(--ph-focus);outline-offset:3px;box-shadow:none}@media (max-width: 767px){.auth-card{padding:28px 20px}}@media (max-width: 600px){.ph-project-heading-row{gap:8px!important;height:auto!important;min-height:58px;padding:8px 0}.ph-project-heading-divider{display:none}.ph-project-heading-identity{display:flex!important;flex-direction:column;align-items:flex-start!important;gap:4px!important}.ph-project-heading-identity>div{max-width:100%}}@media (max-width: 767px){.ph-profile-page{padding:16px!important}.ph-agenda-layout{grid-template-columns:minmax(0,1fr)!important}.ph-agenda-layout .card-body{padding:12px}.ph-agenda-layout .cal-grid{gap:3px}.ph-agenda-layout .cal-day{min-height:66px;padding:3px;min-width:0}.ph-page-toolbar .search-wrap{width:100%}.ph-page-toolbar .search-input,.ph-page-toolbar .search-input:focus{width:100%}.ph-template-layout{grid-template-columns:minmax(0,1fr)!important;grid-template-rows:minmax(180px,230px) max-content;overflow-y:auto!important}.ph-template-layout>:first-child{max-height:230px;overflow-y:auto!important}.ph-template-layout>:last-child{overflow:visible!important}.ph-template-fields{grid-template-columns:minmax(0,1fr)!important}.ph-discipline-row{grid-template-columns:28px 70px minmax(0,1fr)!important}.ph-discipline-row>:nth-child(n+4){grid-column:2 / -1}.ph-shared-checklist{flex-direction:column}.ph-shared-checklist-sidebar{width:100%!important;height:190px;border-right:none;border-bottom:1px solid var(--ph-border)}.ml-browser-body{flex-direction:column}.ml-browser .ml-sidebar{width:100%;height:150px;border-right:none;border-bottom:1px solid var(--ph-border);overflow-y:auto}.ml-sheet-list-pane{min-width:0!important;flex:1 1 0!important}.ml-sheet-list-toolbar{flex-wrap:wrap}.ml-sheet-list-toolbar .form-input{max-width:none!important;flex:1 1 130px;min-width:0;width:auto}.ml-sheet-detail{width:100%!important;min-width:0!important;flex:1 1 0!important;border-left:none!important}.ml-browser-body:has(.ml-sheet-detail)>.ml-sidebar,.ml-browser-body:has(.ml-sheet-detail)>.ml-sheet-list-pane{display:none!important}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.ph-ds .model3d-workspace{padding:0;gap:0;box-sizing:border-box;background:var(--ph-bg);overflow:hidden}.ph-ds .model3d-workspace .model3d-viewer-panel{min-height:0;border:0;border-radius:0;background:var(--ph-bg-raised);box-shadow:none}.ph-ds .model3d-workspace .model3d-canvas-wrap{min-height:0;background:var(--ph-bg-raised)}.ph-ds .model3d-workspace .model3d-canvas-wrap>div:first-child{min-height:0!important;border-radius:0!important}.ph-ds .model3d-workspace .model3d-viewer-empty{min-height:0;padding:72px 64px;color:var(--ph-fg-3)}.ph-ds .model3d-workspace .model3d-viewer-empty strong{color:var(--ph-fg-1);font-size:17px}.ph-ds .model3d-workspace .model3d-viewer-empty span{font-size:14px;line-height:1.7}.ph-ds .model3d-workspace .model3d-orbit-mark{border-radius:var(--ph-radius-md);color:var(--ph-action);background:var(--ph-panel);border:1px solid var(--ph-border);box-shadow:none}.ph-ds .model3d-workspace .model3d-action-btn{width:44px;height:44px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);color:var(--ph-navy);box-shadow:none}.ph-ds .model3d-workspace .model3d-action-btn:hover{background:var(--ph-panel);border-color:var(--ph-action);color:var(--ph-action)}.ph-ds .model3d-workspace .model3d-action-btn.active{background:var(--ph-action);border-color:var(--ph-action);color:#fff}.ph-ds .model3d-workspace .m3d-corner-rail{height:auto!important;top:16px;right:16px;gap:8px}.ph-ds .model3d-workspace .m3d-corner-badge{border-radius:6px;font-size:10px;background:var(--ph-action);box-shadow:none}.m3d-tools-control{position:relative}.m3d-tools-control>button{position:relative}.m3d-tools-active-dot{position:absolute;top:4px;right:4px;width:7px;height:7px;border-radius:50%;background:var(--ph-action);border:2px solid var(--ph-bg-raised)}.m3d-tools-menu{position:absolute;top:0;right:calc(100% + 10px);width:248px;max-width:calc(100vw - 80px);max-height:min(420px,calc(100dvh - 180px));overflow:auto;display:flex;flex-direction:column;gap:4px;padding:8px;box-sizing:border-box;border:1px solid var(--ph-border);border-radius:var(--ph-radius-md);background:var(--ph-panel);box-shadow:var(--ph-shadow-md)}.m3d-tools-menu>strong{padding:8px 10px;color:var(--ph-navy);font-size:14px;font-weight:600}.m3d-tools-menu button{display:flex;align-items:center;gap:10px;min-height:44px;padding:10px;border:1px solid transparent;border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);color:var(--ph-fg-2);font:inherit;font-size:13px;text-align:left;cursor:pointer}.m3d-tools-menu button svg{flex-shrink:0}.m3d-tools-menu button span{flex:1}.m3d-tools-menu button:hover{color:var(--ph-action);border-color:var(--ph-border)}.m3d-tools-menu button.active{color:var(--ph-action);background:var(--ph-blue-50);border-color:var(--ph-action)}.m3d-tools-menu kbd{font:inherit;font-size:11px;color:var(--ph-fg-3)}.m3d-tools-views{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px;padding:0 4px 4px}.m3d-tools-views button{justify-content:center;color:var(--ph-action);border-color:var(--ph-border)}.ph-ds .model3d-workspace .m3d-bottom-bar{max-width:calc(100% - 32px);padding:6px;gap:4px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-md);background:var(--ph-panel);box-shadow:var(--ph-shadow-sm);-webkit-backdrop-filter:none;backdrop-filter:none}.ph-ds .model3d-workspace .m3d-bottom-btn{min-height:40px;gap:8px;padding:9px 14px;border-radius:var(--ph-radius-sm);font-size:13px;font-weight:600;color:var(--ph-fg-2)}.ph-ds .model3d-workspace .m3d-bottom-btn.active{color:#fff;background:var(--ph-action)}.ph-ds .model3d-workspace .m3d-bottom-models{display:none}.ph-ds .model3d-workspace .m3d-bottom-btn:hover:not(.active){background:var(--ph-bg-raised);color:var(--ph-action);border-color:var(--ph-border)}.ph-ds .model3d-workspace .m3d-bottom-badge{background:var(--ph-danger-fg);border-color:var(--ph-panel);border-radius:6px}.ph-ds .model3d-workspace .model3d-views-menu{border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);box-shadow:var(--ph-shadow-md)}.ph-ds .model3d-workspace .model3d-views-menu button{min-height:40px;font-size:13px;color:var(--ph-fg-2)}.model3d-help-mobile{display:none}.ph-ds .model3d-workspace .m3d-config-modal,.ph-ds .model3d-workspace .m3d-panel-modal{border:1px solid var(--ph-border);border-radius:var(--ph-radius-lg);background:var(--ph-bg-raised);box-shadow:var(--ph-shadow-lg)}.ph-ds .model3d-workspace .m3d-config-modal-head{height:auto;min-height:60px;padding:12px 16px;background:var(--ph-panel);border-color:var(--ph-border)}.ph-ds .model3d-workspace .m3d-config-modal-head strong{font-size:15px;font-weight:600;color:var(--ph-navy)}.ph-ds .model3d-workspace .m3d-panel-close{width:36px;height:36px;border-color:var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);color:var(--ph-fg-3);flex-shrink:0}.ph-ds .model3d-workspace .m3d-sidebar-body,.ph-ds .model3d-workspace .m3d-models-tab,.ph-ds .model3d-workspace .m3d-visibility-tab{background:var(--ph-panel)}.ph-ds .model3d-workspace .m3d-models-tab-actions{padding:16px;border-color:var(--ph-border)}.ph-ds .model3d-workspace .m3d-model-filters{padding:16px;gap:10px;background:var(--ph-panel);border-color:var(--ph-border)}.ph-ds .model3d-workspace .m3d-model-filters select{margin:0!important}.ph-ds .model3d-workspace .model3d-list-panel{border:0;border-radius:0;box-shadow:none;background:var(--ph-panel)}.ph-ds .model3d-workspace .model3d-list-panel .model3d-accordion-head{padding:14px 16px;background:var(--ph-panel);border-bottom:1px solid var(--ph-border)}.ph-ds .model3d-workspace .model3d-list{display:flex;flex-direction:column;gap:10px;padding:16px}.ph-ds .model3d-workspace .model3d-item{padding:14px 12px;gap:10px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);box-shadow:none;cursor:default}.ph-ds .model3d-workspace .model3d-item.active{border-color:var(--ph-border);background:var(--ph-bg-raised)}.ph-ds .model3d-workspace .model3d-item-icon{width:36px;height:36px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-panel);color:var(--ph-action);flex-shrink:0}.ph-ds .model3d-workspace .model3d-item-title{font-size:13px;line-height:1.5;color:var(--ph-fg-1);font-weight:600;overflow-wrap:anywhere;white-space:normal}.ph-ds .model3d-workspace .model3d-item-hover-details{display:flex;font-size:11px;color:var(--ph-fg-3);line-height:1.6}.ph-ds .model3d-workspace .model3d-item-actions{opacity:1;pointer-events:auto}.ph-ds .model3d-workspace .model3d-item.disabled{opacity:1}.ph-ds .model3d-workspace .model3d-status{border:0;border-radius:6px;font-size:11px;height:24px;font-weight:600}.ph-ds .model3d-workspace .model3d-status.ready{background:var(--ph-success-bg);color:var(--ph-success-fg)}.ph-ds .model3d-workspace .model3d-replace,.ph-ds .model3d-workspace .model3d-delete{min-width:36px;min-height:36px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised)}.ph-ds .model3d-workspace .model3d-delete{color:var(--ph-danger-fg)}.ph-ds .model3d-workspace .btn{min-height:36px;padding:8px 12px;border-radius:var(--ph-radius-sm);font-size:13px;line-height:1.4}.ph-ds .model3d-workspace .form-input{min-width:0;min-height:44px;height:auto;padding:10px 12px;border:1px solid var(--ph-border-strong);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);color:var(--ph-fg-1);font-size:13px!important;box-sizing:border-box}.ph-ds .model3d-workspace .m3d-config-nav{gap:6px;padding:12px;background:var(--ph-bg-raised);border-color:var(--ph-border)}.ph-ds .model3d-workspace .m3d-config-nav-item{height:auto;min-height:40px;padding:8px;font-size:12px;border-radius:var(--ph-radius-sm)}.ph-ds .model3d-workspace .m3d-config-nav-item.active{border-color:var(--ph-action);background:var(--ph-blue-50);color:var(--ph-action);box-shadow:none}.ph-ds .model3d-workspace .m3d-config-content{padding:16px;gap:16px}.ph-ds .model3d-workspace .m3d-config-content>section{border-color:var(--ph-border);border-radius:var(--ph-radius-md);box-shadow:none;background:var(--ph-bg-raised)}.ph-ds .model3d-workspace .m3d-config-content .model3d-rule-list{gap:12px;padding:16px}.ph-ds .model3d-workspace .m3d-config-content .model3d-rule-card{padding:14px;gap:12px;border-radius:var(--ph-radius-sm);background:var(--ph-panel);box-shadow:none}.ph-ds .model3d-workspace .m3d-config-field-label,.ph-ds .model3d-workspace .m3d-config-field>span,.ph-ds .model3d-workspace .m3d-config-rule-label,.ph-ds .model3d-workspace .m3d-navigation-fields label{font-size:12px;font-weight:600;letter-spacing:normal;text-transform:none;color:var(--ph-fg-2)}.ph-ds .model3d-workspace .m3d-config-content .model3d-color-header{padding:16px;gap:10px}.ph-ds .model3d-workspace .m3d-config-content .model3d-color-summary{font-size:12px}.ph-ds .model3d-workspace .m3d-config-content .model3d-match-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 36px;gap:8px}.ph-ds .model3d-workspace .m3d-config-content .model3d-match-remove{width:36px;height:36px}.ph-ds .model3d-workspace .m3d-navigation-settings{max-width:none;padding:20px;gap:16px}.ph-ds .model3d-workspace .model3d-upload-modal{width:min(640px,100%);max-height:calc(100dvh - 36px);overflow:auto;padding:24px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-lg);background:var(--ph-bg-raised);box-shadow:var(--ph-shadow-lg)}.ph-ds .model3d-workspace .model3d-upload-head{align-items:center;margin-bottom:20px}.ph-ds .model3d-workspace .model3d-upload-head h2{font-size:20px;color:var(--ph-navy)}.ph-ds .model3d-workspace .model3d-upload-head span{font-size:12px;text-transform:none;letter-spacing:normal;color:var(--ph-fg-3)}.ph-ds .model3d-workspace .model3d-dropzone{position:relative;background:var(--ph-panel);border:1px dashed var(--ph-border-strong);border-radius:var(--ph-radius-sm);text-transform:none;letter-spacing:normal;min-height:132px}.ph-ds .model3d-workspace .model3d-dropzone:hover{border-color:var(--ph-action)}.model3d-file-input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;width:100%;height:100%;cursor:pointer}.model3d-bulk-defaults{display:flex;align-items:center;gap:10px;margin-bottom:12px}.model3d-bulk-item{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.8fr) minmax(0,.8fr) 36px;gap:8px;padding:12px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-panel)}.model3d-bulk-remove{width:36px;height:44px;display:flex;align-items:center;justify-content:center;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);color:var(--ph-danger-fg);font-size:18px;cursor:pointer}.ph-ds .model3d-workspace .model3d-upload-head .close-btn{width:40px;height:40px}.ph-ds .model3d-workspace .model3d-dropzone:focus-within{outline:2px solid var(--ph-action);outline-offset:3px}.ph-ds .model3d-workspace .model3d-upload-actions{padding-top:16px;margin-top:20px;border-top:1px solid var(--ph-border)}.ph-ds .model3d-workspace .model3d-upload-actions .btn{min-height:44px}.ph-ds .model3d-workspace .model3d-upload-note{margin-top:16px;padding:14px;background:var(--ph-panel);border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);font-size:12px}.ph-ds .model3d-workspace .form-group>label{color:var(--ph-fg-2);font-size:13px;text-transform:none;letter-spacing:normal}.ph-ds .model3d-workspace .m3d-walk-toggle{min-height:44px;padding:10px 14px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);color:var(--ph-action);box-shadow:none}.ph-ds .model3d-workspace .m3d-walk-panel{max-width:calc(100vw - 56px);border-color:var(--ph-border);border-radius:var(--ph-radius-md);background:var(--ph-bg-raised)}.ph-ds .model3d-workspace .m3d-walk-hint{background:var(--ph-panel);color:var(--ph-fg-2);border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm)}.m3d-side-tools{position:absolute;top:108px;left:10px;bottom:72px;z-index:25;display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:44px;pointer-events:none}.m3d-side-tools:has(.m3d-quick-visibility.is-open){z-index:41}.m3d-side-tools:has(.m3d-peek-tool.is-open){z-index:41}.m3d-peek-tool{display:flex;width:44px;flex-shrink:0;pointer-events:none}.m3d-peek-tool.is-open:after,.m3d-quick-visibility.is-open:after{content:"";position:absolute;left:44px;top:0;bottom:0;width:8px;pointer-events:auto}.m3d-side-tab{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:44px;min-width:44px;height:120px;flex-shrink:0;padding:8px 0;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);color:var(--ph-navy);font:inherit;box-shadow:none;cursor:pointer;pointer-events:auto}.m3d-side-tab-label{writing-mode:vertical-rl;transform:rotate(180deg);font-size:11px;font-weight:600;line-height:1}.m3d-side-tab:hover,.m3d-side-tab.is-active{color:var(--ph-action);border-color:var(--ph-action);background:var(--ph-blue-50)}.m3d-side-tab-badge{position:absolute;top:-5px;right:-5px;display:grid;place-items:center;min-width:18px;height:18px;padding:0 3px;border-radius:6px;background:var(--ph-action);color:#fff;font-size:10px;font-weight:600}.ph-ds .model3d-workspace .m3d-quick-visibility{position:static;width:44px;max-width:none;flex-shrink:0}.ph-ds .model3d-workspace .m3d-quick-visibility-panel{position:absolute;left:52px;top:0;width:300px;max-width:calc(100vw - 80px);max-height:100%;border-radius:var(--ph-radius-md)}.ph-ds .model3d-workspace .m3d-quick-visibility-head{min-height:60px;padding:10px 12px;box-sizing:border-box}.ph-ds .model3d-workspace .m3d-quick-visibility-pin,.ph-ds .model3d-workspace .m3d-quick-visibility-close{width:36px;height:36px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised)}.ph-ds .model3d-workspace .m3d-quick-visibility-groups button{min-height:44px;font-size:12px}.m3d-side-empty{padding:20px 16px;color:var(--ph-fg-3);font-size:13px;line-height:1.6}.ph-ds .model3d-workspace .m3d-interference-toolbar,.ph-ds .model3d-workspace .quant-panel-topbar{position:relative;flex-wrap:wrap;gap:8px;padding:12px;background:var(--ph-panel);border-color:var(--ph-border)}.ph-ds .model3d-workspace .m3d-interference-toolbar .btn,.ph-ds .model3d-workspace .quant-panel-topbar .btn{min-height:44px;height:auto}.ph-ds .model3d-workspace .m3d-interference-toolbar>.form-input,.ph-ds .model3d-workspace .quant-topbar-search{flex:1 0 100%;width:100%!important;height:44px!important;padding:10px 12px!important;border-radius:var(--ph-radius-sm)!important}.ph-ds .model3d-workspace .quant-filter-menu,.ph-ds .model3d-workspace .m3d-interference-filter-dropdown{background:var(--ph-panel);border-color:var(--ph-border);border-radius:var(--ph-radius-md);box-shadow:var(--ph-shadow-md);max-height:min(380px,max(96px,calc(100dvh - 460px)));overflow:auto}.ph-ds .model3d-workspace .quant-filter-menu-wrap,.ph-ds .model3d-workspace .m3d-interference-filter-control{position:static!important}.ph-ds .model3d-workspace .quant-filter-menu,.ph-ds .model3d-workspace .m3d-interference-filter-dropdown{left:12px!important;right:12px;top:calc(100% - 6px)!important;width:auto!important;box-sizing:border-box}.ph-ds .model3d-workspace .quant-filter-menu-label{font-size:12px;letter-spacing:normal;text-transform:none;color:var(--ph-fg-2)}.ph-ds .model3d-workspace .quant-filter-menu-toggle{min-height:44px;border-radius:var(--ph-radius-sm);background:var(--ph-bg-raised);color:var(--ph-navy)}.ph-ds .model3d-workspace .quant-filter-menu-toggle.active{background:var(--ph-blue-50);color:var(--ph-action)}.ph-ds .model3d-workspace .ph-sheet tr:focus-visible{outline:2px solid var(--ph-action);outline-offset:-2px}.ph-ds .model3d-workspace .m3d-interference-form{max-height:calc(100dvh - 32px);border:1px solid var(--ph-border);border-radius:var(--ph-radius-lg);background:var(--ph-bg-raised)}.ph-ds .model3d-workspace .m3d-interference-form .modal-header,.ph-ds .model3d-workspace .m3d-interference-form .modal-footer{background:var(--ph-panel)}.ph-ds .model3d-workspace .m3d-interference-form .btn,.ph-ds .model3d-workspace .m3d-interference-form .close-btn{min-height:44px}.ph-ds .model3d-workspace .m3d-quick-visibility-panel{background:var(--ph-panel);border-color:var(--ph-border);box-shadow:var(--ph-shadow-md)}.ph-ds .model3d-workspace .m3d-peek-panel{width:380px;height:100%}.ph-ds .model3d-workspace .m3d-peek-panel[hidden]{display:none}.m3d-peek-body{flex:1;min-height:0;overflow:hidden;container-type:size}.ph-ds .model3d-workspace .m3d-peek-body>.model3d-tool-panel{border:0;border-radius:0;box-shadow:none;background:var(--ph-bg-raised)}.ph-ds .model3d-workspace .m3d-peek-body .m3d-interference-filter-dropdown,.ph-ds .model3d-workspace .m3d-peek-body .quant-filter-menu{max-height:max(44px,min(380px,calc(100cqh - 190px)))}.ph-ds .model3d-workspace .m3d-quick-visibility-body .vf-compact-row{min-height:44px;background:var(--ph-bg-raised);margin:6px;border:1px solid var(--ph-border);border-radius:var(--ph-radius-sm)}.ph-ds .model3d-workspace .m3d-quick-visibility-body .vf-compact-row .vf-name{font-size:12px}.ph-ds .model3d-workspace .m3d-quick-visibility-head strong{font-size:14px;color:var(--ph-navy)}.ph-ds .model3d-workspace button:focus-visible{outline:2px solid var(--ph-action)!important;outline-offset:2px}@media (max-width: 700px),(max-height: 560px) and (max-width: 900px){.ph-ds .model3d-workspace{padding:0;gap:0}.ph-ds .model3d-workspace .model3d-help-desktop{display:none}.ph-ds .model3d-workspace .model3d-help-mobile{display:inline;white-space:normal;font-size:11px;line-height:1.5}.ph-ds .model3d-workspace .m3d-bottom-bar{left:8px;right:8px;bottom:8px;max-width:none;transform:none;gap:3px;padding:4px}.ph-ds .model3d-workspace .m3d-bottom-btn{flex:1;min-width:0;min-height:44px;flex-direction:column;justify-content:center;gap:4px;padding:6px 3px;font-size:10.5px;white-space:nowrap}.ph-ds .model3d-workspace .m3d-bottom-models{display:flex}.ph-ds .model3d-workspace .m3d-corner-rail{top:10px;right:10px;gap:6px}.ph-ds .model3d-workspace .m3d-walk-ui{top:10px;left:10px}.ph-ds .model3d-workspace .m3d-has-panel .m3d-walk-ui{display:none}.ph-ds .model3d-workspace .m3d-walk-toggle{padding:8px 10px;font-size:12px}.ph-ds .model3d-workspace .m3d-walk-hint{top:62px;left:10px;right:64px;max-width:none;transform:none}.ph-ds .model3d-workspace .m3d-minimap{width:180px;height:180px;left:10px;bottom:84px;border-color:var(--ph-action);border-radius:var(--ph-radius-sm)}.ph-ds .model3d-workspace .m3d-minimap-cone{width:100%;height:100%}.ph-ds .model3d-workspace .m3d-minimap-zoom{left:106px;bottom:90px;min-height:36px;padding:6px 8px}.ph-ds .model3d-workspace .m3d-floating-layer{background:transparent}.ph-ds .model3d-workspace .m3d-floating-window{position:absolute!important;left:64px!important;top:8px!important;width:calc(100% - 72px)!important;height:calc(100% - 86px)!important;min-width:0;min-height:0;max-width:none;max-height:none!important;border:1px solid var(--ph-border)!important;border-radius:var(--ph-radius-lg)!important;box-shadow:var(--ph-shadow-md)!important;z-index:20}.ph-ds .model3d-workspace aside.m3d-floating-window:not(.m3d-floating-window--focused){display:none}.ph-ds .model3d-workspace .m3d-floating-window .m3d-config-modal-head{min-height:56px;padding:10px 12px;cursor:default;touch-action:auto}.ph-ds .model3d-workspace .m3d-floating-window>.m3d-resize-handle{display:none}.ph-ds .model3d-workspace .m3d-bottom-bar{z-index:24}.ph-ds .model3d-workspace .m3d-config-nav{grid-template-columns:repeat(2,minmax(0,1fr));padding:10px}.ph-ds .model3d-workspace .m3d-config-content{padding:12px}.ph-ds .model3d-workspace .m3d-navigation-layout{grid-template-columns:minmax(0,1fr)}.ph-ds .model3d-workspace .m3d-config-content .model3d-match-row{grid-template-columns:minmax(0,1fr) 36px}.ph-ds .model3d-workspace .model3d-match-row>:first-child{grid-column:1 / -1}.ph-ds .model3d-workspace .model3d-item{grid-template-columns:minmax(0,1fr) auto;padding:12px 10px}.ph-ds .model3d-workspace .model3d-item-icon{display:none}.ph-ds .model3d-workspace .model3d-upload-overlay{padding:10px}.ph-ds .model3d-workspace .model3d-upload-modal{padding:18px;max-height:calc(100dvh - 20px)}.ph-ds .model3d-workspace .m3d-interference-toolbar{position:relative;flex-wrap:wrap;gap:8px!important}.ph-ds .model3d-workspace .m3d-interference-toolbar button{min-width:44px;min-height:44px;flex-shrink:0;white-space:nowrap}.ph-ds .model3d-workspace .m3d-interference-filter-control{position:static!important}.ph-ds .model3d-workspace .m3d-interference-filter-dropdown{left:8px!important;right:8px;width:auto!important;overflow:auto;box-sizing:border-box}.model3d-bulk-defaults{flex-direction:column;align-items:stretch}.model3d-bulk-item{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 36px}.model3d-bulk-item>input{grid-column:1 / 3}.model3d-bulk-item>button{grid-column:3;grid-row:1 / 3;align-self:center}.ph-ds .model3d-workspace .model3d-viewer-empty{padding:24px 64px 90px 20px}.ph-ds .model3d-workspace .model3d-replace,.ph-ds .model3d-workspace .model3d-delete,.ph-ds .model3d-workspace .m3d-panel-close{min-width:40px;min-height:40px}}@media (max-height: 700px) and (max-width: 700px){.ph-ds .model3d-workspace .m3d-side-tools{top:72px;gap:6px}.ph-ds .model3d-workspace .m3d-side-tab{height:96px;gap:4px;padding:4px 0}.ph-ds .model3d-workspace .m3d-side-tab-label{font-size:10px}}@media (max-height: 560px) and (max-width: 900px){.ph-ds .model3d-workspace .m3d-side-tools{position:absolute;top:64px;left:8px;bottom:82px;width:108px;z-index:32}.ph-ds .model3d-workspace .m3d-has-panel .m3d-side-tools{position:fixed;top:8px}.ph-ds .model3d-workspace .m3d-side-tab{flex-direction:row;justify-content:flex-start;gap:6px;width:108px;min-width:108px;height:44px;padding:8px}.ph-ds .model3d-workspace .m3d-side-tab-label{writing-mode:horizontal-tb;transform:none;font-size:10px}.ph-ds .model3d-workspace .m3d-quick-visibility,.ph-ds .model3d-workspace .m3d-peek-tool{width:108px}.ph-ds .model3d-workspace .m3d-peek-tool.is-open:after,.ph-ds .model3d-workspace .m3d-quick-visibility.is-open:after{left:108px}.ph-ds .model3d-workspace .m3d-quick-visibility-panel{position:fixed;top:8px;left:124px;max-width:calc(100vw - 140px);max-height:calc(100dvh - 82px)}.ph-ds .model3d-workspace .m3d-floating-window{position:fixed!important;top:8px!important;left:124px!important;width:calc(100vw - 132px)!important;height:calc(100dvh - 82px)!important;z-index:30}.ph-ds .model3d-workspace .m3d-has-panel .m3d-bottom-bar{position:fixed;left:8px;right:8px;bottom:8px;z-index:31}.ph-ds .model3d-workspace .m3d-config-nav{grid-template-columns:repeat(4,minmax(0,1fr))}.m3d-tools-menu{position:fixed;top:8px;right:64px;max-height:calc(100dvh - 16px)}.ph-ds .model3d-workspace .m3d-minimap{width:118px;height:118px}.ph-ds .model3d-workspace .m3d-minimap-zoom{left:42px}}
