:root{--grid:#e6ebf2;--grid-major:#d2dae6;--deck-fill:rgba(39,174,96,0.14);--deck-stroke:#1f9d57}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:var(--ghl-font-sans);font-size:var(--ghl-text-md)}a{color:var(--accent);text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}.app-shell{display:flex;flex-direction:column;height:100vh}.topbar{gap:14px;min-height:48px;flex-shrink:0;padding:8px 20px;background:var(--panel);border-bottom:1px solid var(--border)}.topbar,.topbar .brand{display:flex;align-items:center}.topbar .brand{font-weight:700;font-size:16px;gap:8px;color:var(--text)}.topbar .brand .logo{width:22px;height:22px;border-radius:3px;border:1px solid var(--accent);background:repeating-linear-gradient(0deg,transparent 0 4px,var(--accent) 4px 5px);transform:skewY(8deg)}.topbar .company{color:var(--muted);border-left:1px solid var(--border);padding-left:16px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.topbar nav{display:flex;gap:14px;font-size:12px}.topbar nav a{color:var(--text);padding:6px 4px}.topbar nav a.active{color:var(--accent);font-weight:600}.topbar .spacer{flex:1 1}.topbar .user{display:flex;align-items:center;gap:8px;color:var(--muted)}.topbar .brand,.topbar nav{flex-shrink:0}.topbar-actions{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:12px}.topbar-actions>a{color:var(--muted)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);color:var(--text);font-size:12px;white-space:nowrap;cursor:pointer}.theme-toggle:hover{background:var(--ghl-surface-hover)}@media (max-width:1200px){.theme-toggle span{display:none}.theme-toggle{min-width:36px}}@media (any-pointer:coarse),(max-width:900px){.theme-toggle{min-width:44px;min-height:44px}}.topbar-actions>a.active{color:var(--accent)}.chrome-menu{position:relative}.chrome-menu>summary{list-style:none;display:flex;align-items:center;gap:5px;color:var(--muted);cursor:pointer;white-space:nowrap;min-height:28px}.chrome-menu>summary::-webkit-details-marker{display:none}.chrome-menu[open]>summary{color:var(--accent)}.chrome-popover{position:absolute;top:calc(100% + 9px);right:0;z-index:45;width:270px;max-width:calc(100vw - 24px);padding:16px;background:var(--panel);border:1px solid var(--border);border-radius:var(--ghl-radius-md);box-shadow:var(--ghl-shadow-sm);line-height:1.5}.chrome-popover p{color:var(--muted)}.user-links{display:flex;flex-direction:column;gap:4px;width:220px}.user-links a{color:var(--text);padding:7px 4px;border-radius:3px}.user-links a:hover,.user-links a[aria-current=page]{color:var(--accent);background:var(--accent-soft)}.user-links>.small{margin-bottom:8px}.topbar :focus-visible{outline:2px solid var(--accent);outline-offset:3px}.app-shell:has(.jobs-page){background:var(--panel)}.jobs-page{width:min(100%,1072px)}@media (max-width:1100px){.topbar{padding-inline:12px}.topbar,.topbar-actions{gap:10px}.topbar .company{max-width:155px;padding-left:10px}.topbar .brand{font-size:14px}}@media (max-width:800px){.topbar{flex-wrap:wrap}.topbar-actions{gap:12px}.user-name{display:none}}.avatar{width:26px;height:26px;border-radius:50%;background:var(--ghl-primary-soft);color:var(--ghl-primary-text);font-weight:700;display:inline-flex;align-items:center;justify-content:center;font-size:12px}.page{max-width:1040px;margin:0 auto;padding:28px 20px 60px}.page h1{font-size:22px;margin:0 0 4px}.page .sub{color:var(--muted);margin-bottom:18px}.row{display:flex;align-items:center;gap:10px}.row.between{justify-content:space-between}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:6px;border:1px solid var(--border);background:var(--panel);cursor:pointer;line-height:1.2;white-space:nowrap}.btn:hover{background:var(--ghl-surface-hover)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--ghl-on-primary)}.btn.primary:hover{background:var(--ghl-primary-hover)}.btn.danger{color:var(--red);border-color:var(--ghl-danger-border)}.btn.small{padding:4px 8px;font-size:12px}.btn.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.btn:disabled{opacity:.5;cursor:default}.btn.ghost{border-color:transparent;background:transparent}.input,.select,textarea.input{padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--ghl-surface);width:100%}.input.small,.select.small{padding:4px 6px;font-size:12px}.table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.table td,.table th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:top}.table th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--ghl-surface-subtle)}.table tr:last-child td{border-bottom:none}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td{background:var(--ghl-surface-hover)}.table td.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.badge{display:inline-block;padding:2px 7px;border-radius:999px;font-size:11px;font-weight:600;background:var(--accent-soft);color:var(--accent)}.badge.green{background:var(--green-soft);color:var(--green)}.badge.amber{background:var(--amber-soft);color:var(--amber)}.badge.red{background:var(--red-soft);color:var(--red)}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.muted{color:var(--muted)}.small{font-size:12px}.modal-backdrop{position:fixed;inset:0;background:var(--ghl-overlay);display:flex;align-items:center;justify-content:center;z-index:50}.modal{width:440px;max-width:calc(100vw - 32px);background:var(--panel);border-radius:10px;padding:20px;box-shadow:var(--ghl-shadow-overlay)}.modal h2{margin:0 0 12px;font-size:17px}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.field label{font-size:12px;color:var(--muted)}.field.inline{flex-direction:row;align-items:center;justify-content:space-between;gap:8px}.field.inline label{flex:1 1}.field.inline .input,.field.inline .select{width:150px}.editor{display:grid;grid-template-rows:44px 1fr;grid-template-columns:52px 300px 1fr;height:calc(100vh - 48px);background:var(--bg)}.editor-toolbar{grid-column:1/-1;display:flex;align-items:center;gap:8px;padding:0 12px;background:var(--panel);border-bottom:1px solid var(--border)}.editor-toolbar .group{display:flex;gap:4px;align-items:center}.editor-toolbar .sep{width:1px;height:24px;background:var(--border);margin:0 4px}.mode-rail{gap:4px;padding:8px 6px;background:var(--panel);border-right:1px solid var(--border)}.mode-btn,.mode-rail{display:flex;flex-direction:column;align-items:center}.mode-btn{width:40px;height:40px;border-radius:8px;border:1px solid transparent;background:transparent;cursor:pointer;justify-content:center;gap:2px;font-size:9px;color:var(--muted)}.mode-btn svg{width:18px;height:18px}.mode-btn:hover{background:var(--ghl-surface-hover)}.mode-btn.active{background:var(--accent-soft);color:var(--accent);border-color:var(--ghl-primary-border)}.side-panel{background:var(--panel);border-right:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--accent);color:var(--ghl-on-primary);font-weight:600;font-size:13px}.panel-body{padding:12px;display:flex;flex-direction:column;gap:10px}.panel-body h4{margin:8px 0 2px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.hint{background:var(--ghl-surface-subtle);border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:12px;color:var(--ghl-text-muted)}.tabs{display:flex;border-bottom:1px solid var(--border)}.tabs button{flex:1 1;padding:8px 4px;background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;font-size:12px;color:var(--muted)}.tabs button.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.swatches{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:6px;gap:6px}.swatch{border:2px solid transparent;border-radius:6px;padding:3px;cursor:pointer;background:transparent;text-align:center;font-size:10px;color:var(--muted)}.swatch .chip{height:30px;border-radius:4px;background-image:repeating-linear-gradient(90deg,rgba(0,0,0,.08) 0 2px,transparent 2px 7px);margin-bottom:3px}.swatch.active{border-color:var(--accent)}.warn{border-radius:6px;padding:6px 8px;font-size:12px;border:1px solid}.warn.error{background:var(--red-soft);border-color:var(--ghl-danger-border);color:var(--ghl-danger)}.warn.warning{background:var(--amber-soft);border-color:var(--ghl-warning-border);color:var(--ghl-warning)}.warn.info{background:var(--accent-soft);border-color:var(--ghl-primary-border);color:var(--ghl-primary-text)}.savings{background:var(--green);color:var(--ghl-surface);padding:8px 10px;border-radius:6px;font-weight:600;font-size:12px}.canvas-wrap{position:relative;overflow:hidden;background:#fbfcfd}.canvas-wrap svg{display:block;width:100%;height:100%;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.canvas-wrap .float{position:absolute;background:var(--panel);border:1px solid var(--border);border-radius:6px;box-shadow:var(--shadow);padding:6px 8px;font-size:12px}.zoom-ctl{right:12px;gap:4px;align-items:center}.legend,.zoom-ctl{bottom:12px;display:flex}.legend{left:12px;flex-direction:column;gap:3px}.legend .k{display:inline-block;width:14px;height:3px;margin-right:6px;vertical-align:middle}.length-input{display:flex;gap:4px;align-items:center}.kv{display:grid;grid-template-columns:1fr auto;grid-gap:2px 10px;gap:2px 10px;font-size:12px}.kv .v{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.takeoff-groups{display:flex;flex-direction:column;gap:8px}.takeoff-group summary{cursor:pointer;display:flex;justify-content:space-between;gap:10px;padding:8px 10px;background:var(--ghl-surface-subtle);border:1px solid var(--border);border-radius:6px;font-weight:600;font-size:12px}.takeoff-group summary>span:last-child{text-align:right}.takeoff-group table{width:100%;border-collapse:collapse;font-size:12px}.takeoff-group td{padding:4px 6px;border-bottom:1px solid var(--ghl-border)}.takeoff-group td.num{text-align:right;white-space:nowrap}.brand-grid{display:grid;grid-template-columns:1fr;grid-gap:10px;gap:10px}.jump{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 16px}.jump a{font-size:12px;padding:3px 8px;border-radius:999px;background:var(--accent-soft)}kbd{background:var(--ghl-surface-hover);border:solid var(--border);border-width:1px 1px 2px;border-radius:4px;padding:0 5px;font-size:11px;font-family:inherit}.modal.integration-modal{width:min(1200px,calc(100vw - 32px));max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);min-width:0;box-sizing:border-box;overflow:auto}.modal.integration-modal>div,.modal.integration-modal>section{min-width:0;max-width:100%}@media (max-width:1100px){.app-shell>main{width:100%;min-width:0}}@media (max-width:860px){.page{width:100%;min-width:0}.page .brand-grid{grid-template-columns:minmax(0,1fr)}.page .brand-grid>.card{min-width:0;overflow-x:auto}.page>.table{display:block;overflow-x:auto}.page>div:has(>.table){min-width:0;max-width:100%;overflow-x:auto}.page>div:has(>.table)>.table{min-width:min-content}}html:is([data-device=tablet],[data-device=phone]) .app-shell{height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}html:is([data-device=tablet],[data-device=phone]) body :is(button,summary,select,textarea,input:not([type=checkbox]):not([type=radio]):not([type=hidden]),a.btn,nav a,.topbar .brand,.topbar-actions>a,.chrome-popover a){min-width:44px!important;min-height:44px!important}html:is([data-device=tablet],[data-device=phone]) body label:has(>input:is([type=checkbox],[type=radio])){display:flex;align-items:center;min-width:44px;min-height:44px!important}html:is([data-device=tablet],[data-device=phone]) body :is(input:not([type=checkbox]):not([type=radio]),select,textarea){font-size:16px}html:is([data-device=tablet],[data-device=phone]) .topbar,html:is([data-device=tablet],[data-device=phone]) .topbar:has(#editor-job-header:not(:empty)){flex-wrap:wrap;gap:4px 10px;padding:4px 12px}html:is([data-device=tablet],[data-device=phone]) .topbar :is(nav,.topbar-actions){flex-wrap:wrap;gap:4px 8px}html:is([data-device=tablet],[data-device=phone]) .topbar :is(a,summary){display:inline-flex;align-items:center;justify-content:center}html:is([data-device=tablet],[data-device=phone]) #editor-job-header:not(:empty){order:3;flex:1 0 100%;border-left:0;border-top:1px solid var(--border);padding:4px 0 0}html:is([data-device=tablet],[data-device=phone]) [aria-label="Current job"]{min-width:0;gap:8px}html:is([data-device=tablet],[data-device=phone]) [aria-label="Job breadcrumb"]{flex:1 1;flex-wrap:wrap;min-width:0}html:is([data-device=tablet],[data-device=phone]) [aria-label="Job breadcrumb"]>strong{max-width:min(42vw,360px)}:where(html:is([data-device=tablet],[data-device=phone])) .editor{grid-template-columns:52px 264px minmax(0,1fr);min-height:420px}:where(html:is([data-device=tablet],[data-device=phone])) .editor .mode-rail{padding:6px 3px;gap:4px}:where(html:is([data-device=tablet],[data-device=phone])) .editor .mode-btn{width:44px;height:44px}:where(html:is([data-device=tablet],[data-device=phone])) .editor .mode-btn svg{width:18px;height:18px}html:is([data-device=tablet],[data-device=phone]) [aria-label="Plan controls"]{flex-wrap:wrap;gap:6px;padding:6px 8px}html:is([data-device=tablet],[data-device=phone]) [aria-label="Plan controls"]>:is(div,span){min-width:0;max-width:100%}:where(html:is([data-device=tablet],[data-device=phone])) .editor [aria-label="Plan controls"] :is(button,summary){justify-content:center;font-size:12px}html:is([data-device=tablet],[data-device=phone]) [aria-label="Plan view"]{height:auto;min-height:46px;flex-shrink:0}html:is([data-device=tablet],[data-device=phone]) [aria-label="Job documents"]{flex-wrap:wrap;gap:6px;padding-left:0;border-left:0}html:is([data-device=tablet],[data-device=phone]) [aria-label="Job documents"]>button:last-child{margin-left:0}html:is([data-device=tablet],[data-device=phone]) .side-panel{overscroll-behavior:contain}html:is([data-device=tablet],[data-device=phone]) .side-panel :is(.row,.tabs){flex-wrap:wrap}html:is([data-device=tablet],[data-device=phone]) [aria-label="Markup tools"]>div{grid-template-columns:minmax(0,1fr) 44px}html:is([data-device=tablet],[data-device=phone]) .canvas-wrap .zoom-ctl{max-width:calc(100% - 16px);right:8px;bottom:8px;flex-wrap:wrap}html:is([data-device=tablet],[data-device=phone]) .canvas-wrap details.float{bottom:64px!important;right:8px!important;max-width:calc(100% - 16px)}html:is([data-device=tablet],[data-device=phone]) .canvas-wrap .legend{left:8px;bottom:12px;max-width:calc(100% - 204px)}@media (max-width:900px){html:is([data-device=tablet],[data-device=phone]) [aria-label="Job documents"]{flex-basis:100%}html:is([data-device=tablet],[data-device=phone]) [aria-label="3D controls"]{flex-wrap:wrap}}@media (max-width:600px){:where(html:is([data-device=tablet],[data-device=phone])) .editor{grid-template-columns:52px minmax(0,1fr);grid-template-rows:auto auto minmax(300px,1fr);flex:1 0 auto}:where(html:is([data-device=tablet],[data-device=phone])) .editor .mode-rail{grid-column:1;grid-row:2/4}:where(html:is([data-device=tablet],[data-device=phone])) .editor .side-panel{grid-column:2;grid-row:2;max-height:32dvh}:where(html:is([data-device=tablet],[data-device=phone])) .editor>div:has(>.canvas-wrap){grid-column:2;grid-row:3}:where(html:is([data-device=tablet],[data-device=phone])) [aria-label="3D drawing workspace"]{grid-row:2/4;min-height:400px}html:is([data-device=tablet],[data-device=phone]) .canvas-wrap .legend{bottom:124px;max-width:calc(100% - 16px)}}@media screen and (min-width:1000px){html[data-embed=ghl][data-device=desktop]{--embed-text:13px;--embed-body:15px;--embed-control:32px;--embed-rail:112px;--embed-panel:300px;--embed-settings-nav:216px}html[data-embed=ghl][data-device=desktop] body{font-size:var(--embed-body)}html[data-embed=ghl][data-device=desktop] :is(.btn,.input,.select,textarea.input,.field label,.small,.hint,.tabs button,.kv,.warn,.takeoff-group summary,.takeoff-group table){font-size:var(--embed-text)}html[data-embed=ghl][data-device=desktop] :is(.btn,.input,.select,.tabs button,.topbar summary,.topbar nav a,.topbar-actions>a){min-height:var(--embed-control)}html[data-embed=ghl][data-device=desktop] .topbar{min-height:48px;gap:10px;padding:6px 12px}html[data-embed=ghl][data-device=desktop] .topbar .brand{font-size:calc(var(--embed-body) + 2px)}html[data-embed=ghl][data-device=desktop] .topbar :is(.company,nav a,.topbar-actions){font-size:var(--embed-text)}html[data-embed=ghl][data-device=desktop] .topbar :is(nav a,.topbar-actions>a){display:inline-flex;align-items:center}html[data-embed=ghl][data-device=desktop] [aria-label="Current job"]{min-width:0;font-size:var(--embed-text)}html[data-embed=ghl][data-device=desktop] [aria-label="Job breadcrumb"] :is(strong,button,[role=status]){font-size:var(--embed-text)}html[data-embed=ghl][data-device=desktop] [aria-label="Job breadcrumb"] button{min-height:var(--embed-control)}html[data-embed=ghl][data-device=desktop] .editor[data-layout=desktop]{grid-template-columns:var(--embed-rail) var(--embed-panel) minmax(0,1fr)}html[data-embed=ghl][data-device=desktop] .editor .mode-rail{padding-inline:3px}html[data-embed=ghl][data-device=desktop] .editor .mode-btn{width:82px;height:auto;min-height:58px}html[data-embed=ghl][data-device=desktop] .editor .mode-btn svg{width:22px;height:22px}html[data-embed=ghl][data-device=desktop] [aria-label="Plan controls"]{gap:6px;padding:6px 8px}html[data-embed=ghl][data-device=desktop] [aria-label="Plan controls"] :is(button,summary){min-height:var(--embed-control);min-width:var(--embed-control);height:auto;font-size:var(--embed-text)}html[data-embed=ghl][data-device=desktop] [aria-label="Plan view"]{height:auto;flex-shrink:0}html[data-embed=ghl][data-device=desktop] .side-panel :is(button,input,select,textarea,label,summary,p,strong,h4,.hint,.small,.kv){font-size:var(--embed-text);line-height:1.4}html[data-embed=ghl][data-device=desktop] .side-panel :is(button,select,input:not([type=checkbox]):not([type=radio])){min-height:var(--embed-control)}html[data-embed=ghl][data-device=desktop] .canvas-wrap .float{font-size:var(--embed-text)}html[data-embed=ghl][data-device=desktop] .jobs-page :is(table,button,input,select,summary,.sub){font-size:var(--embed-text)}html[data-embed=ghl][data-device=desktop] .jobs-page :is(button,input,select,summary){min-height:var(--embed-control)}html[data-embed=ghl][data-device=desktop] .settings-layout{zoom:1!important;grid-template-columns:var(--embed-settings-nav) minmax(0,1fr)}html[data-embed=ghl][data-device=desktop] .settings-layout :is(.settings-nav,.settings-nav-group,.settings-search,.settings-main,.field,.field label,.input,.select,.btn,.small,.sub,.desc,.settings-status){font-size:var(--embed-text)}html[data-embed=ghl][data-device=desktop] .settings-nav :is(a,summary){min-height:var(--embed-control)}}@media screen and (min-width:1000px) and (max-width:1199px){html[data-embed=ghl][data-device=desktop] .topbar:has(#editor-job-header:not(:empty)){flex-wrap:wrap}html[data-embed=ghl][data-device=desktop] #editor-job-header:not(:empty){order:3;flex:1 0 100%;border-left:0;border-top:1px solid var(--border);padding:4px 0 0}}@media screen and (min-width:1200px){html[data-embed=ghl][data-device=desktop]{--embed-text:14px;--embed-body:16px;--embed-control:36px;--embed-rail:44px;--embed-panel:320px;--embed-settings-nav:232px}}@media screen and (min-width:1400px){html[data-embed=ghl][data-device=desktop]{--embed-text:15px;--embed-control:38px;--embed-rail:48px;--embed-panel:336px;--embed-settings-nav:248px}}