*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }

/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:JetBrains Mono,ui-monospace,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{color-scheme:light;--bg:oklch(0.985 0.003 240);--bg-elev:oklch(0.995 0.002 240);--surface:#fff;--surface-alt:oklch(0.97 0.005 240);--surface-deep:oklch(0.94 0.005 240);--border:oklch(0.92 0.005 240);--border-strong:oklch(0.86 0.008 240);--text:oklch(0.22 0.01 240);--text-muted:oklch(0.5 0.01 240);--text-subtle:oklch(0.65 0.008 240);--accent:oklch(0.55 0.16 260);--accent-hover:oklch(0.48 0.17 260);--accent-soft:oklch(0.96 0.02 260);--danger:oklch(0.6 0.18 25);--success:oklch(0.62 0.16 155);--warning:oklch(0.7 0.16 75);--track:oklch(0.94 0.005 240);--cat-cameras:oklch(0.62 0.16 260);--cat-access:oklch(0.62 0.16 195);--cat-fire:oklch(0.62 0.18 25);--cat-alarm:oklch(0.7 0.16 75)}[data-theme=dark]{color-scheme:dark;--bg:oklch(0.16 0.012 260);--bg-elev:oklch(0.19 0.012 260);--surface:oklch(0.22 0.013 260);--surface-alt:oklch(0.25 0.014 260);--surface-deep:oklch(0.28 0.015 260);--border:oklch(0.30 0.015 260);--border-strong:oklch(0.38 0.018 260);--text:oklch(0.96 0.005 240);--text-muted:oklch(0.72 0.012 240);--text-subtle:oklch(0.58 0.014 240);--accent:oklch(0.72 0.16 260);--accent-hover:oklch(0.80 0.17 260);--accent-soft:oklch(0.30 0.06 260);--danger:oklch(0.72 0.18 25);--success:oklch(0.75 0.18 155);--warning:oklch(0.78 0.16 75);--track:oklch(0.30 0.012 260);--cat-cameras:oklch(0.72 0.16 260);--cat-access:oklch(0.72 0.16 195);--cat-fire:oklch(0.72 0.18 25);--cat-alarm:oklch(0.78 0.16 75)}body,html{background-color:var(--bg);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px;line-height:1.5}body{font-feature-settings:"cv11","ss01"}:focus-visible{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--accent);--tw-ring-offset-width:0px}input:focus-visible,select:focus-visible,textarea:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);outline:none}.\!btn,.btn{display:inline-flex;height:38px;cursor:pointer;align-items:center;justify-content:center;gap:.5rem;white-space:nowrap;border-radius:10px;border-width:1px;border-color:transparent;background-color:transparent;padding:.5rem .875rem;font-size:13px;font-weight:500;line-height:1.25;color:inherit;text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-sm{height:30px;font-size:.75rem;line-height:1rem}.btn-primary{background-color:var(--accent);--tw-text-opacity:1;--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.btn-primary,.btn-primary:hover{color:rgb(255 255 255/var(--tw-text-opacity,1))}.btn-primary:hover{background-color:var(--accent-hover);--tw-text-opacity:1}.btn-secondary{border-color:var(--border-strong);background-color:var(--surface);color:var(--text)}.btn-secondary:hover{background-color:var(--surface-alt);color:var(--text)}.btn-ghost{color:var(--text-muted)}.btn-ghost:hover{background-color:var(--surface-alt);color:var(--text)}.btn-danger{border-color:var(--border-strong);background-color:var(--surface);color:var(--danger)}.btn-danger:hover{border-color:var(--danger);background-color:var(--danger);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.btn-pdf{display:inline-flex;cursor:pointer;align-items:center;gap:.5rem;white-space:nowrap;border-radius:10px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.5rem .875rem .5rem .5rem;font-size:13px;font-weight:600;color:var(--text);--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-pdf:hover{border-color:oklch(.55 .22 25);background-color:oklch(.98 .02 25);color:oklch(.45 .22 25)}[data-theme=dark] .btn-pdf:hover{background-color:oklch(.3 .06 25);color:oklch(.85 .18 25)}.btn-pdf-icon{display:block;height:1.5rem;width:1.5rem;flex-shrink:0;-o-object-fit:contain;object-fit:contain}.btn-icon-lg,.icon-btn{display:grid;height:42px;width:42px;cursor:pointer;place-items:center;border-radius:10px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:0;color:var(--text-muted);text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn-icon-lg:hover,.icon-btn:hover{background-color:var(--surface-alt);color:var(--text)}.brand-logo{display:block;height:2.75rem;width:auto;max-width:180px;border-radius:14px;--tw-bg-opacity:1;-o-object-fit:contain;object-fit:contain;padding:.25rem .5rem;--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.brand-logo,[data-theme=dark] .brand-logo{background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}[data-theme=dark] .brand-logo{--tw-bg-opacity:1}.search{display:flex;min-width:280px;align-items:center;gap:.5rem;border-radius:10px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding-left:.75rem;padding-right:.75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.search:focus-within{border-color:var(--accent);--tw-shadow:0 0 0 3px var(--accent-soft);--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.search input{min-width:0;flex:1 1 0%;border-width:0;background-color:transparent;padding-top:.625rem;padding-bottom:.625rem;font-size:13px;color:var(--text);outline:2px solid transparent;outline-offset:2px}.search svg{height:1rem;width:1rem;color:var(--text-subtle)}.avatar{display:grid;height:26px;width:26px;flex-shrink:0;place-items:center;border-radius:9999px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface-alt);font-size:10px;font-weight:600;letter-spacing:.05em;color:var(--text)}.avatar-lg{height:2.25rem;width:2.25rem;font-size:.75rem;line-height:1rem}.filter-pill{display:inline-flex;cursor:pointer;align-items:center;gap:.5rem;border-radius:9999px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:.625rem 18px;font-size:15px;font-weight:500;color:var(--text-muted);text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.filter-pill:hover{background-color:var(--surface-alt);color:var(--text)}.filter-pill.active{border-color:var(--accent);background-color:var(--accent-soft);color:var(--accent)}.filter-count{border-radius:9999px;background-color:var(--accent);padding:1px .5rem;font-size:.75rem;line-height:1rem;font-style:normal;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.filter-divider{margin-left:.25rem;margin-right:.25rem;color:var(--border-strong)}.cat-dot{display:inline-block;height:9px;width:9px;flex-shrink:0;border-radius:9999px}.cat-dot.cameras{background:var(--cat-cameras)}.cat-dot.access{background:var(--cat-access)}.cat-dot.fire{background:var(--cat-fire)}.cat-dot.alarm{background:var(--cat-alarm)}.cat-chip{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;border-width:1px;border-color:var(--border);background-color:var(--surface-alt);padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500}.cat-chip.cameras{color:var(--cat-cameras);border-color:var(--cat-cameras)}.cat-chip.access{color:var(--cat-access);border-color:var(--cat-access)}.cat-chip.fire{color:var(--cat-fire);border-color:var(--cat-fire)}.cat-chip.alarm{color:var(--cat-alarm);border-color:var(--cat-alarm)}.card-link{position:relative;display:flex;cursor:pointer;flex-direction:column;gap:.75rem;overflow:hidden;border-radius:14px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:18px;color:var(--text);text-decoration-line:none;--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.card-link:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);opacity:0;transition:opacity .15s}.card-link:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-color:var(--border-strong);color:var(--text);--tw-shadow:0 4px 16px rgba(15,23,42,.06),0 1px 3px rgba(15,23,42,.04);--tw-shadow-colored:0 4px 16px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.card-link:hover:before{opacity:1}.card-meta{display:inline-flex;align-items:center;gap:.375rem;font-size:.75rem;line-height:1rem;color:var(--text-muted)}.card-meta svg{height:13px;width:13px;flex-shrink:0}.progress-track{position:relative;height:.375rem;overflow:hidden;background-color:var(--track)}.progress-fill,.progress-track{border-radius:9999px}.progress-fill{position:absolute;top:0;bottom:0;left:0;transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background:linear-gradient(90deg,var(--accent),oklch(.7 .16 290))}.progress-fill[data-done="1"],.progress-fill[data-value="100"]{background:var(--success)}.deadline-pill{display:inline-flex;align-items:center;gap:.25rem;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.deadline-pill.ok{background:oklch(.95 .05 155);color:oklch(.4 .15 155)}.deadline-pill.urgent{background:oklch(.96 .08 75);color:oklch(.45 .15 75)}.deadline-pill.late{background:oklch(.95 .06 25);color:var(--danger)}[data-theme=dark] .deadline-pill.ok{background:oklch(.3 .06 155);color:oklch(.85 .15 155)}[data-theme=dark] .deadline-pill.urgent{background:oklch(.32 .08 75);color:oklch(.88 .15 75)}[data-theme=dark] .deadline-pill.late{background:oklch(.3 .08 25);color:oklch(.85 .18 25)}.complete-badge{display:inline-flex;width:-moz-fit-content;width:fit-content;align-items:center;gap:.25rem;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;line-height:1rem;font-weight:600;background:oklch(.95 .05 155);color:oklch(.4 .15 155)}[data-theme=dark] .complete-badge{background:oklch(.32 .08 155);color:oklch(.88 .18 155)}.sr-status{display:inline-flex;align-items:center;gap:.375rem;border-radius:9999px;padding:.25rem .625rem;font-size:.75rem;line-height:1rem;font-weight:600}.sr-status .dot{height:7px;width:7px;border-radius:9999px}.sr-status.partial{background:oklch(.96 .08 75);color:oklch(.45 .15 75)}.sr-status.partial .dot{background:oklch(.65 .18 75)}.sr-status.complete{background:oklch(.95 .05 155);color:oklch(.4 .15 155)}.sr-status.complete .dot{background:oklch(.55 .16 155)}.sr-status.toplan{background:oklch(.95 .05 285);color:oklch(.45 .16 285)}.sr-status.toplan .dot{background:oklch(.58 .18 285)}.sr-status.inprogress{background:oklch(.95 .05 245);color:oklch(.45 .16 245)}.sr-status.inprogress .dot{background:oklch(.58 .18 245)}.sr-status.nonbillable{background:oklch(.94 .01 260);color:oklch(.45 .02 260)}.sr-status.nonbillable .dot{background:oklch(.6 .02 260)}[data-theme=dark] .sr-status.partial{background:oklch(.32 .08 75);color:oklch(.88 .15 75)}[data-theme=dark] .sr-status.partial .dot{background:oklch(.78 .16 75)}[data-theme=dark] .sr-status.complete{background:oklch(.32 .08 155);color:oklch(.88 .16 155)}[data-theme=dark] .sr-status.complete .dot{background:oklch(.75 .18 155)}[data-theme=dark] .sr-status.toplan{background:oklch(.32 .08 285);color:oklch(.88 .16 285)}[data-theme=dark] .sr-status.toplan .dot{background:oklch(.75 .18 285)}[data-theme=dark] .sr-status.inprogress{background:oklch(.32 .08 245);color:oklch(.88 .16 245)}[data-theme=dark] .sr-status.inprogress .dot{background:oklch(.75 .18 245)}[data-theme=dark] .sr-status.nonbillable{background:oklch(.32 .02 260);color:oklch(.82 .02 260)}[data-theme=dark] .sr-status.nonbillable .dot{background:oklch(.7 .02 260)}.sr-type{display:inline-flex;align-items:center;gap:.375rem;border-radius:9999px;border-width:1px;border-color:var(--border);background-color:var(--surface-alt);padding:.25rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;color:var(--text-muted)}.sr-type.onsite{border-color:var(--accent);background-color:var(--accent-soft);color:var(--accent)}.sr-type.remote{color:oklch(.55 .16 195);border-color:oklch(.55 .16 195);background:oklch(.96 .04 195)}.sr-type.\!remote{color:oklch(.55 .16 195)!important;border-color:oklch(.55 .16 195)!important;background:oklch(.96 .04 195)!important}.sr-type.urgent{border-color:var(--danger);background-color:oklch(.96 .04 25);color:var(--danger)}[data-theme=dark] .sr-type.remote{background:oklch(.3 .06 195);color:oklch(.78 .14 195)}[data-theme=dark] .sr-type.\!remote{background:oklch(.3 .06 195)!important;color:oklch(.78 .14 195)!important}[data-theme=dark] .sr-type.urgent{background:oklch(.3 .08 25);color:oklch(.85 .18 25)}.field{margin-bottom:.875rem;display:flex;flex-direction:column;gap:.375rem}.field>label{font-size:.75rem;line-height:1rem;font-weight:500;color:var(--text-muted)}.field input,.field select,.field textarea{border-radius:10px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.625rem .75rem;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.875rem;line-height:1.25rem;color:var(--text);outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent);--tw-shadow:0 0 0 3px var(--accent-soft);--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.field input:disabled,.field select:disabled{cursor:not-allowed;background-color:var(--surface-alt);color:var(--text-subtle)}.field select,select.inline-input{color-scheme:inherit}.field select optgroup,.field select option,select.inline-input optgroup,select.inline-input option{background-color:var(--surface);color:var(--text)}.field select option:disabled,select.inline-input option:disabled{color:var(--text-subtle)}.field-error{margin-top:.125rem;display:block;font-size:.75rem;line-height:1rem;color:var(--danger)}.field-error:empty{display:none}.field input.input-validation-error,.field select.input-validation-error,.field textarea.input-validation-error,.hm-input input.input-validation-error,.inline-input.input-validation-error,.input-validation-error,.mat-row input.input-validation-error{border-color:var(--danger)!important;box-shadow:none!important}.field input.input-validation-error:focus,.field select.input-validation-error:focus,.field textarea.input-validation-error:focus,.hm-input input.input-validation-error:focus,.inline-input.input-validation-error:focus,.input-validation-error:focus,.mat-row input.input-validation-error:focus{box-shadow:0 0 0 3px oklch(from var(--danger) l c h/.22)!important}.field-validation-error{margin-top:.125rem;display:block;font-size:.75rem;line-height:1rem;color:var(--danger)}.alert-error{margin-bottom:1rem;border-radius:10px;padding:.75rem 1rem;font-size:13px;background:oklch(.97 .04 25);color:var(--danger);border:1px solid oklch(.85 .08 25)}[data-theme=dark] .alert-error{background:oklch(.3 .06 25);border-color:oklch(.45 .1 25)}.radio-card{position:relative;display:flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-direction:column;gap:.25rem;border-radius:10px;border-width:2px;border-color:var(--border-strong);background-color:var(--surface);padding:.75rem .875rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.radio-card input[type=radio]{pointer-events:none;position:absolute;opacity:0}.radio-card .rc-head{display:flex;align-items:center;gap:.5rem}.radio-card .rc-head .dot{display:grid;height:.875rem;width:.875rem;flex-shrink:0;place-items:center;border-radius:9999px;border-width:2px;border-color:var(--border-strong);background-color:var(--surface)}.radio-card .rc-head .dot:after{content:"";height:.375rem;width:.375rem;--tw-scale-x:0;--tw-scale-y:0;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:9999px;background-color:var(--accent);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.radio-card .rc-title{font-size:13.5px;font-weight:600}.radio-card.checked,.radio-card:hover{border-color:var(--accent)}.radio-card.checked{background-color:var(--accent-soft);color:var(--accent)}.radio-card.checked .rc-head .dot{border-color:var(--accent)}.radio-card.checked .rc-head .dot:after{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.radio-card.flavor-partial.checked{border-color:oklch(.65 .18 75);background:oklch(.96 .08 75);color:oklch(.45 .15 75)}.radio-card.flavor-partial.checked .rc-head .dot{border-color:oklch(.65 .18 75)}.radio-card.flavor-partial.checked .rc-head .dot:after{background:oklch(.65 .18 75)}.radio-card.flavor-complete.checked{border-color:oklch(.55 .16 155);background:oklch(.95 .05 155);color:oklch(.4 .15 155)}.radio-card.flavor-complete.checked .rc-head .dot{border-color:oklch(.55 .16 155)}.radio-card.flavor-complete.checked .rc-head .dot:after{background:oklch(.55 .16 155)}.radio-card.flavor-toplan.checked{border-color:oklch(.58 .18 285);background:oklch(.95 .05 285);color:oklch(.45 .16 285)}.radio-card.flavor-toplan.checked .rc-head .dot{border-color:oklch(.58 .18 285)}.radio-card.flavor-toplan.checked .rc-head .dot:after{background:oklch(.58 .18 285)}.radio-card.flavor-inprogress.checked{border-color:oklch(.58 .18 245);background:oklch(.95 .05 245);color:oklch(.45 .16 245)}.radio-card.flavor-inprogress.checked .rc-head .dot{border-color:oklch(.58 .18 245)}.radio-card.flavor-inprogress.checked .rc-head .dot:after{background:oklch(.58 .18 245)}.radio-card.flavor-nonbillable.checked{border-color:oklch(.6 .02 260);background:oklch(.94 .01 260);color:oklch(.45 .02 260)}.radio-card.flavor-nonbillable.checked .rc-head .dot{border-color:oklch(.6 .02 260)}.radio-card.flavor-nonbillable.checked .rc-head .dot:after{background:oklch(.6 .02 260)}.radio-card.flavor-urgent.checked{border-color:var(--danger);background:oklch(.96 .04 25);color:var(--danger)}.radio-card.flavor-urgent.checked .rc-head .dot{border-color:var(--danger)}.radio-card.flavor-urgent.checked .rc-head .dot:after{background:var(--danger)}.radio-card.flavor-remote.checked{border-color:oklch(.55 .16 195);background:oklch(.96 .04 195);color:oklch(.55 .16 195)}.radio-card.flavor-remote.checked .rc-head .dot{border-color:oklch(.55 .16 195)}.radio-card.flavor-remote.checked .rc-head .dot:after{background:oklch(.55 .16 195)}[data-theme=dark] .radio-card.flavor-partial.checked{background:oklch(.32 .08 75);color:oklch(.88 .15 75)}[data-theme=dark] .radio-card.flavor-complete.checked{background:oklch(.32 .08 155);color:oklch(.88 .16 155)}[data-theme=dark] .radio-card.flavor-toplan.checked{background:oklch(.32 .08 285);color:oklch(.88 .16 285)}[data-theme=dark] .radio-card.flavor-inprogress.checked{background:oklch(.32 .08 245);color:oklch(.88 .16 245)}[data-theme=dark] .radio-card.flavor-nonbillable.checked{background:oklch(.32 .02 260);color:oklch(.82 .02 260)}[data-theme=dark] .radio-card.flavor-urgent.checked{background:oklch(.3 .08 25);color:oklch(.85 .18 25)}[data-theme=dark] .radio-card.flavor-remote.checked{background:oklch(.3 .06 195);color:oklch(.78 .14 195)}.hm-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem}.hm-input{position:relative}.hm-input input{width:100%;border-radius:10px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.625rem 2.5rem .625rem .75rem;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.875rem;line-height:1.25rem;color:var(--text);outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.hm-input input:focus{border-color:var(--accent);--tw-shadow:0 0 0 3px var(--accent-soft);--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hm-input input:disabled{cursor:not-allowed;background-color:var(--surface-alt);color:var(--text-subtle)}.hm-unit{pointer-events:none;position:absolute;right:.75rem;top:50%;--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));font-family:JetBrains Mono,ui-monospace,monospace;font-size:.75rem;line-height:1rem;font-weight:500;color:var(--text-subtle)}.mat-header{display:grid;grid-template-columns:1fr 130px 40px;gap:.5rem;padding-left:.125rem;padding-right:.125rem;padding-bottom:.25rem;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-subtle)}.mat-row-errors,.mat-row-wrap{display:flex;flex-direction:column;gap:.125rem}.mat-row-errors{padding-left:.125rem;padding-right:.125rem}.mat-row-errors:empty,.mat-row-errors:has(.field-error:empty:only-child){display:none}.mat-row{display:grid;grid-template-columns:1fr 130px 40px;align-items:center;gap:.5rem}.mat-row input{width:100%;border-radius:10px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.625rem .75rem;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.875rem;line-height:1.25rem;color:var(--text);outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.mat-row input:focus{border-color:var(--accent);--tw-shadow:0 0 0 3px var(--accent-soft);--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.mat-row .qty-wrap{position:relative;display:flex}.mat-row .qty-wrap input{padding-right:2.25rem}.mat-row .qty-wrap .unit{pointer-events:none;position:absolute;right:.75rem;top:50%;--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;color:var(--text-subtle)}.mat-row .remove{display:grid;height:2.5rem;width:2.5rem;cursor:pointer;place-items:center;border-radius:10px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);color:var(--text-subtle);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.mat-row .remove:hover{background:oklch(.96 .04 25);color:var(--danger);border-color:var(--danger)}[data-theme=dark] .mat-row .remove:hover{background:oklch(.3 .06 25)}.mat-empty{background-color:var(--surface-alt);padding:.875rem .75rem;text-align:center;color:var(--text-subtle)}.mat-add,.mat-empty{border-radius:10px;border-width:1px;border-style:dashed;border-color:var(--border-strong);font-size:13px}.mat-add{margin-top:.25rem;display:inline-flex;cursor:pointer;align-items:center;gap:.375rem;align-self:flex-start;background-color:transparent;padding:.5rem .875rem;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:500;color:var(--text-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.mat-add:hover{border-style:solid;border-color:var(--accent);background-color:var(--accent-soft);color:var(--accent)}.toggle-cell{position:relative;display:inline-grid;height:30px;width:30px;cursor:pointer;place-items:center;border-radius:7px;border-width:1.5px;border-color:var(--border-strong);background-color:var(--surface);font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;font-weight:700;color:var(--text-subtle);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.toggle-cell:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-color:var(--accent);color:var(--accent)}.toggle-cell.checked{border-color:var(--accent);background-color:var(--accent);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.toggle-cell.checked:hover{border-color:var(--accent-hover);background-color:var(--accent-hover)}.toggle-cell .toggle-letter{line-height:1}.toggle-cell .toggle-check{position:absolute;inset:0;display:none;place-items:center}.toggle-cell.checked .toggle-letter{display:none}.toggle-cell.checked .toggle-check{display:grid}td.col-cameras .toggle-cell.checked{background:var(--cat-cameras);border-color:var(--cat-cameras)}td.col-access .toggle-cell.checked{background:var(--cat-access);border-color:var(--cat-access)}td.col-fire .toggle-cell.checked{background:var(--cat-fire);border-color:var(--cat-fire)}td.col-alarm .toggle-cell.checked{background:var(--cat-alarm);border-color:var(--cat-alarm)}.sb-item{display:flex;width:100%;cursor:pointer;align-items:center;gap:.75rem;white-space:nowrap;border-radius:10px;border-width:0;background-color:transparent;padding:.625rem .75rem;text-align:left;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13.5px;font-weight:500;color:var(--text-muted);text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.sb-item:hover{background-color:var(--surface-alt);color:var(--text)}.sb-item.active{background-color:var(--accent-soft)}.sb-item.active,.sb-item.active svg{color:var(--accent)}.sb-item svg{height:19px;width:19px;flex-shrink:0;color:var(--text-subtle)}.sb-item .lbl{min-width:0;overflow:hidden;text-overflow:ellipsis}.sb-item .badge{margin-left:auto;display:inline-grid;height:18px;min-width:22px;place-items:center;border-radius:9999px;background-color:var(--surface-alt);padding-left:.375rem;padding-right:.375rem;font-size:11px;font-weight:600;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);color:var(--text-muted)}.sb-item.active .badge{background-color:var(--accent);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.sb-logout{display:flex;width:100%;cursor:pointer;align-items:center;gap:.75rem;border-radius:10px;border-width:0;background-color:transparent;padding:.625rem .75rem;text-align:left;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13.5px;font-weight:500;color:var(--danger);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.sb-logout:hover{background:oklch(.96 .04 25)}[data-theme=dark] .sb-logout:hover{background:oklch(.3 .06 25)}.sb-logout svg{height:19px;width:19px;flex-shrink:0;color:var(--danger)}.icon{height:1rem;width:1rem;flex-shrink:0}.icon-xs{height:13px;width:13px;flex-shrink:0}.mono{font-family:JetBrains Mono,ui-monospace,monospace;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.\!section,.section{margin-bottom:18px;border-radius:14px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:1.5rem;--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.section-title{margin-bottom:1rem;display:flex;align-items:center;gap:.5rem;font-size:15px;font-weight:600;color:var(--text)}.empty{padding:60px 1.5rem;text-align:center;color:var(--text-muted)}.empty-icon{margin-left:auto;margin-right:auto;margin-bottom:.875rem;display:grid;height:3rem;width:3rem;place-items:center;background-color:var(--surface-alt);color:var(--text-subtle);border-radius:12px}.empty h3{margin:0 0 .25rem;font-size:15px;font-weight:600;color:var(--text)}.empty p{margin:0;font-size:13px}.project-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.project-card,.project-card-wrap{position:relative}.project-card{display:flex;cursor:pointer;flex-direction:column;gap:.75rem;overflow:hidden;border-radius:14px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:18px;color:var(--text);text-decoration-line:none;--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition:transform .15s,box-shadow .15s,border-color .15s}.project-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);opacity:0;transition:opacity .15s}.project-card:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-color:var(--border-strong);color:var(--text);--tw-shadow:0 4px 16px rgba(15,23,42,.06),0 1px 3px rgba(15,23,42,.04);--tw-shadow-colored:0 4px 16px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.project-card:hover:before{opacity:1}.project-card .head{display:flex;align-items:flex-start;justify-content:space-between;gap:.625rem}.project-num{font-family:JetBrains Mono,ui-monospace,monospace;font-size:11px;letter-spacing:.05em;color:var(--text-subtle)}.project-name{margin:.25rem 0 0;font-size:15.5px;font-weight:600;line-height:1.375;letter-spacing:-.005em}.progress-pct,.project-pct{font-size:22px;font-weight:600;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);line-height:1;letter-spacing:-.02em}.cat-chips{display:flex;flex-wrap:wrap;gap:.375rem}.project-meta{display:inline-flex;align-items:center;gap:.375rem;font-size:.75rem;line-height:1rem;color:var(--text-muted)}.project-meta .icon-xs{height:13px;width:13px;flex-shrink:0}.deadline-pill.deadline-ok{background:oklch(.95 .05 155);color:oklch(.4 .15 155)}.deadline-pill.deadline-urgent{background:oklch(.96 .08 75);color:oklch(.45 .15 75)}.deadline-pill.deadline-late{background:oklch(.95 .06 25);color:var(--danger)}[data-theme=dark] .deadline-pill.deadline-ok{background:oklch(.3 .06 155);color:oklch(.85 .15 155)}[data-theme=dark] .deadline-pill.deadline-urgent{background:oklch(.32 .08 75);color:oklch(.88 .15 75)}[data-theme=dark] .deadline-pill.deadline-late{background:oklch(.3 .08 25);color:oklch(.85 .18 25)}.sharepoint-link{display:inline-grid;height:22px;width:22px;flex-shrink:0;cursor:pointer;place-items:center;border-radius:.375rem;border-width:1px;border-color:var(--border);background-color:var(--surface-alt);padding:.125rem;text-decoration-line:none;transition:all .12s}.sharepoint-link img{display:block;height:100%;width:100%;-o-object-fit:contain;object-fit:contain}.sharepoint-link:hover{border-color:oklch(.55 .1 195);background:oklch(.96 .04 195);transform:translateY(-1px)}[data-theme=dark] .sharepoint-link:hover{background:oklch(.3 .05 195);border-color:oklch(.55 .1 195)}.fav-form-card{position:absolute;bottom:.875rem;right:.875rem;z-index:2;margin:0}.fav-btn{display:grid;height:1.75rem;width:1.75rem;cursor:pointer;place-items:center;border-radius:9999px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);color:var(--text-subtle);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.fav-btn--active,.fav-btn:hover{color:oklch(.65 .18 10);border-color:oklch(.65 .18 10)}.fav-btn--active{background:oklch(.97 .03 10)}[data-theme=dark] .fav-btn--active{background:oklch(.28 .06 10)}.fav-btn-detail{color:var(--text-muted)}.fav-btn-detail--active{color:oklch(.65 .18 10)!important;border-color:oklch(.65 .18 10)!important}.modal-backdrop{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.55);padding:1rem;--tw-backdrop-blur:blur(2px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.modal-backdrop[hidden]{display:none}body.modal-open{overflow:hidden}.modal-shell{display:flex;max-height:85vh;width:100%;max-width:640px;flex-direction:column;overflow:hidden;border-radius:20px;border-width:1px;border-color:var(--border);background-color:var(--surface);--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem;border-bottom-width:1px;border-color:var(--border);padding:.875rem 1.25rem}.modal-head-text{min-width:0}.modal-title{margin:0;font-size:15px;font-weight:600}.modal-subtitle{margin-top:.125rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;line-height:1rem;color:var(--text-muted)}.modal-close{display:grid;height:42px;width:42px;cursor:pointer;place-items:center;border-radius:10px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:0;color:var(--text-muted);text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.modal-close:hover{background-color:var(--surface-alt);color:var(--text)}.modal-close{flex-shrink:0;width:36px;height:36px}.modal-body{display:flex;flex:1 1 0%;flex-direction:column;overflow:hidden;background-color:var(--surface-alt)}.modal-foot{border-top-width:1px;border-color:var(--border);background-color:var(--surface);padding:.75rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.comments-section{margin-top:.875rem;border-radius:14px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:1rem;--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.comments-section-head{margin-bottom:.75rem;display:flex;align-items:center;gap:.5rem;color:var(--text)}.comments-section-head .icon{height:1.25rem;width:1.25rem;color:var(--text-muted)}.comments-section-title{margin:0;font-size:15px;font-weight:600}.comments-body{margin-bottom:.75rem}.comments-list,.comments-pane{display:flex;flex-direction:column}.comments-list{max-height:480px;gap:.75rem;overflow-y:auto;-webkit-overflow-scrolling:touch}.comments-error,.comments-loading{padding-top:1.5rem;padding-bottom:1.5rem;text-align:center;font-size:.875rem;line-height:1.25rem;color:var(--text-muted)}.comments-error{color:var(--danger)}.comments-empty{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding-top:2.5rem;padding-bottom:2.5rem;text-align:center;color:var(--text-muted)}.comments-empty svg{color:var(--text-subtle)}.comments-empty h4{margin:0;font-size:.875rem;line-height:1.25rem;font-weight:600;color:var(--text)}.comments-empty p{margin:0;font-size:.75rem;line-height:1rem}.comment-item{display:flex;align-items:flex-start;gap:.625rem}.comment-avatar{flex-shrink:0;border-color:var(--accent);background-color:var(--accent-soft);color:var(--accent)}.comment-bubble{min-width:0;flex:1 1 0%;border-radius:14px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:.5rem .75rem}.comment-item--mine .comment-bubble{border-color:var(--accent);background-color:var(--accent-soft)}.comment-meta{margin-bottom:.25rem;display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem}.comment-author{font-size:12.5px;font-weight:600;color:var(--text)}.comment-time{font-size:11px;color:var(--text-subtle)}.comment-body{white-space:pre-wrap;overflow-wrap:break-word;font-size:13.5px;line-height:1.625;color:var(--text)}.comment-image-link{margin-top:.5rem;display:inline-block;cursor:zoom-in;overflow:hidden;border-radius:14px;border-width:1px;border-color:var(--border);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;max-width:240px}.comment-image-link:hover{--tw-shadow:0 4px 16px rgba(15,23,42,.06),0 1px 3px rgba(15,23,42,.04);--tw-shadow-colored:0 4px 16px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.comment-image{display:block;height:auto;width:100%;max-height:220px;-o-object-fit:cover;object-fit:cover}.comment-form{display:flex;align-items:flex-end;gap:.5rem}.comment-input-wrap{display:flex;flex:1 1 0%;flex-direction:column;gap:.5rem}.comment-input,.comment-input-wrap{min-width:0}.comment-input{width:100%;resize:none;border-radius:10px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding-left:.75rem;padding-right:.75rem;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.875rem;line-height:1.25rem;color:var(--text);outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;min-height:42px;max-height:160px;padding-top:10px;padding-bottom:10px;line-height:1.4}.comment-input:focus{border-color:var(--accent);--tw-shadow:0 0 0 3px var(--accent-soft);--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.comment-image-preview{position:relative;display:inline-block;width:-moz-fit-content;width:fit-content;overflow:hidden;border-radius:14px;border-width:1px;border-color:var(--border)}.comment-image-preview[hidden]{display:none}.comment-image-preview img{display:block;max-height:120px;max-width:200px;-o-object-fit:cover;object-fit:cover}.comment-preview-remove{position:absolute;top:.25rem;right:.25rem;display:inline-grid;cursor:pointer;place-items:center;border-radius:9999px;border-width:0;background-color:rgba(0,0,0,.6);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));width:22px;height:22px}.comment-preview-remove svg{height:.875rem;width:.875rem}.comment-preview-remove:hover{background-color:rgba(0,0,0,.8)}.comment-form .comment-attach.\!btn,.comment-form .comment-attach.btn,.comment-form .comment-send.\!btn.btn-primary,.comment-form .comment-send.btn.btn-primary{display:inline-grid;flex-shrink:0;place-items:center;padding:0}.comment-form .comment-attach.btn,.comment-form .comment-send.btn.btn-primary{width:42px;height:42px;min-height:42px;flex:0 0 42px}.comment-form .comment-attach.\!btn,.comment-form .comment-send.\!btn.btn-primary{width:42px!important;height:42px!important;min-height:42px!important;flex:0 0 42px!important}.comment-form .comment-attach.\!btn,.comment-form .comment-attach.btn{cursor:pointer;border-width:1px;border-color:var(--border-strong)}.comment-form .comment-attach .icon,.comment-form .comment-send .icon{height:1.25rem;width:1.25rem}.comment-form .comment-send:disabled{cursor:not-allowed;opacity:.5}.comment-lightbox{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.8);padding:1rem;--tw-backdrop-blur:blur(2px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.comment-lightbox[hidden]{display:none}.comment-lightbox img{display:block;max-width:100%;border-radius:14px;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);max-height:92vh;-o-object-fit:contain;object-fit:contain}.comment-lightbox-close{position:absolute;top:1rem;right:1rem;display:inline-grid;cursor:pointer;place-items:center;border-radius:9999px;border-width:0;background-color:hsla(0,0%,100%,.15);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;width:40px;height:40px}.comment-lightbox-close:hover{background-color:hsla(0,0%,100%,.3)}.comment-lightbox-close svg{height:1.5rem;width:1.5rem}#materials-modal .modal-body.materials-body{overflow-y:auto;padding:.75rem 1rem}#materials-modal .modal-foot{padding:.75rem 1rem}.materials-error,.materials-loading{padding-top:1.5rem;padding-bottom:1.5rem;text-align:center;font-size:.875rem;line-height:1.25rem;color:var(--text-muted)}.materials-error{color:var(--danger)}.materials-empty{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding-top:2.5rem;padding-bottom:2.5rem;text-align:center;color:var(--text-muted)}.materials-empty svg{color:var(--text-subtle)}.materials-empty h4{margin:0;font-size:.875rem;line-height:1.25rem;font-weight:600;color:var(--text)}.materials-empty p{margin:0;font-size:.75rem;line-height:1rem}.materials-list{display:flex;flex-direction:column;gap:.5rem}.material-item{display:flex;align-items:center;gap:.625rem;border-radius:14px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:.5rem .75rem}.material-name{min-width:0;flex:1 1 0%;overflow-wrap:break-word;font-size:13.5px;font-weight:500;color:var(--text)}.material-status,.material-status-input{flex-shrink:0;cursor:pointer;border-radius:10px;border-width:1px;background-color:var(--surface);padding:.25rem .5rem;font-size:12.5px;font-weight:500;color:var(--text);outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.material-status-input:focus,.material-status:focus{border-color:var(--accent);--tw-shadow:0 0 0 3px var(--accent-soft);--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.material-status-pill{flex-shrink:0;border-radius:10px;border-width:1px;padding:.25rem .5rem;font-size:12px;font-weight:600}.material-delete{display:grid;height:42px;width:42px;cursor:pointer;place-items:center;border-radius:10px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:0;text-decoration-line:none;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.material-delete:hover{background-color:var(--surface-alt);color:var(--text)}.material-delete{flex-shrink:0;color:var(--text-muted);width:32px;height:32px}.material-delete:hover{color:var(--danger);border-color:var(--danger)}.material-form{display:flex;align-items:center;gap:.5rem}.material-name-input{min-width:0;flex:1 1 0%;border-radius:10px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.5rem .75rem;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.875rem;line-height:1.25rem;color:var(--text);outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;height:40px}.material-name-input:focus{border-color:var(--accent);--tw-shadow:0 0 0 3px var(--accent-soft);--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.material-form .material-status-input{padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;height:40px}.material-form .material-add-btn{flex-shrink:0;height:40px}@media (max-width:768px){.header-actions>.ha-back{order:-6}.header-actions>.ha-fav{order:-5}.header-actions>.ha-log{order:-4}.header-actions>form.ha-delete:not(.search){order:-3}.header-actions>.ha-edit{order:-2}.header-actions>.ha-pdf{order:-1}.header-actions>.ha-back.btn,.header-actions>.ha-fav,.header-actions>.ha-log.btn,.header-actions>form.ha-delete:not(.search){flex:0 1 calc(25% - 6px)!important}.header-actions>.ha-edit.btn,.header-actions>.ha-pdf.btn{flex:0 1 calc(50% - 6px)!important}.header-actions>.ha-back .ha-text,.header-actions>.ha-edit .ha-text,.header-actions>.ha-fav .ha-text,.header-actions>.ha-log .ha-text,.header-actions>.ha-materials .ha-text,.header-actions>.ha-pdf .ha-text,.header-actions>form.ha-delete .ha-text{display:none}.header-actions>.ha-back.\!btn,.header-actions>.ha-log.\!btn{flex:0 1 calc(25% - 6px)!important}.header-actions>.ha-edit.\!btn,.header-actions>.ha-pdf.\!btn{flex:0 1 calc(50% - 6px)!important}}.details-hero{position:relative;margin-bottom:.875rem;display:grid;align-items:center;gap:1.25rem;overflow:hidden;border-radius:14px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:1rem 1.25rem;--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);grid-template-columns:1fr auto}.details-hero:before{content:"";position:absolute;right:-80px;top:-80px;width:240px;height:240px;border-radius:50%;background:radial-gradient(circle,var(--accent-soft) 0,transparent 70%);pointer-events:none}.hero-eyebrow{display:flex;flex-wrap:wrap;align-items:center;gap:.625rem;font-size:11.5px;color:var(--text-subtle)}.hero-title{margin-bottom:.5rem;margin-top:3px;font-size:1.25rem;line-height:1.75rem;font-weight:600;line-height:1.25;letter-spacing:-.01em}.hero-meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;font-size:12.5px;color:var(--text-muted)}.hero-meta-row .item{display:inline-flex;align-items:center;gap:.375rem}.hero-pct{position:relative;z-index:1;display:flex;flex-direction:column;align-items:flex-end;gap:3px}.hero-pct .big{font-size:38px;font-weight:600;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);line-height:1;letter-spacing:-.03em;background:linear-gradient(135deg,var(--accent),oklch(.7 .16 290));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-pct .pct-meta{font-size:11.5px;color:var(--text-muted)}.details-summary,.summary-grid{margin-bottom:.875rem;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.summary-card{border-radius:14px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:.875rem 1rem}.summary-card .label{display:flex;align-items:center;gap:.375rem;font-size:10.5px;font-weight:500;text-transform:uppercase;line-height:1;letter-spacing:.05em;color:var(--text-subtle)}.summary-card .value{margin-top:.25rem;font-size:19px;font-weight:600;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);letter-spacing:-.02em}.summary-card .sub{margin-top:3px;font-size:11.5px;color:var(--text-muted)}.matrix-head .sub{margin-top:.125rem;font-size:.75rem;line-height:1rem;color:var(--text-muted)}.floor-table .floor-name{font-size:.875rem;line-height:1.25rem;font-weight:500}.floor-table .floor-progress{margin-top:1px;font-size:11px;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);color:var(--text-subtle)}.subcat-group{display:inline-flex;align-items:center;gap:.375rem}.toggle-form{margin:0;display:inline-flex}.checkbox-row{margin-top:.25rem;margin-bottom:.25rem;display:flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;gap:.5rem;font-size:13px;color:var(--text-muted)}.checkbox-row input[type=checkbox]{height:1rem;width:1rem;accent-color:var(--accent)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.form-grid .span2{grid-column:span 2}.form-actions{margin-top:1.25rem;display:flex;justify-content:flex-end;gap:.625rem}.cat-toggle-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.625rem}.cat-toggle{display:flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;gap:.5rem;border-radius:10px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.75rem .875rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cat-toggle input[type=checkbox]{margin:0;height:1rem;width:1rem;accent-color:var(--accent)}.cat-toggle:has(input:checked){border-color:var(--accent);background-color:var(--accent-soft);color:var(--accent)}.alert-success{margin-bottom:1rem;border-radius:10px;padding:.75rem 1rem;font-size:13px;background:oklch(.95 .05 155);color:oklch(.4 .15 155);border:1px solid oklch(.8 .1 155)}[data-theme=dark] .alert-success{background:oklch(.3 .06 155);color:oklch(.85 .15 155);border-color:oklch(.42 .1 155)}.login-shell{display:grid;min-height:100vh;place-items:center;background-color:var(--bg);padding:1.5rem}.login-card{width:100%;max-width:420px;border-radius:14px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:2rem;--tw-shadow:0 4px 16px rgba(15,23,42,.06),0 1px 3px rgba(15,23,42,.04);--tw-shadow-colored:0 4px 16px var(--tw-shadow-color),0 1px 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.login-brand{margin-bottom:1.5rem;display:flex;align-items:center;gap:.75rem}.login-card h2{margin:0 0 .25rem;font-size:22px;color:var(--text)}.login-card .subtitle{margin:0 0 1.5rem;font-size:13px;color:var(--text-muted)}.login-card .field{margin-bottom:.875rem}.login-card .btn-primary{margin-top:.5rem;width:100%;justify-content:center}.login-help{margin-top:.75rem;text-align:center;font-size:.75rem;line-height:1rem;color:var(--text-subtle)}.users-table-wrap{overflow:hidden;border-radius:14px;border-width:1px;border-color:var(--border);background-color:var(--surface);--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.users-table{width:100%;border-collapse:collapse}.users-table thead th{background-color:var(--surface-alt);padding:.75rem 18px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-subtle)}.users-table tbody tr,.users-table thead th{border-bottom-width:1px;border-color:var(--border)}.users-table tbody tr:last-child{border-bottom:none}.users-table tbody tr:hover{background-color:var(--surface-alt)}.users-table td{padding:.75rem 18px;vertical-align:middle}.inline-form{margin:0;display:inline-flex;align-items:center;gap:.375rem}.inline-input{min-width:180px;border-radius:.375rem;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.375rem .625rem;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13px;color:var(--text);outline:2px solid transparent;outline-offset:2px}.inline-input:focus{border-color:var(--accent);--tw-shadow:0 0 0 2px var(--accent-soft);--tw-shadow-colored:0 0 0 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.users-table .inline-form .\!btn,.users-table .inline-form .btn,.users-table .inline-input{height:42px;padding-top:0;padding-bottom:0}.log-unchecked-badge{display:inline-flex;width:-moz-fit-content;width:fit-content;align-items:center;gap:.25rem;border-radius:9999px;border-width:1px;border-color:var(--border);background-color:var(--surface-alt);padding:.125rem .625rem;font-size:11px;font-weight:500;color:var(--text-muted)}.btn-sm{gap:.375rem;border-radius:.375rem;padding:.375rem .625rem;font-size:12px;min-height:32px}.btn-sm .icon{height:.875rem;width:.875rem}.doors-builder{display:flex;flex-direction:column;gap:.625rem}.doors-floor-card{overflow:hidden;border-radius:20px;border-width:1px;border-color:var(--border);background-color:var(--surface-alt)}.doors-floor-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;border-bottom-width:1px;border-color:var(--border);background-color:var(--surface);padding:.625rem .875rem}.doors-floor-title{display:flex;min-width:0;align-items:baseline;gap:.625rem}.doors-floor-title .floor-name{font-size:.875rem;line-height:1.25rem;font-weight:600;color:var(--text)}.doors-floor-title .doors-count{font-size:11px;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);color:var(--text-subtle)}.doors-floor-actions{display:flex;flex-shrink:0;align-items:center;gap:.375rem}.doors-rows{display:flex;flex-direction:column;gap:.375rem;padding:.625rem}.doors-empty{padding-left:.75rem;padding-right:.75rem;padding-bottom:.625rem;font-size:12px;font-style:italic;color:var(--text-subtle)}#bulk-doors-modal .modal-body{overflow-y:auto;padding:1rem 1.25rem}#bulk-doors-modal .modal-foot{display:flex;justify-content:flex-end;gap:.5rem;padding:.75rem 1.25rem}.bulk-grid{display:grid;gap:.75rem;grid-template-columns:1fr 1fr}.bulk-grid .field{margin:0;min-width:0}.bulk-grid .field input{width:100%;min-width:0}.bulk-preview{margin-top:1rem;border-radius:14px;border-width:1px;border-color:var(--border);background-color:var(--surface-alt);padding:.75rem}.bulk-preview-label{margin-bottom:.5rem;font-size:10.5px;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text-subtle)}.bulk-preview-chips{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.bulk-chip{border-radius:.375rem;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.25rem .5rem;font-size:12px;color:var(--text)}.bulk-arrow,.bulk-chip{display:inline-flex;align-items:center}.bulk-arrow{font-size:14px;color:var(--text-subtle)}.bulk-count{margin-left:.25rem;font-size:11px;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);color:var(--text-subtle)}.bulk-error{margin-top:.75rem;margin-bottom:0}.floor-list{display:flex;flex-direction:column}.floor-section{border-bottom-width:1px;border-color:var(--border)}.floor-section:last-child{border-bottom:none}.floor-section[open]{background:var(--surface-alt)}.floor-summary{display:flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;gap:.75rem;background-color:var(--surface);padding:.75rem 1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;list-style:none}.floor-summary::-webkit-details-marker{display:none}.floor-summary:hover{background:var(--surface-alt)}.floor-section[open] .floor-summary{border-bottom-width:1px;border-color:var(--border)}.floor-summary .chev{display:inline-flex;align-items:center;justify-content:center;color:var(--text-subtle);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;width:18px;height:18px;flex-shrink:0}.floor-section[open] .floor-summary .chev{transform:rotate(90deg)}.floor-summary-info{min-width:0;flex:1 1 0%}.floor-summary-info .floor-name{font-size:.875rem;line-height:1.25rem;font-weight:600;color:var(--text)}.floor-summary-info .floor-progress{margin-top:1px;font-size:11px;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);color:var(--text-subtle)}.floor-summary-bar{display:flex;flex-shrink:0;align-items:center;gap:.625rem;width:200px}.floor-summary-bar .progress-track{flex:1 1 0%}.floor-summary-pct{font-size:12px;font-weight:600;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);color:var(--text);width:40px;text-align:right}.doors-list{display:flex;flex-direction:column;background:var(--surface)}.door-cat .subcat-group{display:inline-flex;align-items:center;gap:.375rem}.door-cat.col-cameras .toggle-cell.checked{background:var(--cat-cameras);border-color:var(--cat-cameras)}.door-cat.col-access .toggle-cell.checked{background:var(--cat-access);border-color:var(--cat-access)}.door-cat.col-fire .toggle-cell.checked{background:var(--cat-fire);border-color:var(--cat-fire)}.door-cat.col-alarm .toggle-cell.checked{background:var(--cat-alarm);border-color:var(--cat-alarm)}@media (max-width:768px){.search{height:2.75rem!important;width:100%;min-width:0!important;border-radius:9999px;padding-left:1rem;padding-right:1rem}.search input{padding-top:.75rem;padding-bottom:.75rem;font-size:13.5px}.search input::-moz-placeholder{font-size:13.5px}.search input::placeholder{font-size:13.5px}@supports (-webkit-touch-callout:none){.search input{font-size:16px}.search input::-moz-placeholder{font-size:13.5px}.search input::placeholder{font-size:13.5px}}.btn{min-height:44px;border-radius:12px;padding-left:1rem;padding-right:1rem;font-size:.875rem;line-height:1.25rem}.btn-primary{width:100%;justify-content:center}.header-actions>.btn-secondary,.header-actions>form:not(.search):not(:has(>.btn-danger)){flex:0 1 calc(50% - 4px)}.header-actions>.btn-danger,.header-actions>form.search,.header-actions>form:has(>.btn-danger){flex:1 1 100%}.header-actions>form>.btn-danger,.header-actions>form>.btn-secondary{width:100%;justify-content:center}.btn-danger,.btn-secondary{justify-content:center}.header-actions>.btn.btn-half{flex:0 1 calc(50% - 4px);width:auto;min-width:0}.filter-pill{min-height:36px;flex-shrink:0;white-space:nowrap;padding:.5rem .875rem;font-size:13.5px}.filter-divider{display:none}.card-link{border-radius:14px;padding:1rem}.field input,.field select,.field textarea,.hm-input input,.mat-row input{min-height:44px;padding:.625rem .875rem;font-size:1rem;line-height:1.5rem}.field{margin-bottom:.75rem;gap:.375rem}.toggle-cell{height:2.25rem;width:2.25rem;border-radius:10px;font-size:.75rem;line-height:1rem}.radio-card{min-height:60px;padding:.875rem}.radio-card .rc-title{font-size:15px}.modal-backdrop{align-items:flex-end;padding:0}.modal-shell{max-width:100%;max-height:92vh;border-radius:18px 18px 0 0;border-bottom:0}.modal-head{padding:.75rem 1rem}.modal-foot{padding:.75rem}.comment-input{font-size:16px}.\!btn{min-height:44px;border-radius:12px;padding-left:1rem;padding-right:1rem;font-size:.875rem;line-height:1.25rem}.header-actions>.\!btn.btn-half{flex:0 1 calc(50% - 4px)!important;width:auto!important;min-width:0!important}}.filter-bar-scroll{margin-bottom:1rem;display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}@media (max-width:768px){.filter-bar-scroll{margin-bottom:.5rem;flex-wrap:nowrap;overflow-x:auto;padding-bottom:.5rem;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none}.filter-bar-scroll::-webkit-scrollbar{display:none}.filter-bar-scroll>.filter-pill{scroll-snap-align:start}}.cat-section{margin-bottom:.875rem;overflow:hidden;border-radius:20px;border-width:1px;border-color:var(--border);background-color:var(--surface);--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.cat-section-head{display:flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;justify-content:space-between;gap:.75rem;padding:.875rem 18px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background:var(--surface);list-style:none}.cat-section-head::-webkit-details-marker{display:none}.cat-section-head:hover{background:var(--surface-alt)}.cat-section[open]>.cat-section-head{border-bottom-width:1px;border-color:var(--border)}.cat-section-head>.chev{display:inline-flex;align-items:center;justify-content:center;color:var(--text-subtle);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;width:18px;height:18px;flex-shrink:0}.cat-section[open]>.cat-section-head>.chev{transform:rotate(90deg)}.cat-section-head .cat-section-title{display:flex;min-width:0;flex:1 1 0%;align-items:center;gap:.625rem}.cat-section-head h3{margin:0;font-size:15px;font-weight:600;line-height:1.25}.cat-section-head .cat-section-meta{margin-top:1px;font-size:11.5px;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);color:var(--text-subtle)}.cat-section-head .cat-section-bar{display:flex;flex-shrink:0;align-items:center;gap:.625rem;width:180px}.cat-section-head .cat-section-bar .progress-track{flex:1 1 0%}.cat-section-head .cat-section-pct{font-size:13px;font-weight:600;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);color:var(--text);min-width:42px;text-align:right}.cat-section.cat-cameras{border-left:4px solid var(--cat-cameras)}.cat-section.cat-access{border-left:4px solid var(--cat-access)}.cat-section.cat-fire{border-left:4px solid var(--cat-fire)}.cat-section.cat-alarm{border-left:4px solid var(--cat-alarm)}.cat-item-row{display:grid;align-items:center;gap:.75rem;padding:.625rem 1rem;grid-template-columns:1fr auto auto;border-bottom:1px solid var(--border)}.cat-item-row:last-child{border-bottom:none}.cat-item-row:hover{background:var(--surface-alt)}.cat-item-label{min-width:0}.cat-item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;color:var(--text)}.cat-item-progress{margin-top:1px;font-size:11px;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);color:var(--text-subtle)}.cat-item-note{display:flex;min-width:0;max-width:160px;align-items:center;gap:.25rem;justify-self:end;font-size:11px;color:var(--text-muted)}.cat-item-note svg{flex-shrink:0;width:12px;height:12px}.cat-item-note span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-item-note-input{justify-self:end;border-radius:10px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.25rem .5rem;font-size:12px;color:var(--text);outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;width:160px}.cat-item-note-input::-moz-placeholder{color:var(--text-subtle)}.cat-item-note-input::placeholder{color:var(--text-subtle)}.cat-item-note-input:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.cat-item-note-input.is-saved{border-color:var(--success)}.cat-item-note-input.is-error{border-color:var(--danger)}.cat-item-acc{margin-top:.375rem;display:flex;flex-wrap:wrap;gap:.25rem}.acc-chip{display:inline-flex;align-items:center;justify-content:center;border-radius:.375rem;border-width:1px;border-color:var(--accent);background-color:var(--accent-soft);padding:.125rem .375rem;font-size:10px;font-weight:600;letter-spacing:.05em;color:var(--accent);min-width:28px}.cat-item-row.cat-cameras .toggle-cell.checked{background:var(--cat-cameras);border-color:var(--cat-cameras)}.cat-item-row.cat-access .toggle-cell.checked{background:var(--cat-access);border-color:var(--cat-access)}.cat-item-row.cat-fire .toggle-cell.checked{background:var(--cat-fire);border-color:var(--cat-fire)}.cat-item-row.cat-alarm .toggle-cell.checked{background:var(--cat-alarm);border-color:var(--cat-alarm)}.cat-tabs{margin-bottom:.75rem;display:flex;flex-wrap:wrap}.cat-tab,.cat-tabs{gap:.5rem}.cat-tab{display:inline-flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;border-radius:9999px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.5rem .875rem;font-size:13px;line-height:1;color:var(--text-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;min-height:36px}.cat-tab:hover{border-color:var(--accent);color:var(--text)}.cat-tab[aria-selected=true]{border-color:var(--accent);background-color:var(--accent-soft);color:var(--accent)}.cat-tab .cat-tab-count{font-size:11px;font-weight:600;--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);opacity:.7}.cat-tab[aria-selected=true] .cat-tab-count{opacity:1}.cat-panel,.cat-tab[hidden]{display:none}.cat-panel.is-active{display:block}.cat-panel-header{margin-bottom:.75rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem}.cat-panel-header .cat-panel-title{display:flex;align-items:center;gap:.5rem;font-size:14px;font-weight:600}.cat-panel-header .cat-panel-add{display:flex;align-items:stretch;gap:.5rem}.cat-floor-picker,.cat-panel-header .cat-panel-add>.btn-sm{height:36px;min-height:36px}.cat-floor-picker{border-radius:.375rem;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.5rem .75rem;font-size:13px;color:var(--text);box-sizing:border-box}.cat-empty-card{border-radius:20px;border-width:1px;border-style:dashed;border-color:var(--border);background-color:var(--surface-alt);padding:2rem 1.25rem;text-align:center;font-size:13px;color:var(--text-muted)}.item-row{display:flex;align-items:center;gap:.5rem}.item-row-name{min-width:0;flex:1 1 0%;border-radius:.375rem;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.5rem .75rem;font-size:13px;color:var(--text);outline:2px solid transparent;outline-offset:2px;height:36px}.item-row-name:focus{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.item-row .item-remove{display:flex;flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;border-radius:.375rem;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);color:var(--text-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;width:36px;height:36px}.item-row .item-remove:hover{color:var(--danger);border-color:var(--danger)}.acc-flags{display:flex;flex-shrink:0;gap:.375rem}.acc-flag,.acc-flags{align-items:center}.acc-flag{display:inline-flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;justify-content:center;border-radius:.375rem;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.25rem .5rem;font-size:11px;font-weight:600;letter-spacing:.05em;color:var(--text-subtle);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;min-width:38px;height:36px}.acc-flag input[type=checkbox]{border:0;position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.acc-flag:hover{border-color:var(--accent);color:var(--text)}.acc-flag:has(input:checked){border-color:var(--accent);background-color:var(--accent-soft);color:var(--accent)}.doors-floor-head .floor-remove{margin-left:.25rem;display:inline-flex;flex-shrink:0;cursor:pointer;align-items:center;justify-content:center;border-radius:.375rem;border-width:1px;border-color:transparent;background-color:transparent;color:var(--text-subtle);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;width:32px;height:32px}.doors-floor-head .floor-remove:hover{color:var(--danger);border-color:var(--danger)}.cal-shell{border-radius:20px;border-width:1px;border-color:var(--border);background-color:var(--surface);padding:1rem;--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media not all and (min-width:768px){.cal-shell{padding:.5rem}}.cal-form-body{gap:0;overflow-y:auto;background-color:var(--surface);padding:1rem 1.25rem}.cal-allday,.cal-form-body .field{margin-bottom:.875rem}.cal-allday{font-weight:500;color:var(--text)}.cal-when{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}@media not all and (min-width:768px){.cal-when{grid-template-columns:repeat(1,minmax(0,1fr))}}.cal-dt{display:grid;grid-template-columns:1.3fr 1fr;gap:.5rem}.cal-dt input{width:100%;border-radius:10px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.625rem .75rem;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:.875rem;line-height:1.25rem;color:var(--text);outline:2px solid transparent;outline-offset:2px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cal-dt input:focus{border-color:var(--accent);--tw-shadow:0 0 0 3px var(--accent-soft);--tw-shadow-colored:0 0 0 3px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.cal-assignee-list{display:flex;max-height:180px;flex-direction:column;gap:.125rem;overflow-y:auto;border-radius:10px;border-width:1px;border-color:var(--border-strong);background-color:var(--surface);padding:.375rem}.cal-assignee{display:flex;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;align-items:center;gap:.625rem;border-radius:.375rem;padding:.375rem .625rem;font-size:13.5px;color:var(--text);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.cal-assignee:hover{background:var(--surface-alt)}.cal-assignee input[type=checkbox]{height:1rem;width:1rem;accent-color:var(--accent)}.cal-assignee:has(input:checked){background-color:var(--accent-soft);font-weight:500;color:var(--accent)}.cal-assignee-empty{font-size:13px;font-style:italic;color:var(--text-subtle)}.cal-form-error{margin-top:.25rem;margin-bottom:0}.cal-form-error[hidden]{display:none}.cal-details-foot,.cal-form-foot{display:flex;align-items:center;gap:.625rem;padding:.75rem 1rem}.cal-foot-spacer{flex:1 1 0%}.cal-details-body{display:flex;flex-direction:column;gap:.875rem;background-color:var(--surface);padding:1rem 1.25rem}.cal-detail-row{display:flex;align-items:flex-start;gap:.75rem}.cal-detail-ic{display:grid;height:2rem;width:2rem;flex-shrink:0;place-items:center;border-radius:14px;background-color:var(--surface-alt);color:var(--text-muted)}.cal-detail-ic svg{height:17px;width:17px}.cal-detail-val{min-width:0;flex:1 1 0%;padding-top:.25rem;font-size:13.5px;line-height:1.625;color:var(--text)}.cal-detail-comments{white-space:pre-wrap;overflow-wrap:break-word}.cal-detail-people{display:flex;flex-wrap:wrap;gap:.375rem;padding-top:.125rem}.cal-person-chip{display:inline-flex;align-items:center;border-radius:9999px;border-width:1px;border-color:var(--accent);background-color:var(--accent-soft);padding:.25rem .625rem;font-size:12.5px;font-weight:500;color:var(--accent)}.cal-detail-created{margin-top:.25rem;border-top-width:1px;border-color:var(--border);padding-top:.25rem;font-size:11.5px;color:var(--text-subtle)}.cal-detail-created[hidden]{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.collapse{visibility:collapse}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-0{bottom:0}.bottom-3\.5{bottom:.875rem}.left-0{left:0}.right-3\.5{right:.875rem}.top-0{top:0}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mb-3{margin-bottom:.75rem}.mb-3\.5{margin-bottom:.875rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.ml-\[var\(--sidebar-w\)\]{margin-left:var(--sidebar-w)}.mt-1{margin-top:.25rem}.mt-6{margin-top:1.5rem}.mt-auto{margin-top:auto}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.inline-grid{display:inline-grid}.hidden{display:none}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[18px\]{height:18px}.h-\[19px\]{height:19px}.h-\[22px\]{height:22px}.h-\[34px\]{height:34px}.h-full{height:100%}.min-h-\[120px\]{min-height:120px}.min-h-\[70px\]{min-height:70px}.min-h-screen{min-height:100vh}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-9{width:2.25rem}.w-\[18px\]{width:18px}.w-\[19px\]{width:19px}.w-\[22px\]{width:22px}.w-\[var\(--sidebar-w\)\]{width:var(--sidebar-w)}.w-auto{width:auto}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[32px\]{min-width:32px}.max-w-\[130px\]{max-width:130px}.max-w-\[1700px\]{max-width:1700px}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.border-collapse{border-collapse:collapse}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[repeat\(auto-fill\2c minmax\(340px\2c 1fr\)\)\]{grid-template-columns:repeat(auto-fill,minmax(340px,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:14px}.rounded-md{border-radius:.375rem}.\!border-0{border-width:0!important}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-\[oklch\(0\.65_0\.18_10\)\]{border-color:oklch(.65 .18 10)}.border-accent{border-color:var(--accent)}.border-border{border-color:var(--border)}.border-border-strong{border-color:var(--border-strong)}.\!bg-transparent{background-color:transparent!important}.bg-\[oklch\(0\.97_0\.03_10\)\]{background-color:oklch(.97 .03 10)}.bg-accent{background-color:var(--accent)}.bg-bg{background-color:var(--bg)}.bg-bg-elev{background-color:var(--bg-elev)}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-surface{background-color:var(--surface)}.bg-surface-alt{background-color:var(--surface-alt)}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.object-contain{-o-object-fit:contain;object-fit:contain}.\!p-0{padding:0!important}.p-0\.5{padding:.125rem}.p-16{padding:4rem}.p-2{padding:.5rem}.p-3\.5{padding:.875rem}.p-6{padding:1.5rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-7{padding-left:1.75rem;padding-right:1.75rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pt-2\.5{padding-top:.625rem}.pt-3\.5{padding-top:.875rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-mono{font-family:JetBrains Mono,ui-monospace,monospace}.text-\[10\.5px\]{font-size:10.5px}.text-\[11\.5px\]{font-size:11.5px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[13\.5px\]{font-size:13.5px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15\.5px\]{font-size:15.5px}.text-\[15px\]{font-size:15px}.text-\[22px\]{font-size:22px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[-0\.005em\]{letter-spacing:-.005em}.tracking-\[-0\.01em\]{letter-spacing:-.01em}.tracking-\[-0\.02em\]{letter-spacing:-.02em}.tracking-wider{letter-spacing:.05em}.text-\[oklch\(0\.65_0\.18_10\)\]{color:oklch(.65 .18 10)}.text-danger{color:var(--danger)}.text-inherit{color:inherit}.text-text{color:var(--text)}.text-text-muted{color:var(--text-muted)}.text-text-subtle{color:var(--text-subtle)}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.shadow-sm{--tw-shadow:0 1px 2px rgba(15,23,42,.04);--tw-shadow-colored:0 1px 2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-\[2px\]{--tw-backdrop-blur:blur(2px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[margin-left\]{transition-property:margin-left;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\2c transform\]{transition-property:width,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-200{transition-duration:.2s}.ease-out{transition-timing-function:cubic-bezier(.2,.7,.2,1)}@media (max-width:1100px){.form-grid{grid-template-columns:1fr}.form-grid .span2{grid-column:span 1}.cat-toggle-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:760px){.details-hero{grid-template-columns:1fr;padding:18px}.details-hero:before{display:none}.hero-pct{align-items:flex-start}.hero-pct .big{font-size:32px;background:none;-webkit-text-fill-color:var(--text);color:var(--text)}.details-summary,.summary-grid{grid-template-columns:1fr 1fr;gap:10px}.summary-card{padding:10px 12px}.summary-card .value{font-size:17px}.project-grid{grid-template-columns:1fr;gap:12px}.project-card{padding:14px}.matrix-head{padding:14px 14px 12px}.floor-table thead th.floor-col{width:96px}.floor-table td.floor-cell,.floor-table thead th.floor-col{padding-left:14px;min-width:96px}.floor-table tbody td,.floor-table thead th{padding:8px 6px}.floor-table{min-width:540px}.floor-table thead th.floor-col{position:sticky;left:0;z-index:2;background:var(--surface-alt)}.floor-table tbody td.floor-cell{position:sticky;left:0;z-index:1;background:var(--surface);box-shadow:1px 0 0 var(--border)}.floor-table tbody tr:hover td.floor-cell{background:var(--surface-alt)}.form-grid{grid-template-columns:1fr}.form-grid .span2{grid-column:span 1}.cat-toggle-grid{grid-template-columns:repeat(2,1fr);gap:8px}.form-actions{flex-direction:column-reverse;gap:8px}.form-actions .btn{width:100%;justify-content:center}.login-card{padding:24px 20px}.login-shell{padding:16px}.users-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}.users-table{min-width:720px}.doors-floor-head{padding:10px 12px}.doors-floor-actions .btn-sm .icon{width:12px;height:12px}.doors-floor-actions .btn-sm span{display:none}.doors-floor-actions .btn-sm{min-width:36px;padding:0;width:36px;height:36px;justify-content:center}.doors-rows{padding:10px}.door-name-input{height:40px;font-size:16px}.door-remove{width:40px;height:40px}.bulk-grid{grid-template-columns:1fr 1fr}.floor-summary{padding:12px;gap:10px}.floor-summary-bar{width:auto;max-width:140px}.floor-summary-pct{width:auto;min-width:32px}.door-detail-row{grid-template-columns:1fr;gap:8px;padding:12px}.door-cats{justify-content:flex-start;gap:16px 14px}.door-cat-label{display:inline-flex}.door-cat-name{display:none}}@media (max-width:480px){.door-cats{gap:12px 10px}.doors-floor-title .floor-name{font-size:13px}.details-summary,.summary-grid{grid-template-columns:1fr 1fr}}@media (max-width:600px){.floor-table-wrap{overflow:visible}.floor-table{display:block;min-width:0;width:100%}.floor-table thead{display:none}.floor-table tbody,.floor-table tr{display:block}.floor-table tbody{display:flex;flex-direction:column;gap:10px}.floor-table tr{border:1px solid var(--border);border-radius:14px;padding:14px;box-shadow:0 1px 2px rgba(15,23,42,.04)}.floor-table tr,.floor-table tr:hover{background:var(--surface)}.floor-table tbody td{display:block;padding:0;border:none;height:auto;text-align:left}.floor-table tbody td.floor-cell{position:static!important;background:transparent!important;box-shadow:none!important;padding:0 0 10px;margin-bottom:10px;border-bottom:1px solid var(--border);display:flex;align-items:baseline;justify-content:space-between}.floor-table tbody td[class*=" col-"],.floor-table tbody td[class^=col-]{padding:10px 0 0;display:flex;align-items:center;gap:10px;text-align:left}.floor-table tbody td[class*=" col-"]:before,.floor-table tbody td[class^=col-]:before{content:attr(data-label);flex:1;font-size:13px;color:var(--text-muted);font-weight:500;text-align:left}.floor-table tbody td .toggle-cell{width:38px;height:38px;font-size:13px}}@media (max-width:768px){.users-table-wrap{background:transparent!important;border:none!important;box-shadow:none!important;overflow:visible!important}.users-table{min-width:0!important;display:block}.users-table thead{display:none}.users-table tbody{display:flex;flex-direction:column;gap:10px}.users-table tr{display:flex;flex-direction:column;gap:8px;border:1px solid var(--border);border-radius:12px;padding:14px}.users-table tr,.users-table tr:hover{background:var(--surface)}.users-table td{display:flex;flex-direction:column;gap:4px;padding:0;border:none}.users-table td:before{content:attr(data-label);font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-subtle);font-weight:600}.users-table td,.users-table td:before{-moz-user-select:none;user-select:none;-webkit-user-select:none}.users-table td{-webkit-tap-highlight-color:transparent}.users-table td input,.users-table td select,.users-table td textarea{-moz-user-select:text;user-select:text;-webkit-user-select:text}.users-table td:not([data-label]):before,.users-table td[data-label=""]:before{content:none}.users-table .inline-form{width:100%;flex-wrap:nowrap;gap:6px}.users-table .inline-input{flex:1;width:auto;min-width:0}.users-table .inline-form .btn{flex-shrink:0}.users-table .inline-input{min-height:44px;padding:.625rem .875rem;font-size:1rem;line-height:1.5rem;height:auto}.users-table .users-table-delete-cell{margin-top:2px}.users-table .users-table-delete-btn{width:100%;height:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:transparent;border:1px solid var(--danger);color:var(--danger);font-weight:600;border-radius:10px}.users-table .users-table-delete-btn:hover{background:var(--danger);color:#fff}}@media (min-width:769px){.users-table .users-table-delete-btn{color:var(--danger)}.users-table .users-table-delete-label{display:none}}@media (max-width:768px){.cat-section-head{padding:12px 14px;gap:10px;flex-wrap:wrap}.cat-section-head .cat-section-bar{width:100%}.cat-item-row{grid-template-columns:1fr auto;gap:8px 10px;padding:12px}.cat-item-label{grid-column:1/-1}.cat-item-row .subcat-group{justify-content:flex-end;gap:8px}.cat-item-note-input{width:100%;justify-self:stretch}.cat-item-note{max-width:none;justify-self:start}.cat-tab{min-height:40px;padding:8px 12px;font-size:13.5px}.cat-tabs{gap:6px;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px}.cat-tabs::-webkit-scrollbar{display:none}.item-row{flex-wrap:wrap}.item-row-name{flex:1 1 100%;height:44px;font-size:16px}.item-row .item-remove{width:40px;height:40px}.acc-flags{flex:1 1 100%;flex-wrap:wrap}.acc-flag{flex:1 1 calc(25% - 6px);min-width:0;height:40px}}.first\:mt-0:first-child{margin-top:0}.first\:border-t-0:first-child{border-top-width:0}.first\:pt-0:first-child{padding-top:0}.hover\:border-\[oklch\(0\.55_0\.10_195\)\]:hover{border-color:oklch(.55 .1 195)}.hover\:border-\[oklch\(0\.65_0\.18_10\)\]:hover{border-color:oklch(.65 .18 10)}.hover\:border-border-strong:hover{border-color:var(--border-strong)}.hover\:bg-\[oklch\(0\.96_0\.04_195\)\]:hover{background-color:oklch(.96 .04 195)}.hover\:bg-surface-alt:hover{background-color:var(--surface-alt)}.hover\:text-\[oklch\(0\.65_0\.18_10\)\]:hover{color:oklch(.65 .18 10)}.hover\:text-text:hover{color:var(--text)}@media not all and (min-width:768px){.max-md\:sticky{position:sticky}.max-md\:top-0{top:0}.max-md\:z-30{z-index:30}.max-md\:\!ml-0{margin-left:0!important}.max-md\:mb-3{margin-bottom:.75rem}.max-md\:hidden{display:none}.max-md\:min-h-\[44px\]{min-height:44px}.max-md\:w-full{width:100%}.max-md\:-translate-x-full{--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.max-md\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-md\:flex-col{flex-direction:column}.max-md\:flex-col-reverse{flex-direction:column-reverse}.max-md\:items-start{align-items:flex-start}.max-md\:items-stretch{align-items:stretch}.max-md\:justify-start{justify-content:flex-start}.max-md\:gap-2\.5{gap:.625rem}.max-md\:border-b{border-bottom-width:1px}.max-md\:border-border{border-color:var(--border)}.max-md\:bg-bg-elev{background-color:var(--bg-elev)}.max-md\:px-0{padding-left:0;padding-right:0}.max-md\:px-3{padding-left:.75rem;padding-right:.75rem}.max-md\:py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.max-md\:pb-14{padding-bottom:3.5rem}.max-md\:pt-0{padding-top:0}.max-md\:text-base{font-size:1rem;line-height:1.5rem}.max-md\:shadow-lg{--tw-shadow:0 12px 32px rgba(15,23,42,.1),0 2px 6px rgba(15,23,42,.04);--tw-shadow-colored:0 12px 32px var(--tw-shadow-color),0 2px 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}}@media (min-width:768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:\!hidden{display:none!important}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\:first-child\]\:mt-0:first-child{margin-top:0}@media not all and (min-width:768px){.max-md\:\[\&\>\*\]\:w-full>*{width:100%}}