:root{--react-pdf-annotation-layer: 1;--annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");--input-focus-border-color: Highlight;--input-focus-outline: 1px solid Canvas;--input-unfocused-border-color: transparent;--input-disabled-border-color: transparent;--input-hover-border-color: black;--link-outline: none}@media screen and (forced-colors: active){:root{--input-focus-border-color: CanvasText;--input-unfocused-border-color: ActiveText;--input-disabled-border-color: GrayText;--input-hover-border-color: Highlight;--link-outline: 1.5px solid LinkText}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation:hover{backdrop-filter:invert(100%)}}.annotationLayer{position:absolute;top:0;left:0;pointer-events:none;transform-origin:0 0;z-index:3}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translate(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer canvas{position:absolute;width:100%;height:100%}.annotationLayer section{position:absolute;text-align:initial;pointer-events:auto;box-sizing:border-box;margin:0;transform-origin:0 0}.annotationLayer .linkAnnotation{outline:var(--link-outline)}.textLayer.selecting~.annotationLayer section{pointer-events:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .textAnnotation img{position:absolute;cursor:pointer;width:100%;height:100%;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--total-scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .textWidgetAnnotation :is(input,textarea)[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{background:none;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{background:none;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-image:none;background-color:transparent}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;height:50%;left:30%;top:20%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{appearance:none}.annotationLayer .popupTriggerArea{height:100%;width:100%}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{position:absolute}.annotationLayer .popupWrapper{position:absolute;font-size:calc(9px * var(--total-scale-factor));width:100%;min-width:calc(180px * var(--total-scale-factor));pointer-events:none}.annotationLayer .popup{position:absolute;max-width:calc(180px * var(--total-scale-factor));background-color:#ff9;box-shadow:0 calc(2px * var(--total-scale-factor)) calc(5px * var(--total-scale-factor)) #888;border-radius:calc(2px * var(--total-scale-factor));padding:calc(6px * var(--total-scale-factor));margin-left:calc(5px * var(--total-scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto}.annotationLayer .popup>*{font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .popup h1{display:inline-block}.annotationLayer .popupDate{display:inline-block;margin-left:calc(5px * var(--total-scale-factor))}.annotationLayer .popupContent{border-top:1px solid rgba(51,51,51,1);margin-top:calc(2px * var(--total-scale-factor));padding-top:calc(2px * var(--total-scale-factor))}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .highlightAnnotation,.annotationLayer .underlineAnnotation,.annotationLayer .squigglyAnnotation,.annotationLayer .strikeoutAnnotation,.annotationLayer .freeTextAnnotation,.annotationLayer .lineAnnotation svg line,.annotationLayer .squareAnnotation svg rect,.annotationLayer .circleAnnotation svg ellipse,.annotationLayer .polylineAnnotation svg polyline,.annotationLayer .polygonAnnotation svg polygon,.annotationLayer .caretAnnotation,.annotationLayer .inkAnnotation svg polyline,.annotationLayer .stampAnnotation,.annotationLayer .fileAttachmentAnnotation{cursor:pointer}.annotationLayer section svg{position:absolute;width:100%;height:100%;top:0;left:0}.annotationLayer .annotationTextContent{position:absolute;width:100%;height:100%;opacity:0;color:transparent;user-select:none;pointer-events:none}.annotationLayer .annotationTextContent span{width:100%;display:inline-block}:root{--react-pdf-text-layer: 1;--highlight-bg-color: rgba(180, 0, 170, 1);--highlight-selected-bg-color: rgba(0, 100, 0, 1)}@media screen and (forced-colors: active){:root{--highlight-bg-color: Highlight;--highlight-selected-bg-color: ButtonText}}[data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translate(-100%)}.textLayer{position:absolute;text-align:initial;inset:0;overflow:hidden;line-height:1;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;z-index:2}.textLayer :is(span,br){color:transparent;position:absolute;white-space:pre;cursor:text;margin:0;transform-origin:0 0}.textLayer span.markedContent{top:0;height:0}.textLayer .highlight{margin:-1px;padding:1px;background-color:var(--highlight-bg-color);border-radius:4px}.textLayer .highlight.appended{position:initial}.textLayer .highlight.begin{border-radius:4px 0 0 4px}.textLayer .highlight.end{border-radius:0 4px 4px 0}.textLayer .highlight.middle{border-radius:0}.textLayer .highlight.selected{background-color:var(--highlight-selected-bg-color)}.textLayer br::selection{background:transparent}.textLayer .endOfContent{display:block;position:absolute;inset:100% 0 0;z-index:-1;cursor:default;user-select:none}.textLayer.selecting .endOfContent{top:0}.hiddenCanvasElement{position:absolute;top:0;left:0;width:0;height:0;display:none}.ws-shell{display:flex;flex-direction:column;height:100dvh;background:var(--bg-0);color:var(--fg-0);font-family:var(--font-ui);overflow:hidden}.ws-shell.ws-loading,.ws-shell.ws-error{align-items:center;justify-content:center;gap:12px;text-align:center;padding:24px}.ws-disclaimer{display:flex;align-items:flex-start;gap:8px;padding:8px 16px;background:#f3b01d1a;border-bottom:1px solid oklch(.8 .16 80 / .25);color:var(--warn);font-size:11px;line-height:1.4;flex-shrink:0}.ws-header{flex-shrink:0;background:var(--bg-1);border-bottom:1px solid var(--line-1)}.ws-header-row{display:flex;align-items:center;padding:6px 8px;gap:4px}.ws-header-title{flex:1;display:flex;flex-direction:column;align-items:center;min-width:0}.ws-project-name{font-size:13px;font-weight:600;color:var(--fg-0);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.ws-progress-label{font-size:11px;color:var(--fg-3);margin-top:1px}.ws-progress-bar{height:3px;background:var(--bg-3)}.ws-progress-fill{height:100%;background:var(--accent);transition:width .3s ease}.ws-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius);background:transparent;border:none;cursor:pointer;color:var(--fg-1);transition:background .15s;flex-shrink:0}.ws-icon-btn:hover{background:var(--bg-3)}.ws-icon-btn:active{background:var(--bg-4)}.ws-main{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px}.ws-step-title{font-size:14px;font-weight:600;color:var(--fg-2);margin:0 0 12px;text-transform:uppercase;letter-spacing:.05em}.ws-card-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.ws-card-btn{display:flex;align-items:center;width:100%;min-height:64px;padding:12px 16px;background:var(--bg-2);border:1px solid var(--line-1);border-radius:var(--radius);cursor:pointer;text-align:left;transition:background .15s,border-color .15s;gap:12px}.ws-card-btn:hover{background:var(--bg-3);border-color:var(--line-2)}.ws-card-btn:active{background:var(--bg-4)}.ws-card-main{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.ws-card-name{font-size:15px;font-weight:500;color:var(--fg-0)}.ws-card-sub{font-size:11px;color:var(--fg-3)}.ws-card-meta{display:flex;align-items:center;gap:6px;flex-shrink:0;color:var(--fg-3)}.ws-badge{font-size:11px;padding:2px 6px;border-radius:10px;background:var(--bg-3);color:var(--fg-2);white-space:nowrap}.ws-badge--ok{background:#5dc87926;color:var(--ok)}.ws-badge--partial{background:oklch(.78 .17 62 / .12);color:var(--accent)}.ws-component-header{display:flex;align-items:center;gap:8px;margin-bottom:14px;flex-wrap:wrap}.ws-print-btn{display:inline-flex;align-items:center;gap:6px;margin-left:auto;padding:8px 14px;min-height:44px;background:var(--bg-3);border:1px solid var(--line-2);border-radius:var(--radius);color:var(--fg-1);font-size:12px;cursor:pointer;transition:background .15s}.ws-print-btn:hover{background:var(--bg-4)}.ws-pin-nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.ws-pin-dot{width:24px;height:24px;border-radius:50%;background:var(--bg-3);border:2px solid var(--line-2);cursor:pointer;transition:background .15s,border-color .15s,transform .1s;display:flex;align-items:center;justify-content:center}.ws-pin-dot:hover{transform:scale(1.15);border-color:var(--accent)}.ws-pin-dot--pass{background:#5dc87940;border-color:var(--ok)}.ws-pin-dot--fail{background:#f75d5940;border-color:var(--danger)}.ws-pin-dot--active{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--accent-dim);transform:scale(1.2)}.ws-pin-progress{font-size:11px;color:var(--fg-3);margin-bottom:12px}.ws-pin-card{background:var(--bg-2);border:1px solid var(--line-1);border-radius:var(--radius);padding:16px;margin-bottom:16px}.ws-pin-card-header{display:flex;align-items:center;gap:12px;margin-bottom:10px}.ws-pin-number{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:var(--bg-4);border:2px solid var(--line-2);font-size:16px;font-weight:700;font-family:var(--font-mono);color:var(--fg-0);flex-shrink:0}.ws-pin-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.ws-pin-label{font-size:16px;font-weight:500;color:var(--fg-0)}.ws-pin-meta{font-size:11px;color:var(--fg-3);text-transform:capitalize}.ws-pin-color-swatch{width:20px;height:20px;border-radius:50%;border:2px solid var(--bg-5);flex-shrink:0}.ws-pin-notes{font-size:12px;color:var(--fg-2);background:var(--bg-3);border-radius:var(--radius-sm);padding:8px 10px;margin:0 0 12px;line-height:1.5}.ws-verify-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px}.ws-verify-btn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:56px;border-radius:var(--radius);border:2px solid var(--line-2);background:var(--bg-3);color:var(--fg-1);font-size:16px;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.ws-verify-btn--pass:hover,.ws-verify-btn--pass.ws-verify-btn--active{background:#5dc87933;border-color:var(--ok);color:var(--ok)}.ws-verify-btn--fail:hover,.ws-verify-btn--fail.ws-verify-btn--active{background:#f75d5933;border-color:var(--danger);color:var(--danger)}.ws-photo-section{margin-bottom:12px}.ws-photo-btn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:10px 16px;background:var(--bg-3);border:1px dashed var(--line-3);border-radius:var(--radius);color:var(--fg-2);font-size:13px;cursor:pointer;transition:background .15s,border-color .15s;width:100%;justify-content:center}.ws-photo-btn:hover{background:var(--bg-4);border-color:var(--accent-lo);color:var(--accent)}.ws-photo-preview{display:flex;flex-direction:column;gap:8px}.ws-photo-img{width:100%;max-height:200px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--line-1)}.ws-photo-replace,.ws-photo-remove{min-height:36px;padding:6px 12px;border-radius:var(--radius-sm);background:var(--bg-3);border:1px solid var(--line-2);color:var(--fg-2);font-size:12px;cursor:pointer;transition:background .15s}.ws-photo-remove{color:var(--danger);border-color:#f75d594d}.ws-photo-replace:hover{background:var(--bg-4)}.ws-photo-remove:hover{background:#f75d591a}.ws-note-section{margin-bottom:12px;display:flex;flex-direction:column;gap:4px}.ws-note-label{font-size:11px;font-weight:600;color:var(--fg-3);text-transform:uppercase;letter-spacing:.05em}.ws-note-input{width:100%;padding:10px 12px;background:var(--bg-1);border:1px solid var(--line-2);border-radius:var(--radius-sm);color:var(--fg-0);font-size:13px;resize:vertical;min-height:60px;transition:border-color .15s;line-height:1.5}.ws-note-input:focus{outline:none;border-color:var(--accent)}.ws-note-input::placeholder{color:var(--fg-4)}.ws-done-label{display:flex;align-items:center;gap:10px;min-height:44px;font-size:14px;font-weight:500;color:var(--fg-1);cursor:pointer;user-select:none}.ws-done-checkbox{width:20px;height:20px;cursor:pointer;accent-color:var(--ok)}.ws-pin-nav-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}.ws-nav-btn{display:flex;align-items:center;justify-content:center;gap:6px;min-height:52px;padding:12px 20px;border-radius:var(--radius);background:var(--bg-3);border:1px solid var(--line-2);color:var(--fg-1);font-size:15px;font-weight:500;cursor:pointer;transition:background .15s,opacity .15s}.ws-nav-btn:disabled{opacity:.35;cursor:not-allowed}.ws-nav-btn:not(:disabled):hover{background:var(--bg-4)}.ws-nav-btn--primary{background:var(--accent-dim);border-color:var(--accent-lo);color:var(--accent-hi)}.ws-nav-btn--primary:not(:disabled):hover{background:oklch(.78 .17 62 / .22)}.ws-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:40px 20px;color:var(--fg-3)}.ws-complete-icon{color:var(--ok);margin-bottom:4px}.ws-complete-title{font-size:18px;font-weight:600;color:var(--fg-0);margin:0}.ws-complete-sub{font-size:13px;color:var(--fg-3);margin:0}.ws-spinner{width:32px;height:32px;border:3px solid var(--bg-4);border-top-color:var(--accent);border-radius:50%;animation:ws-spin .8s linear infinite}@keyframes ws-spin{to{transform:rotate(360deg)}}.ws-print-overlay{position:fixed;inset:0;background:var(--bg-0);z-index:9000;overflow-y:auto;padding:20px}.ws-print-actions{display:flex;gap:10px;margin-bottom:20px}.ws-print-content h1{font-size:20px;margin:0 0 4px}.ws-print-refdes,.ws-print-project{font-size:12px;color:var(--fg-3);margin:0 0 4px}.ws-print-connector{margin-top:20px}.ws-print-connector h2{font-size:15px;margin:0 0 8px;border-bottom:1px solid var(--line-1);padding-bottom:4px}.ws-print-typ{font-weight:400;color:var(--fg-3);font-size:12px}.ws-print-table{width:100%;border-collapse:collapse;font-size:12px}.ws-print-table th,.ws-print-table td{padding:6px 8px;text-align:left;border:1px solid var(--line-2)}.ws-print-table th{background:var(--bg-2);font-weight:600;color:var(--fg-2)}.ws-print-disclaimer{margin-top:16px;font-size:10px;color:var(--fg-3);font-style:italic}@media print{.no-print{display:none!important}.ws-print-overlay{position:static;background:#fff;color:#000;padding:0}.ws-print-table th{background:#f5f5f5;color:#333}.ws-print-table th,.ws-print-table td{border-color:#ccc}.ws-print-disclaimer{color:#666}}@media (max-width: 480px){.ws-main{padding:12px}.ws-card-btn{padding:10px 12px}.ws-pin-card{padding:12px}.ws-verify-btn{min-height:64px;font-size:18px}}:root,[data-theme=dark]{color-scheme:dark;--bg-0: #0b0d10;--bg-1: #111418;--bg-2: #161a1f;--bg-3: #1c2128;--bg-4: #232a33;--bg-5: #2d3540;--line-1: #222830;--line-2: #2c333d;--line-3: #3a4350;--fg-0: #e6e9ee;--fg-1: #b8bfc9;--fg-2: #8b95a3;--fg-3: #5f6875;--fg-4: #3f4651;--sig-power: oklch(.68 .18 28);--sig-ground: oklch(.7 .14 245);--sig-digital: oklch(.75 .16 150);--sig-analog: oklch(.75 .16 60);--sig-bus: oklch(.7 .18 300);--sig-passive: oklch(.7 .02 260);--sig-power-dim: oklch(.68 .18 28 / .15);--sig-ground-dim: oklch(.7 .14 245 / .15);--sig-digital-dim: oklch(.75 .16 150 / .15);--sig-analog-dim: oklch(.75 .16 60 / .15);--sig-bus-dim: oklch(.7 .18 300 / .15);--sig-passive-dim: oklch(.7 .02 260 / .12);--accent: oklch(.78 .17 62);--accent-hi: oklch(.86 .18 62);--accent-lo: oklch(.62 .16 62);--accent-dim: oklch(.78 .17 62 / .14);--accent-fg: oklch(.18 .02 62);--danger: oklch(.68 .19 25);--warn: oklch(.8 .16 80);--ok: oklch(.75 .15 150);--info: oklch(.72 .13 230);--shadow-sm: 0 2px 6px rgba(0, 0, 0, .45);--shadow-md: 0 8px 24px rgba(0, 0, 0, .55);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .65);--radius: 6px;--radius-sm: 4px;--font-ui: "Inter", "Helvetica Neue", system-ui, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", Menlo, monospace}[data-theme=light]{color-scheme:light;--bg-0: #f4f5f7;--bg-1: #ffffff;--bg-2: #eaecf0;--bg-3: #dde0e7;--bg-4: #cdd1da;--bg-5: #b8bdca;--line-1: #d6d9e0;--line-2: #c4c8d3;--line-3: #adb2be;--fg-0: #1a1e24;--fg-1: #3d4655;--fg-2: #5c6778;--fg-3: #8691a3;--fg-4: #adb6c4;--sig-power: oklch(.5 .2 28);--sig-ground: oklch(.44 .16 245);--sig-digital: oklch(.46 .18 150);--sig-analog: oklch(.5 .18 60);--sig-bus: oklch(.46 .2 300);--sig-passive: oklch(.44 .04 260);--sig-power-dim: oklch(.5 .2 28 / .12);--sig-ground-dim: oklch(.44 .16 245 / .12);--sig-digital-dim: oklch(.46 .18 150 / .12);--sig-analog-dim: oklch(.5 .18 60 / .12);--sig-bus-dim: oklch(.46 .2 300 / .12);--sig-passive-dim: oklch(.44 .04 260 / .1);--accent: oklch(.48 .17 62);--accent-hi: oklch(.42 .19 62);--accent-lo: oklch(.58 .15 62);--accent-dim: oklch(.48 .17 62 / .12);--accent-fg: oklch(.98 .006 62);--danger: oklch(.5 .22 25);--warn: oklch(.52 .18 80);--ok: oklch(.46 .18 150);--info: oklch(.44 .16 230);--shadow-sm: 0 2px 6px rgba(0, 0, 0, .1);--shadow-md: 0 8px 24px rgba(0, 0, 0, .14);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .18)}@media (prefers-color-scheme: light){:root:not([data-theme]){color-scheme:light;--bg-0: #f4f5f7;--bg-1: #ffffff;--bg-2: #eaecf0;--bg-3: #dde0e7;--bg-4: #cdd1da;--bg-5: #b8bdca;--line-1: #d6d9e0;--line-2: #c4c8d3;--line-3: #adb2be;--fg-0: #1a1e24;--fg-1: #3d4655;--fg-2: #5c6778;--fg-3: #8691a3;--fg-4: #adb6c4;--sig-power: oklch(.5 .2 28);--sig-ground: oklch(.44 .16 245);--sig-digital: oklch(.46 .18 150);--sig-analog: oklch(.5 .18 60);--sig-bus: oklch(.46 .2 300);--sig-passive: oklch(.44 .04 260);--sig-power-dim: oklch(.5 .2 28 / .12);--sig-ground-dim: oklch(.44 .16 245 / .12);--sig-digital-dim: oklch(.46 .18 150 / .12);--sig-analog-dim: oklch(.5 .18 60 / .12);--sig-bus-dim: oklch(.46 .2 300 / .12);--sig-passive-dim: oklch(.44 .04 260 / .1);--accent: oklch(.48 .17 62);--accent-hi: oklch(.42 .19 62);--accent-lo: oklch(.58 .15 62);--accent-dim: oklch(.48 .17 62 / .12);--accent-fg: oklch(.98 .006 62);--danger: oklch(.5 .22 25);--warn: oklch(.52 .18 80);--ok: oklch(.46 .18 150);--info: oklch(.44 .16 230);--shadow-sm: 0 2px 6px rgba(0, 0, 0, .1);--shadow-md: 0 8px 24px rgba(0, 0, 0, .14);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .18)}}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;background:var(--bg-0);color:var(--fg-0);font-family:var(--font-ui);font-size:13px;line-height:1.4;-webkit-font-smoothing:antialiased;overflow:hidden;transition:background .15s ease,color .15s ease}button{font-family:inherit;font-size:inherit;color:inherit;background:transparent;border:none;cursor:pointer}input,select,textarea{font-family:inherit;font-size:inherit}.mono{font-family:var(--font-mono);font-feature-settings:"zero" 1,"ss01" 1}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-4);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--bg-5)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--accent)!important;box-shadow:0 0 0 2px color-mix(in oklch,var(--accent) 45%,transparent)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.app{display:grid;grid-template-columns:var(--left-w, 240px) 1fr var(--right-w, 320px);grid-template-rows:40px 1fr 26px;height:100vh;width:100vw;background:var(--bg-0)}.app.app-report .sidebar-left,.app.app-report .sidebar-right,.app.app-report .resize-handle{display:none!important}.topbar{grid-column:1 / -1;display:flex;align-items:center;gap:12px;padding:0 12px;background:var(--bg-1);border-bottom:1px solid var(--line-1);user-select:none}.topbar .brand{display:flex;align-items:center;gap:8px;font-weight:600;letter-spacing:.01em}.topbar .brand .logo{width:18px;height:18px;border-radius:3px;background:linear-gradient(135deg,var(--accent),oklch(.7 .18 28));position:relative}.topbar .brand .logo:after{content:"";position:absolute;inset:4px;border:1.5px solid var(--bg-0);border-radius:1px}.topbar .spacer{flex:1}.tabs{display:flex;gap:4px;align-items:center}.tabs .tab{display:flex;align-items:center;padding:6px 12px;font-size:12.5px;color:var(--fg-2);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;font-family:inherit;font-weight:500;transition:color .1s,background .1s}.tabs .tab:hover{color:var(--fg-0);background:var(--bg-2)}.tabs .tab.active{color:var(--fg-0);background:var(--bg-3)}.tabs .loomadmin-link{text-decoration:none;color:var(--accent);border:1px dashed color-mix(in oklch,var(--accent),transparent 60%)}.tabs .loomadmin-link:hover{color:var(--accent-hi);background:var(--accent-dim);border-color:var(--accent)}.topbar .actions{display:flex;gap:8px;align-items:center}@media (max-width: 768px){.topbar{flex-wrap:nowrap;gap:8px;padding:0 8px;overflow-x:auto;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.topbar>*{flex:0 0 auto}.topbar .spacer{display:none}.tabs{overflow:visible}.tabs .tab{flex:0 0 auto;white-space:nowrap}}.presence-pill{display:inline-flex;align-items:center;gap:8px;padding:4px 12px;background:var(--bg-2);border:1px solid var(--line-1);border-radius:999px;font-size:11.5px;color:var(--fg-2);white-space:nowrap;max-width:280px;overflow:hidden;text-overflow:ellipsis}.presence-pill.presence-loading{color:var(--fg-3)}.presence-dot{width:7px;height:7px;border-radius:50%;background:var(--ok);flex-shrink:0;box-shadow:0 0 0 2px color-mix(in oklch,var(--ok),transparent 75%)}.presence-dot.off{background:var(--fg-4);box-shadow:none}.topbar-icon{width:28px;height:28px;border-radius:50%;border:1px solid var(--line-1);background:transparent;color:var(--fg-2);cursor:pointer;font-family:inherit;font-size:13px;display:grid;place-items:center;transition:background .1s,color .1s,border-color .1s}.topbar-icon:hover{background:var(--bg-2);color:var(--fg-0);border-color:var(--line-2)}.avatar-btn{width:30px;height:30px;border-radius:50%;border:none;color:#fff;font-weight:600;font-size:11px;cursor:pointer;display:grid;place-items:center;font-family:inherit;text-transform:uppercase;letter-spacing:.02em;box-shadow:0 0 0 1px var(--line-2);transition:box-shadow .1s}.avatar-btn:hover{box-shadow:0 0 0 2px var(--accent)}.avatar-menu{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background:var(--bg-1);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:0 8px 24px #0006;z-index:100;overflow:hidden}.avatar-menu-head{padding:10px 14px;border-bottom:1px solid var(--line-1);background:var(--bg-2)}.avatar-menu-item{display:block;width:100%;text-align:left;padding:9px 14px;background:transparent;border:none;color:var(--fg-1);font-family:inherit;font-size:12.5px;cursor:pointer}.avatar-menu-item:hover{background:var(--bg-2);color:var(--fg-0)}.btn{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;background:var(--bg-3);border:1px solid var(--line-2);border-radius:var(--radius-sm);color:var(--fg-1);font-size:12px;cursor:pointer;transition:background .1s,border-color .1s,color .1s}.btn:hover{background:var(--bg-4);color:var(--fg-0);border-color:var(--line-3)}.btn:active:not(:disabled){transform:translateY(.5px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg);font-weight:600}.btn.primary:hover:not(:disabled){background:var(--accent-hi);border-color:var(--accent-hi);color:var(--accent-fg)}.btn.primary:disabled{background:var(--accent-lo);border-color:var(--accent-lo)}.btn.icon{padding:5px 7px}.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}.skip-link{position:fixed;top:-40px;left:8px;background:var(--accent);color:var(--bg-0);padding:6px 12px;border-radius:var(--radius-sm);font-size:12px;font-weight:600;text-decoration:none;z-index:10000;transition:top .15s}.skip-link:focus{top:8px}.login-screen{position:fixed;inset:0;background:var(--bg-0);display:grid;place-items:center;z-index:300}.login-card{width:360px;background:var(--bg-1);border:1px solid var(--line-2);border-radius:var(--radius);padding:28px}.login-sub{text-align:center;color:var(--fg-3);font-size:12px;margin-bottom:18px}.login-alt{display:flex;gap:6px;margin-top:10px}.login-foot{text-align:center;color:var(--fg-3);font-size:11.5px;margin-top:14px}.login-foot a{color:var(--accent);cursor:pointer;text-decoration:none}.login-foot a:hover{text-decoration:underline}.login-err{margin-top:10px;padding:8px 10px;background:#f75d591f;border:1px solid oklch(.68 .19 25 / .45);border-radius:var(--radius-sm);color:oklch(.85 .15 25);font-size:11.5px;line-height:1.4}.login-hint{margin-top:12px;padding:8px 10px;background:var(--bg-2);border:1px dashed var(--line-2);border-radius:var(--radius-sm);color:var(--fg-2);font-size:11px;text-align:center}.login-hint code{color:var(--accent);font-family:var(--font-mono);font-size:10.5px}.field{display:grid;grid-template-columns:1fr;gap:4px;margin-bottom:10px}.field label{font-size:11px;color:var(--fg-2);font-weight:500}.field input,.field select,.field textarea{background:var(--bg-0);border:1px solid var(--line-2);border-radius:var(--radius-sm);color:var(--fg-0);padding:7px 10px;font-size:13px;outline:none}.field input:focus{border-color:var(--accent)}.loading-screen{position:fixed;inset:0;display:grid;place-items:center;background:var(--bg-0);color:var(--fg-2);font-size:13px;z-index:200}.loading-spinner{width:20px;height:20px;border:2px solid var(--line-2);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:10px}@keyframes spin{to{transform:rotate(360deg)}}.main-view{grid-column:1 / -1;overflow:hidden;min-height:0;background:var(--bg-0)}.canvas-placeholder{grid-column:1 / -1;display:grid;place-items:center;padding:40px;color:var(--fg-2);text-align:center}.canvas-placeholder h2{color:var(--fg-0);margin-bottom:8px;font-size:18px;font-weight:600}.canvas-placeholder p{margin:4px 0;font-size:12.5px;line-height:1.6}.canvas-placeholder code{background:var(--bg-2);padding:2px 6px;border-radius:3px;font-family:var(--font-mono);font-size:11.5px;color:var(--accent)}.canvas-placeholder a{color:var(--accent)}@keyframes vkpProgressIndeterminate{0%{transform:translate(-100%)}to{transform:translate(400%)}}.login-v2{position:fixed;inset:0;display:grid;grid-template-columns:1.05fr .95fr;background:var(--bg-0);color:var(--fg-0);z-index:300;overflow:hidden}.login-v2 .hero-side{position:relative;display:flex;flex-direction:column;justify-content:flex-end;padding:48px 56px;border-right:1px solid var(--line-1);background:radial-gradient(circle at 30% 20%,oklch(.3 .1 30 / .45),transparent 55%),radial-gradient(circle at 80% 80%,oklch(.32 .14 62 / .35),transparent 55%),var(--bg-1);overflow:hidden}.login-v2 .hero-side .demo-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;opacity:.95}.login-v2 .hero-side .hero-brand{position:relative;z-index:1;display:flex;align-items:center;gap:12px;margin-bottom:14px}.login-v2 .hero-side .hero-brand svg{color:var(--fg-0);filter:drop-shadow(0 2px 6px oklch(0 0 0 / .3))}.login-v2 .hero-side .tagline{position:relative;z-index:1;font-size:30px;font-weight:700;letter-spacing:-.02em;line-height:1.15;color:var(--fg-0);max-width:460px}.login-v2 .hero-side .tagline .accent{color:var(--accent)}.login-v2 .hero-side .subtitle{position:relative;z-index:1;color:var(--fg-2);font-size:14px;margin-top:14px;max-width:440px;line-height:1.5}.login-v2 .form-side{display:grid;place-items:center;padding:32px;overflow-y:auto}.login-v2 .login-card{width:100%;max-width:380px;padding:28px 30px;background:var(--bg-1);border:1px solid var(--line-2);border-radius:var(--radius)}.login-v2 .login-card h1{font-size:22px;font-weight:700;letter-spacing:-.01em;color:var(--fg-0);margin:0 0 6px}.login-v2 .login-card .card-sub{color:var(--fg-3);font-size:12.5px;margin-bottom:18px;line-height:1.4}.login-v2 .login-card .divider{display:flex;align-items:center;gap:10px;margin:14px 0;color:var(--fg-3);font-size:11px}.login-v2 .login-card .divider:before,.login-v2 .login-card .divider:after{content:"";flex:1;height:1px;background:var(--line-1)}.demo-canvas .cmp-box{fill:var(--bg-1);stroke:var(--line-2);stroke-width:1}.demo-canvas .cmp-title{fill:var(--fg-0);font-size:12px;font-weight:600;font-family:var(--font-ui)}.demo-canvas .cmp-sub{fill:var(--fg-3);font-size:10px;font-family:var(--font-ui)}.demo-canvas .pin-live{stroke:var(--bg-1);stroke-width:2}@keyframes pin-pulse{0%,to{opacity:1}50%{opacity:.55}}.demo-canvas .pin-live{animation:pin-pulse 2.4s ease-in-out infinite}.demo-canvas .pin-live.delay-1{animation-delay:.4s}.demo-canvas .pin-live.delay-2{animation-delay:.8s}@media (prefers-reduced-motion: reduce){.demo-canvas .pin-live{animation:none}.demo-canvas animate,.demo-canvas animateMotion{display:none}}@media (max-width: 900px){.login-v2{position:relative;inset:auto;min-height:100%;grid-template-columns:1fr;grid-template-rows:auto 1fr;overflow:visible}.login-v2 .hero-side{padding:28px 24px 22px;border-right:none;border-bottom:1px solid var(--line-1);justify-content:flex-start;align-items:center;text-align:center}.login-v2 .hero-side .demo-canvas{display:none}.login-v2 .hero-side .hero-brand{justify-content:center;margin-bottom:12px}.login-v2 .hero-side .tagline{font-size:22px;max-width:100%}.login-v2 .hero-side .subtitle{font-size:13px;max-width:100%;margin-top:8px}.login-v2 .form-side{padding:24px 20px 32px}}@media (max-width: 900px){.login-v2{grid-template-columns:1fr}.login-v2 .hero-side{display:none}}.dashboard-wrap{height:100%;overflow-y:auto;padding:28px 32px 48px}.dashboard-inner{max-width:1200px;margin:0 auto}.dashboard-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px;flex-wrap:wrap}.dashboard-hero h1{font-size:26px;font-weight:700;letter-spacing:-.02em;color:var(--fg-0);margin:2px 0 4px;line-height:1.15}.dashboard-hero .sub{font-size:13px;color:var(--fg-2);margin-top:4px;line-height:1.5}.dashboard-hero .sub .last-link{color:var(--accent);cursor:pointer;background:transparent;border:0;font:inherit;padding:0}.dashboard-hero .sub .last-link:hover{text-decoration:underline}.dashboard-hero .actions{display:flex;gap:8px;flex-shrink:0}.eyebrow{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-3);font-weight:600}.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}@media (max-width: 860px){.summary-grid{grid-template-columns:repeat(2,1fr)}}.summary-card{background:var(--bg-1);border:1px solid var(--line-1);border-radius:var(--radius);padding:14px 16px;min-height:92px;display:flex;flex-direction:column;justify-content:space-between}.summary-card .label{font-size:11px;color:var(--fg-3);letter-spacing:.06em;text-transform:uppercase;font-weight:500}.summary-card .value{font-size:26px;font-weight:700;color:var(--fg-0);letter-spacing:-.02em;line-height:1.1;margin:4px 0 2px;font-variant-numeric:tabular-nums}.summary-card .foot{font-size:11px;color:var(--fg-3)}.ws-section-head{display:flex;align-items:baseline;gap:10px;margin:28px 0 12px}.ws-section-head .count{color:var(--fg-3);font-size:11px}.ws-section-head .spacer{flex:1}.ws-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:20px}.ws-card{background:var(--bg-1);border:1px solid var(--line-1);border-radius:var(--radius);padding:14px 16px;cursor:pointer;transition:background .12s,border-color .12s,transform .12s;display:flex;flex-direction:column;gap:8px;position:relative}.ws-card:hover{background:var(--bg-2);border-color:var(--line-2)}.ws-card.active{border-color:var(--accent);background:color-mix(in oklch,var(--accent) 6%,var(--bg-1))}.ws-card-head{display:flex;align-items:center;justify-content:space-between}.ws-icon{width:34px;height:34px;border-radius:var(--radius-sm);display:grid;place-items:center;font-size:16px;border:1px solid var(--line-2);background:var(--bg-2);color:var(--fg-1);font-family:var(--font-ui)}.ws-status{display:flex;align-items:center;gap:6px;color:var(--fg-3)}.ws-status .dot{width:7px;height:7px;border-radius:50%;display:inline-block}.ws-card .ws-name{font-size:14px;font-weight:600;color:var(--fg-0);letter-spacing:-.01em}.ws-card .ws-desc{font-size:11.5px;color:var(--fg-3);line-height:1.4;min-height:16px}.ws-card .ws-stats{display:flex;gap:14px;margin-top:auto;padding-top:8px;border-top:1px solid var(--line-1)}.ws-card .ws-stats>div{display:flex;flex-direction:column}.ws-card .ws-stats .n{font-size:14px;color:var(--fg-0);font-weight:600;font-variant-numeric:tabular-nums}.ws-card .ws-stats .l{font-size:10px;color:var(--fg-3);letter-spacing:.06em;text-transform:uppercase}.ws-menu{background:transparent;border:0;padding:2px 6px;color:var(--fg-3);cursor:pointer;font-size:14px;border-radius:3px}.ws-menu:hover{background:var(--bg-3);color:var(--fg-1)}.projects-table{background:var(--bg-1);border:1px solid var(--line-1);border-radius:var(--radius);overflow:hidden}.projects-table-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line-1)}.projects-table table{width:100%;border-collapse:collapse}.projects-table thead th{text-align:left;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3);padding:10px 16px;background:var(--bg-1);border-bottom:1px solid var(--line-1)}.projects-table tbody td{padding:10px 16px;border-bottom:1px solid var(--line-1);font-size:12.5px;color:var(--fg-1);vertical-align:middle}.projects-table tbody tr:last-child td{border-bottom:0}.projects-table tbody tr.project-row{cursor:pointer;transition:background .1s}.projects-table tbody tr.project-row:hover{background:var(--bg-2)}.projects-table td.workspace,.projects-table td.updated{color:var(--fg-2);font-size:11.5px}.projects-table td.tabular{font-variant-numeric:tabular-nums;color:var(--fg-1)}.projects-table td .name{color:var(--fg-0);font-weight:500}.projects-table td .shared-hint{color:var(--fg-3);font-size:10.5px;margin-top:1px}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.p-row-actions{display:inline-flex;gap:4px;align-items:center;justify-content:flex-end}.p-row-action{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;background:transparent;border:1px solid transparent;border-radius:3px;color:var(--fg-2);font-size:11.5px;cursor:pointer;font-family:inherit}.p-row-action:hover{background:var(--bg-3);color:var(--fg-0);border-color:var(--line-2)}.p-row-action[disabled]{opacity:.35;cursor:not-allowed}.p-row-more{background:transparent;border:0;color:var(--fg-3);cursor:pointer;padding:4px 8px;border-radius:3px;font-size:14px}.p-row-more:hover{background:var(--bg-3);color:var(--fg-0)}.search-wrap{position:relative;width:220px}.search-wrap input{padding-left:28px!important}.search-wrap .icon{position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--fg-3);font-size:12px;pointer-events:none}.reset-filter{background:transparent;border:0;color:var(--fg-3);font-size:11px;cursor:pointer;padding:2px 6px;font-family:inherit;border-radius:3px}.reset-filter:hover{color:var(--fg-1);background:var(--bg-3)}.dash-modal-backdrop{position:fixed;inset:0;background:#0000007a;display:grid;place-items:center;z-index:500;padding:24px}.dash-modal{background:var(--bg-1);border:1px solid var(--line-2);border-radius:var(--radius);width:100%;max-width:420px;padding:20px 22px;box-shadow:0 20px 50px #00000080}.dash-modal h3{margin:0 0 4px;font-size:15px;color:var(--fg-0);font-weight:600;letter-spacing:-.01em}.dash-modal p{margin:0 0 14px;font-size:12.5px;color:var(--fg-2);line-height:1.5}.dash-modal .field{margin-bottom:10px}.dash-modal .modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}.color-presets{display:flex;gap:6px;flex-wrap:wrap;padding:2px 0}.color-preset{width:26px;height:26px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .1s;padding:0}.color-preset:hover{transform:scale(1.08)}.color-preset.selected{border-color:var(--fg-0);box-shadow:0 0 0 2px var(--bg-1)}.icon-input{text-align:center!important;font-size:18px!important;width:60px}.projects-empty{padding:56px 20px;text-align:center;color:var(--fg-3);font-size:12.5px}.projects-empty-cta{margin-top:14px}.admin-page{height:100%;overflow-y:auto;background:var(--bg-0);color:var(--fg-1)}.admin-wrap{max-width:1200px;margin:0 auto;padding:24px 28px 80px}.admin-hero{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:4px 0 22px;flex-wrap:wrap}.admin-hero h1{font-size:26px;font-weight:700;letter-spacing:-.02em;color:var(--fg-0);margin:4px 0;line-height:1.15}.admin-hero .sub{font-size:13px;color:var(--fg-2);line-height:1.5;max-width:560px}.admin-hero-actions{display:flex;gap:8px;flex-shrink:0}.admin-hero-actions .btn{padding:8px 14px}.mock-badge{display:inline-block;margin-left:6px;padding:1px 6px;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-3);background:var(--bg-3);border:1px solid var(--line-2);border-radius:3px;vertical-align:middle;line-height:1.4}.admin-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}@media (max-width: 900px){.admin-summary-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 520px){.admin-summary-grid{grid-template-columns:1fr}}.admin-tabs{display:flex;gap:2px;border-bottom:1px solid var(--line-1);margin:8px 0 18px;flex-wrap:wrap}.admin-tabs button{position:relative;background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:10px 14px;color:var(--fg-2);font-size:12.5px;font-weight:500;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:8px;transition:color .1s,border-color .1s}.admin-tabs button:hover{color:var(--fg-0)}.admin-tabs button.active{color:var(--fg-0);border-bottom-color:var(--accent)}.tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;font-size:10px;font-weight:600;font-variant-numeric:tabular-nums;border-radius:999px;background:var(--accent-dim);color:var(--accent-hi);border:1px solid color-mix(in oklch,var(--accent),transparent 60%)}.tab-badge.warn{background:color-mix(in oklch,var(--warn),transparent 80%);color:var(--warn);border-color:color-mix(in oklch,var(--warn),transparent 60%)}.admin-body{padding-top:8px}.admin-table{background:var(--bg-1);border:1px solid var(--line-1);border-radius:var(--radius);overflow:hidden}.admin-table-head{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--bg-2);border-bottom:1px solid var(--line-1)}.admin-table-count{color:var(--fg-3);font-size:11px}.admin-table table{width:100%;border-collapse:collapse;font-size:12.5px}.admin-table th{text-align:left;padding:10px 14px;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3);border-bottom:1px solid var(--line-1)}.admin-table td{padding:10px 14px;border-bottom:1px solid var(--line-1);vertical-align:middle;color:var(--fg-1)}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:color-mix(in oklch,var(--bg-2),transparent 50%)}.admin-table-empty{padding:24px;text-align:center;color:var(--fg-3);font-size:12.5px}.cell-name{font-weight:500;color:var(--fg-0)}.cell-sub{color:var(--fg-3);font-size:11px;margin-top:2px}.cell-muted{color:var(--fg-2)}.cell-action{color:var(--fg-3);text-align:center;font-size:16px}.cell-action:hover{color:var(--fg-0)}.row-edit-btn{width:26px;height:24px;background:transparent;border:1px solid transparent;color:var(--fg-3);cursor:pointer;border-radius:var(--radius-sm);font-family:inherit;font-size:13px;display:inline-grid;place-items:center;transition:background .1s,border-color .1s,color .1s}.row-edit-btn:hover{background:var(--bg-2);border-color:var(--line-1);color:var(--fg-0)}.action-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:240px;background:var(--bg-1);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:0 12px 32px #00000080;z-index:100;padding:6px;display:flex;flex-direction:column;gap:1px;text-align:left}.action-menu button[role=menuitem]{display:block;width:100%;text-align:left;background:transparent;border:none;padding:7px 10px;font-family:inherit;font-size:12.5px;color:var(--fg-1);cursor:pointer;border-radius:var(--radius-sm);white-space:nowrap}.action-menu button[role=menuitem]:hover:not(:disabled){background:var(--bg-2);color:var(--fg-0)}.action-menu button[role=menuitem]:disabled{color:var(--fg-4);cursor:not-allowed}.action-menu button[role=menuitem].danger{color:var(--danger)}.action-menu button[role=menuitem].danger:hover:not(:disabled){background:color-mix(in oklch,var(--danger),transparent 88%)}.action-menu-sep{border:none;border-top:1px solid var(--line-1);margin:4px 0}.action-menu-sub{padding:4px 0;border-top:1px solid var(--line-1);margin-top:2px}.action-menu-sub-label{padding:4px 10px;font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-3)}.action-menu-sub button[role=menuitem]{padding-left:16px;font-size:12px}.flag-toggle{width:36px;height:20px;background:var(--bg-3);border:1px solid var(--line-2);border-radius:999px;cursor:pointer;position:relative;padding:0;transition:background .12s,border-color .12s}.flag-toggle.on{background:var(--accent);border-color:var(--accent)}.flag-toggle .flag-knob{position:absolute;top:1px;left:1px;width:16px;height:16px;background:var(--fg-0);border-radius:50%;transition:transform .12s}.flag-toggle.on .flag-knob{transform:translate(16px);background:var(--accent-fg)}.modal-backdrop{position:fixed;inset:0;background:#0000008c;backdrop-filter:blur(2px);z-index:200;display:grid;place-items:center;padding:20px}.modal-card{width:100%;max-width:480px;background:var(--bg-1);border:1px solid var(--line-2);border-radius:var(--radius);padding:24px 26px;box-shadow:0 24px 60px #0000008c;max-height:calc(100vh - 40px);overflow-y:auto}.permission-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:8px}@media (max-width: 720px){.permission-grid{grid-template-columns:1fr}}.permission-group{background:var(--bg-2);border:1px solid var(--line-1);border-radius:var(--radius);padding:10px 12px}.permission-group-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid var(--line-1)}.permission-group-title{font-weight:600;font-size:12.5px;color:var(--fg-0)}.permission-group-toggle{background:transparent;border:1px solid var(--line-2);color:var(--fg-2);font-family:inherit;font-size:10.5px;padding:2px 8px;border-radius:var(--radius-sm);cursor:pointer}.permission-group-toggle:hover{background:var(--bg-3);color:var(--fg-0)}.permission-item{display:grid;grid-template-columns:auto 1fr;gap:8px;padding:6px 4px;cursor:pointer;border-top:1px solid color-mix(in oklch,var(--line-1),transparent 50%)}.permission-item:first-of-type{border-top:none}.permission-item input[type=checkbox]{margin-top:2px;width:14px;cursor:pointer}.permission-label{font-size:12.5px;font-weight:500;color:var(--fg-0)}.permission-desc{font-size:11px;color:var(--fg-3);line-height:1.4;margin-top:1px}.permission-key{font-family:var(--font-mono);font-size:9.5px;color:var(--fg-4);margin-top:2px}.setting-card{display:flex;align-items:center;gap:16px;padding:14px 16px;background:var(--bg-1);border:1px solid var(--line-1);border-radius:var(--radius);margin-bottom:10px}.setting-label{font-size:13px;font-weight:500;color:var(--fg-0)}.setting-desc{font-size:11.5px;color:var(--fg-3);line-height:1.45;margin-top:4px;max-width:480px}.drawer-backdrop{position:fixed;inset:0;background:#00000073;backdrop-filter:blur(2px);z-index:180;display:flex;justify-content:flex-end}.drawer-panel{width:100%;max-width:560px;height:100%;background:var(--bg-1);border-left:1px solid var(--line-2);box-shadow:-16px 0 40px #00000080;display:flex;flex-direction:column;animation:drawer-in .2s ease-out}@keyframes drawer-in{0%{transform:translate(40px);opacity:0}to{transform:translate(0);opacity:1}}.drawer-head{display:flex;align-items:flex-start;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line-1);background:var(--bg-2)}.drawer-body{flex:1;overflow-y:auto;padding:14px 20px 24px}.drawer-section{background:var(--bg-1);border:1px solid var(--line-1);border-radius:var(--radius);margin-bottom:14px;overflow:hidden}.drawer-section-head{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--bg-2);border-bottom:1px solid var(--line-1)}.drawer-meta-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 16px;padding:14px 16px}.drawer-meta-grid .meta-label{font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--fg-3);font-weight:600;margin-bottom:2px}.drawer-meta-grid .meta-value{font-size:13px;color:var(--fg-0)}.drawer-table{width:100%;border-collapse:collapse;font-size:12.5px}.drawer-table td{padding:8px 12px;border-top:1px solid var(--line-1);vertical-align:middle}.drawer-table tr:first-child td{border-top:none}.drawer-table tr:hover td{background:color-mix(in oklch,var(--bg-2),transparent 50%)}.clickable-row{cursor:pointer}.clickable-row:hover td{background:color-mix(in oklch,var(--accent),transparent 92%)}.action-menu{z-index:1000}@media print{body *{visibility:hidden!important}.modal-backdrop{background:none!important;backdrop-filter:none!important}.invoice-print-card,.invoice-print-card *{visibility:visible!important}.invoice-print-actions{display:none!important}.invoice-print-card{position:absolute!important;inset:0!important;max-width:none!important;box-shadow:none!important;border:none!important;background:#fff!important;color:#000!important}.invoice-printable,.invoice-printable *{color:#000!important}}.tabular{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono)}.user-avatar{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:10.5px;font-weight:600;flex-shrink:0}.status-chip{display:inline-block;padding:2px 9px;border-radius:999px;font-size:10.5px;font-weight:500;background:var(--bg-3);border:1px solid var(--line-2);color:var(--fg-2);white-space:nowrap}.status-chip.status-aktiv{color:var(--ok);border-color:color-mix(in oklch,var(--ok),transparent 55%);background:color-mix(in oklch,var(--ok),transparent 88%)}.status-chip.status-testphase{color:var(--accent);border-color:color-mix(in oklch,var(--accent),transparent 55%);background:var(--accent-dim)}.status-chip.status-gekündigt{color:var(--fg-3);border-color:var(--line-2);background:var(--bg-2)}.system-subnav{display:flex;gap:4px;padding:4px;background:var(--bg-1);border:1px solid var(--line-1);border-radius:var(--radius);margin-bottom:16px;width:fit-content}.system-subnav button{background:transparent;border:none;padding:6px 12px;border-radius:4px;color:var(--fg-2);font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;transition:background .1s,color .1s}.system-subnav button:hover{color:var(--fg-0);background:var(--bg-2)}.system-subnav button.active{color:var(--fg-0);background:var(--bg-3)}.audit-table{background:var(--bg-1);border:1px solid var(--line-1);border-radius:var(--radius);overflow:hidden}.audit-table table{width:100%;border-collapse:collapse;font-size:12px}.audit-table th{text-align:left;padding:10px 14px;font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3);background:var(--bg-2);border-bottom:1px solid var(--line-1)}.audit-table td{padding:10px 14px;border-bottom:1px solid var(--line-1);vertical-align:top;color:var(--fg-1)}.audit-table tr:last-child td{border-bottom:none}.audit-table tr:hover td{background:color-mix(in oklch,var(--bg-2),transparent 50%)}.audit-table .ts{color:var(--fg-3);font-variant-numeric:tabular-nums;white-space:nowrap}.audit-kind{display:inline-block;padding:2px 7px;border-radius:4px;background:var(--bg-3);border:1px solid var(--line-2);color:var(--fg-2);font-family:var(--font-mono);font-size:10.5px;white-space:nowrap}.audit-kind.kind-admin{color:var(--accent);border-color:color-mix(in oklch,var(--accent),transparent 60%);background:var(--accent-dim)}.audit-kind.kind-auth{color:var(--ok);border-color:color-mix(in oklch,var(--ok),transparent 55%);background:color-mix(in oklch,var(--ok),transparent 88%)}.audit-kind.kind-mail{color:var(--info);border-color:color-mix(in oklch,var(--info),transparent 55%);background:color-mix(in oklch,var(--info),transparent 88%)}.audit-kind.kind-import{color:var(--warn);border-color:color-mix(in oklch,var(--warn),transparent 55%);background:color-mix(in oklch,var(--warn),transparent 88%)}.audit-user{font-weight:500;color:var(--fg-0)}.audit-user-mail{color:var(--fg-3);font-size:11px;margin-top:2px}.audit-msg{color:var(--fg-1);line-height:1.4}.audit-proj{color:var(--fg-3);font-style:italic}.audit-ip{color:var(--fg-3);font-family:var(--font-mono);font-size:10.5px}.offline-banner{position:fixed;top:0;left:0;right:0;z-index:9999;display:flex;align-items:center;gap:8px;padding:8px 16px;background:var(--bg-2);border-bottom:2px solid var(--warn);color:var(--warn);font-size:12px;font-family:var(--font-ui);line-height:1.4;animation:banner-slide-in .22s ease-out both}@keyframes banner-slide-in{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.offline-banner__icon{font-size:14px;flex-shrink:0}.offline-banner__text{flex:1}.offline-banner__button{flex-shrink:0;padding:4px 12px;background:var(--warn);color:var(--bg-0);border:none;border-radius:var(--radius-sm);font-family:var(--font-ui);font-size:12px;font-weight:600;cursor:pointer;transition:filter .12s}.offline-banner__button:hover{filter:brightness(1.1)}.offline-banner__button:focus-visible{outline:2px solid var(--fg-0);outline-offset:2px}.sync-banner{position:fixed;bottom:24px;right:24px;z-index:9998;display:flex;align-items:flex-start;gap:12px;max-width:380px;min-width:260px;padding:12px 14px;background:var(--bg-3);border:1px solid var(--ok);border-radius:var(--radius);box-shadow:var(--shadow-md);color:var(--fg-0);font-size:12px;font-family:var(--font-ui);line-height:1.5;animation:sync-banner-in .24s cubic-bezier(.16,1,.3,1) both}.sync-banner[data-divergent=true]{border-color:var(--accent)}@keyframes sync-banner-in{0%{transform:translateY(16px) scale(.97);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.sync-banner__body{display:flex;align-items:flex-start;gap:10px;flex:1;min-width:0}.sync-banner__icon{font-size:16px;flex-shrink:0;line-height:1;margin-top:1px;color:var(--ok)}.sync-banner[data-divergent=true] .sync-banner__icon{color:var(--accent)}.sync-banner__text{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.sync-banner__title{font-weight:600;color:var(--fg-0)}.sync-banner__subtitle{color:var(--fg-1)}.sync-banner__details{margin:4px 0 0;padding:0 0 0 14px;color:var(--fg-2);list-style:disc;font-size:11px}.sync-banner__details li{margin:1px 0}.sync-banner__close{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;background:none;border:none;border-radius:var(--radius-sm);color:var(--fg-3);cursor:pointer;font-size:11px;line-height:1;transition:color .12s,background .12s}.sync-banner__close:hover{color:var(--fg-0);background:var(--bg-5)}.sync-banner__close:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
