body,html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;padding:0}#root,body,html{height:100%;overflow:hidden;width:100%}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}@media (max-width:768px){.MuiDialog-container{align-items:flex-start!important;padding-top:80px!important}.MuiDialog-paper{display:flex!important;flex-direction:column!important;margin:0 16px 76px!important;max-height:calc(100vh - 256px)!important;max-width:calc(100vw - 32px)!important;overflow:hidden!important;width:calc(100vw - 32px)!important}.MuiDialogTitle-root{background:#fff!important;border-bottom:1px solid #e5e7eb!important;flex-shrink:0!important;z-index:1!important}.MuiDialogContent-root{-webkit-overflow-scrolling:touch!important;flex:1 1!important;overflow-x:hidden!important;overflow-y:auto!important}.MuiDialogActions-root{background:#fff!important;border-top:1px solid #e5e7eb!important;flex-shrink:0!important;z-index:1!important}}@media print{body,html{height:auto!important;overflow:visible!important}.MuiDialog-container,.MuiDialog-paper,.MuiDialog-root,.MuiDialog-scrollPaper{display:block!important;height:auto!important;overflow:visible!important;position:static!important}.MuiDialog-paper{box-shadow:none!important;margin:0!important;max-height:none!important;max-width:none!important;width:100%!important}.MuiDialogContent-root{height:auto!important;max-height:none!important;overflow:visible!important;padding:0!important}.MuiBackdrop-root{display:none!important}}.kanban-board{background:linear-gradient(135deg,#f5f7fa,#e8ecf1);border-radius:12px;gap:24px;padding:24px}.kanban-column{border-radius:12px;box-shadow:0 4px 12px #00000014;min-width:320px;transition:transform .2s ease,box-shadow .2s ease}.kanban-column:hover{box-shadow:0 8px 24px #0000001f;transform:translateY(-2px)}.kanban-column-header{border-bottom:none;border-radius:12px 12px 0 0;color:#fff;padding:18px 20px}.kanban-column-header,.kanban-column.TODO .kanban-column-header{background:linear-gradient(135deg,#667eea,#764ba2)}.kanban-column.IN_PROGRESS .kanban-column-header{background:linear-gradient(135deg,#f093fb,#f5576c)}.kanban-column.TESTING .kanban-column-header{background:linear-gradient(135deg,#4facfe,#00f2fe)}.kanban-column.DONE .kanban-column-header{background:linear-gradient(135deg,#43e97b,#38f9d7)}.kanban-column-title{color:#fff;font-size:17px;font-weight:700;letter-spacing:.5px;text-shadow:0 2px 4px #0000001a}.kanban-column-count{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff40;border-radius:20px;box-shadow:0 2px 8px #0000001a;color:#fff;font-size:14px;font-weight:700;padding:6px 14px}.task-card{border-radius:10px;box-shadow:0 2px 8px #0000000f;overflow:hidden;padding:14px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.task-card:before{background:linear-gradient(90deg,#667eea,#764ba2);content:"";height:3px;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s ease}.task-card:hover:before{opacity:1}.task-card:hover{border-color:#cbd5e1;box-shadow:0 8px 16px #0000001f;transform:translateY(-4px)}.task-card:active{transform:translateY(-2px)}.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:#0000;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:#0000;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#0000;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 0.5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;background-color:var(--xy-background-color-default);background-color:var(--xy-background-color,var(--xy-background-color-default));direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:#0000;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:#0000;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#777;--xy-background-pattern-lines-color-default:#777;--xy-background-pattern-cross-color-default:#777;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 0.5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-default);background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{height:100%;left:0;position:absolute;top:0;width:100%}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{pointer-events:none;transform-origin:0 0;z-index:2}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke-default);stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width-default);stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke-default);stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width-default);stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;pointer-events:none;position:absolute}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path,.react-flow__edge.selected .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected-default);stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke-default);stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke-default);fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{overflow:visible;position:absolute;z-index:1001}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{box-sizing:border-box;cursor:default;pointer-events:all;position:absolute;transform-origin:0 0;-webkit-user-select:none;user-select:none}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{pointer-events:none;transform-origin:left top;z-index:3}.react-flow__nodesselection-rect{cursor:grab;pointer-events:all;position:absolute}.react-flow__handle{background-color:var(--xy-handle-background-color-default);background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;height:6px;min-height:5px;min-width:5px;pointer-events:none;position:absolute;width:6px}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{cursor:crosshair;pointer-events:all}.react-flow__handle-bottom{bottom:0;left:50%;top:auto;transform:translate(-50%,50%)}.react-flow__handle-top{left:50%;top:0;transform:translate(-50%,-50%)}.react-flow__handle-left{left:0;top:50%;transform:translate(-50%,-50%)}.react-flow__handle-right{right:0;top:50%;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{margin:15px;position:absolute;z-index:5}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.bottom.center,.react-flow__panel.top.center{left:50%;transform:translateX(-15px) translateX(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color-default);background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));font-size:10px;margin:0;padding:2px 3px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{pointer-events:none}.react-flow__edgelabel-renderer,.react-flow__viewport-portal{height:100%;left:0;position:absolute;top:0;-webkit-user-select:none;user-select:none;width:100%}.react-flow__minimap{background:var(--xy-minimap-background-color-default);background:var(
    --xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default))
  )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-default);fill:var(
      --xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default))
    );stroke:var(--xy-minimap-mask-stroke-color-default);stroke:var(
      --xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default))
    );stroke-width:var(--xy-minimap-mask-stroke-width-default);stroke-width:var(
      --xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default))
    )}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-default);fill:var(
      --xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default))
    );stroke:var(--xy-minimap-node-stroke-color-default);stroke:var(
      --xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default))
    );stroke-width:var(--xy-minimap-node-stroke-width-default);stroke-width:var(
      --xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default))
    )}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-dots-color-default);fill:var(
      --xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default))
    )}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-lines-color-default);stroke:var(
      --xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default))
    )}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-cross-color-default);stroke:var(
      --xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default))
    )}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow-default);box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));display:flex;flex-direction:column}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{align-items:center;background:var(--xy-controls-button-background-color-default);background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(
        --xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default))
      );color:var(--xy-controls-button-color-default);color:var(
      --xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default))
    );cursor:pointer;display:flex;height:26px;justify-content:center;padding:4px;-webkit-user-select:none;user-select:none;width:26px}.react-flow__controls-button svg{fill:currentColor;max-height:12px;max-width:12px;width:100%}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-default,.react-flow__node-group,.react-flow__node-input,.react-flow__node-output{background-color:var(--xy-node-background-color-default);background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));border:var(--xy-node-border,var(--xy-node-border-default));border-radius:var(--xy-node-border-radius-default);border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));color:var(--xy-node-color-default);color:var(--xy-node-color,var(--xy-node-color-default));font-size:12px;padding:10px;text-align:center;width:150px}.react-flow__node-default.selectable:hover,.react-flow__node-group.selectable:hover,.react-flow__node-input.selectable:hover,.react-flow__node-output.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover-default);box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible,.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected-default);box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color-default);background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color-default);background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-default);background:var(
        --xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default))
      );color:var(--xy-controls-button-color-hover-default);color:var(
        --xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default))
      )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(
        --xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default))
      )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.bottom,.react-flow__resize-control.top{cursor:ns-resize}.react-flow__resize-control.bottom.right,.react-flow__resize-control.top.left{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color-default);background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;height:5px;translate:-50% -50%;width:5px}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.bottom.left,.react-flow__resize-control.handle.top.left{left:0}.react-flow__resize-control.handle.bottom.right,.react-flow__resize-control.handle.top.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{height:100%;top:0;transform:translate(-50%);width:1px}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.bottom,.react-flow__resize-control.line.top{height:1px;left:0;transform:translateY(-50%);width:100%}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color-default);fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color-default);fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}.interactive-design-dialog{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0000004d;display:flex;flex-direction:column;height:90vh;overflow:hidden;width:95vw}.design-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-bottom:1px solid #ddd;color:#fff;display:flex;justify-content:space-between;padding:16px 24px}.design-header h2{font-size:20px;font-weight:600;margin:0}.close-btn{background:#0000;border-radius:4px;color:#fff;transition:background .2s}.close-btn:hover{background:#fff3}.design-toolbar{background:#f5f5f5;border-bottom:1px solid #ddd;display:flex;flex-wrap:wrap;gap:8px;padding:12px 16px}.tool-btn{align-items:center;background:#fff;border:2px solid #ddd;border-radius:6px;color:#333;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:6px;padding:8px 16px;transition:all .2s}.tool-btn:hover{background:#f0f0ff;border-color:#667eea;transform:translateY(-1px)}.tool-btn.active{background:#667eea;border-color:#667eea;box-shadow:0 2px 8px #667eea4d;color:#fff}.toolbar-divider{background:#ddd;margin:0 8px;width:1px}.design-canvas{background:#fafafa;flex:1 1;position:relative}.design-info{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;min-width:150px;padding:12px}.tool-hint{animation:pulse 2s infinite;background:#667eea;border-radius:8px;box-shadow:0 2px 8px #0003;color:#fff;font-size:14px;font-weight:600;padding:12px 16px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.8}}.design-node{background:#fff;border:2px solid #ddd;border-radius:8px;box-shadow:0 2px 8px #0000001a;min-width:180px;padding:0;transition:all .2s ease}.design-node.selected{border-color:#667eea;box-shadow:0 4px 16px #667eea4d}.design-node:hover{box-shadow:0 4px 12px #00000026}.design-node-header{align-items:center;border-radius:6px 6px 0 0;color:#fff;display:flex;font-size:14px;font-weight:600;gap:8px;padding:10px 12px}.design-node-body{padding:12px}.design-field{align-items:center;display:flex;font-size:13px;justify-content:space-between;margin-bottom:8px}.design-field:last-child{margin-bottom:0}.design-field-label{color:#666;font-weight:500}.design-field-value{color:#333;font-weight:600}.design-field-input{border:1px solid #ddd;border-radius:4px;font-size:13px;padding:4px 8px;text-align:right;width:80px}.design-field-input[type=number]::-webkit-inner-spin-button,.design-field-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.design-field-input[type=number]{-moz-appearance:textfield}.design-field-input:focus{border-color:#667eea;outline:none}.design-field-select{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:13px;padding:4px 8px}.design-field-select:focus{border-color:#667eea;outline:none}.design-olt-node .design-node-header{background:linear-gradient(135deg,#2196f3,#1976d2)}.design-olt-node{border-color:#2196f3}.design-splitter-node .design-node-header{background:linear-gradient(135deg,#fa709a,#fee140)}.design-splitter-node{border-color:#fa709a}.design-onu-node .design-node-header{background:linear-gradient(135deg,#4caf50,#388e3c)}.design-onu-node{border-color:#4caf50}.design-pole-node .design-node-header{background:linear-gradient(135deg,#9c27b0,#6a1b9a)}.design-pole-node{border-color:#9c27b0}.design-warning{background:#fff3cd;border:1px solid #ffc107;border-radius:4px;color:#856404}.design-error,.design-warning{font-size:12px;margin-top:8px;padding:8px}.design-error{background:#f8d7da;border:1px solid #f44336;border-radius:4px;color:#721c24}.design-success{background:#d4edda;border:1px solid #4caf50;border-radius:4px;color:#155724;font-size:12px;margin-top:8px;padding:8px}.fiber-node{background:#fff;border:2px solid #ddd;border-radius:8px;box-shadow:0 2px 8px #0000001a;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;min-width:200px;padding:0;transition:all .2s ease}.fiber-node.selected{border-color:#1976d2;box-shadow:0 4px 16px #1976d24d}.fiber-node:hover{box-shadow:0 4px 12px #00000026}.node-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border-radius:6px 6px 0 0;color:#fff;display:flex;font-size:14px;font-weight:600;gap:8px;padding:10px 12px}.node-icon{font-size:18px}.node-title{flex:1 1}.node-body{padding:12px}.customers-section{border-top:1px solid #e0e0e0;margin-top:8px;padding-top:8px}.customers-input{border:1px solid #ddd;border-radius:4px;font-size:13px;padding:4px 8px;text-align:center;width:60px}.customers-input:focus{border-color:#1976d2;outline:none}.customers-progress{background:#e0e0e0;border-radius:3px;height:6px;margin-top:6px;overflow:hidden}.progress-bar{border-radius:3px;height:100%;transition:width .3s ease,background-color .3s ease}.node-field{align-items:center;display:flex;font-size:13px;justify-content:space-between;margin-bottom:8px}.node-field:last-child{margin-bottom:0}.field-label{color:#666;font-weight:500}.field-value{color:#333;font-weight:600}.field-value.editable{color:#1976d2;cursor:pointer;text-decoration:underline;-webkit-text-decoration-style:dotted;text-decoration-style:dotted}.field-value.editable:hover{color:#1565c0}.field-select{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:13px;font-weight:600;padding:4px 8px}.field-select:focus{border-color:#1976d2;outline:none}.olt-node .node-header{background:linear-gradient(135deg,#f093fb,#f5576c)}.olt-node{border-color:#f5576c}.splitter-node .node-header{background:linear-gradient(135deg,#fa709a,#fee140)}.splitter-node{border-color:#fa709a}.splitter-node.over-limit{background:#ffebee;border-color:#f44336}.splitter-node.over-limit .node-header{background:linear-gradient(135deg,#f44336,#e91e63)}.onu-node .node-header{background:linear-gradient(135deg,#30cfd0,#330867)}.onu-node{border-color:#30cfd0}.onu-node.loss-ok{border-color:#4caf50}.onu-node.loss-error{background:#ffebee;border-color:#f44336}.pole-node .node-header{background:linear-gradient(135deg,#2196f3,#1976d2)}.pole-node{border-color:#2196f3}.cassette-indicator{background:#e3f2fd;border-radius:4px;margin-top:4px;padding:4px 8px}.cassette-indicator .field-value{color:#4caf50;font-weight:700}.no-cassette{color:#999;font-style:italic;padding:8px}.loss-field.loss-ok .field-value{color:#4caf50}.loss-field.loss-error .field-value{color:#f44336;font-weight:700}.cascade-ratio.success{background:#e8f5e9}.cascade-ratio.error,.cascade-ratio.success{border-radius:4px;margin-top:4px;padding:6px 8px}.cascade-ratio.error{background:#ffebee}.cascade-ratio.success .field-value{color:#4caf50}.cascade-ratio.error .field-value{color:#f44336;font-weight:700}.node-warning{background:#fff3e0;border:1px solid #ff9800;border-radius:4px;color:#e65100;font-size:12px;font-weight:600;margin-top:8px;padding:6px 8px;text-align:center}.fiber-handle{background:#fff;border:2px solid #1976d2;border-radius:50%;height:12px;width:12px}.fiber-handle.source-handle{background:#4caf50;border-color:#2e7d32}.fiber-handle.target-handle{background:#2196f3;border-color:#1565c0}.fiber-handle:hover{box-shadow:0 0 8px #1976d280;height:14px;width:14px}.react-flow__node{cursor:grab}.react-flow__node.selected{cursor:grabbing}.react-flow__edge-path{stroke-width:3;transition:stroke-width .2s ease}.react-flow__edge.selected .react-flow__edge-path{stroke-width:4}.react-flow__edge-text{fill:#333;font-size:12px;font-weight:600}.dialog-overlay{animation:fadeIn .25s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f172a99;bottom:0;left:0;right:0;top:0;z-index:2000}.dialog,.dialog-container{animation:slideUp .3s cubic-bezier(.4,0,.2,1);background:#fff;border-radius:16px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,0 0 0 1px #0000000d;display:flex;flex-direction:column;max-height:90vh;max-width:540px;overflow:hidden;width:90%}.dialog-header{background:linear-gradient(135deg,#6366f1,#8b5cf6);border-bottom:1px solid #e2e8f0;color:#fff;padding:24px 28px;position:relative}.dialog-header:after{background:linear-gradient(90deg,#0000,#ffffff4d 50%,#0000);bottom:0;content:"";height:1px;left:0;position:absolute;right:0}.dialog-header h2{font-size:22px;letter-spacing:-.02em;text-shadow:0 1px 2px #0000001a}.dialog-close{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff1a;border:1px solid #fff3;border-radius:8px;color:#fff;font-size:20px;height:36px;transition:all .2s cubic-bezier(.4,0,.2,1);width:36px}.dialog-close:hover{background:#fff3;border-color:#ffffff4d;transform:scale(1.05)}.dialog-close:active{transform:scale(.95)}.dialog-content{background:#fafbfc;flex:1 1;overflow-y:auto;padding:28px}.dialog-error{background:linear-gradient(135deg,#fef2f2,#fee2e2);border-left:4px solid #ef4444;border-radius:10px;box-shadow:0 2px 8px #dc26261a;color:#dc2626;font-size:15px;font-weight:500;margin-bottom:20px;padding:16px 18px}.form-group label{color:#1e293b;letter-spacing:-.01em;margin-bottom:10px}.form-group input,.form-group select,.form-group textarea{background:#fff;border:2px solid #e2e8f0;border-radius:10px;font-family:inherit;font-size:15px;padding:12px 16px;transition:all .2s cubic-bezier(.4,0,.2,1);width:100%}.form-group input:hover,.form-group select:hover,.form-group textarea:hover{border-color:#cbd5e1}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{background:#fff;border-color:#6366f1;box-shadow:0 0 0 3px #6366f11a}.form-group textarea{line-height:1.6;min-height:100px}.form-hint{color:#64748b;display:block;font-size:13px;line-height:1.5;margin-top:8px}.coordinates-display{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:10px;box-shadow:inset 0 2px 4px #00000005;color:#475569}.coordinates-display,.location-display{display:flex;font-family:SF Mono,Monaco,Cascadia Code,monospace;font-size:14px;gap:20px;padding:14px 18px}.location-display{background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid #bfdbfe;border-radius:10px;box-shadow:inset 0 2px 4px #3b82f60d;color:#1e40af}.dialog-actions{border-top:1px solid #e2e8f0;gap:12px;margin-top:24px;padding-top:24px}.btn-primary,.btn-secondary,.btn-success{border:none;border-radius:10px;cursor:pointer;font-size:15px;font-weight:600;letter-spacing:-.01em;overflow:hidden;padding:12px 24px;position:relative;transition:all .2s cubic-bezier(.4,0,.2,1)}.btn-primary{background:linear-gradient(135deg,#6366f1,#8b5cf6);box-shadow:0 4px 6px -1px #6366f133,0 2px 4px -1px #6366f11a}.btn-primary:before{background:linear-gradient(135deg,#fff3,#0000);bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s}.btn-primary:hover:not(:disabled){box-shadow:0 10px 15px -3px #6366f14d,0 4px 6px -2px #6366f133}.btn-primary:hover:not(:disabled):before{opacity:1}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-primary:disabled{background:#cbd5e1;box-shadow:none}.btn-secondary{background:#fff;border:2px solid #e2e8f0;box-shadow:0 1px 2px #0000000d;color:#475569}.btn-secondary:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1;box-shadow:0 4px 6px -1px #0000001a;transform:translateY(-1px)}.btn-secondary:active:not(:disabled){transform:translateY(0)}.btn-success{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 4px 6px -1px #10b98133,0 2px 4px -1px #10b9811a}.btn-success:hover:not(:disabled){box-shadow:0 10px 15px -3px #10b9814d,0 4px 6px -2px #10b98133;transform:translateY(-2px)}.btn-success:active:not(:disabled){transform:translateY(0)}.btn-success:disabled{background:#cbd5e1;box-shadow:none;cursor:not-allowed}.stats-panel{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:20px}.stats-panel h3{color:#333;font-size:18px;margin:0 0 16px}.stats-grid{grid-template-columns:repeat(2,1fr)}.stat-item{background:#f8f9fa;border-radius:6px;padding:12px}.stat-value{color:#667eea}.stat-unit{color:#999;font-size:14px;margin-left:4px}.validation-results{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:20px}.validation-results h3{color:#333;font-size:18px;margin:0 0 16px}.validation-item{align-items:center;border-radius:6px;display:flex;gap:12px;margin-bottom:8px;padding:12px}.validation-item.success{background:#e8f5e9;color:#2e7d32}.validation-item.error{background:#ffebee;color:#c62828}.validation-item.warning{background:#fff3e0;color:#ef6c00}.validation-icon{font-size:20px}.validation-message{flex:1 1;font-size:14px}@media (max-width:768px){.dialog-overlay{align-items:center;justify-content:center;padding:16px;z-index:2000}.dialog,.dialog-container{border-radius:8px;box-shadow:0 20px 60px #0000004d;display:flex!important;flex-direction:column!important;height:auto;margin:0;max-height:95vh!important;max-width:95%;overflow:hidden!important;position:relative;width:95%}.dialog-header{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 1px 4px #0000001a;display:flex;flex-shrink:0;justify-content:space-between;min-height:44px;padding:10px 14px;position:-webkit-sticky;position:sticky;top:0;z-index:10}.dialog-header h2{font-size:15px;font-weight:700;margin:0}.dialog-close{background:#0000001a!important;border:1px solid #0003!important;border-radius:6px;color:#374151!important;flex-shrink:0;font-size:20px;height:32px;width:32px}.dialog-close:hover{background:#0003!important;border-color:#0000004d!important}.dialog-close:active{background:#0000004d!important}.dialog-content{-webkit-overflow-scrolling:touch!important;flex:1 1 auto;max-height:100%;min-height:0;overflow-x:hidden!important;overflow-y:scroll!important;overscroll-behavior:contain;padding:12px 16px 16px;position:relative;touch-action:pan-y!important}.dialog-footer{align-items:center;background:#fff;border-top:2px solid #e0e0e0;bottom:0;box-shadow:0 -2px 8px #0000000d;display:flex;min-height:80px;padding:16px;position:-webkit-sticky;position:sticky;z-index:10}.dialog-actions{background:#fff;border-top:none;border-top:1px solid #e5e7eb;box-shadow:0 -1px 4px #0000001a;flex-direction:column-reverse;flex-shrink:0;gap:12px;gap:8px;margin-top:0;padding-top:0;padding:10px 14px;position:relative;width:100%;z-index:1}.btn-primary,.btn-secondary,.btn-success{-webkit-tap-highlight-color:transparent;border-radius:8px;font-size:15px;font-weight:600;min-height:44px;padding:12px 16px;touch-action:manipulation;width:100%}.stats-grid{gap:12px;grid-template-columns:1fr}.stat-item{border-radius:10px;padding:16px}.stat-value{font-size:32px}.form-group{margin-bottom:14px}.form-group label{display:block;font-size:14px;font-weight:600;margin-bottom:6px}.form-group input,.form-group select,.form-group textarea{-webkit-appearance:none;border-radius:8px;border-width:1px;box-sizing:border-box;font-size:15px;min-height:44px;padding:10px 12px;width:100%}.form-group textarea{min-height:100px}.coordinates-display,.location-display{flex-direction:column;font-size:15px;gap:10px;padding:14px}.validation-item{border-radius:10px;font-size:16px;padding:16px}.validation-icon{font-size:26px;min-width:32px}.validation-message{font-size:15px;line-height:1.5}.dialog-error{border-radius:10px;font-size:16px;line-height:1.5;padding:16px}.form-hint{font-size:14px;line-height:1.4;margin-top:8px}input[type=email],input[type=number],input[type=password],input[type=text],select,textarea{font-size:16px!important}}@media (min-width:769px) and (max-width:1024px){.dialog,.dialog-container{max-width:90%;width:90%}.stats-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1025px){.dialog,.dialog-container{max-width:600px}}@media (max-width:768px) and (orientation:landscape){.dialog,.dialog-container{height:100vh;max-height:100vh}.dialog-header{padding:12px 16px}.dialog-header h2{font-size:16px}.dialog-content{padding:12px 16px 100px}}@supports (padding-bottom:env(safe-area-inset-bottom)){@media (max-width:768px){.dialog-actions{padding-bottom:calc(16px + env(safe-area-inset-bottom))}}@media (max-width:768px) and (orientation:landscape){.dialog-actions{padding-bottom:calc(16px + env(safe-area-inset-bottom))}}}@media print{.dialog-overlay{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:none!important}.dialog,.dialog-container,.dialog-overlay{display:block!important;height:auto!important;overflow:visible!important;position:static!important}.dialog,.dialog-container{animation:none!important;border-radius:0!important;box-shadow:none!important;margin:0!important;max-height:none!important;max-width:none!important;padding:0!important;width:100%!important}.dialog-close,.dialog-header{display:none!important}.dialog-content{background:#fff!important;height:auto!important;max-height:none!important;overflow:visible!important;padding:0!important}.dialog-actions,.dialog-footer{display:none!important}}.settings-dialog{max-width:700px;width:90vw}.settings-tabs{border-bottom:2px solid #e0e0e0;display:flex;gap:0;margin-bottom:20px}.settings-tab{background:#0000;border:none;border-bottom:3px solid #0000;color:#666;cursor:pointer;flex:1 1;font-size:14px;font-weight:600;padding:12px 20px;transition:all .2s}.settings-tab:hover{background:#f5f5f5;color:#333}.settings-tab.active{background:#f5f5ff;border-bottom-color:#667eea;color:#667eea}.settings-body{max-height:60vh;overflow-y:auto}.settings-section{padding:0}.settings-section h3{color:#333;font-size:20px;margin:0 0 20px}.settings-section h4{color:#555;font-size:16px;margin:20px 0 12px}.settings-group{margin-bottom:30px}.settings-buttons{display:flex;flex-direction:column;gap:12px}.settings-button{align-items:center;background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;display:flex;gap:16px;padding:16px;text-align:left;transition:all .2s;width:100%}.settings-button:hover:not(:disabled){background:#f5f5ff;border-color:#667eea;box-shadow:0 4px 12px #667eea26;transform:translateY(-2px)}.settings-button:disabled{cursor:not-allowed;opacity:.5}.settings-button.export{border-color:#4caf50}.settings-button.export:hover:not(:disabled){background:#f1f8f4;border-color:#4caf50}.settings-button.import{border-color:#2196f3}.settings-button.import:hover:not(:disabled){background:#f0f7ff;border-color:#2196f3}.button-icon{flex-shrink:0;font-size:32px}.button-content{flex:1 1}.button-title{color:#333;font-size:15px;font-weight:600;margin-bottom:4px}.button-description{color:#999;font-size:13px}.settings-message{border-radius:6px;font-size:14px;font-weight:500;margin-bottom:20px;padding:12px 16px}.settings-message.success{background:#e8f5e9;border:1px solid #4caf50;color:#2e7d32}.settings-message.error{background:#ffebee;border:1px solid #f44336;color:#c62828}.settings-warning{background:#fff3cd;border:1px solid #ffc107;border-radius:6px;color:#856404;font-size:13px;margin-top:12px;padding:12px}.settings-info{background:#f5f5f5;border-radius:6px;margin-top:20px;padding:16px}.info-item{border-bottom:1px solid #e0e0e0;padding:8px 0}.info-item:last-child{border-bottom:none}.info-value{color:#333;font-size:13px}.login-dialog{max-width:450px;width:90%}.login-form{display:flex;flex-direction:column;gap:20px;padding:20px}.form-group{gap:8px}.form-group input{border:1px solid #ddd;border-radius:4px;font-size:14px;padding:10px 12px;transition:border-color .2s}.form-group input:focus{border-color:#2196f3;box-shadow:0 0 0 3px #2196f31a;outline:none}.error-message{border-radius:4px}.login-hint{background:#f0f8ff;border:1px solid #b3d9ff;border-radius:4px;color:#06c;font-size:13px;padding:12px}.login-hint code{background:#fff;border-radius:3px;font-family:Courier New,monospace;font-size:12px;padding:2px 6px}.dialog-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:10px}.btn-primary,.btn-secondary{border-radius:4px;font-weight:600;padding:10px 20px}.btn-primary{background:#2196f3}.btn-primary:hover:not(:disabled){background:#1976d2}.btn-primary:disabled{background:#ccc}.btn-secondary{background:#f5f5f5;color:#333}.btn-secondary:hover:not(:disabled){background:#e0e0e0}.btn-secondary:disabled{cursor:not-allowed;opacity:.5}.admin-panel{background:#fff;display:flex;flex-direction:column;max-height:90vh;max-width:1200px;width:95%}.admin-panel *,.admin-panel button,.admin-panel div,.admin-panel input,.admin-panel label,.admin-panel p,.admin-panel select,.admin-panel span,.admin-panel td,.admin-panel textarea,.admin-panel th{color:#333!important}.admin-tabs{background:#f5f5f5;border-bottom:2px solid #e0e0e0;display:flex;gap:0;padding:0 20px}.admin-tab{background:#0000;border:none;border-bottom:3px solid #0000;color:#666;cursor:pointer;font-size:14px;font-weight:600;margin-bottom:-2px;padding:12px 24px;transition:all .2s}.admin-tab:hover{background:#2196f30d;color:#2196f3}.admin-tab.active{background:#fff;border-bottom-color:#2196f3;color:#2196f3}.admin-content{background:#fff;flex:1 1;overflow-y:auto;padding:20px}.project-permissions,.user-management{display:flex;flex-direction:column;gap:20px}.management-header{align-items:center;border-bottom:2px solid #e0e0e0;display:flex;justify-content:space-between;padding-bottom:15px}.management-header h3{color:#333;font-size:20px;margin:0}.permissions-table,.users-table{overflow-x:auto}.permissions-table table,.users-table table{border-collapse:collapse;font-size:14px;width:100%}.permissions-table th,.users-table th{background:#f5f5f5;border-bottom:2px solid #e0e0e0;color:#333;font-weight:600;padding:12px;text-align:left}.permissions-table td,.users-table td{background:#fff;border-bottom:1px solid #e0e0e0;color:#333!important;padding:12px}.permissions-table tbody tr:hover,.users-table tbody tr:hover{background:#f9f9f9!important}.permissions-table tbody tr:hover td,.users-table tbody tr:hover td{color:#000!important}.role-badge,.status-badge{border-radius:12px;display:inline-block;font-size:12px;font-weight:600;padding:4px 12px}.role-badge-admin{background:#ff5722!important;color:#fff!important}.role-badge-engineer{background:#2196f3!important;color:#fff!important}.role-badge-viewer{background:#4caf50!important;color:#fff!important}.role-badge-guest{background:#9e9e9e!important;color:#fff!important}.status-active{background:#e8f5e9!important;color:#2e7d32!important}.status-inactive{background:#ffebee!important;color:#c62828!important}.perm-badge-owner{background:#ff5722!important;color:#fff!important}.perm-badge-editor{background:#2196f3!important;color:#fff!important}.perm-badge-viewer{background:#4caf50!important;color:#fff!important}.perm-badge-none{background:#9e9e9e!important;color:#fff!important}.btn-icon{background:#f5f5f5;border:none;border-radius:4px;cursor:pointer;font-size:16px;padding:6px 10px;transition:all .2s}.btn-icon:hover{background:#e0e0e0;transform:scale(1.1)}.btn-icon.btn-danger:hover{background:#ffebee}.permission-form,.user-form{display:flex;flex-direction:column;gap:16px;padding:20px}.form-group{gap:6px}.form-group label{font-size:13px}.form-group input,.form-group select{background:#fff!important;border:1px solid #ddd;border-radius:4px;color:#333!important;font-size:14px;padding:10px 12px;transition:border-color .2s}.form-group input:focus,.form-group select:focus{border-color:#2196f3;box-shadow:0 0 0 3px #2196f31a;outline:none}.form-group input:disabled{background:#f5f5f5;color:#999;cursor:not-allowed}.form-group input[type=checkbox]{margin-right:8px;width:auto}.small-dialog{max-width:500px;width:90%}.project-selector{background:#f5f5f5;border-radius:8px;display:flex;flex-direction:column;gap:8px;padding:16px}.project-selector label{color:#333;font-size:14px;font-weight:600}.project-selector select{background:#fff!important;border:1px solid #ddd;border-radius:4px;color:#333!important;font-size:14px;padding:10px 12px}.permissions-header{align-items:center;background:#e3f2fd;border-left:4px solid #2196f3;border-radius:8px;display:flex;justify-content:space-between;padding:16px}.permissions-header h4{color:#1976d2;font-size:16px;margin:0}.permission-select{border:2px solid;border-radius:4px;cursor:pointer;font-size:13px;font-weight:600;padding:6px 10px;transition:all .2s}.permission-select.perm-badge-owner{background:#fff3f0!important;border-color:#ff5722!important;color:#ff5722!important}.permission-select.perm-badge-editor{background:#e3f2fd!important;border-color:#2196f3!important;color:#2196f3!important}.permission-select.perm-badge-viewer{background:#e8f5e9!important;border-color:#4caf50!important;color:#4caf50!important}.permission-select.perm-badge-none{background:#f5f5f5!important;border-color:#9e9e9e!important;color:#9e9e9e!important}.permissions-legend{background:#f9f9f9;border:1px solid #e0e0e0;border-radius:8px;padding:16px}.permissions-legend h5{color:#333;font-size:14px;margin:0 0 12px}.permissions-legend ul{margin:0;padding-left:20px}.permissions-legend li{color:#666;font-size:13px;margin-bottom:8px}.empty-state{background:#fff;padding:40px}.empty-state,.empty-state p{color:#999!important}.loading{background:#fff;color:#666!important;font-size:14px}.info-message{background:#e3f2fd!important;border:1px solid #90caf9;border-radius:4px;color:#1976d2!important;font-size:13px;padding:12px}.search-bar-container{position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);z-index:100}.search-bar-container.collapsed{width:auto}.search-bar-container.expanded{max-width:500px;width:100%}.search-icon-button{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:1px solid #fff3;border-radius:10px;box-shadow:0 2px 4px #0000001a;color:#fff;cursor:pointer;display:flex;filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));font-size:18px;font-weight:600;gap:8px;letter-spacing:-.01em;padding:10px 18px;transition:all .2s cubic-bezier(.4,0,.2,1)}.search-icon-button:hover{background:#ffffff40;border-color:#ffffff4d;box-shadow:0 4px 8px #00000026;transform:translateY(-1px)}.search-icon-button:active{transform:translateY(0)}.search-icon-button:disabled{background:#ffffff1a;border-color:#ffffff1a;box-shadow:none;cursor:not-allowed;opacity:.4}.search-input-wrapper{align-items:center;animation:expandIn .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:1px solid #fff3;border-radius:10px;display:flex;padding:0 12px;position:relative;transition:all .2s cubic-bezier(.4,0,.2,1)}@keyframes expandIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.search-input-wrapper:focus-within{background:#ffffff40;border-color:#fff6;box-shadow:0 4px 12px #00000026}.search-icon{margin-right:10px;opacity:.9}.search-input{background:#0000;border:none;color:#fff;flex:1 1;font-weight:500;outline:none;padding:10px 0}.search-input::placeholder{color:#ffffffb3}.search-input:disabled{cursor:not-allowed;opacity:.5}.search-loading{animation:spin 1s linear infinite;font-size:16px;margin-left:8px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.search-clear{align-items:center;background:#fff3;border-radius:50%;color:#fff;display:flex;font-size:14px;height:24px;justify-content:center;margin-left:8px;transition:all .2s;width:24px}.search-clear:hover{background:#ffffff4d;transform:scale(1.1)}.search-close{align-items:center;background:#fff3;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:16px;font-weight:700;height:32px;justify-content:center;margin-left:8px;transition:all .2s;width:32px}.search-close:hover{background:#ffffff4d;transform:scale(1.05)}@media (max-width:1200px){.search-icon-button{font-size:14px;padding:6px 10px}.search-input-wrapper{padding:0 8px}.search-input{font-size:13px}}@media (max-width:900px){.search-icon-button{padding:8px}.search-bar-container.expanded{background:linear-gradient(135deg,#6366f1,#8b5cf6);box-shadow:0 4px 12px #0003;left:0;max-width:none;padding:0 12px;position:fixed;right:0;top:64px;z-index:2000}}@media (max-width:768px){.search-bar-container.collapsed{display:none}}.search-results-dropdown{animation:slideDown .2s cubic-bezier(.4,0,.2,1);background:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a,0 0 0 1px #0000000d;left:0;max-height:500px;overflow-y:auto;position:absolute;right:0;top:calc(100% + 8px);z-index:3000}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.search-results-header{background:#f8fafc;border-bottom:1px solid #e2e8f0;border-radius:12px 12px 0 0;color:#64748b;font-size:13px;font-weight:600;padding:12px 16px}.search-no-results{color:#64748b;padding:40px 20px;text-align:center}.no-results-icon{display:block;font-size:48px;margin-bottom:12px;opacity:.5}.search-no-results p{font-size:15px;font-weight:500;margin:0}.search-category{border-bottom:1px solid #e2e8f0}.search-category:last-child{border-bottom:none}.search-category-header{align-items:center;background:#f8fafc;border-bottom:1px solid #e2e8f0;display:flex;gap:8px;padding:12px 16px;position:-webkit-sticky;position:sticky;top:0;z-index:1}.category-icon{font-size:16px}.category-title{color:#475569;font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.search-result-item{align-items:center;border-left:3px solid #0000;cursor:pointer;display:flex;gap:12px;padding:12px 16px;transition:all .15s cubic-bezier(.4,0,.2,1)}.search-result-item.selected,.search-result-item:hover{background:linear-gradient(90deg,#eff6ff,#f8fafc);border-left-color:#6366f1}.result-icon{font-size:24px;min-width:32px;text-align:center}.result-content{flex:1 1;min-width:0}.result-name{color:#1e293b;font-size:14px;font-weight:600;margin-bottom:2px}.result-description,.result-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-description{color:#64748b;font-size:12px}.search-results-dropdown::-webkit-scrollbar{width:8px}.search-results-dropdown::-webkit-scrollbar-track{background:#f1f5f9;border-radius:0 12px 12px 0}.search-results-dropdown::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:4px}.search-results-dropdown::-webkit-scrollbar-thumb:hover{background:#94a3b8}@media (max-width:768px){.search-bar-container{max-width:100%}.search-results-dropdown{max-height:400px}.search-input{font-size:16px}}.dropdown{display:inline-block;position:relative}.dropdown-trigger{cursor:pointer}.dropdown-menu{animation:dropdownFadeIn .2s ease-out;background:#fff;border-radius:12px;box-shadow:0 10px 25px -5px #00000026,0 8px 10px -6px #0000001a;min-width:220px;padding:8px;position:absolute;top:calc(100% + 8px);z-index:10000}.dropdown-menu.left{left:0}.dropdown-menu.right{right:0}@keyframes dropdownFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dropdown-item{align-items:center;background:#0000;border:none;border-radius:8px;color:#1f2937;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:12px;padding:12px 16px;text-align:left;transition:all .15s ease;width:100%}.dropdown-item:hover:not(.disabled){background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;transform:translateX(2px)}.dropdown-item.disabled{color:#9ca3af;cursor:not-allowed;opacity:.4}.dropdown-item-icon{flex-shrink:0;font-size:18px;text-align:center;width:24px}.dropdown-item-label{flex:1 1;white-space:nowrap}.dropdown-trigger .dropdown-arrow{display:inline-block;margin-left:6px;transition:transform .2s ease}.dropdown.open .dropdown-trigger .dropdown-arrow{transform:rotate(180deg)}.create-snapshot-dialog{max-width:600px;width:90%}.create-snapshot-dialog .modal-body{padding:24px}.snapshot-info{background:#f8f9fa;border-left:4px solid #4caf50;border-radius:4px;margin-bottom:24px;padding:16px}.snapshot-info p{color:#333;margin:8px 0}.snapshot-info .info-text{color:#666;font-size:14px;margin-top:12px}.form-group{margin-bottom:24px}.form-group .required{color:#f44336}.form-group textarea{border:1px solid #ddd;border-radius:4px;font-family:inherit;font-size:14px;padding:12px;width:100%}.form-group textarea:focus{border-color:#4caf50;box-shadow:0 0 0 2px #4caf501a;outline:none}.char-count{color:#999;font-size:12px;margin-top:4px;text-align:right}.snapshot-examples{background:#fff3cd;border-left:4px solid #ffc107;border-radius:4px;padding:16px}.snapshot-examples .examples-title{color:#856404;font-weight:600;margin-bottom:8px}.snapshot-examples ul{margin:0;padding-left:20px}.snapshot-examples li{color:#856404;font-size:14px;margin:4px 0}.modal-footer{gap:12px}.btn-cancel,.btn-confirm{border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:all .2s}.btn-cancel{background:#f5f5f5;color:#666}.btn-cancel:hover{background:#e0e0e0}.btn-confirm{background:#4caf50;color:#fff}.btn-confirm:hover{background:#45a049;box-shadow:0 2px 8px #4caf504d;transform:translateY(-1px)}.snapshots-dialog{display:flex;flex-direction:column;max-height:90vh;max-width:900px;width:95%}.snapshots-dialog .modal-body{display:flex;flex:1 1;flex-direction:column;overflow:hidden;padding:0}.snapshots-filters{background:#f8f9fa;border-bottom:1px solid #eee;display:flex;gap:8px;padding:16px}.snapshots-filters button{background:#fff;border:1px solid #ddd;border-radius:4px;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .2s}.snapshots-filters button:hover{background:#f5f5f5}.snapshots-filters button.active{background:#4caf50;border-color:#4caf50;color:#fff}.empty-state,.loading-state{color:#999;padding:60px 24px;text-align:center}.empty-state .empty-hint{color:#bbb;font-size:14px}.snapshots-list{flex:1 1;overflow-y:auto;padding:16px}.snapshot-item{align-items:center;background:#fff;border:1px solid #eee;border-radius:8px;display:flex;gap:16px;margin-bottom:12px;padding:16px;transition:all .2s}.snapshot-item:hover{border-color:#4caf50;box-shadow:0 2px 8px #0000001a}.snapshot-icon{flex-shrink:0;font-size:32px}.snapshot-info{flex:1 1;min-width:0}.snapshot-description{color:#333;font-weight:600;margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.snapshot-meta{color:#666;display:flex;flex-wrap:wrap;font-size:13px;gap:16px}.snapshot-type{background:#e3f2fd;border-radius:3px;color:#1976d2;font-weight:500;padding:2px 8px}.snapshot-date{color:#999}.snapshot-author{color:#666}.snapshot-actions{flex-shrink:0}.btn-restore{background:#4caf50;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:600;padding:8px 16px;transition:all .2s}.btn-restore:hover{background:#45a049;box-shadow:0 2px 8px #4caf504d}.modal-footer{align-items:center;background:#f8f9fa;border-top:1px solid #eee;justify-content:space-between;padding:16px 24px}.footer-info{flex:1 1}.footer-info p{color:#666;font-size:12px;margin:4px 0}.btn-close{background:#f5f5f5;border-radius:4px;color:#666;font-weight:600;padding:10px 20px}.btn-close:hover{background:#e0e0e0}.snapshots-list::-webkit-scrollbar{width:8px}.snapshots-list::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.snapshots-list::-webkit-scrollbar-thumb{background:#888;border-radius:4px}.snapshots-list::-webkit-scrollbar-thumb:hover{background:#555}.header{align-items:center;background:linear-gradient(135deg,#6366f1,#8b5cf6);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;color:#fff;display:flex;gap:24px;height:64px;justify-content:space-between;min-width:0;padding:0 24px;position:relative}.header:after{background:linear-gradient(90deg,#0000,#ffffff4d 50%,#0000);bottom:0;content:"";height:1px;left:0;position:absolute;right:0}.header-left{flex:0 1 auto;gap:20px}.header-center,.header-left{align-items:center;display:flex;min-width:0}.header-center{flex:1 1 auto;justify-content:center;padding:0 20px}.view-mode-toggle{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:1px solid #fff3;border-radius:12px;box-shadow:inset 0 2px 4px #0000001a;display:flex;flex-shrink:0;gap:6px;padding:6px;white-space:nowrap}.toggle-button{align-items:center;background:#0000;border:none;border-radius:8px;color:#ffffffd9;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:8px;letter-spacing:-.01em;padding:10px 20px;transition:all .2s cubic-bezier(.4,0,.2,1)}.toggle-button:hover{background:#ffffff26;color:#fff;transform:translateY(-1px)}.toggle-button.active{background:#fff;box-shadow:0 4px 6px -1px #00000026,0 2px 4px -1px #0000001a;color:#6366f1;font-weight:700;transform:translateY(-1px)}.toggle-button span{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));font-size:18px}.header-title{font-size:22px;font-weight:700;letter-spacing:-.02em;margin:0;text-shadow:0 2px 4px #0000001a}.header-project{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:1px solid #fff3;border-radius:10px;box-shadow:0 2px 4px #0000001a;display:flex;font-size:14px;gap:10px;padding:10px 16px}.header-project-label{font-weight:500;opacity:.85}.header-project-name{font-weight:700;letter-spacing:-.01em;text-shadow:0 1px 2px #0000001a}.header-right{flex:1 1 auto;flex-wrap:nowrap;gap:12px;justify-content:flex-end;min-width:0}.header-button,.header-right{align-items:center;display:flex}.header-button{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff26;border:1px solid #fff3;border-radius:10px;box-shadow:0 2px 4px #0000001a;color:#fff;cursor:pointer;font-size:14px;font-weight:600;gap:8px;letter-spacing:-.01em;padding:10px 18px;transition:all .2s cubic-bezier(.4,0,.2,1)}.header-button:hover{background:#ffffff40;border-color:#ffffff4d;box-shadow:0 4px 8px #00000026;transform:translateY(-1px)}.header-button:active{transform:translateY(0)}.header-button span{filter:drop-shadow(0 1px 2px rgba(0,0,0,.1));font-size:18px}.header-button.fiber-topology-btn,.header-button.interactive-design-btn,.header-button.network-design-btn{background:linear-gradient(135deg,#ffffff40,#ffffff26);border:1px solid #ffffff4d;box-shadow:0 4px 6px -1px #00000026,0 2px 4px -1px #0000001a,inset 0 1px 0 #fff3;font-weight:700}.header-button.fiber-topology-btn:hover,.header-button.interactive-design-btn:hover,.header-button.network-design-btn:hover{background:linear-gradient(135deg,#ffffff59,#ffffff40);border-color:#fff6;box-shadow:0 8px 12px -2px #0003,0 4px 6px -1px #0000001a,inset 0 1px 0 #ffffff4d;transform:translateY(-2px)}.header-button:disabled{background:#ffffff1a;border-color:#ffffff1a;box-shadow:none;cursor:not-allowed;opacity:.4}.user-info{align-items:center;border-left:1px solid #fff3;display:flex;gap:12px;padding:0 12px}.user-name{background:#f5f5f5;border-radius:20px;color:#333;font-size:14px;font-weight:600;padding:8px 12px}.logout-btn{background:linear-gradient(135deg,#ef4444,#dc2626)!important;border:1px solid #ffffff4d!important;box-shadow:0 4px 6px -1px #ef44444d,0 2px 4px -1px #ef444433!important;color:#fff!important}.logout-btn:hover{background:linear-gradient(135deg,#dc2626,#b91c1c)!important;box-shadow:0 8px 12px -2px #ef444466,0 4px 6px -1px #ef44444d!important;transform:translateY(-2px)!important}.admin-btn:hover,.login-btn:hover{opacity:.9}.header-button:disabled:hover{background:#fff3;box-shadow:none;transform:none}.projekty-btn{margin-right:8px;order:-1}.tools-dropdown-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;color:#fff}.tools-dropdown-btn:hover{background:linear-gradient(135deg,#5a67d8,#6b46c1)}.dropdown-arrow{display:inline-block;font-size:10px;margin-left:4px;opacity:.8;transition:transform .2s ease}.mobile-project-selector{background:#ffffff1a;border-radius:12px;margin-bottom:16px;padding:16px;width:100%}.mobile-project-header{align-items:center;border-bottom:1px solid #fff3;display:flex;gap:10px;margin-bottom:12px;padding-bottom:12px}.mobile-project-icon{font-size:24px}.mobile-project-label{color:#fff;font-size:16px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.mobile-project-list{display:flex;flex-direction:column;gap:8px}.mobile-project-item{align-items:center;background:#ffffff1a;border:1px solid #fff3;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:15px;font-weight:500;gap:12px;min-height:52px;padding:12px 16px;text-align:left;transition:all .2s cubic-bezier(.4,0,.2,1);width:100%}.mobile-project-item:active{transform:scale(.98)}.mobile-project-item:hover{background:#ffffff26;border-color:#ffffff4d}.mobile-project-item.active{background:#ffffff40;border-color:#fff6;font-weight:700}.mobile-project-item.disabled{background:#ffffff0d;border-color:#ffffff1a;cursor:not-allowed;opacity:.5}.mobile-project-item.disabled:hover{background:#ffffff0d;border-color:#ffffff1a;transform:none}.mobile-project-item.disabled:active{transform:none}.mobile-project-item-icon{flex-shrink:0;font-size:20px}.mobile-project-item-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-no-projects{color:#ffffffb3;font-size:14px;font-style:italic;padding:12px;text-align:center}.desktop-only{display:flex}@media (max-width:1024px){.desktop-only{display:none!important}}.mobile-menu-toggle{background:#fff3;border:none;border-radius:6px;color:#fff;cursor:pointer;display:none;font-size:24px;padding:8px 12px;transition:background .2s}.mobile-menu-toggle:hover{background:#ffffff4d}@media (max-width:1200px){.header{gap:10px;padding:0 12px}.header-title{font-size:16px}.header-project{display:none}.header-center{flex:1 1;min-width:200px}.view-mode-toggle{gap:4px;padding:4px}.toggle-button{font-size:0;padding:8px 12px}.toggle-button span{font-size:18px;margin:0}.header-right{gap:6px}.header-button{font-size:0;padding:8px 12px}.header-button span{font-size:18px;margin:0}.login-btn,.logout-btn{font-size:12px}.login-btn span,.logout-btn span{font-size:14px;margin-right:4px}.user-name{display:none}}@media (max-width:900px){.header-left{flex:0 0 auto}.header-center{flex:1 1;padding:0 10px}.header-right{flex:0 0 auto}.view-mode-toggle{gap:4px;padding:4px}.toggle-button{font-size:13px;padding:8px 12px}}@media (max-width:1024px){.header{padding:0 8px}.mobile-menu-toggle{align-items:center;display:flex;justify-content:center}.header-left{gap:10px}.header-title{font-size:14px}.header-center,.header-right{display:none}.header-right.mobile-open{-webkit-overflow-scrolling:touch;animation:slideDown .3s ease-out;background:linear-gradient(135deg,#667eea,#764ba2);bottom:0;box-shadow:0 4px 12px #0003;display:flex;flex-direction:column;gap:12px;left:0;overflow-x:hidden;overflow-y:auto;padding:16px 16px 80px;position:fixed;right:0;top:60px;z-index:9999}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.header-right.mobile-open .header-button{flex-shrink:0;font-size:15px;justify-content:flex-start;min-height:52px;padding:14px 16px;width:100%}.header-right.mobile-open .header-button span{font-size:20px;margin-right:12px}.header-right.mobile-open .user-info{border-left:none;border-top:1px solid #fff3;justify-content:space-between;padding:12px 0 0;width:100%}.header-right.mobile-open .user-name{display:block}.header-right.mobile-open .view-mode-toggle{flex-shrink:0;width:100%}.header-right.mobile-open .toggle-button{flex:1 1;font-size:15px;justify-content:center;min-height:52px;padding:14px 16px}.header-right.mobile-open .toggle-button span{font-size:20px;margin-right:8px}.header-right.mobile-open .header-button:disabled{background:#ffffff1a!important;cursor:not-allowed;opacity:.5}.header-right.mobile-open .header-button:disabled:after{content:" (Vyberte projekt)";font-size:11px;margin-left:4px;opacity:.7}}.trash-dialog-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10000}.trash-dialog{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0003;display:flex;flex-direction:column;max-height:80vh;max-width:800px;width:90%}.trash-dialog-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:20px 24px}.trash-dialog-header h2{color:#333;font-size:24px;margin:0}.close-btn{background:none;border:none;color:#666;cursor:pointer;font-size:24px;line-height:1;padding:4px 8px;transition:color .2s}.close-btn:hover{color:#333}.trash-dialog-content{flex:1 1;overflow-y:auto;padding:24px}.loading{font-size:16px;padding:40px}.empty-trash{color:#999;padding:60px 20px;text-align:center}.empty-trash p{font-size:18px;margin:0}.trash-info{background:#fff3cd;border-radius:8px;color:#856404;font-size:14px;margin-bottom:20px;padding:12px 16px}.deleted-projects-list{display:flex;flex-direction:column;gap:16px}.deleted-project-item{align-items:center;background:#f8f9fa;border:1px solid #dee2e6;border-radius:8px;display:flex;gap:16px;justify-content:space-between;padding:16px;transition:all .2s}.deleted-project-item:hover{background:#e9ecef;border-color:#adb5bd}.project-info{flex:1 1;min-width:0}.project-info h3{color:#333;font-size:18px}.project-description,.project-info h3{margin:0 0 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-description{color:#666;font-size:14px}.project-meta{color:#666;display:flex;font-size:13px;gap:16px}.days-left{color:#28a745;font-weight:600}.days-left.warning{color:#dc3545}.project-actions{display:flex;flex-shrink:0;gap:8px}.btn-permanent-delete,.btn-restore{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:8px 16px;transition:all .2s;white-space:nowrap}.btn-restore{background:#28a745;color:#fff}.btn-restore:hover{background:#218838;box-shadow:0 2px 8px #28a7454d;transform:translateY(-1px)}.btn-permanent-delete{background:#dc3545;color:#fff}.btn-permanent-delete:hover{background:#c82333;box-shadow:0 2px 8px #dc35454d;transform:translateY(-1px)}.trash-dialog-footer{border-top:1px solid #e0e0e0;display:flex;justify-content:flex-end;padding:16px 24px}.btn-close{background:#6c757d;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:10px 24px;transition:all .2s}.btn-close:hover{background:#5a6268}@media (max-width:768px){.trash-dialog{max-height:90vh;width:95%}.deleted-project-item{align-items:stretch;flex-direction:column}.project-actions{width:100%}.btn-permanent-delete,.btn-restore{flex:1 1}.project-meta{flex-direction:column;gap:4px}}.project-list{display:flex;flex-direction:column;gap:16px}.project-list-header{align-items:center;display:flex;justify-content:space-between}.project-list-header h3{color:#333;font-size:18px;margin:0}.header-buttons{display:flex;gap:8px}.btn-trash{align-items:center;background:#6c757d;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:16px;height:32px;justify-content:center;transition:background .2s;width:32px}.btn-trash:hover{background:#5a6268}.btn-create{align-items:center;background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:20px;height:32px;justify-content:center;transition:background .2s;width:32px}.btn-create:hover{background:#5568d3}.error-message{align-items:center;background:#fee;border:1px solid #fcc;color:#c33;display:flex;font-size:14px;justify-content:space-between;padding:12px}.error-message button{background:none;border:none;color:#c33;cursor:pointer;font-size:16px}.create-form{background:#fff;border:1px solid #e0e0e0;border-radius:8px;display:flex;flex-direction:column;gap:12px;padding:16px}.create-form input,.create-form textarea{border:1px solid #ddd;border-radius:6px;font-family:inherit;font-size:14px;padding:10px}.create-form input:focus,.create-form textarea:focus{border-color:#667eea;outline:none}.form-actions{display:flex;gap:8px}.btn-primary,.btn-secondary{border:none;border-radius:6px;cursor:pointer;flex:1 1;font-size:14px;font-weight:500;padding:10px;transition:all .2s}.btn-primary{background:#667eea}.btn-primary:hover:not(:disabled){background:#5568d3}.btn-secondary{background:#f0f0f0;color:#666}.btn-secondary:hover{background:#e0e0e0}.project-items{display:flex;flex-direction:column;gap:8px}.project-item{align-items:center;background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;display:flex;gap:12px;justify-content:space-between;padding:12px;transition:all .2s}.project-item:hover{border-color:#667eea;box-shadow:0 2px 8px #667eea1a}.project-item.active{background:#f0f3ff;border-color:#667eea}.project-item-content{flex:1 1;min-width:0}.project-item-name{color:#333;font-weight:600;margin-bottom:4px}.project-item-description{color:#666;font-size:13px;line-height:1.4;margin-bottom:6px}.project-item-date{color:#999;font-size:12px}.project-item-actions{align-items:center;display:flex;flex-shrink:0;gap:8px}.btn-delete,.btn-edit{align-items:center;background:#667eea1a;border:1px solid #667eea33;border-radius:6px;cursor:pointer;display:flex;font-size:16px;justify-content:center;padding:6px 10px;transition:all .2s}.btn-edit:hover{background:#667eea33;border-color:#667eea66;transform:translateY(-1px)}.btn-delete{background:#ef44441a;border-color:#ef444433}.btn-delete:hover{background:#ef444433;border-color:#ef444466;transform:translateY(-1px)}.edit-form{display:flex;flex-direction:column;gap:12px;width:100%}.edit-form input,.edit-form textarea{border:1px solid #ddd;border-radius:6px;font-family:inherit;font-size:14px;padding:10px}.edit-form input:focus,.edit-form textarea:focus{border-color:#667eea;outline:none}.fiber-signal-indicator{background:#fff;border:2px solid;border-radius:6px;font-size:13px;margin-top:8px;padding:12px}.fiber-signal-indicator.compact{align-items:center;display:inline-flex;font-size:12px;gap:6px;margin-left:8px;margin-top:4px;padding:4px 8px}.fiber-signal-indicator.excellent{background:#f1f8f4;border-color:#4caf50}.fiber-signal-indicator.good{background:#f7faf3;border-color:#8bc34a}.fiber-signal-indicator.fair{background:#fff8f0;border-color:#ff9800}.fiber-signal-indicator.weak{background:#fff3f0;border-color:#ff5722}.fiber-signal-indicator.critical{background:#ffebee;border-color:#f44336}.fiber-signal-indicator.no-signal{background:#f5f5f5;border-color:#9e9e9e}.signal-header{align-items:center;display:flex;font-weight:600;gap:8px;margin-bottom:8px}.signal-icon{font-size:16px}.signal-title{font-size:14px}.signal-text{font-weight:600}.signal-loss{color:#666;font-size:11px}.signal-details{background:#00000005;border-radius:4px;display:flex;flex-direction:column;gap:4px;margin-bottom:12px;padding:8px}.signal-row{align-items:center;display:flex;justify-content:space-between}.signal-label{color:#666;font-size:12px}.signal-value{font-size:13px;font-weight:600}.signal-value.loss{color:#f44336}.signal-value.power{color:#4caf50}.signal-path{margin-top:8px}.path-title{color:#666;font-size:12px;font-weight:600;margin-bottom:6px}.path-segments{display:flex;flex-direction:column;gap:4px}.path-segment{align-items:center;background:#00000005;border-radius:3px;display:flex;font-size:11px;gap:6px;padding:4px 6px}.segment-icon{font-size:12px;text-align:center;width:16px}.segment-description{color:#333;flex:1 1}.segment-loss{color:#f44336;font-size:10px;font-weight:600}.signal-message{background:#00000005;border-radius:4px;color:#666;font-size:12px;padding:8px}.fiber-signal-indicator.compact .signal-icon{font-size:14px}.fiber-signal-indicator.compact .signal-text{font-size:12px}.fiber-signal-indicator.compact .signal-loss{font-size:10px}.undo-toast{background:#fff;border-radius:12px;bottom:30px;box-shadow:0 8px 24px #00000026;max-width:500px;min-width:400px;overflow:hidden;position:fixed;right:30px;transition:all .3s ease;z-index:10000}.undo-toast.visible{opacity:1;transform:translateY(0)}.undo-toast.hidden{opacity:0;transform:translateY(20px)}.toast-content{align-items:center;display:flex;gap:15px;padding:16px 20px}.toast-icon{flex-shrink:0;font-size:28px}.toast-message{display:flex;flex:1 1;flex-direction:column;gap:4px}.toast-text{color:#333;font-size:15px;font-weight:500;line-height:1.4;margin:0}.toast-timer{color:#666;font-size:13px;margin:0}.toast-actions{flex-shrink:0;gap:8px}.btn-undo,.toast-actions{align-items:center;display:flex}.btn-undo{background:#2196f3;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;gap:4px;padding:8px 16px;transition:background .2s}.btn-undo:hover{background:#1976d2}.btn-undo:active{transform:scale(.95)}.btn-close-toast{align-items:center;background:#0000;border:none;border-radius:4px;color:#999;cursor:pointer;display:flex;font-size:28px;height:28px;justify-content:center;line-height:1;padding:0;transition:all .2s;width:28px}.btn-close-toast:hover{background:#f5f5f5;color:#666}.toast-progress{background:#e0e0e0;height:4px;width:100%}.toast-progress-bar{background:linear-gradient(90deg,#4caf50,#2196f3);height:100%;transition:width 1s linear}@media (max-width:768px){.undo-toast{bottom:20px;left:20px;max-width:none;min-width:auto;right:20px}.toast-content{gap:12px;padding:14px 16px}.toast-icon{font-size:24px}.toast-text{font-size:14px}.toast-timer{font-size:12px}.btn-undo{font-size:13px;padding:6px 12px}}.cassette-dialog{max-height:90vh;max-width:800px;width:95%}.cassette-warning{background:#fff3cd;border:1px solid #ffc107;color:#856404;padding:16px}.cassette-info,.cassette-warning{border-radius:6px;margin-bottom:16px}.cassette-info{background:#e3f2fd;padding:12px}.cassette-info p{color:#1976d2;font-size:14px;margin:0}.cassette-tabs{border-bottom:2px solid #e0e0e0;display:flex;gap:8px;margin-bottom:20px}.cassette-tab{background:#0000;border:none;border-bottom:3px solid #0000;color:#666;cursor:pointer;font-size:14px;font-weight:500;padding:12px 20px;transition:all .2s}.cassette-tab:hover{background:#f8f9fa;color:#667eea}.cassette-tab.active{border-bottom-color:#667eea;color:#667eea}.cassette-tab-content{min-height:300px}.cassette-tab-content .cassette-section-header{gap:12px!important;margin-bottom:16px!important}.cassette-tab-content .cassette-section-header,div.cassette-tab-content div.cassette-section-header{align-items:stretch!important;display:flex!important;flex-direction:column!important}.cassette-tab-content .cassette-section-header h3{color:#333;font-size:16px;margin:0;order:1}.cassette-tab-content .cassette-section-header .btn-add{background:gold!important;border:none;border-radius:6px;color:#000!important;cursor:pointer;display:block!important;float:none!important;font-size:14px;font-weight:600;left:0!important;margin:0!important;max-width:100%!important;min-width:100%!important;order:2;padding:12px 20px;position:relative!important;right:0!important;text-align:center;transition:all .2s;width:100%!important}.btn-add:hover{background:#5568d3;box-shadow:0 4px 12px #667eea4d;transform:translateY(-1px)}.btn-remove{background:#e74c3c;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:12px;padding:4px 8px;transition:all .2s}.btn-remove:hover{background:#c0392b}.splice-list{display:flex;flex-direction:column;gap:16px}.splice-item{background:#f8f9fa;border:2px solid #e0e0e0;border-radius:8px;padding:16px}.splice-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:12px;padding-bottom:8px}.splice-header span{color:#333;font-weight:600}.splice-config{grid-gap:16px;align-items:start;display:grid;gap:16px;grid-template-columns:1fr auto 1fr auto}.splice-side{display:flex;flex-direction:column;gap:8px}.splice-side label{color:#666;font-size:12px;font-weight:500}.splice-side select{border:2px solid #e0e0e0;border-radius:6px;font-size:13px;padding:8px;transition:border-color .2s}.splice-side select:focus{border-color:#667eea;outline:none}.splice-arrow{color:#667eea;font-size:24px}.splice-arrow,.splice-loss{align-self:center;margin-top:20px}.splice-loss{display:flex;flex-direction:column;gap:8px}.splice-loss label{color:#666;font-size:12px;font-weight:500}.splice-loss input{border:2px solid #e0e0e0;border-radius:6px;font-size:13px;padding:8px;transition:border-color .2s;width:80px}.splice-loss input:focus{border-color:#667eea;outline:none}.splitter-list{display:flex;flex-direction:column;gap:16px}.splitter-item{background:#f8f9fa;border:2px solid #e0e0e0;border-radius:8px;padding:16px}.splitter-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:12px;padding-bottom:8px}.splitter-header span{color:#333;font-weight:600}.splitter-config{display:flex;flex-direction:column;gap:12px}.splitter-input{grid-gap:12px;align-items:end;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}@media (max-width:768px){.splitter-input{gap:16px;grid-template-columns:1fr}}.splitter-type{display:flex;flex-direction:column;gap:8px}.splitter-type label{color:#666;font-size:12px;font-weight:500}.splitter-type select{border:2px solid #e0e0e0;border-radius:6px;font-size:13px;padding:8px;transition:border-color .2s}.splitter-type select:focus{border-color:#667eea;outline:none}.splitter-outputs{border-top:1px solid #e0e0e0;margin-top:12px;padding-top:12px}.splitter-outputs h4{color:#666;font-size:14px;margin:0 0 12px}.splitter-output-list{display:flex;flex-direction:column;gap:8px}.splitter-output-item{grid-gap:8px;align-items:center;background:#fff;border-radius:6px;display:grid;gap:8px;grid-template-columns:auto 1fr 1fr;padding:8px}@media (max-width:768px){.splitter-output-item{gap:8px;grid-template-columns:1fr}.splitter-output-label{min-width:auto}}.splitter-output-label{color:#667eea;font-size:12px;font-weight:600;min-width:60px}.splitter-output-item select{border:2px solid #e0e0e0;border-radius:4px;font-size:12px;padding:6px}.splitter-output-item select:focus{border-color:#667eea;outline:none}.passthrough-list{display:flex;flex-direction:column;gap:16px}.passthrough-item{background:#f8f9fa;border:2px solid #e0e0e0;border-radius:8px;padding:16px}.passthrough-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:12px;padding-bottom:8px}.passthrough-header span{color:#333;font-weight:600}.passthrough-hint{background:#e3f2fd;border-left:3px solid #2196f3;border-radius:4px;color:#1976d2;font-size:13px;margin-bottom:12px;padding:8px 12px}.passthrough-fibers{display:flex;flex-direction:column;gap:8px}.passthrough-fiber{background:#fff;border:1px solid #e0e0e0;border-radius:6px;gap:12px;padding:8px}.fiber-info,.passthrough-fiber{align-items:center;display:flex}.fiber-info{gap:8px;min-width:120px}.fiber-number{min-width:30px}.fiber-color-badge{border-radius:4px;font-weight:500;padding:4px 8px;text-transform:capitalize}.fiber-tap-toggle{min-width:140px}.fiber-tap-toggle label{align-items:center;cursor:pointer;display:flex;font-size:13px;gap:6px}.fiber-tap-toggle input[type=checkbox]{cursor:pointer}.fiber-tap-config{display:flex;flex:1 1;gap:8px}.fiber-tap-config input,.fiber-tap-config select{border:2px solid #e0e0e0;border-radius:4px;font-size:12px;padding:6px}.fiber-tap-config input:focus,.fiber-tap-config select:focus{border-color:#667eea;outline:none}select option:disabled{background-color:#f5f5f5;color:#999;font-style:italic}.fiber-tap-toggle input[type=checkbox]:disabled{cursor:not-allowed;opacity:.5}.fiber-tap-toggle label:has(input:disabled){cursor:not-allowed;opacity:.7}@media (max-width:768px){.cassette-dialog{border-radius:0;max-height:100vh;max-width:100%;width:100%}.cassette-tabs{flex-wrap:wrap}.cassette-tab{flex:1 1 auto;font-size:13px;min-width:100px;padding:10px 12px}.cassette-tab-content .cassette-section-header{gap:12px!important}.cassette-tab-content .cassette-section-header,div.cassette-tab-content div.cassette-section-header{align-items:stretch!important;display:flex!important;flex-direction:column!important}.splice-config{gap:12px;grid-template-columns:1fr}.splice-arrow{margin:0;transform:rotate(90deg)}.splice-loss{margin-top:0}.splitter-settings{grid-template-columns:1fr}.splitter-item{padding:12px}.splitter-type{gap:6px}.splitter-type label{font-size:11px}.splitter-type select{font-size:14px;padding:10px 8px}}.splitter-settings{grid-gap:16px;background:#f8f9fa;border-radius:6px;display:grid;gap:16px;grid-template-columns:200px 1fr;margin-bottom:16px;padding:16px}.splitter-checkbox-group{display:flex;flex-direction:column;gap:12px}.checkbox-label{align-items:center;color:#2c3e50;cursor:pointer;display:flex;font-size:14px;gap:8px}.checkbox-label input[type=checkbox]{cursor:pointer;height:18px;width:18px}.checkbox-label span{-webkit-user-select:none;user-select:none}.installation-checklist-dialog{max-height:90vh;max-width:800px;width:95%}.checklist-pole-info{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;color:#fff;margin-bottom:20px;padding:20px;text-align:center}.checklist-pole-info h3{font-size:24px;font-weight:700;margin:0 0 8px}.checklist-pole-info p{font-size:16px;margin:0;opacity:.9}.checklist-progress{margin-bottom:24px}.progress-bar{background:#e0e0e0;border-radius:8px;box-shadow:inset 0 2px 4px #0000001a;height:16px;margin-bottom:12px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#27ae60,#2ecc71);border-radius:8px;height:100%;transition:width .3s ease}.progress-text{color:#27ae60;font-size:16px;font-weight:700;text-align:center}.checklist-preparations,.checklist-tasks{margin-bottom:20px;max-height:calc(90vh - 400px);overflow-y:auto}.task-fibers{background:#f0f8ff;border-radius:8px;color:#2c5aa0;font-size:14px;margin-top:8px;padding:8px 12px}.task-fibers strong{color:#1e3a5f;margin-right:8px}.checklist-actions{border-top:2px solid #e0e0e0;display:flex;justify-content:center;margin-top:20px;padding-top:20px}.btn-proceed{background:linear-gradient(135deg,#4caf50,#45a049);border:none;border-radius:12px;box-shadow:0 4px 12px #4caf504d;color:#fff;cursor:pointer;font-size:16px;font-weight:600;padding:16px 32px;transition:all .3s ease}.btn-proceed:hover:not(:disabled){background:linear-gradient(135deg,#45a049,#3d8b40);box-shadow:0 6px 16px #4caf5066;transform:translateY(-2px)}.btn-proceed:disabled{background:#ccc;box-shadow:none;cursor:not-allowed}.checklist-task{align-items:flex-start;background:#fff;border:3px solid #e0e0e0;border-radius:16px;cursor:pointer;display:flex;gap:16px;margin-bottom:12px;min-height:80px;padding:20px;position:relative;touch-action:pan-y;transition:all .2s ease;user-select:none;-webkit-user-select:none}.checklist-task:active{transform:scale(.98)}.checklist-task.completed{background:#d4edda;border-color:#27ae60;box-shadow:0 4px 12px #27ae6033}.task-checkbox{cursor:pointer;flex-shrink:0;font-size:36px;line-height:1;margin-top:4px}.task-content{flex:1 1;min-width:0}.task-description{color:#2c3e50;font-size:16px;font-weight:600;line-height:1.4;margin-bottom:8px}.task-signals{display:flex;flex-direction:column;gap:6px;margin-top:8px}.signal-badge{background:#e3f2fd;border-radius:8px;color:#1976d2;display:inline-block;font-size:14px;font-weight:600;padding:6px 12px}.checklist-summary{background:#f8f9fa;border-radius:12px;margin-top:24px;padding:20px}.checklist-summary h4{color:#2c3e50;font-size:18px;font-weight:700;margin:0 0 16px}.summary-signals{display:flex;flex-direction:column;gap:10px}.summary-signal{align-items:center;background:#fff;border:2px solid #e0e0e0;border-radius:8px;display:flex;gap:12px;padding:12px}.summary-signal.completed{background:#d4edda;border-color:#27ae60}.summary-signal.pending{background:#fff3cd;border-color:#ffc107}.signal-icon{flex-shrink:0;font-size:24px}.signal-desc{color:#2c3e50;flex:1 1;font-size:14px;font-weight:500}.signal-value{color:#1976d2;font-size:16px;font-weight:700}.saving-indicator{color:#667eea;font-size:14px;font-weight:600;margin-left:12px}@media (max-width:768px){.installation-checklist-dialog{border-radius:0;height:100vh;margin:0;max-height:100vh;max-width:100%;width:100%}.dialog-header{background:#fff;border-bottom:1px solid #e0e0e0;position:-webkit-sticky;position:sticky;top:0;z-index:10}.checklist-tasks{max-height:calc(100vh - 380px)}.checklist-task{min-height:76px;padding:18px}.task-description{font-size:15px}.signal-badge{font-size:13px}.cable-group-header{flex-wrap:wrap;font-size:14px;padding:14px 16px}.cable-group-title{font-size:14px;word-break:break-word}.splice-table-header{font-size:11px}.splice-table-header>div,.splice-table-row>div{font-size:13px;padding:10px 8px}.splice-col-check{font-size:20px;width:50px}.splice-col-from,.splice-col-to{font-size:12px}.splice-col-signal{font-size:13px}}@media (max-width:768px) and (orientation:landscape){.checklist-tasks{max-height:calc(100vh - 320px)}}.cable-group{background:#fff;border:2px solid #e0e0e0;border-left:5px solid #2196f3;border-radius:16px;box-shadow:0 2px 8px #00000014;margin-bottom:24px;overflow:hidden;transition:all .3s ease}.cable-group.completed{border-color:#27ae60;box-shadow:0 4px 12px #27ae6026}.cable-group-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;font-size:16px;font-weight:600;gap:12px;padding:16px 20px}.cable-group.completed .cable-group-header{background:linear-gradient(135deg,#27ae60,#2ecc71)}.cable-group-icon{flex-shrink:0;font-size:24px}.splitter-number{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff4d;border:2px solid #ffffff80;border-radius:20px;box-shadow:0 2px 8px #00000026;font-size:16px;font-weight:900;letter-spacing:.5px;padding:4px 12px}.cable-group-title{flex:1 1;font-weight:700;letter-spacing:.3px}.cable-group-progress{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff40;border-radius:20px;font-size:14px;font-weight:700;padding:6px 14px}.splice-table{border-collapse:collapse;display:table;width:100%}.splice-table-header{background:#f8f9fa;color:#495057;display:table-row;font-size:13px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}.splice-table-header>div{border-bottom:2px solid #dee2e6;display:table-cell;padding:12px 16px}.splice-table-row{cursor:pointer;display:table-row;transition:all .2s ease}.splice-table-row:hover{background:#f8f9fa}.splice-table-row.completed{background:#d4edda}.splice-table-row.completed:hover{background:#c3e6cb}.splice-table-row>div{border-bottom:1px solid #e9ecef;display:table-cell;font-size:14px;padding:14px 16px;vertical-align:middle}.splice-col-check{font-size:24px;text-align:center;width:60px}.splice-col-from,.splice-col-to{border-radius:6px;color:#2c3e50;font-weight:500;transition:all .2s ease;width:35%}.splice-col-signal{color:#1976d2;font-size:15px;font-weight:700;text-align:right;width:20%}.splitter-group{margin-top:32px}.splitter-table{padding:16px}.splitter-input-row{align-items:center;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border:2px solid #dee2e6;border-radius:8px;display:flex;gap:12px;margin-bottom:16px;padding:14px 16px}.splitter-input-label{color:#495057;font-size:15px;font-weight:700;min-width:60px}.splitter-input-fiber{background:#fff;border-radius:6px;color:#2c3e50;flex:1 1;font-size:14px;font-weight:500;padding:8px 12px}.splitter-input-check{cursor:pointer;font-size:28px;transition:transform .2s ease}.splitter-input-check:hover{transform:scale(1.1)}.splitter-outputs{border-collapse:collapse;display:table;width:100%}.splitter-output-header{background:#f8f9fa;color:#495057;display:table-row;font-size:13px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}.splitter-output-header>div{border-bottom:2px solid #dee2e6;display:table-cell;padding:12px 16px}.splitter-output-row{cursor:pointer;display:table-row;transition:all .2s ease}.splitter-output-row:hover{background:#f8f9fa}.splitter-output-row.completed{background:#d4edda}.splitter-output-row.completed:hover{background:#c3e6cb}.splitter-output-row.disconnected{background:#f8f9fa;opacity:.6}.splitter-output-row.disconnected:hover{background:#e9ecef;opacity:.8}.splitter-output-row.connected-to-splitter{background:linear-gradient(135deg,#f3e5f5,#e1bee7);border-left:3px solid #9c27b0}.splitter-output-row.connected-to-splitter:hover{background:linear-gradient(135deg,#e1bee7,#ce93d8)}.splitter-output-row>div{border-bottom:1px solid #e9ecef;display:table-cell;font-size:14px;padding:14px 16px;vertical-align:middle}.output-col-check{font-size:24px;text-align:center;width:60px}.output-col-port{color:#6c757d;font-weight:700;text-align:center;width:10%}.output-col-cable{color:#2c3e50;font-weight:500;width:30%}.output-col-fiber{border-radius:6px;color:#2c3e50;font-weight:500;transition:all .2s ease;width:25%}.output-col-signal{color:#1976d2;font-size:15px;font-weight:700;text-align:right;width:15%}@keyframes checkComplete{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.checklist-task.completed .task-checkbox,.splice-table-row.completed .splice-col-check{animation:checkComplete .3s ease}.custom-tasks-section{border-top:2px solid #e0e0e0;margin-top:32px;padding-top:24px}.custom-tasks-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.custom-tasks-header h4{color:#333;font-size:18px;font-weight:700;margin:0}.btn-add-custom-task{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;box-shadow:0 2px 8px #667eea4d;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:all .2s ease}.btn-add-custom-task:hover{box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.btn-add-custom-task:active{transform:translateY(0)}.custom-tasks-list{display:flex;flex-direction:column;gap:12px}.custom-task-item{align-items:flex-start;background:#fff;border:2px solid #e0e0e0;border-radius:12px;display:flex;gap:12px;padding:16px;transition:all .2s ease}.custom-task-item:hover{border-color:#667eea;box-shadow:0 2px 8px #667eea1a}.custom-task-item.completed{background:#f0f9ff;border-color:#4caf50}.custom-task-checkbox{cursor:pointer;flex-shrink:0;font-size:24px;transition:transform .2s ease;-webkit-user-select:none;user-select:none}.custom-task-checkbox:hover{transform:scale(1.2)}.custom-task-content{flex:1 1;min-width:0}.custom-task-description{word-wrap:break-word;color:#333;font-size:16px;font-weight:600;margin-bottom:4px}.custom-task-note{word-wrap:break-word;background:#f5f5f5;border-radius:6px;color:#666;font-size:14px;font-style:italic;margin-top:8px;padding:8px 12px;white-space:pre-wrap}.custom-task-actions{display:flex;flex-shrink:0;gap:8px}.btn-delete-custom-task,.btn-edit-custom-task{background:none;border:none;border-radius:6px;cursor:pointer;font-size:20px;padding:4px 8px;transition:all .2s ease}.btn-edit-custom-task:hover{background:#e3f2fd}.btn-delete-custom-task:hover{background:#ffebee}.custom-task-dialog{max-width:500px;width:90%}.form-group{margin-bottom:20px}.form-group label{color:#333;display:block;font-weight:600;margin-bottom:8px}.form-input,.form-textarea{border:2px solid #e0e0e0;border-radius:8px;box-sizing:border-box;font-family:inherit;font-size:14px;padding:12px;transition:all .2s ease;width:100%}.form-input:focus,.form-textarea:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.form-textarea{min-height:80px;resize:vertical}.btn-primary{transition:all .2s ease}.btn-primary:hover:not(:disabled){box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.btn-primary:disabled{cursor:not-allowed;opacity:.5}.pole-list{display:flex;flex-direction:column;gap:16px}.pole-list-header{align-items:center;display:flex;justify-content:space-between}.pole-list-header h3{color:#333;font-size:18px;margin:0}.pole-count{background:#667eea;border-radius:12px;color:#fff;font-size:14px;font-weight:600;padding:4px 12px}.pole-search{margin-bottom:8px;position:relative}.pole-search-input{border:2px solid #e0e0e0;border-radius:8px;font-size:14px;outline:none;padding:10px 36px 10px 12px;transition:all .2s;width:100%}.pole-search-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.pole-search-input::placeholder{color:#999}.pole-search-clear{align-items:center;background:#e0e0e0;border:none;border-radius:50%;color:#666;cursor:pointer;display:flex;font-size:12px;height:24px;justify-content:center;position:absolute;right:8px;top:50%;transform:translateY(-50%);transition:all .2s;width:24px}.pole-search-clear:hover{background:#667eea;color:#fff}.pole-list-empty{color:#999;padding:40px 20px;text-align:center}.pole-list-empty p{margin:8px 0}.pole-list-empty .hint{color:#bbb;font-size:14px}.pole-items{display:flex;flex-direction:column;gap:8px}.pole-item{align-items:flex-start;background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;display:flex;gap:12px;padding:12px;position:relative;transition:all .2s}.pole-item:hover{border-color:#667eea;box-shadow:0 2px 8px #667eea1a}.pole-item.active{background:#f0f3ff;border-color:#667eea}.pole-item-icon{font-size:24px;line-height:1}.pole-item-content{flex:1 1}.pole-item-name{color:#333;font-weight:600;margin-bottom:4px}.pole-item-type{color:#667eea;font-size:13px}.pole-item-info,.pole-item-type{font-weight:500;margin-bottom:4px}.pole-item-info{align-items:center;color:#f39c12;display:flex;font-size:12px;gap:4px}.pole-item-endpoint{color:#666;font-size:12px}.pole-item-action{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:16px;opacity:0;padding:8px 12px;transition:all .2s}.pole-item:hover .pole-item-action{opacity:1}.pole-item-action:hover{background:#5568d3;transform:scale(1.1)}.fiber-list{background:#f8f9fa;border-radius:8px;margin-top:16px;padding:16px}.fiber-list-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.fiber-list-header h4{color:#333;font-size:14px;font-weight:600;margin:0}.fiber-stats{display:flex;font-size:12px;gap:8px}.fiber-stat-used{background:#e74c3c}.fiber-stat-free,.fiber-stat-used{border-radius:4px;color:#fff;font-weight:500;padding:2px 8px}.fiber-stat-free{background:#2ecc71}.fiber-items{display:flex;flex-direction:column;gap:6px}.fiber-item{align-items:center;background:#fff;border:1px solid #e0e0e0;border-radius:6px;display:flex;gap:8px;padding:8px;transition:all .2s}.fiber-item:hover{border-color:#667eea;box-shadow:0 2px 4px #667eea1a}.fiber-item.used{opacity:.7}.fiber-number{color:#666;font-size:12px;font-weight:600;min-width:24px}.fiber-color{border:1px solid #0000001a;border-radius:4px;font-size:11px;min-width:70px;padding:4px 12px;text-align:center;text-transform:capitalize}.fiber-status{flex:1 1;font-size:12px}.status-used{color:#e74c3c;font-weight:500}.status-free{color:#2ecc71;font-weight:500}.cable-list{display:flex;flex-direction:column;gap:16px}.cable-list-header{align-items:center;display:flex;justify-content:space-between}.cable-list-header h3{color:#333;font-size:18px;margin:0}.cable-count{background:#667eea;border-radius:12px;color:#fff;font-size:14px;font-weight:600;padding:4px 12px}.cable-list-empty{color:#999;padding:40px 20px;text-align:center}.cable-list-empty p{margin:8px 0}.cable-list-empty .hint{color:#bbb;font-size:14px}.cable-items{display:flex;flex-direction:column;gap:8px}.cable-item{align-items:flex-start;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;display:flex;gap:12px;transition:all .2s}.cable-item:hover{border-color:#667eea;box-shadow:0 2px 8px #667eea1a}.cable-item.active{background:#f0f3ff;border-color:#667eea}.cable-item-icon{font-size:24px;line-height:1}.cable-item-content{flex:1 1}.cable-item-route{color:#333;font-size:14px;font-weight:600;margin-bottom:6px}.cable-item-details{color:#666;display:flex;font-size:12px;gap:12px}.cable-length{font-weight:500}.cable-fibers{color:#667eea}.empty-state{color:#999;padding:40px 20px}.empty-state-hint{color:#bbb;font-size:14px}.loading{color:#666;padding:20px;text-align:center}.sidebar{background:linear-gradient(180deg,#fafbfc,#f8f9fa);border-right:1px solid #e2e8f0;box-shadow:2px 0 8px #0000000a;display:flex;flex-direction:column;height:100%;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1);width:320px}.sidebar.closed{border-right:none;box-shadow:none;min-width:0;width:0}.sidebar.closed .sidebar-content,.sidebar.closed .sidebar-header{display:none}.sidebar.minimized{width:60px}.sidebar-header{background:#0000;border-bottom:1px solid #e2e8f0;flex-direction:column}.sidebar-tabs{background:#0000;display:flex;flex-direction:column;gap:6px;padding:8px}.sidebar.minimized .sidebar-tabs{border-bottom:none;flex-direction:column;gap:6px;padding:8px}.sidebar-tab{align-items:center;background:#0003;border:1px solid #fff3;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:13px;font-weight:600;gap:8px;justify-content:flex-start;letter-spacing:0;padding:10px 12px;text-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000,0 0 3px #00000080;transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap}.sidebar.minimized .sidebar-tab{border-radius:6px;font-size:18px;gap:4px;justify-content:center;padding:12px 4px}.sidebar.minimized .sidebar-tab.active{background:#ffffff4d;border-color:#ffffff80}.sidebar-tab:hover{background:#ffffff40;border-color:#fff6;transform:translateY(-1px)}.sidebar-tab.active{background:#ffffff4d;border-color:#ffffff80;box-shadow:0 2px 4px #0003;color:#fff;font-weight:700}.sidebar-minimize-btn{align-items:center;background:#0000;border:none;border-top:1px solid #e2e8f0;color:#64748b;cursor:pointer;display:flex;font-size:14px;justify-content:center;padding:12px;transition:all .2s cubic-bezier(.4,0,.2,1);width:100%}.sidebar-minimize-btn:hover{background:#667eea14;color:#6366f1}.sidebar-content{padding:16px}.sidebar.minimized .sidebar-content{display:none}.network-design-button{background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:12px;box-shadow:0 4px 6px -1px #6366f14d,0 2px 4px -1px #6366f133;color:#fff;cursor:pointer;font-size:15px;font-weight:700;letter-spacing:-.01em;overflow:hidden;padding:16px 24px;position:relative;transition:all .2s cubic-bezier(.4,0,.2,1);width:100%}.network-design-button:before{background:linear-gradient(135deg,#fff3,#0000);bottom:0;content:"";left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s}.network-design-button:hover{box-shadow:0 10px 15px -3px #6366f166,0 4px 6px -2px #6366f14d;transform:translateY(-2px)}.network-design-button:hover:before{opacity:1}.network-design-button:active{transform:translateY(0)}.sidebar-content::-webkit-scrollbar-thumb{background:#ccc}.sidebar-content::-webkit-scrollbar-thumb:hover{background:#999}.sidebar.accordion-style{display:flex;flex-direction:column}.sidebar-accordion{flex:1 1;overflow-x:hidden;overflow-y:auto}.accordion-section{border-bottom:1px solid #e2e8f0}.accordion-section:last-child{border-bottom:none}.accordion-header{align-items:center;background:#0000;border:none;color:#2c3e50;cursor:pointer;display:flex;justify-content:space-between;padding:16px;transition:all .2s cubic-bezier(.4,0,.2,1);width:100%}.accordion-header:hover{background:#667eea0d}.accordion-header:disabled{background:#0000;cursor:not-allowed;opacity:.5}.accordion-header-content{align-items:center;display:flex;flex:1 1;gap:12px}.accordion-icon{flex-shrink:0;font-size:20px}.accordion-title{color:#2c3e50;flex:1 1;font-size:15px;font-weight:600}.accordion-badge{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:10px;color:#fff;font-size:12px;font-weight:700;min-width:24px;padding:2px 8px;text-align:center}.accordion-chevron{color:#64748b;flex-shrink:0;font-size:12px;transition:transform .2s ease}.accordion-section.expanded .accordion-header{background:#667eea14}.accordion-section.expanded .accordion-chevron{color:#667eea;transform:rotate(0deg)}.accordion-content{animation:accordionSlideDown .2s ease-out;padding:0 16px 16px}@keyframes accordionSlideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:1024px){.sidebar{display:none!important}}@media print{.sidebar{display:none!important}}.pole-photos-tab{max-height:70vh;overflow-y:auto;padding:20px}.photos-header{align-items:center;border-bottom:2px solid #e0e0e0;display:flex;justify-content:space-between;margin-bottom:20px;padding-bottom:10px}.photos-header h3{color:#2c3e50;font-size:1.3em;margin:0}.photos-count{color:#7f8c8d;font-size:.9em;font-weight:600}.upload-section{background:#f8f9fa;border-radius:8px;margin-bottom:20px;padding:20px}.upload-caption-input{margin-bottom:15px}.upload-caption-input input{border:1px solid #ddd;border-radius:4px;font-size:.95em;padding:10px;width:100%}.upload-buttons{display:flex;flex-wrap:wrap;gap:10px}.upload-btn{border:none;border-radius:6px;cursor:pointer;flex:1 1;font-size:1em;font-weight:600;min-width:150px;padding:12px 20px;transition:all .2s}.upload-btn:disabled{cursor:not-allowed;opacity:.5}.camera-btn{background:#3498db;color:#fff}.camera-btn:hover:not(:disabled){background:#2980b9;box-shadow:0 4px 8px #3498db4d;transform:translateY(-2px)}.gallery-btn{background:#9b59b6;color:#fff}.gallery-btn:hover:not(:disabled){background:#8e44ad;box-shadow:0 4px 8px #9b59b64d;transform:translateY(-2px)}.uploading-indicator{background:#fff3cd;border:1px solid #ffc107;border-radius:4px;color:#856404;font-weight:600;margin-top:10px;padding:10px;text-align:center}.no-photos{color:#95a5a6;padding:60px 20px;text-align:center}.no-photos p{font-size:1.1em;margin:10px 0}.no-photos .hint{color:#bdc3c7;font-size:.9em}.photos-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.photo-card{background:#fff;border:2px solid #e0e0e0;border-radius:8px;overflow:hidden;position:relative;transition:all .3s}.photo-card:hover{box-shadow:0 4px 12px #0000001a;transform:translateY(-2px)}.photo-card.primary{border-color:#f39c12;box-shadow:0 0 0 2px #f39c1233}.primary-badge{background:#f39c12;border-radius:4px;box-shadow:0 2px 4px #0003;color:#fff;font-size:.85em;font-weight:600;padding:4px 10px;position:absolute;right:10px;top:10px;z-index:10}.photo-thumbnail{align-items:center;background:#f5f5f5;display:flex;height:200px;justify-content:center;overflow:hidden;width:100%}.photo-thumbnail img{cursor:pointer;height:100%;object-fit:cover;width:100%}.photo-info{padding:15px}.caption-display{align-items:center;border-radius:4px;cursor:pointer;display:flex;justify-content:space-between;min-height:40px;padding:8px;transition:background .2s}.caption-display:hover{background:#f8f9fa}.caption-text{color:#2c3e50;flex:1 1;font-size:.95em;margin:0}.caption-text em{color:#95a5a6;font-size:.9em}.edit-icon{font-size:.9em;opacity:0;transition:opacity .2s}.caption-display:hover .edit-icon{opacity:1}.caption-edit{display:flex;flex-direction:column;gap:8px}.caption-edit input{border:1px solid #3498db;border-radius:4px;font-size:.95em;padding:8px;width:100%}.caption-edit-buttons{display:flex;gap:5px}.caption-edit-buttons button{border:none;border-radius:4px;cursor:pointer;flex:1 1;font-size:1em;font-weight:600;padding:6px}.caption-edit-buttons button:first-child{background:#27ae60;color:#fff}.caption-edit-buttons button:first-child:hover{background:#229954}.caption-edit-buttons button:last-child{background:#e74c3c;color:#fff}.caption-edit-buttons button:last-child:hover{background:#c0392b}.photo-meta{border-top:1px solid #ecf0f1;display:flex;justify-content:space-between;margin-top:8px;padding-top:8px}.photo-meta small{color:#95a5a6;font-size:.8em}.photo-actions{background:#f8f9fa;border-top:1px solid #e0e0e0;display:flex;gap:5px;padding:10px}.action-btn{border-radius:4px;display:inline-block;flex:1 1;font-size:.85em;font-weight:600;padding:8px 12px;text-align:center;text-decoration:none;transition:all .2s}.primary-btn{background:#f39c12;color:#fff}.primary-btn:hover{background:#e67e22}.view-btn{background:#3498db;color:#fff}.view-btn:hover{background:#2980b9}.delete-btn{background:#e74c3c;color:#fff}.delete-btn:hover{background:#c0392b}@media (max-width:768px){.pole-photos-tab{padding:15px}.photos-grid{grid-template-columns:1fr}.upload-buttons{flex-direction:column}.upload-btn{min-width:0;min-width:auto;width:100%}.photo-actions{flex-wrap:wrap}.action-btn{font-size:.8em;padding:6px 8px}}.edit-pole-dialog{max-width:900px;width:90vw}.tab-navigation{background:#f8f9fa;border-bottom:2px solid #e0e0e0;display:flex;gap:5px;overflow-x:auto;padding:0 20px}.tab-button{background:#0000;border:none;border-bottom:3px solid #0000;color:#7f8c8d;cursor:pointer;font-size:.95em;font-weight:600;padding:12px 20px;transition:all .2s;white-space:nowrap}.tab-button:hover{background:#3498db0d;color:#2c3e50}.tab-button.active{background:#fff;border-bottom-color:#3498db;color:#3498db}.tab-content{max-height:70vh;overflow-y:auto;padding:20px}.tab-content h3{border-bottom:2px solid #e0e0e0;color:#2c3e50;font-size:1.3em;margin:0 0 20px;padding-bottom:10px}.info-grid{grid-gap:15px;gap:15px}.info-item{flex-direction:column;gap:5px}.info-item.full-width{grid-column:1/-1}.info-item label{color:#7f8c8d;font-size:.9em;font-weight:600}.info-item span{background:#f8f9fa;border-radius:4px;color:#2c3e50;font-size:1em;padding:8px}.photos-tab-content{padding:0}.edit-pole-dialog .cassette-tab-content{align-items:center;display:flex;justify-content:center;min-height:300px}.cassette-info{max-width:500px;padding:40px;text-align:center}.cassette-info p{color:#7f8c8d;line-height:1.6;margin-bottom:20px}.cassette-info button{margin-top:10px}@media (max-width:768px){.edit-pole-dialog{max-width:none;width:95vw}.tab-navigation{padding:0 10px}.tab-button{font-size:.85em;padding:10px 15px}.tab-content{padding:15px}.info-grid{grid-template-columns:1fr}}.olt-port-config-dialog{max-height:90vh;max-width:700px}.port-config-intro{background:#e3f2fd;border-left:4px solid #2196f3;border-radius:6px;margin-bottom:20px;padding:12px}.port-config-intro p{color:#1565c0;font-size:14px;margin:0}.port-configs-list{display:flex;flex-direction:column;gap:16px;max-height:500px;overflow-y:auto;padding-right:8px}.port-config-item{background:#f8f9fa;border:2px solid #e0e0e0;border-radius:8px;padding:16px;transition:border-color .2s}.port-config-item:hover{border-color:#3498db}.port-header{border-bottom:2px solid #e0e0e0;margin-bottom:12px;padding-bottom:8px}.port-header h4{color:#2c3e50;font-size:16px;margin:0}.port-fields{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.port-fields .form-group{margin-bottom:0}.port-configs-list::-webkit-scrollbar{width:8px}.port-configs-list::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.port-configs-list::-webkit-scrollbar-thumb{background:#888;border-radius:4px}.port-configs-list::-webkit-scrollbar-thumb:hover{background:#555}.technical-report-dialog{max-height:90vh;max-width:1200px;width:95%}.btn-checklist{background:linear-gradient(135deg,#27ae60,#2ecc71);border:none;border-radius:8px;box-shadow:0 2px 4px #27ae604d;color:#fff;cursor:pointer;flex-shrink:0;font-size:14px;font-weight:600;padding:10px 20px;transition:all .2s;white-space:nowrap}.btn-checklist:hover{background:linear-gradient(135deg,#229954,#27ae60);box-shadow:0 4px 8px #27ae6066;transform:translateY(-1px)}.btn-checklist:active{transform:translateY(0)}@media (max-width:768px){.btn-checklist{font-size:12px;padding:8px 12px}.technical-report-dialog .dialog-header h2{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.technical-report-content{-webkit-overflow-scrolling:touch;overflow-x:auto!important}.tech-table{min-width:600px}.passthrough-table-container,.splitter-table-container{-webkit-overflow-scrolling:touch;margin-bottom:16px;overflow-x:auto}}.technical-report-content{background:#fff;max-height:calc(90vh - 180px);overflow-y:auto;padding:20px}.report-print-header{border-bottom:3px solid #333;margin-bottom:15px;padding-bottom:12px;text-align:center}.report-print-header h1{color:#000;font-size:20px;font-weight:700;letter-spacing:1px;line-height:1.2;margin:0 0 10px;text-transform:uppercase}.report-meta{color:#333;display:flex;font-size:12px;justify-content:space-around;line-height:1.3}.report-meta strong{color:#000}.report-section{margin-bottom:15px;page-break-inside:avoid}.report-section h3{background:#f0f0f0;border-left:4px solid #2196f3;color:#000;font-size:14px;font-weight:700;letter-spacing:.5px;line-height:1.2;margin:0 0 8px;padding:6px 10px;text-transform:uppercase}.report-section h4{color:#333;font-size:12px;font-weight:600;line-height:1.2;margin:8px 0 5px}.no-data{color:#999;font-style:italic;padding:16px;text-align:center}.table-scroll-wrapper{-webkit-overflow-scrolling:touch;margin:8px 0;overflow-x:auto}.tech-table{background:#fff;border:2px solid #333;font-size:11px;margin:8px 0}.tech-table thead{background:#e0e0e0}.tech-table th{border:1px solid #333;color:#000;font-size:10px;font-weight:700;letter-spacing:.3px;line-height:1.2;padding:6px 5px}.tech-table td{border:1px solid #666;color:#000;line-height:1.3;padding:5px}.tech-table tbody tr:nth-child(2n){background:#f9f9f9}.tech-table tbody tr:hover{background:#f0f0f0}.table-section-header{background:#d0d0d0!important;font-size:11px!important;font-weight:700}.fiber-color-cell{color:#9c27b0;font-weight:700}.checkbox-cell{font-size:16px;font-weight:700;text-align:center}.info-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.info-item{background:#fff;border:1px solid #333;border-radius:4px;justify-content:space-between;padding:8px 12px}.info-label{color:#333;font-weight:600}.info-value{color:#000;font-weight:500}.cables-list{display:flex;flex-direction:column;gap:12px}.cable-item{background:#fff;border:1px solid #333;border-radius:4px;padding:12px}.cable-header{align-items:center;border-bottom:1px solid #333;display:flex;justify-content:space-between;margin-bottom:8px;padding-bottom:8px}.cable-name{color:#000;font-size:14px;font-weight:700}.cable-direction{border:1px solid #333;border-radius:3px;font-size:11px;font-weight:600;padding:4px 12px;text-transform:uppercase}.cable-direction.incoming{background:#e3f2fd;color:#000}.cable-direction.outgoing{background:#fff3e0;color:#000}.cable-details{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.cable-detail{display:flex;gap:8px}.detail-label{color:#333;font-weight:600}.detail-value{color:#000}.fiber-color{color:#9c27b0;font-weight:600}.passthrough-table-container,.splitter-table-container{margin-bottom:20px;page-break-inside:avoid}.checklist-section{page-break-before:auto}.checklist-table td{font-size:11px;padding:5px 6px}.checklist-table .checkbox-cell{font-size:16px}.notes-section{page-break-before:auto}.notes-area{background:#fff;border:2px solid #333;min-height:80px;padding:10px}.note-line{border-bottom:1px solid #999;height:18px;margin-bottom:3px}.signature-section{margin-top:15px;page-break-inside:avoid}.signature-row{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr;margin-top:10px}.signature-box{background:#fff;border:2px solid #333;padding:12px}.signature-label{color:#000;font-size:11px;font-weight:700;margin-bottom:20px}.signature-line{border-bottom:2px solid #000;height:30px;margin-bottom:8px}.signature-date{color:#333;font-size:10px}.no-print{display:block}@media print{@page{size:A4 portrait;margin:10mm 8mm;orphans:3;widows:3}*{color-adjust:exact!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}body,html{font-size:8pt!important;height:auto!important;margin:0!important;overflow:visible!important;padding:0!important;width:100%}body *{visibility:hidden!important}.technical-report-dialog,.technical-report-dialog *{visibility:visible!important}.no-print,.no-print *{display:none!important;visibility:hidden!important}.print-only{display:block!important;visibility:visible!important}.technical-report-dialog{background:#fff!important;border:none!important;box-shadow:none!important;margin:0!important;max-width:none!important;transform:none!important}.technical-report-content,.technical-report-dialog{height:auto!important;max-height:none!important;overflow:visible!important;padding:0!important;position:static!important;width:100%!important}.report-print-header{border-bottom:1px solid #000;margin-bottom:3mm;padding-bottom:2mm;page-break-after:avoid}.report-print-header h1{font-size:14pt;margin:0 0 1mm}.report-meta{display:block!important;font-size:8pt}.report-section{margin-bottom:3mm;orphans:3;page-break-after:auto;page-break-inside:auto;widows:3}.report-section h3{font-size:10pt;margin:2mm 0 1mm;orphans:3;padding:1mm 2mm;widows:3}.report-section h3,.report-section h4{page-break-after:avoid;page-break-inside:avoid}.report-section h4{font-size:9pt;margin:1.5mm 0 1mm}.info-grid{margin-bottom:2mm}.info-grid,.info-item{display:block!important}.info-item{font-size:7pt;margin-bottom:1mm;padding:1mm 2mm;page-break-inside:avoid}.cables-list{display:block!important;margin-bottom:2mm}.cable-item{display:block!important;font-size:7pt;margin-bottom:1mm;padding:1mm 2mm;page-break-inside:avoid}.cable-name{font-size:8pt}.tech-table{border-collapse:collapse;font-size:6.5pt;margin:1mm 0 3mm;page-break-inside:auto;width:100%}.tech-table thead{display:table-header-group;page-break-after:avoid}.tech-table th{background:#e0e0e0!important;font-size:7pt;padding:1mm 1.5mm}.tech-table td{font-size:6.5pt;padding:.8mm 1.5mm}.tech-table tr{page-break-after:auto;page-break-inside:avoid}.tech-table tbody tr:nth-child(2n){background:#f5f5f5!important}.table-section-header{background:#d0d0d0!important;font-size:7pt!important}.passthrough-table-container,.splitter-table-container{margin-bottom:3mm;page-break-after:auto;page-break-inside:auto}.passthrough-table-container h4,.splitter-table-container h4{font-size:8pt;margin:1.5mm 0 1mm;page-break-after:avoid}.checklist-section{margin-top:2mm}.checklist-table td{font-size:7pt;padding:1mm 1.5mm}.checklist-table .checkbox-cell{font-size:10pt}.notes-section{margin-top:2mm;page-break-before:auto}.notes-area{min-height:25mm;padding:2mm}.note-line{height:5mm;margin-bottom:.5mm}.signature-section{margin-top:5mm;page-break-before:auto;page-break-inside:avoid}.signature-row{display:block!important;margin-top:2mm}.signature-box{display:inline-block!important;padding:2mm;vertical-align:top;width:48%}.signature-label{font-size:7pt;margin-bottom:4mm}.signature-line{height:6mm;margin-bottom:1mm}.signature-date{font-size:6pt}.fiber-color-cell{color:#000!important;font-weight:700;text-decoration:underline}.checklist-section{page-break-before:auto}h3,h4,p{orphans:3;widows:3}h3,h4{page-break-after:avoid}.photo-grid-report{grid-gap:10pt;display:grid;gap:10pt;grid-template-columns:repeat(2,1fr)}.report-photo-item{page-break-inside:avoid}.photo-image-container img{max-height:200pt}}.photo-documentation-section{margin-top:30px;page-break-before:auto}.photo-grid-report{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));margin-top:20px}.report-photo-item{background:#fff;border:2px solid #e0e0e0;border-radius:8px;overflow:hidden;page-break-inside:avoid}.photo-primary-badge{background:#f39c12;color:#fff;font-size:.85em;font-weight:600;padding:6px 12px;text-align:center}.photo-number{background:#3498db;color:#fff;font-size:.9em;font-weight:600;padding:8px 12px}.photo-image-container{align-items:center;background:#f5f5f5;display:flex;justify-content:center;max-height:400px;overflow:hidden;width:100%}.photo-image-container img{height:auto;max-height:400px;object-fit:contain;width:100%}.photo-caption{background:#f8f9fa;border-top:1px solid #e0e0e0;font-size:.95em;line-height:1.5;padding:12px}.photo-caption strong{color:#2c3e50}.photo-metadata{background:#ecf0f1;border-top:1px solid #e0e0e0;display:flex;flex-direction:column;gap:4px;padding:10px 12px}.photo-metadata small{color:#7f8c8d;font-size:.8em}@media (max-width:768px){.photo-grid-report{grid-template-columns:1fr}.photo-image-container,.photo-image-container img{max-height:300px}}.cable-fiber-usage-dialog{max-width:800px;width:95%}.cable-info{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 2px 8px #0000000a;margin-bottom:28px;padding:20px 24px}.info-row{align-items:center;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:12px 0}.info-row:last-child{border-bottom:none;padding-bottom:0}.info-row .label{color:#64748b;font-size:14px;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.info-row .value{color:#1e293b;font-size:16px;font-weight:700;letter-spacing:-.01em}.usage-stats{display:flex;flex-direction:column;gap:16px;margin-bottom:28px}.stat-card{align-items:flex-start;border:2px solid;border-radius:14px;box-shadow:0 2px 8px #0000000a;padding:20px 24px;transition:all .2s cubic-bezier(.4,0,.2,1)}.stat-card:hover{box-shadow:0 8px 16px #00000014}.stat-card.fully-used{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border-color:#10b981}.stat-card.free-ends{background:linear-gradient(135deg,#fffbeb,#fef3c7);border-color:#f59e0b}.stat-card.unused{background:linear-gradient(135deg,#eff6ff,#dbeafe);border-color:#3b82f6}.stat-icon{min-width:40px}.stat-label{color:#1e293b;font-size:15px;font-weight:700;letter-spacing:-.01em;margin-bottom:6px}.stat-value{color:#0f172a;font-size:24px;font-weight:800;letter-spacing:-.02em;margin-bottom:6px}.stat-description{color:#64748b;font-size:13px;font-style:italic;line-height:1.5;margin-bottom:10px}.stat-detail{background:#0f172a0d;border-radius:8px;color:#475569;font-size:14px;font-weight:500;line-height:1.6;margin-top:8px;padding:10px 14px}.chart-segment{position:relative}.loading-message{padding:40px 20px}@media (max-width:768px){.cable-fiber-usage-dialog{font-size:16px}.cable-info{gap:12px}.info-item{border-radius:10px;padding:14px}.info-label{font-size:13px;margin-bottom:6px}.info-value{font-size:17px;font-weight:600}.usage-stats{gap:14px;grid-template-columns:1fr;margin-top:20px}.stat-card{border-radius:12px;box-shadow:0 2px 8px #00000014;padding:18px}.stat-icon{font-size:36px;min-width:44px}.stat-content{flex:1 1}.stat-label{font-size:15px;font-weight:700;margin-bottom:6px}.stat-value{font-size:26px;margin-bottom:6px}.stat-description{font-size:13px;line-height:1.4;margin-bottom:12px}.stat-detail{border-radius:8px;font-size:14px;line-height:1.5;margin-top:8px;padding:12px 14px}.usage-chart{margin-top:24px}.chart-bar{border-radius:12px;box-shadow:inset 0 2px 4px #0000001a;height:36px}.loading-message{font-size:18px;padding:60px 20px}.error-message{border-radius:10px;font-size:16px;line-height:1.5;padding:18px}}.project-fiber-usage-dialog{max-height:90vh;max-width:900px;overflow-y:auto;width:95%}.project-fiber-usage-dialog .dialog-content{max-height:calc(90vh - 140px);overflow-y:auto}.overall-stats{margin-bottom:24px}.overall-stats h3{color:#333;font-size:18px;font-weight:600;margin:0 0 16px}.stat-box{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:12px;box-shadow:0 4px 12px #0000001a;color:#fff;padding:20px}.stat-box .stat-label{font-size:13px;margin-bottom:8px;opacity:.9}.stat-box .stat-value{font-size:32px;font-weight:700}.usage-breakdown{margin-bottom:24px}.usage-breakdown h3{color:#333;font-size:18px;font-weight:600;margin:0 0 16px}.breakdown-cards{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:20px}.breakdown-card{align-items:flex-start;background:#fff;border:2px solid;border-radius:12px;box-shadow:0 2px 8px #00000014;display:flex;gap:16px;padding:20px}.breakdown-card.fully-used{background:linear-gradient(135deg,#f1f8f4,#fff);border-color:#4caf50}.breakdown-card.free-ends{background:linear-gradient(135deg,#fff8f0,#fff);border-color:#ff9800}.breakdown-card.unused{background:linear-gradient(135deg,#f0f7ff,#fff);border-color:#2196f3}.card-icon{font-size:32px;line-height:1}.card-content{flex:1 1}.card-label{color:#666;font-size:14px;font-weight:600;margin-bottom:8px}.card-value{color:#333;font-size:28px;font-weight:700;margin-bottom:4px}.card-percent{color:#666;font-size:16px;font-weight:500;margin-left:8px}.card-description{color:#999;font-size:12px}.usage-chart{background:#f8f9fa;border-radius:8px;margin-top:20px;padding:16px}.chart-bar{border-radius:8px;box-shadow:0 2px 4px #0000001a;height:40px}.chart-segment{cursor:pointer;transition:all .3s ease}.cables-section{margin-bottom:24px}.cables-section h3{color:#333;font-size:18px;font-weight:600;margin:0 0 16px}.cables-table{background:#fff;border-radius:8px;box-shadow:0 2px 8px #00000014;overflow:hidden}.cables-table table{border-collapse:collapse;width:100%}.cables-table thead{background:#f8f9fa}.cables-table th{border-bottom:2px solid #e0e0e0;color:#666;font-size:13px;font-weight:600;letter-spacing:.5px;padding:12px 16px;text-align:left;text-transform:uppercase}.cables-table td{border-bottom:1px solid #f0f0f0;font-size:14px;padding:12px 16px}.cables-table tbody tr:hover{background:#f8f9fa}.cables-table tbody tr:last-child td{border-bottom:none}.cable-name{color:#333;font-weight:500}.free-ends-count{color:#ff9800;font-weight:600}.free-ends-detail{display:flex;flex-direction:column;gap:4px}.detail-item{background:#f0f0f0;border-radius:4px;color:#666;display:inline-block;font-size:12px;padding:2px 8px}.usage-bar-container{align-items:center;display:flex;gap:8px}.usage-bar{background:linear-gradient(135deg,#4caf50,#66bb6a);border-radius:4px;height:20px;min-width:2px;transition:width .3s ease}.usage-percent{color:#333;font-weight:600;min-width:45px;text-align:right}.loading-message{color:#666;font-size:16px;padding:60px 20px;text-align:center}.error-message{background:#ffebee;border:1px solid #ef5350;border-radius:8px;color:#c62828;padding:16px}@media (max-width:768px){.project-fiber-usage-dialog{height:100vh;max-height:100vh;max-width:100%;width:100%}.project-fiber-usage-dialog .dialog-content{max-height:none;padding:16px}.overall-stats{margin-bottom:24px}.overall-stats h3{font-size:20px;margin-bottom:16px}.stats-grid{gap:12px;grid-template-columns:1fr}.stat-box{border-radius:12px;padding:18px}.stat-box .stat-label{font-size:14px;margin-bottom:8px}.stat-box .stat-value{font-size:36px}.usage-breakdown{margin-bottom:24px}.usage-breakdown h3{font-size:20px;margin-bottom:16px}.breakdown-cards{gap:14px;grid-template-columns:1fr;margin-bottom:20px}.breakdown-card{border-radius:12px;border-width:3px;padding:18px}.card-icon{font-size:40px;min-width:48px}.card-label{font-size:15px;font-weight:700}.card-value{font-size:28px}.card-percent{font-size:18px}.card-description{font-size:13px;line-height:1.4}.usage-chart{margin-top:20px}.chart-bar{border-radius:12px;height:36px}.cables-section{margin-bottom:24px}.cables-section h3{font-size:18px;margin-bottom:14px}.cables-table{-webkit-overflow-scrolling:touch;border-radius:12px;overflow-x:auto}.cables-table table{font-size:15px;min-width:600px}.cables-table th{background:#f5f5f5;font-size:14px;position:-webkit-sticky;position:sticky;top:0;z-index:1}.cables-table td,.cables-table th{padding:14px 12px}.cable-name{font-size:15px;font-weight:600}.free-ends-count{font-size:18px;font-weight:700}.detail-item,.free-ends-detail{font-size:13px}.detail-item{border-radius:6px;padding:6px 10px}.usage-bar-container{min-width:120px}.usage-bar{border-radius:8px;height:24px}.usage-percent{font-size:14px;font-weight:700}.loading-message{font-size:18px;padding:60px 20px}.error-message{border-radius:10px;font-size:16px;line-height:1.5;padding:18px}}.modal-overlay{align-items:center;animation:fadeIn .2s ease;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:10000}.modal-content{animation:slideUp .3s ease;background:#fff;border-radius:12px;box-shadow:0 10px 40px #0000004d;max-height:90vh;overflow-y:auto}.confirm-delete-dialog{max-width:600px;width:90%}.modal-header{align-items:center;border-bottom:1px solid #e0e0e0;display:flex;justify-content:space-between;padding:20px}.modal-header h2{color:#333;font-size:20px;font-weight:600;margin:0}.close-button{align-items:center;background:none;border:none;border-radius:4px;color:#999;cursor:pointer;display:flex;font-size:28px;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.close-button:hover{background:#f5f5f5;color:#666}.confirm-delete-dialog .modal-body{padding:20px}.warning-message{display:flex;flex-direction:column;gap:20px}.pole-name{color:#333;font-size:16px;margin:0}.pole-name strong{color:#d32f2f;font-weight:600}.data-summary{background:#fff3cd;border:2px solid #ffc107;border-radius:8px;padding:15px}.warning-text{color:#856404;font-size:15px;font-weight:600;margin:0 0 10px}.data-list{list-style:none;margin:10px 0;padding-left:20px}.data-list li{color:#856404;font-size:14px;margin:8px 0;padding-left:25px;position:relative}.data-list li:before{color:#ffc107;content:"•";font-size:20px;left:0;position:absolute}.data-list strong{color:#d32f2f;font-weight:600}.danger-text{background:#f8d7da;border:1px solid #f5c6cb;border-radius:4px;color:#721c24;font-size:14px;font-weight:600;margin:15px 0 0;padding:10px;text-align:center}.undo-info{background:#d1ecf1;border:2px solid #17a2b8;border-radius:8px;padding:15px}.info-text{color:#0c5460;font-size:14px;line-height:1.5;margin:8px 0}.info-text strong{color:#17a2b8;font-weight:600}.btn-danger{background:#d32f2f;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:10px 24px;transition:background .2s}.btn-danger:hover{background:#b71c1c}.btn-secondary{background:#6c757d;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:10px 24px;transition:background .2s}.btn-secondary:hover{background:#5a6268}.modal-footer{border-top:1px solid #dee2e6;display:flex;gap:10px;justify-content:flex-end;padding:15px 20px}.cable-popup{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;min-width:280px}.cable-popup h4{border-bottom:2px solid #3498db;font-weight:600;margin:0 0 12px;padding-bottom:8px}.cable-popup h5{color:#555;font-size:14px;font-weight:600;margin:0 0 10px}.popup-info{margin-bottom:12px}.info-line{display:flex;font-size:13px;justify-content:space-between;padding:4px 0}.info-line .label{color:#666;font-weight:500}.info-line .value{color:#333;font-weight:600}.popup-divider{background:#e0e0e0;height:1px;margin:12px 0}.popup-usage{margin-top:12px}.usage-summary{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.usage-item{align-items:center;background:#f8f9fa;border-radius:4px;display:flex;font-size:12px;gap:6px;padding:4px 6px}.usage-item.fully-used{background:#f1f8f4;border-left:3px solid #4caf50}.usage-item.free-ends{background:#fff8f0;border-left:3px solid #ff9800}.usage-item.unused{background:#f0f7ff;border-left:3px solid #2196f3}.usage-icon{font-size:14px;line-height:1}.usage-label{color:#666;flex:1 1;font-weight:500}.usage-value{color:#333;font-weight:600;white-space:nowrap}.popup-chart{margin:12px 0}.chart-bar{border-radius:4px;box-shadow:0 1px 3px #0000001a;display:flex;height:20px;overflow:hidden}.chart-segment{height:100%;transition:opacity .2s ease}.chart-segment:hover{opacity:.8}.chart-segment.fully-used{background:linear-gradient(135deg,#4caf50,#66bb6a)}.chart-segment.free-ends{background:linear-gradient(135deg,#ff9800,#ffa726)}.chart-segment.unused{background:linear-gradient(135deg,#2196f3,#42a5f5)}.view-details-btn{background:linear-gradient(135deg,#3498db,#2980b9);border:none;border-radius:6px;box-shadow:0 2px 4px #0000001a;color:#fff;cursor:pointer;font-size:13px;font-weight:600;margin-top:12px;padding:8px 12px;transition:all .2s ease;width:100%}.view-details-btn:hover{background:linear-gradient(135deg,#2980b9,#21618c);box-shadow:0 3px 6px #00000026;transform:translateY(-1px)}.view-details-btn:active{box-shadow:0 1px 2px #0000001a;transform:translateY(0)}.popup-loading{color:#666;font-size:13px;padding:20px;text-align:center}.leaflet-popup-content-wrapper{box-shadow:0 4px 12px #00000026}.leaflet-popup-content{margin:16px}@media (max-width:768px){.cable-popup{max-width:340px;min-width:300px;padding:16px}.popup-header h4{font-size:18px;font-weight:700;margin-bottom:8px}.popup-cable-info{font-size:15px;gap:10px}.popup-info-item{font-size:15px}.popup-usage{margin-top:16px}.popup-usage h5{font-size:16px;font-weight:700;margin-bottom:14px}.usage-summary{gap:12px}.usage-item{border-radius:10px;padding:14px}.usage-icon{font-size:26px;min-width:32px}.usage-label{font-size:15px;font-weight:600}.usage-value{font-size:16px;font-weight:700}.popup-chart{margin-top:16px}.chart-bar{border-radius:10px;height:32px}.view-details-btn{-webkit-tap-highlight-color:transparent;border-radius:10px;font-size:16px;font-weight:700;margin-top:16px;min-height:52px;padding:14px 18px}.popup-loading{font-size:15px;padding:24px}.leaflet-popup-content-wrapper{border-radius:12px;box-shadow:0 6px 20px #0003}.leaflet-popup-content{margin:0;max-width:340px}.leaflet-popup-close-button{font-size:24px!important;height:32px!important;line-height:32px!important;padding:0!important;width:32px!important}}.map-controls-overlay{animation:fadeIn .2s ease-out;background:#0000004d;bottom:0;left:0;position:fixed;right:0;top:0;z-index:999}.map-controls-menu{align-items:flex-end;bottom:20px;display:flex;flex-direction:column;gap:12px;position:fixed;right:20px;z-index:1000}.map-controls-items{animation:slideUp .3s ease-out;display:flex;flex-direction:column;gap:8px;max-height:calc(100vh - 200px);overflow-y:auto;padding-right:4px}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.map-controls-item{align-items:center;background:#fff;border:none;border-radius:8px;box-shadow:0 2px 8px #00000026;color:#667eea;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:10px;min-width:250px;padding:12px 16px;transition:all .2s;white-space:nowrap}.map-controls-item:hover{box-shadow:0 4px 12px #0003;transform:translateX(-4px)}.map-controls-item:active{transform:translateX(-2px)}.map-controls-icon{font-size:18px;min-width:24px;text-align:center}.map-controls-label{flex:1 1;text-align:left}.map-controls-toggle{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:50%;box-shadow:0 4px 12px #667eea66;cursor:pointer;display:flex;height:56px;justify-content:center;transition:all .3s cubic-bezier(.68,-.55,.265,1.55);width:56px;z-index:1001}.map-controls-toggle:hover{box-shadow:0 6px 16px #667eea80;transform:scale(1.1)}.map-controls-toggle:active{transform:scale(.95)}.map-controls-toggle-icon{align-items:center;display:flex;font-size:24px;justify-content:center;transition:transform .3s ease}.map-controls-toggle-icon.rotate{transform:rotate(90deg)}.map-controls-items::-webkit-scrollbar{width:6px}.map-controls-items::-webkit-scrollbar-track{background:#0000}.map-controls-items::-webkit-scrollbar-thumb{background:#667eea4d;border-radius:3px}.map-controls-items::-webkit-scrollbar-thumb:hover{background:#667eea80}@media (max-width:768px){.map-controls-menu{bottom:80px;right:16px}.map-controls-item{font-size:13px;min-width:220px;padding:10px 14px}.map-controls-toggle{height:48px;width:48px}.map-controls-toggle-icon{font-size:20px}}.map-view{height:100%;position:relative;width:100%}.pole-label{background:#2c3e50e6!important;border:none!important;border-radius:4px!important;box-shadow:0 2px 4px #0003!important;color:#fff!important;font-size:12px!important;font-weight:600!important;padding:4px 8px!important}.pole-label:before{display:none!important}.pole-context-menu{animation:contextMenuFadeIn .15s ease-out;background:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026;min-width:180px;overflow:hidden}@keyframes contextMenuFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.context-menu-header{background:#3498db;border-bottom:1px solid #2980b9;color:#fff;font-size:14px;font-weight:600;padding:12px 16px}.context-menu-item{align-items:center;background:#fff;border:none;color:#2c3e50;cursor:pointer;display:flex;font-size:14px;gap:10px;padding:10px 16px;text-align:left;transition:background .2s;width:100%}.context-menu-item:hover{background:#ecf0f1}.context-menu-item.delete{border-top:1px solid #ecf0f1;color:#e74c3c}.context-menu-item.delete:hover{background:#fee}.context-menu-item span{font-size:16px}.map-container{height:100%;width:100%;z-index:1}.map-view-empty{align-items:center;background:#f8f9fa;display:flex;height:100%;justify-content:center;width:100%}.empty-message{color:#999}.empty-icon{font-size:80px;margin-bottom:20px}.empty-message h3{color:#666;margin:0 0 10px}.empty-message p{color:#999;font-size:14px;margin:0}.project-selection-view{align-items:center;background:#f8f9fa;display:flex;flex-direction:column;justify-content:flex-start;padding:40px 20px}.project-selection-header{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:16px;box-shadow:0 4px 16px #667eea33;color:#fff;margin-bottom:32px;max-width:800px;padding:32px;text-align:center;width:100%}.project-selection-header h2{font-size:32px;font-weight:700;margin:0 0 12px}.project-selection-header p{color:#fff;font-size:16px;margin:0;opacity:.95}.project-selection-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));max-width:800px;width:100%}.project-selection-item{align-items:center;background:#fff;border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 2px 8px #00000014;cursor:pointer;display:flex;gap:20px;padding:24px;text-align:left;transition:all .3s cubic-bezier(.4,0,.2,1)}.project-selection-item:hover{background:#f8f9fa;border-color:#667eea;box-shadow:0 8px 24px #667eea33;transform:translateY(-4px)}.project-selection-icon{flex-shrink:0;font-size:48px}.project-selection-info{flex:1 1;min-width:0}.project-selection-info h3{color:#2c3e50;font-size:20px;font-weight:600;margin:0 0 8px}.project-selection-info p{color:#64748b;font-size:14px;line-height:1.5;margin:0}.project-selection-arrow{color:#cbd5e0;flex-shrink:0;font-size:32px;transition:all .3s}.project-selection-item:hover .project-selection-arrow{color:#667eea;transform:translateX(4px)}@media (max-width:768px){.project-selection-view{padding:0}.project-selection-header{border-radius:0;margin-bottom:16px;padding:24px 20px}.project-selection-header h2{font-size:24px}.project-selection-header p{font-size:14px}.project-selection-grid{gap:12px;grid-template-columns:1fr;padding:0 16px 16px}.project-selection-item{border-radius:12px;padding:16px}.project-selection-icon{font-size:32px}.project-selection-info h3{font-size:16px}.project-selection-info p{font-size:13px}.project-selection-arrow{font-size:24px}}.pole-popup{min-width:200px}.pole-popup h4{color:#333;font-size:16px;margin:0 0 10px}.pole-popup p{color:#666;font-size:14px;margin:5px 0}.pole-popup .coordinates{color:#999;font-family:monospace;font-size:12px;margin-top:10px}.cable-popup{min-width:180px}.cable-popup h4{color:#333;font-size:16px;margin:0 0 10px}.cable-popup p{color:#666;font-size:14px;margin:5px 0}.map-legend{background:#fff;border-radius:12px;box-shadow:0 4px 12px #00000026;position:absolute;right:20px;top:20px;transition:all .3s ease;z-index:1000}.map-legend.collapsed{padding:0}.map-legend.expanded{min-width:180px;padding:0}.legend-toggle{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:12px;box-shadow:0 2px 8px #667eea4d;color:#fff;cursor:pointer;display:flex;font-size:14px;font-weight:600;gap:8px;padding:12px;transition:all .2s ease;width:100%}.legend-toggle:hover{box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.legend-toggle-icon{font-size:18px}.legend-toggle-text{flex:1 1;text-align:left}.legend-content{animation:legendSlideDown .2s ease-out;padding:16px}@keyframes legendSlideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.legend-item{gap:10px;margin-bottom:8px}.legend-item:last-child{margin-bottom:0}.legend-icon{border:2px solid #fff;border-radius:50%;box-shadow:0 1px 3px #0003;height:16px;width:16px}.legend-line{background:#2c3e50;border-radius:2px;height:3px;width:20px}.legend-item span{color:#666;font-size:13px}.map-info{background:#fff;border-radius:8px;bottom:20px;box-shadow:0 2px 8px #00000026;display:flex;gap:20px;left:20px;padding:12px 16px;position:absolute;z-index:1000}.info-item{align-items:center;display:flex;gap:8px}.info-label{color:#666;font-size:13px;font-weight:500}.info-value{color:#667eea;font-size:16px;font-weight:600}.custom-pole-icon{background:#0000!important;border:none!important}.leaflet-popup-content-wrapper{border-radius:8px;box-shadow:0 3px 14px #0003}.leaflet-popup-content{margin:12px}.leaflet-popup-tip{box-shadow:0 3px 14px #0003}.leaflet-control-zoom{border:none!important;box-shadow:0 2px 8px #00000026!important}.leaflet-control-zoom a{background:#fff!important;border:none!important;border-radius:4px!important;color:#667eea!important;font-weight:600!important}.leaflet-control-zoom a:hover{background:#667eea!important;color:#fff!important}.map-controls{bottom:20px;display:flex;flex-direction:column;gap:10px;position:absolute;right:20px;z-index:1000}.map-control-btn{align-items:center;background:#fff;border:none;border-radius:8px;box-shadow:0 2px 8px #00000026;color:#667eea;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;padding:12px 16px;transition:all .2s}.map-control-btn:hover{background:#667eea;box-shadow:0 4px 12px #667eea4d;color:#fff;transform:translateY(-2px)}@media (max-width:768px){.map-view{touch-action:pan-x pan-y}.pole-label{border-radius:6px!important;font-size:13px!important;font-weight:700!important;padding:6px 10px!important}.pole-context-menu{border-radius:12px;box-shadow:0 8px 24px #0003;min-width:240px}.context-menu-header{font-size:16px;font-weight:700;padding:16px 18px}.context-menu-item{-webkit-tap-highlight-color:transparent;font-size:16px;gap:14px;min-height:56px;padding:16px 18px}.context-menu-item span{font-size:20px;min-width:24px}.map-controls,.map-info,.map-legend{display:none!important}.empty-message{padding:40px 24px}.empty-message h3{font-size:22px}.empty-message p{font-size:16px}.leaflet-control-zoom{border-radius:12px!important;box-shadow:0 4px 12px #00000026!important;overflow:hidden}.leaflet-control-zoom a{border-radius:0!important;font-size:24px!important;height:48px!important;line-height:48px!important;width:48px!important}.leaflet-control-attribution{font-size:10px!important;padding:4px 8px!important}}.topology-view{background:#f8f9fa;display:flex;flex-direction:column;height:100%}.topology-header{align-items:center;background:#fff;border-bottom:2px solid #e0e0e0;display:flex;justify-content:space-between;padding:20px}.topology-header h2{color:#2c3e50;margin:0}.topology-legend{display:flex;gap:20px}.legend-item{align-items:center;color:#2c3e50;display:flex;font-size:14px;gap:8px}.legend-color{border:2px solid #2c3e50;border-radius:50%;height:20px;width:20px}.legend-color.olt{background:#e74c3c}.legend-color.pole{background:#3498db}.legend-color.customer{background:#27ae60}.topology-content{display:flex;flex:1 1;overflow:hidden}.topology-canvas-container{background:#fff;flex:1 1;overflow:auto;padding:20px}.topology-canvas-container canvas{background:#fafafa;border:1px solid #e0e0e0;border-radius:8px;cursor:pointer}.topology-sidebar{background:#fff;border-left:2px solid #e0e0e0;display:flex;flex-direction:column;overflow:hidden;width:400px}.sidebar-header{align-items:center;background:#3498db;color:#fff;display:flex;justify-content:space-between;padding:20px}.sidebar-header h3{font-size:18px;margin:0}.sidebar-header button{align-items:center;background:#0000;border:none;border-radius:4px;color:#fff;cursor:pointer;display:flex;font-size:24px;height:30px;justify-content:center;padding:0;transition:background .2s;width:30px}.sidebar-header button:hover{background:#fff3}.sidebar-content{flex:1 1;overflow-y:auto;padding:20px}.info-section{background:#f8f9fa;border-left:4px solid #3498db;border-radius:8px;margin-bottom:24px;padding:16px}.info-section h4{color:#2c3e50;font-size:16px;margin:0 0 12px}.info-section p{color:#555;font-size:14px;margin:8px 0}.info-section p strong{color:#2c3e50;margin-right:8px}.cassette-section{margin-top:16px}.cassette-section h5{color:#2c3e50;font-size:14px;font-weight:600;margin:0 0 12px}.cassette-item{background:#fff;border:1px solid #e0e0e0;border-radius:6px;margin-bottom:8px;padding:12px}.cassette-item p{color:#555;font-size:13px;margin:4px 0}.cassette-item p strong{color:#2c3e50}.sidebar-content::-webkit-scrollbar{width:8px}.sidebar-content::-webkit-scrollbar-track{background:#f1f1f1}.sidebar-content::-webkit-scrollbar-thumb{background:#888;border-radius:4px}.sidebar-content::-webkit-scrollbar-thumb:hover{background:#555}.topology-header-controls{align-items:center;display:flex;gap:24px}.orientation-toggle{fontSize:14px;background:#fff;border:2px solid #667eea;border-radius:6px;color:#667eea;cursor:pointer;font-weight:600;padding:8px 16px;transition:all .2s}.orientation-toggle:hover{background:#f0f0ff}.orientation-toggle.active{background:#667eea;color:#fff}.cassette-doc{background:#fff;font-family:Arial,sans-serif;margin:0 auto;max-width:1200px;padding:40px}.doc-header{border-bottom:3px solid #3498db;margin-bottom:30px;padding-bottom:20px}.doc-header h2{color:#2c3e50;font-size:28px;margin:0 0 10px}.doc-header h3{color:#3498db;font-size:22px;margin:0 0 10px}.doc-subtitle{color:#7f8c8d;font-size:14px;font-style:italic;margin:0}.no-cassette{color:#95a5a6;font-size:16px;padding:20px;text-align:center}.doc-content{display:flex;flex-direction:column;gap:30px}.doc-section{background:#f8f9fa;border-left:4px solid #3498db;border-radius:8px;padding:24px}.doc-section h3{color:#2c3e50;font-size:20px;margin:0 0 8px}.section-description{color:#7f8c8d;font-size:14px;font-style:italic;margin:0 0 20px}.doc-item{background:#fff;border:1px solid #e0e0e0;border-radius:6px;margin-bottom:16px;padding:20px}.item-header{align-items:center;border-bottom:2px solid #ecf0f1;display:flex;justify-content:space-between;margin-bottom:16px;padding-bottom:12px}.item-header h4{color:#2c3e50;font-size:18px;margin:0}.splitter-type{background:#3498db;border-radius:12px;color:#fff;font-size:12px;font-weight:700;padding:4px 12px}.item-details{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.detail-row{display:flex;font-size:14px;gap:12px}.detail-row .label{color:#2c3e50;font-weight:600;min-width:150px}.detail-row .value{color:#555}.fiber-table{margin-top:16px}.fiber-table h5{color:#2c3e50;font-size:14px;font-weight:600;margin:0 0 12px}.fiber-table table,.splice-table,.splitter-outputs table{border-collapse:collapse;font-size:13px;width:100%}.fiber-table th,.splice-table th,.splitter-outputs th{background:#34495e;color:#fff;font-weight:600;padding:10px;text-align:left}.fiber-table td,.splice-table td,.splitter-outputs td{border-bottom:1px solid #ecf0f1;padding:10px}.fiber-table tr.tapped{background:#fff3cd}.fiber-table tr:hover,.splice-table tr:hover,.splitter-outputs tr:hover{background:#f8f9fa}.fiber-color-badge{border-radius:12px;color:#fff;display:inline-block;font-size:11px;font-weight:600;padding:4px 10px;text-transform:uppercase}.fiber-color-badge.blue{background:#3498db}.fiber-color-badge.orange{background:#e67e22}.fiber-color-badge.green{background:#27ae60}.fiber-color-badge.brown{background:#8b4513}.fiber-color-badge.slate{background:#708090}.fiber-color-badge.white{background:#bdc3c7;color:#2c3e50}.fiber-color-badge.red{background:#e74c3c}.fiber-color-badge.black{background:#2c3e50}.fiber-color-badge.yellow{background:#f1c40f;color:#2c3e50}.fiber-color-badge.violet{background:#9b59b6}.fiber-color-badge.rose{background:#ff69b4}.fiber-color-badge.aqua{background:#1abc9c}.status-badge{font-size:11px;padding:4px 10px}.status-badge.tapped{background:#27ae60;color:#fff}.status-badge.pass{background:#95a5a6;color:#fff}.na{color:#bdc3c7}.loss{color:#e67e22;font-size:11px;font-weight:600}.splice-table{margin-top:16px}.splice-table .arrow{color:#3498db;font-size:18px;font-weight:700;text-align:center}.fiber-badge{background:#ecf0f1;color:#2c3e50}.fiber-badge,.loss-badge{border-radius:4px;display:inline-block;font-size:12px;padding:4px 8px}.loss-badge{background:#e67e22;color:#fff;font-weight:600}.splitter-outputs{margin-top:16px}.splitter-outputs h5{color:#2c3e50;font-size:14px;font-weight:600;margin:0 0 12px}.summary{background:#ecf0f1;border-left-color:#27ae60}.summary-grid{grid-gap:16px;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.summary-item{background:#fff;border-radius:6px;display:flex;flex-direction:column;gap:8px;padding:16px}.summary-label{color:#7f8c8d;font-size:12px;font-weight:600;text-transform:uppercase}.summary-value{color:#2c3e50;font-size:24px;font-weight:700}.doc-footer{border-top:2px solid #ecf0f1;color:#95a5a6;display:flex;font-size:12px;justify-content:space-between;margin-top:40px;padding-top:20px}.doc-footer p{margin:0}@media print{@page{size:A4 portrait;margin:10mm 8mm;orphans:3;widows:3}*{color-adjust:exact!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}body,html{font-size:8pt!important;height:auto!important;margin:0!important;overflow:visible!important;padding:0!important;width:100%}body *{visibility:hidden!important}.cassette-doc,.cassette-doc *{visibility:visible!important}.btn-back,.btn-print,.detail-header{display:none!important;visibility:hidden!important}.cassette-doc{background:#fff!important;height:auto!important;margin:0!important;max-height:none!important;max-width:none!important;overflow:visible!important;padding:0!important;position:static!important;width:100%!important}.doc-header{border-bottom:1px solid #000;margin-bottom:3mm;padding-bottom:2mm;page-break-after:avoid}.doc-header h2{font-size:14pt;margin:0 0 1mm}.doc-header h3{font-size:12pt;margin:0 0 1mm}.doc-subtitle{font-size:8pt}.doc-content{display:block!important}.doc-section{margin-bottom:3mm;orphans:3;page-break-after:auto;page-break-inside:auto;widows:3}.doc-section h3{font-size:11pt;page-break-after:avoid}.section-description{font-size:8pt}.doc-item{margin-bottom:2mm;page-break-after:auto;page-break-inside:auto}.item-header{display:block!important;page-break-after:avoid}.item-header h4{font-size:10pt}.detail-row,.item-details{display:block!important}.detail-row{font-size:8pt}.fiber-table table,.splice-table,.splitter-outputs table{font-size:7pt;page-break-inside:auto}.fiber-table thead,.splice-table thead,.splitter-outputs thead{display:table-header-group;page-break-after:avoid}.fiber-table tr,.splice-table tr,.splitter-outputs tr{page-break-after:auto;page-break-inside:avoid}.fiber-table td,.fiber-table th,.splice-table td,.splice-table th,.splitter-outputs td,.splitter-outputs th{font-size:7pt;padding:1mm}.summary-grid{display:block!important}.summary-item{display:inline-block!important;margin-bottom:2mm;width:48%}.summary-label{font-size:7pt}.summary-value{font-size:12pt}.doc-footer{display:block!important;font-size:7pt;margin-top:3mm;padding-top:2mm}}.technical-documentation{background:#f9fafb;min-height:100vh;padding:24px}.tech-doc-header{align-items:center;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;display:flex;justify-content:space-between;margin-bottom:24px;padding:24px}.tech-doc-title h1{color:#1f2937;font-size:28px;margin:0 0 8px}.tech-doc-title p{color:#6b7280;font-size:14px;margin:0}.btn-print{background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:12px 24px;transition:all .2s}.btn-print:hover{box-shadow:0 4px 12px #6366f14d;transform:translateY(-2px)}.tech-doc-nav{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;display:flex;gap:8px;margin-bottom:24px;overflow-x:auto;padding:16px}.tech-doc-nav button{background:#f3f4f6;border:2px solid #0000;border-radius:8px;color:#6b7280;cursor:pointer;font-size:13px;font-weight:600;padding:10px 20px;transition:all .2s;white-space:nowrap}.tech-doc-nav button:hover{background:#e5e7eb;color:#374151}.tech-doc-nav button.active{background:linear-gradient(135deg,#6366f1,#8b5cf6);border-color:#6366f1;color:#fff}.tech-doc-content{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;padding:32px}.tech-doc-section{margin-bottom:48px}@media screen{.tech-doc-section.inactive{display:none}}.tech-doc-section.active{display:block}.tech-doc-section:last-child{margin-bottom:0}.tech-doc-section h2{border-bottom:3px solid #6366f1;color:#1f2937;font-size:24px;margin:0 0 24px;padding-bottom:12px}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-top:24px}.stat-card{background:linear-gradient(135deg,#f9fafb,#fff);border:2px solid #e5e7eb;transition:all .2s}.stat-card:hover{border-color:#6366f1;box-shadow:0 4px 12px #6366f11a}.stat-icon{align-items:center;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:12px;display:flex;height:48px;justify-content:center;width:48px}.stat-info{flex:1 1}.stat-value{color:#1f2937;line-height:1;margin-bottom:4px}.tech-table{border-collapse:collapse;font-size:13px;margin-top:16px;width:100%}.tech-table thead{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff}.tech-table th{font-size:12px;font-weight:600;letter-spacing:.5px;padding:12px 16px;text-align:left;text-transform:uppercase}.tech-table tbody tr{border-bottom:1px solid #e5e7eb;transition:background .2s}.tech-table tbody tr:hover{background:#f9fafb}.tech-table td{color:#374151;padding:12px 16px}.tech-table td strong{color:#1f2937;font-weight:600}.tech-table td em{color:#9ca3af;font-style:italic}.gps-cell{color:#6b7280;font-family:Courier New,monospace;font-size:11px}.table-section-header{background:#4f46e5!important;font-size:13px!important;letter-spacing:1px;text-align:center!important}.splitter-detail{background:#f9fafb;border:2px solid #e5e7eb;border-radius:12px;margin-bottom:32px;padding:24px}.splitter-detail h3{border-bottom:2px solid #6366f1;color:#1f2937;font-size:18px;margin:0 0 16px;padding-bottom:12px}.print-only{display:none}.tech-doc-print-header{border-bottom:3px solid #1f2937;margin-bottom:32px;padding-bottom:24px;text-align:center}.tech-doc-print-header h1{color:#1f2937;font-size:32px;margin:0 0 16px}.print-meta{color:#6b7280;display:flex;font-size:14px;gap:48px;justify-content:center}@media print{@page{size:A4 portrait;margin:10mm 8mm;orphans:3;widows:3}*{color-adjust:exact!important;box-sizing:border-box!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}html{height:100%!important}body,html{margin:0!important;overflow:visible!important;padding:0!important;width:100%!important}body{font-size:8pt!important;height:auto!important}body *{visibility:hidden!important}.technical-documentation,.technical-documentation *{visibility:visible!important}.technical-documentation{background:#fff!important;height:auto!important;margin:0!important;max-height:none!important;max-width:none!important;overflow:visible!important;padding:0!important;position:static!important;width:100%!important}.no-print,.no-print *,.tech-doc-header,.tech-doc-nav{display:none!important;visibility:hidden!important}.print-only{display:block!important;visibility:visible!important}.tech-doc-content{box-shadow:none!important;height:auto!important;margin:0!important;max-height:none!important;overflow:visible!important;padding:0!important;position:static!important;width:100%!important}.tech-doc-section.active,.tech-doc-section.inactive{display:block!important;margin-bottom:4mm!important;opacity:1!important;orphans:3;page-break-after:auto;page-break-inside:auto;position:static!important;visibility:visible!important;widows:3}.tech-doc-section h2{font-size:10pt!important;margin:3mm 0 2mm!important;orphans:3;padding:1mm 2mm!important;page-break-after:avoid;page-break-before:auto;widows:3}.tech-doc-section h3{font-size:9pt!important;margin:2mm 0 1mm!important}.tech-doc-section h3,.tech-doc-section h4{page-break-after:avoid;page-break-inside:avoid}.tech-doc-section h4{font-size:8pt!important;margin:1.5mm 0 .5mm!important}.tech-table{border:2px solid #333!important;border-collapse:collapse!important;font-size:6.5pt!important;margin:1mm 0 3mm!important;page-break-inside:auto;table-layout:auto!important;width:100%!important}.tech-table tr{page-break-after:auto;page-break-inside:avoid}.tech-table thead{page-break-after:avoid}.tech-table th{background:#e0e0e0!important;border:1px solid #333!important;font-size:7pt!important;font-weight:700!important;padding:1mm 1.5mm!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;text-transform:uppercase!important}.tech-table td,.tech-table th{word-wrap:break-word!important;overflow-wrap:break-word!important}.tech-table td{border:1px solid #666!important;font-size:6.5pt!important;padding:.8mm 1.5mm!important}.tech-table tbody tr:nth-child(2n){background:#f5f5f5!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.tech-table thead{display:table-header-group!important}.tech-table tbody{display:table-row-group!important}.tech-table tfoot{display:table-footer-group!important}.splitter-detail h3{background-color:#f3f4f6!important;border-left:2px solid #3b82f6!important;font-size:8pt!important;margin-bottom:1mm!important;padding:1mm 2mm!important}.table-section-header{background-color:#d0d0d0!important;font-size:7pt!important;font-weight:700!important;text-align:center!important}.tech-doc-print-header{border-bottom:1px solid #000!important;display:block!important;margin-bottom:3mm!important;padding:2mm!important;page-break-after:avoid!important;text-align:center!important}.tech-doc-print-header h1{color:#000!important;font-size:14pt!important;font-weight:700!important;letter-spacing:0!important;margin:0 0 1mm!important}.print-meta{display:block!important;font-size:8pt!important;text-align:center!important}.print-meta span{margin:0 5mm!important}.print-meta div,.print-meta span{display:inline-block!important}.print-meta strong{color:#000!important}.stats-grid{display:block!important;margin-bottom:2mm!important;page-break-inside:avoid!important}.stat-card{border:1px solid #ddd!important;box-shadow:none!important;display:inline-block!important;font-size:6pt!important;margin:0 1% 1mm 0!important;padding:1mm!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;text-align:center!important;vertical-align:top!important;width:23%!important}.stat-card .stat-icon,.stat-card .stat-value{font-size:10pt!important;margin-bottom:.5mm!important}.stat-card .stat-value{font-weight:700!important}.stat-card .stat-label{font-size:6pt!important;text-align:center!important}.splitter-detail{border:1px solid #ddd!important;font-size:6.5pt!important;margin-bottom:2mm!important;padding:1mm!important;page-break-inside:auto!important}.splitter-detail h4{font-size:8pt!important;margin-bottom:1mm!important}.tech-doc-section{page-break-before:auto}.tech-doc-section:first-of-type{page-break-before:avoid}.print-header{border-bottom:2px solid #333;margin-bottom:12px;padding-bottom:10px}.print-header h1{font-size:18pt;margin:0 0 6px}.print-header p{font-size:9pt;margin:0}}@media (max-width:768px){.technical-documentation{padding:16px}.tech-doc-header{align-items:flex-start;flex-direction:column;gap:16px}.tech-doc-nav{flex-wrap:wrap}.stats-grid{grid-template-columns:1fr}.tech-table{font-size:11px}.tech-table td,.tech-table th{padding:8px 12px}}.project-deliverable{background:#f9fafb;min-height:100vh;padding:24px}.deliverable-header{align-items:center;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;display:flex;justify-content:space-between;margin-bottom:24px;padding:24px}.deliverable-title h1{color:#1f2937;font-size:28px;margin:0 0 8px}.deliverable-title p{color:#6b7280;font-size:14px;margin:0}.deliverable-nav{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;display:flex;gap:8px;margin-bottom:24px;overflow-x:auto;padding:16px}.deliverable-nav button{background:#f3f4f6;border:2px solid #0000;border-radius:8px;color:#6b7280;cursor:pointer;font-size:13px;font-weight:600;padding:10px 20px;transition:all .2s;white-space:nowrap}.deliverable-nav button:hover{background:#e5e7eb;color:#374151}.deliverable-nav button.active{background:linear-gradient(135deg,#6366f1,#8b5cf6);border-color:#6366f1;color:#fff}.deliverable-content{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;min-height:800px;padding:48px}.deliverable-section{margin-bottom:48px}.section-title{border-bottom:3px solid #6366f1;color:#1f2937;font-size:28px;margin:0 0 32px;padding-bottom:16px}.cover-page{align-items:center;display:flex;justify-content:center;min-height:700px;text-align:center}.cover-content{max-width:600px}.cover-logo{margin-bottom:48px}.logo-circle{align-items:center;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:50%;box-shadow:0 8px 24px #6366f14d;display:flex;height:120px;justify-content:center;margin:0 auto;width:120px}.logo-icon{font-size:64px}.cover-title{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#6366f1,#8b5cf6);-webkit-background-clip:text;background-clip:text;font-size:48px;font-weight:800;letter-spacing:-1px;margin:0 0 16px}.cover-project-name{color:#1f2937;font-size:32px;font-weight:600;margin:0 0 32px}.cover-divider{background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:2px;height:4px;margin:32px auto;width:100px}.cover-info{margin:32px 0}.cover-info-item{display:flex;font-size:16px;gap:12px;justify-content:center;margin:16px 0}.cover-label{color:#6b7280;font-weight:500}.cover-value{color:#1f2937;font-weight:600}.cover-footer{border-top:2px solid #e5e7eb;margin-top:48px;padding-top:32px}.cover-footer p{color:#6b7280;font-size:14px;line-height:1.6;margin:8px 0}.summary-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-bottom:32px}.summary-card{border:2px solid;border-radius:12px;padding:24px;transition:all .2s}.summary-card.primary{background:linear-gradient(135deg,#eff6ff,#dbeafe);border-color:#3b82f6}.summary-card.success{background:linear-gradient(135deg,#f0fdf4,#dcfce7);border-color:#10b981}.summary-card.info{background:linear-gradient(135deg,#faf5ff,#f3e8ff);border-color:#8b5cf6}.summary-card.warning{background:linear-gradient(135deg,#fffbeb,#fef3c7);border-color:#f59e0b}.summary-card:hover{box-shadow:0 8px 24px #0000001a;transform:translateY(-4px)}.summary-icon{font-size:48px;margin-bottom:16px}.summary-content h3{color:#1f2937;font-size:18px;font-weight:600;margin:0 0 16px}.summary-stats{display:flex;justify-content:space-between}.summary-stat{align-items:center;display:flex;flex-direction:column;text-align:center}.stat-number{color:#1f2937;font-size:24px;font-weight:700;line-height:1;margin-bottom:4px}.stat-label{color:#6b7280;font-size:12px;font-weight:500}.project-description{background:#f9fafb;border-left:4px solid #6366f1;border-radius:12px;padding:24px}.project-description h3{color:#1f2937;font-size:20px;margin:0 0 16px}.project-description p{color:#374151;font-size:15px;line-height:1.8;margin:12px 0}.project-description strong{color:#1f2937;font-weight:600}.tech-params{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(400px,1fr))}.param-group{background:#f9fafb;border:2px solid #e5e7eb;border-radius:12px;padding:24px}.param-group h3{border-bottom:2px solid #6366f1;color:#1f2937;font-size:18px;margin:0 0 16px;padding-bottom:12px}.param-table{font-size:14px;width:100%}.param-table tr{border-bottom:1px solid #e5e7eb}.param-table tr:last-child{border-bottom:none}.param-table td{padding:12px 8px}.param-label{color:#6b7280;font-weight:500;width:40%}.param-value{color:#1f2937;font-weight:600}.customers-summary{display:flex;gap:24px;margin-bottom:32px}.customer-stat-box{background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:12px;color:#fff;flex:1 1;padding:24px;text-align:center}.customer-stat-number{display:block;font-size:48px;font-weight:700;margin-bottom:8px}.customer-stat-label{display:block;font-size:14px;opacity:.9}.customers-table{font-size:14px}.customers-table thead{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff}.customers-table tbody tr{border-bottom:1px solid #e5e7eb;transition:background .2s}.customers-table td{color:#374151;padding:12px 16px}.status-badge{white-space:nowrap}.status-active{background:#d1fae5;color:#065f46}.status-warning{background:#fef3c7;color:#92400e}.status-offline{background:#fee2e2;color:#991b1b}.warranty-content{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(400px,1fr))}.warranty-box{background:#f9fafb;border:2px solid #e5e7eb;border-radius:12px;padding:24px}.warranty-box h3{border-bottom:2px solid #6366f1;color:#1f2937;font-size:18px;margin:0 0 16px;padding-bottom:12px}.warranty-box p{color:#374151;font-size:14px;line-height:1.6;margin:0 0 16px}.warranty-box ul{margin:0;padding-left:20px}.warranty-box li{color:#374151;font-size:14px;line-height:1.6;margin:8px 0}.warranty-box strong{color:#1f2937;font-weight:600}.signature-section{border-top:2px solid #e5e7eb;display:flex;gap:48px;justify-content:space-around;margin-top:64px;padding-top:32px}.signature-box{flex:1 1;text-align:center}.signature-line{background:#1f2937;height:2px;margin-bottom:12px;width:100%}.signature-label{color:#6b7280;font-size:14px;font-weight:500;margin:0}.signature-date{color:#9ca3af;font-size:12px;margin:8px 0 0}@media print{@page{size:A4 portrait;margin:10mm 8mm;orphans:3;widows:3}*{color-adjust:exact!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}body,html{font-size:8pt!important;height:100%;margin:0!important;padding:0!important;width:100%}body *{visibility:hidden!important}.project-deliverable,.project-deliverable *{visibility:visible!important}.project-deliverable{background:#fff!important;height:auto!important;margin:0!important;max-height:none!important;max-width:none!important;overflow:visible!important;padding:0!important;position:static!important;width:100%!important}.deliverable-header,.deliverable-nav,.no-print,.no-print *{display:none!important;visibility:hidden!important}.print-only{display:block!important;visibility:visible!important}.deliverable-content{border-radius:0!important;box-shadow:none!important;height:auto!important;margin:0!important;max-height:none!important;overflow:visible!important;padding:0!important;position:static!important;width:100%!important}.deliverable-section{display:block!important;margin-bottom:4mm!important;opacity:1!important;orphans:3;page-break-after:auto;page-break-inside:auto;position:static!important;visibility:visible!important;widows:3}.section-title{font-size:12pt!important;margin:3mm 0 2mm!important;orphans:3;padding-bottom:1mm!important;page-break-after:avoid;page-break-before:auto;widows:3}.cover-page{min-height:auto!important;padding:20mm 0!important;page-break-after:always!important}.cover-title{color:#6366f1!important;font-size:18pt!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.cover-project-name{font-size:14pt!important}.logo-circle{-webkit-print-color-adjust:exact;print-color-adjust:exact}.summary-grid{display:block!important;margin-bottom:3mm!important}.summary-card{display:inline-block!important;font-size:7pt!important;margin:0 1% 2mm 0!important;padding:2mm!important;page-break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact;vertical-align:top!important;width:48%!important}.summary-card.primary{border-color:#3b82f6!important}.summary-card.success{border-color:#10b981!important}.summary-card.info{border-color:#8b5cf6!important}.summary-card.warning{border-color:#f59e0b!important}.param-group,.tech-params{display:block!important}.param-group{margin-bottom:3mm!important;padding:2mm!important;page-break-inside:avoid}.param-group h3{font-size:9pt!important;margin-bottom:1mm!important;page-break-after:avoid}.param-table{font-size:7pt!important}.param-table td{padding:.5mm 1mm!important}.customers-summary{display:block!important;margin-bottom:3mm!important}.customer-stat-box{display:inline-block!important;margin:0 1% 2mm 0!important;padding:2mm!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;width:48%!important}.customer-stat-number{font-size:18pt!important}.customer-stat-label{font-size:8pt!important}.customers-table{border-collapse:collapse!important;font-size:6.5pt!important;margin:1mm 0 3mm!important;page-break-inside:auto;width:100%!important}.customers-table tr{page-break-after:auto;page-break-inside:avoid}.customers-table thead{display:table-header-group;page-break-after:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact}.customers-table th{font-size:7pt!important;padding:1mm 1.5mm!important}.customers-table td{font-size:6.5pt!important;padding:.8mm 1.5mm!important}.warranty-box,.warranty-content{display:block!important}.warranty-box{margin-bottom:3mm!important;padding:2mm!important;page-break-inside:avoid}.warranty-box h3{font-size:9pt!important;margin-bottom:1mm!important;page-break-after:avoid}.warranty-box li,.warranty-box p{font-size:7pt!important;line-height:1.4!important}.signature-section{display:block!important;margin-top:10mm!important;padding-top:5mm!important;page-break-inside:avoid}.signature-box{display:inline-block!important;margin:0 1% 0 0!important;vertical-align:top!important;width:48%!important}.signature-label{font-size:8pt!important}.signature-date{font-size:7pt!important}.project-description{margin-bottom:3mm!important;padding:2mm!important;page-break-inside:auto}.project-description h3{font-size:9pt!important;margin-bottom:1mm!important;page-break-after:avoid}.project-description p{font-size:7pt!important;line-height:1.4!important}}@media (max-width:768px){.project-deliverable{padding:16px}.deliverable-header{align-items:flex-start;flex-direction:column;gap:16px}.deliverable-content{padding:24px}.cover-title{font-size:32px}.cover-project-name{font-size:24px}.summary-grid,.tech-params,.warranty-content{grid-template-columns:1fr}.customers-summary{flex-direction:column}.customers-table{font-size:12px}.customers-table td,.customers-table th{padding:8px 12px}.signature-section{flex-direction:column;gap:32px}}.installation-checklist-overview{margin:0 auto;max-width:1400px;min-height:100%;overflow-y:auto;padding:24px}.overview-header{margin-bottom:32px}.overview-header h1{color:#1a1a1a;font-size:28px;font-weight:700;margin:0 0 8px}.overview-header p{color:#666;font-size:14px;margin:0}.summary-stats{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:24px}.stat-card{align-items:center;border-radius:12px;box-shadow:0 2px 8px #0000001a;display:flex;gap:16px;transition:transform .2s,box-shadow .2s}.stat-card:hover{box-shadow:0 4px 12px #00000026;transform:translateY(-2px)}.stat-icon{font-size:32px;line-height:1}.stat-content{flex:1 1}.stat-label{color:#666;font-size:13px;margin-bottom:4px}.stat-value{color:#1a1a1a;font-size:28px}.stat-percentage{color:#666;font-size:14px;margin-top:4px}.stat-total{border-left:4px solid #2196f3}.stat-not-started{border-left:4px solid #9e9e9e}.stat-in-progress{border-left:4px solid #ff9800}.stat-completed{border-left:4px solid #4caf50}.stat-tasks{border-left:4px solid #673ab7}.overall-progress{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;margin-bottom:24px;padding:20px}.progress-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.progress-label{color:#1a1a1a;font-size:14px;font-weight:600}.progress-percentage{color:#4caf50;font-size:18px;font-weight:700}.progress-bar-container{background:#e0e0e0;border-radius:12px;height:24px;overflow:hidden;width:100%}.progress-bar-fill{background:linear-gradient(90deg,#4caf50,#66bb6a);border-radius:12px;height:100%;transition:width .3s ease}.filters-section{background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;margin-bottom:16px;padding:20px}.filter-buttons{flex-wrap:wrap;gap:12px;margin-bottom:16px}.filter-btn{background:#fff;border:2px solid #e0e0e0;border-radius:8px;color:#666;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .2s}.filter-btn:hover{border-color:#2196f3;color:#2196f3}.filter-btn.active{background:#2196f3;border-color:#2196f3;color:#fff}.search-container{position:relative}.search-input{border:2px solid #e0e0e0;border-radius:8px;font-size:14px;padding:12px 40px 12px 16px;transition:border-color .2s;width:100%}.search-input:focus{border-color:#2196f3;outline:none}.search-clear{background:none;border:none;color:#999;cursor:pointer;font-size:18px;line-height:1;padding:4px 8px;position:absolute;right:12px;top:50%;transform:translateY(-50%)}.search-clear:hover{color:#666}.results-count{color:#666;margin-bottom:16px;padding:0 4px}.poles-table-container{-webkit-overflow-scrolling:touch;background:#fff;border-radius:12px;box-shadow:0 2px 8px #0000001a;overflow-x:auto;overflow-y:visible}.poles-table{border-collapse:collapse;min-width:800px;width:100%}.poles-table thead{background:#f5f5f5}.poles-table th{border-bottom:2px solid #e0e0e0;color:#666;font-size:13px;font-weight:600;letter-spacing:.5px;padding:16px;text-align:left;text-transform:uppercase}.poles-table tbody tr{border-bottom:1px solid #e0e0e0;transition:background-color .2s}.poles-table tbody tr:hover{background:#f9f9f9}.poles-table td{color:#1a1a1a;font-size:14px;padding:16px}.pole-name{color:#2196f3;font-weight:600}.pole-type-badge{display:inline-block;font-size:12px}.pole-type-badge.pole{background:#e3f2fd;color:#1976d2}.pole-type-badge.olt{background:#f3e5f5;color:#7b1fa2}.pole-type-badge.splitter{background:#fff3e0;color:#e65100}.status-badge-completed{background:#e8f5e9;color:#2e7d32}.status-badge-in-progress{background:#fff3e0;color:#e65100}.status-badge-not-started{background:#f5f5f5;color:#757575}.progress-cell{align-items:center;display:flex;gap:12px}.progress-bar-small-container{background:#e0e0e0;border-radius:4px;flex:1 1;height:8px;min-width:80px;overflow:hidden}.progress-bar-small-fill{border-radius:4px;height:100%;transition:width .3s ease}.progress-bar-small-fill.completed{background:#4caf50}.progress-bar-small-fill.in-progress{background:#ff9800}.progress-bar-small-fill.not-started{background:#9e9e9e}.progress-text{font-size:13px;min-width:40px}.progress-text,.tasks-count{color:#666;font-weight:600}.custom-tasks-count{text-align:center}.custom-tasks-badge{background:#673ab7;border-radius:12px;color:#fff;display:inline-block;font-size:12px;font-weight:600;padding:4px 10px}.no-custom-tasks{color:#ccc;font-size:16px}.btn-open-checklist{background:#2196f3;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:8px 16px;transition:background-color .2s}.btn-open-checklist:hover{background:#1976d2}.no-results{padding:60px 20px;text-align:center}.no-results p{color:#999;font-size:16px}@media (max-width:768px){.installation-checklist-overview{-webkit-overflow-scrolling:touch;height:100%;overflow-y:auto;padding:16px}.overview-header h1{font-size:22px}.overview-header p{font-size:13px}.summary-stats{gap:12px;grid-template-columns:repeat(2,1fr)}.stat-card{gap:12px;padding:16px}.stat-icon,.stat-value{font-size:24px}.stat-label{font-size:12px}.filter-buttons{gap:8px}.filter-btn{font-size:13px;padding:8px 14px}.search-input{padding:10px 36px 10px 14px}.results-count,.search-input{font-size:13px}.poles-table-container{border-radius:8px}.poles-table{min-width:700px}.poles-table td,.poles-table th{font-size:13px;padding:12px}.stat-percentage{font-size:13px}.progress-percentage{font-size:16px}}.CircularProgressbar{vertical-align:middle;width:100%}.CircularProgressbar .CircularProgressbar-path{stroke:#3e98c7;stroke-linecap:round;transition:stroke-dashoffset .5s ease 0s}.CircularProgressbar .CircularProgressbar-trail{stroke:#d6d6d6;stroke-linecap:round}.CircularProgressbar .CircularProgressbar-text{fill:#3e98c7;dominant-baseline:middle;text-anchor:middle;font-size:20px}.CircularProgressbar .CircularProgressbar-background{fill:#d6d6d6}.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-background{fill:#3e98c7}.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-text{fill:#fff}.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-path{stroke:#fff}.CircularProgressbar.CircularProgressbar-inverted .CircularProgressbar-trail{stroke:#0000}.tasks-view{background:#f5f7fa;min-height:100vh;overflow-x:auto;padding:20px}.tasks-header{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;padding:20px}.tasks-header h1{color:#1a202c;font-size:24px;margin:0 0 10px}.tasks-header-subtitle{color:#718096;font-size:14px;margin-bottom:20px}.tasks-header-actions{display:flex;flex-wrap:wrap;gap:10px}.tasks-header-actions button{align-items:center;border:none;border-radius:6px;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;padding:10px 20px;transition:all .2s}.tasks-header-actions button:hover{box-shadow:0 4px 8px #00000026;transform:translateY(-1px)}.tasks-header-actions button:first-child{background:#f59e0b;color:#fff}.tasks-header-actions button:first-child:hover{background:#d97706}.tasks-header-actions button:last-child{background:#3b82f6;color:#fff}.tasks-header-actions button:last-child:hover{background:#2563eb}.tasks-stats{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-bottom:20px;padding:20px}.tasks-stats-grid{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:20px}.tasks-stat-card{background:#f8fafc;border-left:4px solid #cbd5e1;border-radius:6px;padding:15px}.tasks-stat-card.total{border-left-color:#6366f1}.tasks-stat-card.todo{border-left-color:#94a3b8}.tasks-stat-card.in-progress{border-left-color:#3b82f6}.tasks-stat-card.testing{border-left-color:#f59e0b}.tasks-stat-card.done{border-left-color:#10b981}.tasks-stat-label{color:#64748b;font-size:12px;font-weight:600;margin-bottom:5px;text-transform:uppercase}.tasks-stat-value{color:#1e293b;font-size:28px;font-weight:700}.tasks-progress{margin-top:20px}.tasks-progress-label{color:#475569;display:flex;font-size:14px;justify-content:space-between;margin-bottom:8px}.tasks-progress-bar{background:#e2e8f0;border-radius:4px;height:8px;overflow:hidden;width:100%}.tasks-progress-fill{background:linear-gradient(90deg,#10b981,#059669);height:100%;transition:width .3s ease}.tasks-remaining{background:#fef3c7;border-left:4px solid #f59e0b;border-radius:4px;color:#92400e;font-size:14px;margin-top:15px;padding:12px}.kanban-board{display:flex;gap:20px;min-height:500px;overflow-x:auto;padding-bottom:20px}.kanban-column{background:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;display:flex;flex:1 1;flex-direction:column;max-height:calc(100vh - 400px);min-width:300px}.kanban-column-header{align-items:center;border-bottom:2px solid #e2e8f0;display:flex;justify-content:space-between;padding:15px}.kanban-column-title{align-items:center;color:#1e293b;display:flex;font-size:16px;font-weight:600;gap:8px}.kanban-column-count{background:#e2e8f0;border-radius:12px;color:#475569;font-size:12px;font-weight:600;padding:2px 8px}.kanban-column.todo .kanban-column-header{border-bottom-color:#94a3b8}.kanban-column.in_progress .kanban-column-header{border-bottom-color:#3b82f6}.kanban-column.testing .kanban-column-header{border-bottom-color:#f59e0b}.kanban-column.done .kanban-column-header{border-bottom-color:#10b981}.kanban-column-content{display:flex;flex:1 1;flex-direction:column;gap:12px;overflow-y:auto;padding:15px}.kanban-column-empty{color:#94a3b8;font-size:14px;padding:40px 20px;text-align:center}.task-card{background:#fff;border:1px solid #e2e8f0;border-radius:6px;box-shadow:0 1px 3px #0000001a;cursor:grab;padding:12px;transition:all .2s}.task-card:hover{box-shadow:0 4px 8px #00000026;transform:translateY(-2px)}.task-card:active{cursor:grabbing}.task-card-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:8px}.task-card-title{color:#1e293b;flex:1 1;font-size:14px;font-weight:600;margin-right:8px}.task-card-priority{border-radius:6px 0 0 6px;height:100%;left:0;position:absolute;top:0;width:4px}.task-card.priority-0{border-left:3px solid #94a3b8}.task-card.priority-1{border-left:3px solid #f59e0b}.task-card.priority-2{border-left:3px solid #ef4444}.task-card-type{background:#e2e8f0;border-radius:4px;color:#475569;display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;text-transform:uppercase}.task-card-body{margin-bottom:8px}.task-card-description{color:#64748b;font-size:13px;line-height:1.4;margin-bottom:8px}.task-card-meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.task-card-badge{align-items:center;background:#f1f5f9;border-radius:4px;color:#475569;display:inline-flex;font-size:11px;gap:4px;padding:3px 8px}.task-card-footer{align-items:center;border-top:1px solid #f1f5f9;display:flex;justify-content:space-between;padding-top:8px}.task-card-progress{gap:6px}.task-card-assigned,.task-card-progress{align-items:center;color:#64748b;display:flex;font-size:12px}.task-card-assigned{gap:4px}.task-dialog-overlay{align-items:center;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}.task-dialog{background:#fff;border-radius:8px;box-shadow:0 20px 25px -5px #0000001a;max-height:90vh;max-width:600px;overflow-y:auto;width:100%}.task-dialog-header{align-items:center;border-bottom:1px solid #e2e8f0;display:flex;justify-content:space-between;padding:20px}.task-dialog-header h2{color:#1e293b;font-size:20px;margin:0}.task-dialog-close{align-items:center;background:none;border:none;border-radius:4px;color:#94a3b8;cursor:pointer;display:flex;font-size:24px;height:32px;justify-content:center;padding:0;transition:all .2s;width:32px}.task-dialog-close:hover{background:#f1f5f9;color:#475569}.task-dialog-body{padding:20px}.task-dialog-footer{border-top:1px solid #e2e8f0;display:flex;gap:10px;justify-content:flex-end;padding:20px}.task-dialog-footer button{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .2s}.task-dialog-footer button:first-child{background:#e2e8f0;color:#475569}.task-dialog-footer button:first-child:hover{background:#cbd5e1}.task-dialog-footer button:last-child{background:#3b82f6;color:#fff}.task-dialog-footer button:last-child:hover{background:#2563eb}.documentation-view{background:#f8f9fa;display:flex;flex-direction:column;height:100vh}.documentation-header{align-items:center;background:#fff;border-bottom:2px solid #e0e0e0;box-shadow:0 2px 4px #0000001a;display:flex;justify-content:center;padding:16px 20px}.view-mode-selector{background:#ecf0f1;border-radius:10px;display:flex;gap:8px;padding:6px}.view-mode-selector button{background:#0000;border:none;border-radius:8px;color:#7f8c8d;cursor:pointer;font-size:15px;font-weight:600;padding:12px 24px;transition:all .2s}.view-mode-selector button:hover{background:#d5dbdb}.view-mode-selector button.active{background:#fff;box-shadow:0 2px 8px #3498db33;color:#3498db}.documentation-content{flex:1 1;overflow:auto}.pole-list-view{padding:30px}.pole-list-header{margin-bottom:30px}.pole-list-header h2{color:#2c3e50;font-size:22px;margin:0 0 8px}.pole-list-header p{color:#7f8c8d;font-size:14px;margin:0}.pole-search-container{margin-bottom:24px;max-width:600px;position:relative}.pole-search-input-doc{border:2px solid #e0e0e0;border-radius:10px;box-shadow:0 2px 4px #0000000d;font-size:15px;outline:none;padding:14px 48px 14px 16px;transition:all .2s;width:100%}.pole-search-input-doc:focus{border-color:#3498db;box-shadow:0 0 0 4px #3498db1a,0 2px 8px #0000001a}.pole-search-input-doc::placeholder{color:#999}.pole-search-clear-doc{align-items:center;background:#e0e0e0;border:none;border-radius:50%;color:#666;cursor:pointer;display:flex;font-size:14px;height:28px;justify-content:center;position:absolute;right:12px;top:50%;transform:translateY(-50%);transition:all .2s;width:28px}.pole-search-clear-doc:hover{background:#3498db;color:#fff;transform:translateY(-50%) scale(1.1)}.pole-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.pole-card{background:#fff;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;overflow:hidden;transition:all .2s}.pole-card:hover{border-color:#3498db;box-shadow:0 4px 12px #3498db33;transform:translateY(-2px)}.pole-card-header{align-items:center;background:#ecf0f1;border-bottom:2px solid #e0e0e0;display:flex;justify-content:space-between;padding:16px 20px}.pole-card-header h3{color:#2c3e50;font-size:18px;margin:0}.pole-type-badge{border-radius:12px;font-size:11px;font-weight:600;padding:4px 12px;text-transform:uppercase}.pole-type-badge.olt{background:#e74c3c;color:#fff}.pole-type-badge.pole{background:#3498db;color:#fff}.pole-type-badge.customer{background:#27ae60;color:#fff}.pole-card-content{display:flex;flex-direction:column;gap:12px;padding:20px}.pole-stat{align-items:center;display:flex;font-size:14px;gap:8px}.stat-icon{font-size:18px}.stat-label{color:#7f8c8d;flex:1 1}.stat-value{background:#ecf0f1;border-radius:12px;color:#2c3e50;font-weight:600;padding:4px 12px}.pole-card-footer{background:#f8f9fa;border-top:1px solid #e0e0e0;display:flex;gap:10px;padding:16px 20px}.btn-view-details{background:#3498db;border:none;border-radius:6px;color:#fff;cursor:pointer;flex:1 1;font-size:14px;font-weight:600;padding:10px;transition:background .2s}.btn-view-details:hover{background:#2980b9}.btn-photos{background:#9b59b6;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 16px;transition:background .2s;white-space:nowrap}.btn-photos:hover{background:#8e44ad}.btn-print-report{background:#27ae60;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;padding:10px 16px;transition:background .2s;white-space:nowrap}.btn-print-report:hover{background:#229954}.empty-state{color:#95a5a6}.empty-state p{font-size:16px;margin:8px 0}.pole-detail-view{padding:30px}.detail-header{display:flex;justify-content:space-between;margin-bottom:20px}.btn-back,.btn-print{background:#fff;border:2px solid #3498db;border-radius:6px;color:#3498db;cursor:pointer;font-size:14px;font-weight:600;padding:10px 20px;transition:all .2s}.btn-back:hover,.btn-print:hover{background:#3498db;color:#fff}@media (max-width:768px){.documentation-header{padding:12px 16px}.view-mode-selector{width:100%}.view-mode-selector button{flex:1 1;font-size:14px;padding:14px 12px}.pole-grid{gap:16px;grid-template-columns:1fr}.pole-detail-view,.pole-list-view{padding:16px}}@media print{.detail-header,.documentation-header{display:none!important}.documentation-content,.documentation-view{display:block!important;height:auto!important;overflow:visible!important}}.orders-view{flex-direction:column;overflow:hidden}.orders-view,.orders-view-empty{background:#f8f9fa;display:flex;height:100%}.orders-view-empty{align-items:center;justify-content:center}.empty-message{color:#64748b;text-align:center}.empty-icon{display:block;font-size:64px;margin-bottom:16px}.orders-header{align-items:center;background:#fff;border-bottom:2px solid #e2e8f0;box-shadow:0 2px 4px #0000000d;display:flex;justify-content:space-between;padding:24px 32px}.orders-header-left h1{color:#2c3e50;font-size:28px;margin:0 0 12px}.orders-stats{display:flex;font-size:14px;gap:16px}.orders-stats .stat{background:#f1f5f9;border-radius:12px;font-weight:500;padding:4px 12px}.orders-stats .stat.pending{background:#fef3c7;color:#92400e}.orders-stats .stat.approved{background:#d1fae5;color:#065f46}.orders-stats .stat.rejected{background:#fee2e2;color:#991b1b}.orders-stats .stat.converted{background:#dbeafe;color:#1e40af}.orders-filters{align-items:center;background:#fff;border-bottom:1px solid #e2e8f0;display:flex;gap:16px;padding:20px 32px}.search-box{flex:1 1;position:relative}.search-icon{color:#94a3b8;font-size:18px;left:12px;position:absolute;top:50%;transform:translateY(-50%)}.search-box input{border:2px solid #e2e8f0;border-radius:8px;font-size:14px;padding:10px 12px 10px 40px;transition:all .2s;width:100%}.search-box input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.filter-buttons{background:#f1f5f9;border-radius:8px;display:flex;gap:8px;padding:4px}.filter-buttons button{background:#0000;border:none;border-radius:6px;color:#64748b;cursor:pointer;font-size:14px;font-weight:600;padding:8px 16px;transition:all .2s}.filter-buttons button:hover{background:#e2e8f0}.filter-buttons button.active{background:#fff;box-shadow:0 2px 4px #0000001a;color:#667eea}.orders-list{display:flex;flex:1 1;flex-direction:column;gap:16px;overflow-y:auto;padding:24px 32px}.orders-loading{color:#64748b;font-size:18px}.orders-empty,.orders-loading{align-items:center;display:flex;flex:1 1;justify-content:center}.orders-empty{color:#94a3b8;font-size:16px}.order-card{background:#fff;border:2px solid #e2e8f0;border-radius:12px;padding:20px;transition:all .2s}.order-card:hover{border-color:#667eea;box-shadow:0 4px 12px #667eea26}.order-card-header{align-items:center;border-bottom:1px solid #f1f5f9;display:flex;justify-content:space-between;margin-bottom:16px;padding-bottom:12px}.order-number{color:#667eea;font-size:16px;font-weight:700}.status-badge{border-radius:12px;font-size:13px;font-weight:600;padding:6px 12px}.status-badge.status-pending{background:#fef3c7;color:#92400e}.status-badge.status-approved{background:#d1fae5;color:#065f46}.status-badge.status-rejected{background:#fee2e2;color:#991b1b}.status-badge.status-converted{background:#dbeafe;color:#1e40af}.order-card-body{margin-bottom:16px}.order-customer{align-items:center;display:flex;font-size:18px;gap:8px;margin-bottom:12px}.order-details{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-top:12px}.order-detail{display:flex;font-size:14px;gap:8px}.order-detail .label{color:#64748b;min-width:100px}.order-notes{background:#f8fafc;border-left:3px solid #667eea;border-radius:4px;color:#475569;font-size:14px;margin-top:12px;padding:12px}.order-card-actions{border-top:1px solid #f1f5f9;display:flex;gap:8px;padding-top:12px}.order-card-actions button{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;padding:8px 16px;transition:all .2s}.btn-detail{background:#f1f5f9;color:#475569}.btn-detail:hover{background:#e2e8f0}.btn-edit{background:#f59e0b;color:#fff}.btn-edit:hover{background:#d97706}.btn-approve{background:#10b981;color:#fff}.btn-approve:hover{background:#059669}.btn-reject{background:#ef4444;color:#fff}.btn-reject:hover{background:#dc2626}.btn-convert{background:#8b5cf6;color:#fff}.btn-convert:hover{background:#7c3aed}.btn-delete{background:#f1f5f9;color:#ef4444;margin-left:auto}.btn-delete:hover{background:#fee2e2}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:8px;font-size:15px;font-weight:600;padding:12px 24px;transition:all .2s}.btn-primary:hover{box-shadow:0 4px 12px #667eea4d;transform:translateY(-2px)}@media (max-width:768px){.orders-header{align-items:stretch;flex-direction:column;gap:16px;padding:16px}.orders-header-left h1{font-size:22px}.orders-stats{flex-wrap:wrap;gap:8px}.orders-filters{flex-direction:column;padding:16px}.filter-buttons{overflow-x:auto;width:100%}.orders-list{padding:16px}.order-details{grid-template-columns:1fr}.order-card-actions{flex-wrap:wrap}.btn-delete{margin-left:0;width:100%}}.dialog-overlay{align-items:center;background:#00000080;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.dialog-container{background:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;margin:20px;max-height:90vh;max-width:900px;overflow-y:auto;width:100%}.dialog-header{align-items:center;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;padding:24px}.dialog-header h2{color:#1e293b;font-size:24px;font-weight:700;margin:0}.dialog-close{align-items:center;background:none;border:none;color:#64748b;cursor:pointer;display:flex;font-size:32px;height:32px;justify-content:center;padding:0;transition:color .2s;width:32px}.dialog-close:hover{color:#1e293b}.dialog-content{padding:24px}.dialog-footer{border-top:1px solid #e5e7eb;display:flex;gap:12px;justify-content:flex-end;padding:24px}.form-section{margin-bottom:24px}.form-section h3{color:#1e293b;font-size:18px;font-weight:600;margin-bottom:16px}.form-grid{grid-gap:16px;display:grid;gap:16px}.form-grid.cols-2{grid-template-columns:repeat(2,1fr)}.form-grid.cols-3{grid-template-columns:repeat(3,1fr)}.form-group{display:flex;flex-direction:column}.form-group label{color:#374151;font-size:14px;font-weight:500;margin-bottom:6px}.form-group label .required{color:#ef4444}.form-group input,.form-group select,.form-group textarea{border:1px solid #d1d5db;border-radius:6px;color:#1e293b;font-size:14px;padding:10px 12px;transition:border-color .2s,box-shadow .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.form-group textarea{min-height:80px;resize:vertical}.form-group.full-width{grid-column:1/-1}.info-box{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;margin-bottom:24px;padding:16px}.info-box h3{color:#1e40af;font-size:16px;font-weight:600;margin-bottom:12px}.info-box .info-item{color:#1e40af;display:flex;font-size:14px;gap:8px;margin-bottom:6px}.info-box .info-item strong{font-weight:600}.warning-box{background:#fef3c7;border:1px solid #fde68a;border-radius:8px;display:flex;gap:12px;margin-top:24px;padding:16px}.warning-box .icon{color:#d97706;font-size:20px}.warning-box .content{flex:1 1}.warning-box .content strong{color:#92400e;font-weight:600}.warning-box .content p{color:#92400e;font-size:14px;line-height:1.5;margin:4px 0 0}.detail-section{background:#f8fafc;border-radius:8px;margin-bottom:16px;padding:20px}.detail-section h3{color:#1e293b;font-size:18px;font-weight:600;margin-bottom:16px}.detail-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}.detail-item{display:flex;flex-direction:column}.detail-item.full-width{grid-column:1/-1}.detail-label{color:#64748b;font-size:13px;margin-bottom:4px}.detail-value{color:#1e293b;font-size:15px;font-weight:500}.detail-section.blue{background:#eff6ff}.detail-section.blue h3{color:#1e40af}.detail-section.blue .detail-value{color:#2563eb;font-size:20px;font-weight:700}.btn{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .2s}.btn-secondary{background:#e5e7eb;color:#374151}.btn-secondary:hover{background:#d1d5db}.btn-success{background:#10b981;color:#fff}.btn-success:hover{background:#059669}@media (max-width:768px){.dialog-container{border-radius:0;margin:0;max-height:100vh;max-width:100%}.detail-grid,.form-grid.cols-2,.form-grid.cols-3{grid-template-columns:1fr}.dialog-header h2{font-size:20px}}.customers-view{height:100%;margin:0 auto;overflow-x:visible;overflow-y:auto;padding:24px}@media (max-width:768px){.stats-grid{display:none!important}.customers-view{padding:16px 16px 100px}.customers-header{margin-bottom:16px}.customers-header h1{font-size:20px}.filters-container{margin-bottom:16px;padding:12px}.customers-table-container{-webkit-overflow-scrolling:touch;margin:0 -16px;overflow-x:auto;padding:0 16px}.customers-table{min-width:800px}.customers-table td,.customers-table th{font-size:13px;padding:12px}}.customers-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:24px}.customers-header h1{color:#1e293b;font-size:28px;font-weight:700;margin:0}.stats-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(5,1fr);margin-bottom:24px}.stat-card{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;padding:20px}.stat-card.green{background:#f0fdf4}.stat-card.blue{background:#eff6ff}.stat-card.yellow{background:#fefce8}.stat-card.red{background:#fef2f2}.stat-label{color:#64748b;font-size:14px;margin-bottom:8px}.stat-value{color:#1e293b;font-size:32px;font-weight:700}.stat-card.green .stat-label,.stat-card.green .stat-value{color:#16a34a}.stat-card.blue .stat-label,.stat-card.blue .stat-value{color:#2563eb}.stat-card.yellow .stat-label,.stat-card.yellow .stat-value{color:#ca8a04}.stat-card.red .stat-label,.stat-card.red .stat-value{color:#dc2626}.filters-container{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;margin-bottom:24px;padding:20px}.filters-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(3,1fr)}.filter-group label{color:#374151;display:block;font-size:14px;font-weight:500;margin-bottom:4px}.filter-group input,.filter-group select{border:1px solid #d1d5db;border-radius:6px;font-size:14px;padding:8px 12px;width:100%}.filter-group input:focus,.filter-group select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}.results-count{color:#64748b;font-size:14px;margin-top:12px}.customers-table-container{background:#fff;border-radius:8px;box-shadow:0 1px 3px #0000001a;overflow-x:auto!important;overflow-y:visible}.customers-table{border-collapse:collapse;min-width:1500px;width:100%}.customers-table thead{background:#f8fafc}.customers-table th{color:#64748b;font-size:12px;font-weight:600;letter-spacing:.05em;padding:12px 16px;text-align:left;text-transform:uppercase}.customers-table tbody tr{border-top:1px solid #e5e7eb}.customers-table tbody tr:hover{background:#f9fafb}.customers-table td{color:#1e293b;font-size:14px;padding:16px}.status-badge{border-radius:9999px;display:inline-block;font-size:12px;font-weight:500;padding:4px 12px}.status-badge.active{background:#dcfce7;color:#166534}.status-badge.suspended{background:#fef3c7;color:#92400e}.status-badge.terminated{background:#fee2e2;color:#991b1b}.project-badge,.status-badge.pending{background:#dbeafe;color:#1e40af}.project-badge{border-radius:4px;display:inline-block;font-size:12px;padding:4px 12px}.action-buttons{display:flex;gap:8px}.action-btn{background:none;border:none;cursor:pointer;font-size:18px;padding:4px;transition:transform .2s}.action-btn:hover{transform:scale(1.2)}.btn-primary{background:#3b82f6;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:background .2s}.btn-primary:hover{background:#2563eb}.empty-state{color:#64748b;padding:60px 20px;text-align:center}.error-message{background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#991b1b;margin-bottom:16px;padding:12px 16px}.loading-state{color:#64748b;padding:60px 20px;text-align:center}@media (max-width:1200px){.stats-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:768px){.filters-grid{grid-template-columns:1fr}}.main-content{flex:1 1;height:100%;overflow:hidden;position:relative}.bottom-navigation{background:linear-gradient(135deg,#6366f1,#8b5cf6);bottom:0;box-shadow:0 -2px 8px #00000026;display:none;gap:4px;height:64px;left:0;padding:0 8px;position:fixed;right:0;transition:transform .3s ease-in-out,opacity .3s ease-in-out;z-index:900}body.dialog-open .bottom-navigation{display:none!important}body:has(.dialog-overlay) .bottom-navigation{display:none!important}.bottom-nav-item{-webkit-tap-highlight-color:transparent;align-items:center;background:#0000;border:none;border-radius:12px;color:#ffffffb3;cursor:pointer;display:flex;flex:1 1;flex-direction:column;gap:4px;justify-content:center;min-height:56px;min-width:64px;padding:8px 4px;transition:all .2s cubic-bezier(.4,0,.2,1)}.bottom-nav-item:active{transform:scale(.95)}.bottom-nav-item:hover{background:#ffffff1a;color:#ffffffe6}.bottom-nav-item.active{background:#fff3;color:#fff;font-weight:600}.bottom-nav-icon{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));font-size:24px;line-height:1}.bottom-nav-label{font-size:11px;font-weight:500;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}@media (max-width:1024px){.bottom-navigation{display:flex}.app-body{padding-bottom:64px}}@media (max-width:1024px) and (orientation:landscape){.bottom-navigation{height:56px}.bottom-nav-item{min-height:48px;padding:6px 4px}.bottom-nav-icon{font-size:20px}.bottom-nav-label{font-size:10px}.app-body{padding-bottom:56px}}@supports (padding-bottom:env(safe-area-inset-bottom)){.bottom-navigation{height:calc(64px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}@media (max-width:1024px) and (orientation:landscape){.bottom-navigation{height:calc(56px + env(safe-area-inset-bottom))}}}.fab-container{bottom:80px;display:none;position:fixed;right:16px;z-index:999}.fab-overlay{animation:fadeIn .2s ease-out;background:#0000004d;bottom:0;left:0;position:fixed;right:0;top:0;z-index:998}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fab-main{-webkit-tap-highlight-color:transparent;align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:50%;box-shadow:0 4px 12px #0000004d;cursor:pointer;display:flex;height:56px;justify-content:center;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1);width:56px;z-index:1000}.fab-main:active{transform:scale(.9)}.fab-container.open .fab-main{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 6px 16px #ef444466}.fab-icon{color:#fff;display:block;font-size:28px;font-weight:300;line-height:1;transition:transform .3s cubic-bezier(.4,0,.2,1)}.fab-icon.rotate{transform:rotate(135deg)}.fab-menu-item{-webkit-tap-highlight-color:transparent;align-items:center;background:#fff;border:none;border-radius:50%;box-shadow:0 2px 8px #0003;cursor:pointer;display:flex;flex-direction:column;gap:2px;height:48px;justify-content:center;opacity:0;pointer-events:none;position:absolute;transform:scale(0) translateY(0);transition:all .3s cubic-bezier(.4,0,.2,1);width:48px}.fab-container.open .fab-menu-item{opacity:1;pointer-events:all;transform:scale(1)}.fab-menu-item:active{transform:scale(.9)!important}.fab-menu-item:disabled{background:#f5f5f5;cursor:not-allowed;opacity:.4}.fab-container.open .fab-item-1{bottom:70px;right:4px;transition-delay:.05s}.fab-container.open .fab-item-2{bottom:110px;right:20px;transition-delay:.1s}.fab-container.open .fab-item-3{bottom:140px;right:50px;transition-delay:.15s}.fab-container.open .fab-item-4{bottom:155px;right:90px;transition-delay:.2s}.fab-menu-icon{font-size:20px;line-height:1}.fab-menu-label{color:#6366f1;font-size:9px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap}@media (max-width:1024px){.fab-container{display:block}}@media (max-width:1024px) and (orientation:landscape){.fab-container{bottom:70px}.fab-main{height:48px;width:48px}.fab-icon{font-size:24px}.fab-menu-item{height:44px;width:44px}.fab-menu-icon{font-size:18px}.fab-menu-label{font-size:8px}.fab-container.open .fab-item-1{bottom:60px;right:4px}.fab-container.open .fab-item-2{bottom:100px;right:25px}.fab-container.open .fab-item-3{bottom:125px;right:60px}}@supports (padding-bottom:env(safe-area-inset-bottom)){.fab-container{bottom:calc(80px + env(safe-area-inset-bottom))}@media (max-width:1024px) and (orientation:landscape){.fab-container{bottom:calc(70px + env(safe-area-inset-bottom))}}}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden;width:100vw}.app-body{display:flex;flex:1 1;overflow:auto}.react-flow__controls-button{background:#fff!important;border:1px solid #ddd!important;color:#333!important}.react-flow__controls-button:hover{background:#f5f5f5!important;border-color:#999!important}.react-flow__controls-button svg{fill:#333!important}.react-flow__controls-button:hover svg{fill:#000!important}.login-required-overlay{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh}.login-required-content{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0000004d;max-width:500px;padding:60px 40px;text-align:center;width:90%}.login-required-content h1{color:#333;font-size:48px;margin:0 0 20px}.login-required-content p{color:#666;font-size:18px;margin:0 0 30px}.btn-primary-large{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;box-shadow:0 4px 15px #667eea66;color:#fff;cursor:pointer;font-size:18px;font-weight:600;padding:16px 48px;transition:all .3s}.btn-primary-large:hover{box-shadow:0 6px 20px #667eea99;transform:translateY(-2px)}@media print{.app,.app-body{display:block!important;height:auto!important;overflow:visible!important}}
/*# sourceMappingURL=main.be6845e2.css.map*/