:root,:host{--ol-background-color: white;--ol-accent-background-color: #F5F5F5;--ol-subtle-background-color: rgba(128, 128, 128, .25);--ol-partial-background-color: rgba(255, 255, 255, .75);--ol-foreground-color: #333333;--ol-subtle-foreground-color: #666666;--ol-brand-color: #00AAFF}.ol-box{box-sizing:border-box;border-radius:2px;border:1.5px solid var(--ol-background-color);background-color:var(--ol-partial-background-color)}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:var(--ol-partial-background-color);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid var(--ol-subtle-foreground-color);border-top:none;color:var(--ol-foreground-color);font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-bar-inner{display:flex}.ol-scale-step-marker{width:1px;height:15px;background-color:var(--ol-foreground-color);float:right;z-index:10}.ol-scale-step-text{position:absolute;bottom:-5px;font-size:10px;z-index:11;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-text{position:absolute;font-size:12px;text-align:center;bottom:25px;color:var(--ol-foreground-color);text-shadow:-1.5px 0 var(--ol-partial-background-color),0 1.5px var(--ol-partial-background-color),1.5px 0 var(--ol-partial-background-color),0 -1.5px var(--ol-partial-background-color)}.ol-scale-singlebar{position:relative;height:10px;z-index:9;box-sizing:border-box;border:1px solid var(--ol-foreground-color)}.ol-scale-singlebar-even{background-color:var(--ol-subtle-foreground-color)}.ol-scale-singlebar-odd{background-color:var(--ol-background-color)}.ol-unsupported{display:none}.ol-viewport,.ol-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-viewport canvas{all:unset;overflow:hidden}.ol-viewport{touch-action:pan-x pan-y}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:var(--ol-subtle-background-color);border-radius:4px}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:var(--ol-subtle-foreground-color);font-weight:700;text-decoration:none;font-size:inherit;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:var(--ol-background-color);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:hover,.ol-control button:focus{text-decoration:none;outline:1px solid var(--ol-subtle-foreground-color);color:var(--ol-foreground-color)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);display:flex;flex-flow:row-reverse;align-items:center}.ol-attribution a{color:var(--ol-subtle-foreground-color);text-decoration:none}.ol-attribution ul{margin:0;padding:1px .5em;color:var(--ol-foreground-color);text-shadow:0 0 2px var(--ol-background-color);font-size:12px}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button{flex-shrink:0}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:var(--ol-partial-background-color)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:block}.ol-overviewmap .ol-overviewmap-map{border:1px solid var(--ol-subtle-foreground-color);height:150px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:0;left:0;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:var(--ol-subtle-background-color)}.ol-overviewmap-box{border:1.5px dotted var(--ol-subtle-foreground-color)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-overviewmap .ol-viewport:hover{cursor:pointer}@layer properties;@layer theme,base,components,utilities;@layer utilities{.visible{visibility:visible}.static{position:static}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.shadow{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial}}}.page{max-width:1600px;margin:0 auto;padding:1.75rem clamp(1rem,2.5vw,2.5rem) 3rem}.breadcrumb{display:flex;gap:.5rem;align-items:center;color:#5c687a;font-size:.72rem;margin-bottom:1.5rem}.breadcrumb span,.breadcrumb a{color:#9ba5b3;text-decoration:none}.breadcrumb b{color:#cbd2dc}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;margin-bottom:1.5rem}.page-header-tools{display:flex;align-items:center;gap:.7rem;flex-shrink:0}.page-header h1{font-size:1.75rem;line-height:1.15;color:#0b1f3a;margin:.25rem 0 .35rem;letter-spacing:-.035em}.page-header p{color:#788496;font-size:.82rem;margin:0}.page-header .eyebrow,.eyebrow{font-size:.64rem;color:#1875e6;letter-spacing:.15em;font-weight:750;margin:0}.card{background:#fff;border:1px solid #e2e7ed;border-radius:.65rem;box-shadow:0 1px 2px #0a1f390a}.btn{border:1px solid transparent;border-radius:.4rem;min-height:2.45rem;padding:.55rem .9rem;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-weight:650;font-size:.76rem;cursor:pointer;text-decoration:none;transition:.18s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#1875e6;color:#fff;box-shadow:0 3px 8px #1875e62e}.btn-primary:hover:not(:disabled){background:#135fb5;transform:translateY(-1px)}.btn-ghost{background:#fff;border-color:#e2e7ed;color:#3f4c61}.btn-ghost:hover:not(:disabled){border-color:#82bafa;color:#135fb5}.icon-btn{border:0;background:transparent;color:#5c687a;width:2.1rem;height:2.1rem;border-radius:.4rem;display:inline-grid;place-items:center;cursor:pointer;font-size:1rem}.icon-btn:hover{background:#edf1f5;color:#135fb5}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.icon-btn.danger:hover{background:#fff0f1;color:#e04e5a}.toolbar{padding:.8rem;display:flex;align-items:flex-end;gap:.7rem;margin-bottom:1rem}.search-input{height:2.45rem;display:flex;align-items:center;gap:.45rem;border:1px solid #e2e7ed;border-radius:.4rem;padding:0 .7rem;min-width:min(22rem,35vw);color:#9ba5b3;background:#fff}.search-input:focus-within{border-color:#4c9cff}.search-input input{border:0;outline:0;width:100%;background:transparent;font-size:.78rem}.toolbar select,.select-field select{height:2.45rem;border:1px solid #e2e7ed;background:#fff;border-radius:.4rem;padding:0 2rem 0 .7rem;color:#3f4c61;font-size:.76rem}.select-field{display:grid;gap:.3rem;color:#788496;font-size:.66rem;font-weight:700}.select-field.grow{flex:1}.result-count{margin-left:auto;color:#788496;font-size:.72rem;padding:.7rem}.table-card{overflow:hidden}.table-scroll{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;min-width:760px}.data-table th{text-align:left;background:#f6f8fb;color:#788496;font-size:.62rem;letter-spacing:.075em;text-transform:uppercase;padding:.8rem 1rem;border-bottom:1px solid #e2e7ed;white-space:nowrap}.data-table td{padding:.82rem 1rem;border-bottom:1px solid #edf1f5;color:#000;font-size:.76rem;vertical-align:middle}.data-table tbody tr:hover{background:#fafdff}.data-table tbody tr:last-child td{border-bottom:0}.data-table .actions{text-align:right;white-space:nowrap}.data-table .numeric{text-align:right;font-variant-numeric:tabular-nums}.data-table tfoot td{background:#0b1f3a;color:#fff;font-weight:750}.entity-cell{display:flex;align-items:center;gap:.7rem;min-width:13rem}.entity-cell strong,.entity-cell small,.cell-primary,.data-table td small{display:block}.entity-cell small,.data-table td small{color:#9ba5b3;font-size:.65rem;margin-top:.18rem}.entity-avatar,.project-logo{width:2.1rem;height:2.1rem;display:grid;place-items:center;background:#e7f2ff;color:#135fb5;border-radius:.45rem;font-size:.66rem;font-weight:800;flex:0 0 auto}.status-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.27rem .48rem;border-radius:3rem;font-size:.62rem;font-weight:750;background:#edf1f5;color:#5c687a;white-space:nowrap}.status-badge:before{content:"";width:.35rem;height:.35rem;border-radius:50%;background:currentColor}.status-active,.status-inprogress,.status-approved,.status-done,.status-completed{background:#e7f8f1;color:#118159}.status-planning,.status-project,.status-notstarted,.status-draft{background:#e7f2ff;color:#135fb5}.status-tendering,.status-submitted{background:#fff5da;color:#a66b08}.status-suspended,.status-delayed{background:#fff0f1;color:#c63f4b}.status-inactive,.status-closed,.status-locked{background:#edf1f5;color:#5c687a}.tag{display:inline-block;background:#edf1f5;color:#5c687a;border-radius:.3rem;padding:.25rem .45rem;font-size:.62rem;font-weight:650}.pagination{padding:.75rem 1rem;border-top:1px solid #e2e7ed;display:flex;justify-content:space-between;align-items:center;color:#788496;font-size:.7rem}.pagination>div{display:flex;gap:.4rem}.empty-state{text-align:center;padding:4rem 1rem;color:#788496}.empty-state>span{display:grid;place-items:center;margin:0 auto 1rem;width:3.2rem;height:3.2rem;border-radius:.8rem;background:#e7f2ff;color:#1875e6;font-size:1.4rem}.empty-state h3{color:#0b1f3a;margin:.4rem 0;font-size:1rem}.empty-state p{font-size:.76rem;margin:.4rem 0 1rem}.empty-state.compact{padding:1rem}.empty-state.compact p{margin:0}.loading-state{min-height:10rem;display:flex;justify-content:center;align-items:center;gap:.6rem;color:#788496;font-size:.78rem}.spinner{width:1rem;height:1rem;border:2px solid #e7f2ff;border-top-color:#1875e6;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.alert{border-radius:.4rem;padding:.75rem 1rem;margin-bottom:1rem;font-size:.75rem}.alert-error{background:#fff0f1;border:1px solid #ffd6d9;color:#ae3540}.field-error{color:#e04e5a;font-size:.65rem}.modal-backdrop{position:fixed;z-index:100;inset:0;background:#07182d8c;display:grid;place-items:center;padding:1rem;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{background:#fff;border-radius:.9rem;box-shadow:0 25px 70px #05122333;width:min(37rem,100%);max-height:calc(100vh - 2rem);overflow:auto}.modal-lg{width:min(47rem,100%)}.modal-sm{width:min(29rem,100%)}.modal>header{display:flex;justify-content:space-between;align-items:flex-start;padding:1.25rem 1.4rem;border-bottom:1px solid #e2e7ed}.modal h2{margin:.3rem 0 0;color:#0b1f3a;font-size:1.18rem}.modal form{padding:1.3rem 1.4rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.form-grid label,.modal form>label{font-size:.68rem;font-weight:700;color:#3f4c61;display:grid;gap:.4rem}.form-grid .span-2{grid-column:span 2}.form-grid input,.form-grid select,.form-grid textarea,.modal form>label input,.modal form>label textarea{width:100%;border:1px solid #cbd2dc;border-radius:.4rem;padding:.62rem .7rem;background:#fff;color:#243249;font:inherit;font-weight:450;resize:vertical}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus{outline:none;border-color:#278cff;box-shadow:0 0 0 3px #278cff1f}.modal form>footer{display:flex;justify-content:flex-end;gap:.6rem;padding-top:1.25rem;margin-top:1.25rem;border-top:1px solid #e2e7ed}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;margin-bottom:1rem}.stat-card{background:#fff;border:1px solid #e2e7ed;border-radius:.65rem;box-shadow:0 1px 2px #0a1f390a;padding:1.15rem;display:flex;gap:.9rem;align-items:flex-start}.stat-card small,.stat-card strong,.stat-card p{display:block;margin:0}.stat-card small{font-size:.59rem;color:#788496;letter-spacing:.07em;font-weight:700}.stat-card strong{font-size:1.55rem;color:#0b1f3a;margin:.3rem 0}.stat-card p{font-size:.65rem;color:#9ba5b3}.stat-card em{font-style:normal;color:#14a86d}.stat-icon{width:2.25rem;height:2.25rem;display:grid;place-items:center;border-radius:.55rem;font-weight:800;flex:none}.stat-icon.blue{background:#e7f2ff;color:#1875e6}.stat-icon.cyan{background:#e4fafd;color:#13b8d0}.stat-icon.green{background:#e7f8f1;color:#14a86d}.stat-icon.amber{background:#fff5da;color:#e99a12}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(17rem,.7fr);gap:1rem}.panel{overflow:hidden}.panel-header{display:flex;justify-content:space-between;padding:1.15rem 1.25rem;border-bottom:1px solid #e2e7ed}.panel-header h2,.panel-header p{margin:0}.panel-header h2{color:#0b1f3a;font-size:.9rem}.panel-header p{color:#9ba5b3;font-size:.65rem;margin-top:.3rem}.panel-header a{font-size:.7rem;color:#1875e6;text-decoration:none}.project-row{display:flex;align-items:center;gap:.85rem;padding:.85rem 1.2rem;border-bottom:1px solid #edf1f5;text-decoration:none;color:inherit}.project-row:hover{background:#f6f8fb}.project-main{min-width:0;flex:1}.project-main strong,.project-main small,.project-value strong,.project-value small{display:block}.project-main strong{font-size:.76rem;color:#243249}.project-main small,.project-value small{font-size:.62rem;color:#9ba5b3;margin-top:.2rem}.project-value{text-align:right;min-width:5.5rem}.project-value strong{font-size:.74rem;color:#243249}.arrow{color:#9ba5b3;font-size:1.2rem}.health-score{text-align:center;padding:1.5rem}.score-ring{width:6.5rem;height:6.5rem;border-radius:50%;margin:auto;display:grid;place-content:center;background:radial-gradient(circle at center,#fff 57%,transparent 59%),conic-gradient(#30cf8b 87%,#e8edf2 0)}.score-ring strong{font-size:1.45rem;color:#0b1f3a}.score-ring small{font-size:.6rem;color:#9ba5b3}.health-score h3{font-size:.85rem;color:#0b1f3a;margin:.8rem 0 .25rem}.health-score p{font-size:.66rem;color:#9ba5b3;margin:0}.health-bars{padding:0 1.25rem 1.25rem}.health-bars label{display:grid;gap:.4rem;margin-top:.8rem}.health-bars label span{display:flex;justify-content:space-between;font-size:.64rem;color:#788496}.health-bars i,.upload-progress i,.big-progress i{height:.35rem;background:#edf1f5;border-radius:1rem;overflow:hidden}.health-bars em,.upload-progress em,.big-progress em{display:block;height:100%;background:linear-gradient(90deg,#1875e6,#43d1e4);border-radius:1rem}.curve-filter{display:flex;justify-content:flex-end;margin:0 0 1rem}.curve-filter .select-field{min-width:min(24rem,100%)}.s-curve-panel{margin-bottom:1rem}.s-curve-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) minmax(10rem,.8fr);gap:1rem;padding:1rem 1.25rem 0}.s-curve-metrics small,.s-curve-metrics strong{display:block}.s-curve-metrics small{color:#9ba5b3;font-size:.56rem;letter-spacing:.07em;font-weight:750}.s-curve-metrics strong{color:#0b1f3a;font-size:.96rem;margin-top:.28rem}.s-curve-meter{display:grid;align-content:center;gap:.45rem}.s-curve-meter span{display:flex;justify-content:space-between;color:#788496;font-size:.68rem}.s-curve-meter b{color:#14a86d}.s-curve-meter i{height:.45rem;border-radius:999px;overflow:hidden;background:#edf1f5}.s-curve-meter em{display:block;height:100%;background:linear-gradient(90deg,#14a86d,#278cff)}.s-curve-chart{padding:.8rem 1rem 1.1rem}.s-curve-chart svg{display:block;width:100%;height:auto}.s-grid{stroke:#e7edf4;stroke-width:1}.s-axis,.s-date{fill:#788496;font-size:9px}.s-date.end{text-anchor:end}.s-axis-line{stroke:#e2e7ed;stroke-width:1.2}.s-area{fill:#14a86d1f}.s-line{fill:none;stroke:#14a86d;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.s-last-point{fill:#fff;stroke:#14a86d;stroke-width:3}.s-month-point{fill:#fff;stroke:#14a86d;stroke-width:1.5}.s-value{fill:#0b1f3a;font-size:8px;font-weight:500;text-anchor:middle}.s-month{fill:#788496;font-size:9px;text-anchor:middle}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.project-card{padding:1.15rem;transition:.2s}.project-card:hover{box-shadow:0 8px 24px #0a1f390f;transform:translateY(-2px)}.project-card>header{display:flex;align-items:center;gap:.6rem}.project-card>header .status-badge{margin-left:auto}.project-monogram{width:2.4rem;height:2.4rem;border-radius:.55rem;background:linear-gradient(135deg,#123456,#278cff);color:#fff;display:grid;place-items:center;font-size:.68rem;font-weight:800}.project-card>a{text-decoration:none;color:inherit;display:block;margin:1rem 0 .5rem}.project-card>a small{font-size:.6rem;color:#1875e6;font-weight:700}.project-card h2{font-size:1rem;color:#0b1f3a;margin:.25rem 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.location{color:#788496;font-size:.67rem;min-height:1rem}.project-meta{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;border-top:1px solid #edf1f5;padding-top:.85rem;margin-top:.8rem}.project-meta span,.project-meta strong{display:block}.project-meta span{font-size:.54rem;color:#9ba5b3;letter-spacing:.06em}.project-meta strong{font-size:.66rem;color:#3f4c61;margin-top:.22rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-dates{display:flex;align-items:center;gap:.5rem;margin-top:1rem;color:#788496;font-size:.59rem}.project-dates i{height:2px;background:#e2e7ed;flex:1;position:relative}.project-dates em{position:absolute;left:0;width:45%;height:2px;background:#278cff}.project-card>footer{display:flex;align-items:center;gap:.5rem;border-top:1px solid #edf1f5;margin-top:1rem;padding-top:.85rem}.project-card>footer>div{flex:1}.project-card>footer small,.project-card>footer strong{display:block}.project-card>footer small{font-size:.54rem;color:#9ba5b3}.project-card>footer strong{font-size:.72rem;color:#0b1f3a;margin-top:.2rem}.detail-hero{background:linear-gradient(120deg,#0b1f3a,#123456);border-radius:.9rem;color:#fff;padding:1.5rem;display:flex;justify-content:space-between;align-items:center}.hero-main{display:flex;align-items:center;gap:1rem}.project-monogram.large{width:3.6rem;height:3.6rem;background:#ffffff1f;font-size:.9rem}.detail-hero h1{margin:.25rem 0;font-size:1.4rem}.detail-hero p{margin:0;color:#94abc1;font-size:.7rem}.hero-side{display:flex;align-items:center;gap:.7rem}.detail-tabs{display:flex;border-bottom:1px solid #e2e7ed;margin:1.25rem 0}.detail-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;padding:.8rem 1rem;color:#788496;font-size:.73rem;font-weight:650;cursor:pointer}.detail-tabs button.active{color:#1875e6;border-bottom-color:#1875e6}.overview-grid{display:grid;grid-template-columns:1.5fr .7fr;gap:1rem}.project-overview,.milestone-card{padding:1.25rem}.project-overview header h2,.milestone-card header h2{font-size:.9rem;color:#0b1f3a;margin:0}.project-overview header p,.milestone-card header p{font-size:.65rem;color:#9ba5b3;margin:.25rem 0}.project-overview dl{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin:1.5rem 0 0}.project-overview dl>div.span-2{grid-column:span 2}.project-overview dt{font-size:.58rem;color:#9ba5b3;text-transform:uppercase;letter-spacing:.07em}.project-overview dd{margin:.35rem 0 0;color:#243249;font-size:.76rem}.big-progress{padding:1.5rem 0}.big-progress strong,.big-progress span{display:block}.big-progress strong{font-size:2rem;color:#0b1f3a}.big-progress span{font-size:.65rem;color:#9ba5b3;margin:.2rem 0 .8rem}.pulse-list{display:grid;gap:.8rem}.pulse-list>div{display:flex;gap:.7rem;align-items:center}.pulse-list .stat-icon{width:2rem;height:2rem}.pulse-list p,.pulse-list strong,.pulse-list small{margin:0;display:block}.pulse-list strong{font-size:.7rem;color:#243249}.pulse-list small{font-size:.6rem;color:#9ba5b3;margin-top:.18rem}.embedded-page{padding:0}.embedded-page>.breadcrumb,.embedded-page>.page-header{display:none}.upload-progress{padding:.8rem 1rem;margin-bottom:1rem}.upload-progress>div{display:flex;justify-content:space-between;font-size:.68rem;color:#5c687a;margin-bottom:.5rem}.file-icon{width:2.4rem;height:2.4rem;display:grid;place-items:center;background:#e7f2ff;color:#135fb5;border-radius:.4rem;font-size:.55rem;font-weight:800}.boq-summary{display:flex;align-items:center;gap:1.5rem;padding:1.1rem 1.25rem;margin-bottom:1rem}.boq-summary h2{font-size:.95rem;color:#0b1f3a;margin:.5rem 0 .2rem}.boq-summary p{font-size:.63rem;color:#9ba5b3;margin:0}.summary-total{margin-left:auto;text-align:right}.summary-total small,.summary-total strong{display:block}.summary-total small{font-size:.57rem;color:#9ba5b3}.summary-total strong{font-size:1.15rem;color:#0b1f3a;margin-top:.25rem}.summary-total em{font-size:.6rem;color:#9ba5b3;font-style:normal}.summary-actions{display:flex;gap:.5rem}.page-header-sm{margin-bottom:1rem}.page-header-sm h1{font-size:1.15rem;margin:0 0 .2rem}.page-header-sm p{font-size:.74rem}.boq-table .data-table th{text-transform:none;letter-spacing:0;font-size:.76rem;font-weight:650;padding:.5rem .6rem}.boq-table .data-table td{padding:.4rem .6rem}.boq-table .data-table td small{margin-top:.05rem}.boq-table .schedule-link-list{gap:.15rem}.boq-table .schedule-link-pill{padding:.1rem .4rem}.schedule-link-list{display:grid;gap:.3rem}.schedule-link-pill{display:inline-flex;width:fit-content;max-width:15rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:999px;background:#e7f2ff;color:#135fb5;padding:.22rem .48rem;font-size:.62rem;font-weight:700}.date-range,.muted-text{color:#788496;font-size:.68rem;white-space:nowrap}.muted-text{color:#9ba5b3}.link-rows{display:grid;gap:.7rem;margin-bottom:.9rem}.link-row{display:grid;grid-template-columns:minmax(14rem,1.4fr) minmax(6rem,.45fr) minmax(10rem,1fr) auto;gap:.7rem;align-items:end}.link-row label{display:grid;gap:.4rem;color:#3f4c61;font-size:.68rem;font-weight:700}.link-row input,.link-row select{width:100%;border:1px solid #cbd2dc;border-radius:.4rem;padding:.62rem .7rem;background:#fff;color:#243249;font:inherit;font-weight:450}.link-total{display:flex;justify-content:space-between;align-items:center;margin-top:1rem;padding:.8rem 0;border-top:1px solid #e2e7ed;color:#788496;font-size:.72rem}.link-total strong{color:#0b1f3a;font-size:.9rem}.link-total.over strong{color:#e04e5a}.view-toggle{display:flex;border:1px solid #e2e7ed;border-radius:.4rem;overflow:hidden;margin-left:auto}.view-toggle button{border:0;background:#fff;padding:.55rem .75rem;color:#788496;font-size:.68rem;cursor:pointer}.view-toggle button.active{background:#0b1f3a;color:#fff}.progress-cell{border:0;background:none;cursor:pointer;width:9rem}.progress-cell span{display:flex;align-items:center;gap:.5rem}.progress-cell i{height:.35rem;background:#edf1f5;flex:1;border-radius:1rem;overflow:hidden}.progress-cell em{height:100%;display:block;background:#278cff}.progress-cell b{font-size:.62rem;color:#5c687a}.gantt{overflow:auto;min-width:700px}.gantt>header,.gantt-row{display:grid;grid-template-columns:15rem 1fr}.gantt>header{background:#f6f8fb;color:#9ba5b3;font-size:.58rem;font-weight:700;letter-spacing:.08em}.gantt>header>span,.gantt>header>div{padding:.8rem 1rem}.gantt>header>div{display:flex;justify-content:space-between}.gantt-row{min-height:3.6rem;border-top:1px solid #edf1f5}.gantt-name{padding:.7rem 1rem}.gantt-name strong,.gantt-name small{display:block}.gantt-name strong{font-size:.68rem;color:#3f4c61}.gantt-name small{font-size:.57rem;color:#9ba5b3;margin-top:.25rem}.gantt-track{position:relative;background-image:linear-gradient(90deg,#edf1f5 1px,transparent 1px);background-size:25% 100%}.gantt-bar{position:absolute;top:1rem;height:1.5rem;border:0;border-radius:.3rem;background:#82bafa;color:#0b1f3a;overflow:hidden;cursor:pointer;min-width:3rem}.gantt-bar>i{position:absolute;inset:0 auto 0 0;background:#14a86d8c}.gantt-bar>span{position:relative;font-size:.56rem;font-weight:800}.gantt-bar.status-delayed{background:#ffc9ce}.range{accent-color:#1875e6}.cde-layout{display:grid;grid-template-columns:16.5rem minmax(0,1fr);gap:1rem;align-items:start}.cde-tree{padding:.85rem .6rem;position:sticky;top:1rem;max-height:calc(100vh - 3rem);overflow:auto}.cde-tree-title{margin:0 0 .5rem .45rem;font-size:.62rem;font-weight:800;letter-spacing:.075em;text-transform:uppercase;color:#788496}.tree-root,.tree-root ul{list-style:none;margin:0;padding:0}.tree-row{display:flex;align-items:center;gap:.1rem;border-radius:.4rem}.tree-row:hover{background:#f6f8fb}.tree-row.active{background:#e7f2ff}.tree-caret,.tree-label{border:0;background:none;cursor:pointer;color:#000;font:inherit}.tree-caret{width:1.1rem;flex:0 0 auto;padding:0;font-size:.6rem;color:#9ba5b3;line-height:1}.tree-caret.empty{cursor:default}.tree-label{display:flex;align-items:center;gap:.45rem;flex:1;min-width:0;padding:.4rem .5rem .4rem 0;text-align:left;font-size:.73rem}.tree-label svg{width:1rem;height:1rem;flex:0 0 auto;fill:#4c9cff}.tree-row.active .tree-label{color:#135fb5;font-weight:700}.tree-row.active .tree-label svg{fill:#1875e6}.tree-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-count{flex:0 0 auto;font-size:.58rem;font-weight:700;color:#788496;background:#edf1f5;border-radius:1rem;padding:.05rem .4rem}.cde-main{min-width:0}.cde-breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:.3rem;padding:.6rem .9rem;margin-bottom:1rem}.cde-breadcrumb button{border:0;background:none;cursor:pointer;font:inherit;font-size:.72rem;color:#1875e6;padding:.1rem .2rem;border-radius:.3rem}.cde-breadcrumb button:hover{background:#e7f2ff}.cde-breadcrumb button.current{color:#243249;font-weight:700;cursor:default}.cde-breadcrumb .sep{color:#cbd2dc;font-size:.72rem}.cde-section-title{margin:0 0 .55rem;font-size:.62rem;font-weight:800;letter-spacing:.075em;text-transform:uppercase;color:#788496}.folder-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:.7rem;margin-bottom:1.25rem}.folder-card{display:flex;align-items:center;gap:.4rem;padding:.6rem .7rem}.folder-open{display:flex;align-items:center;gap:.6rem;flex:1;min-width:0;border:0;background:none;cursor:pointer;font:inherit;text-align:left;padding:0}.folder-open svg{width:1.55rem;height:1.55rem;flex:0 0 auto;fill:#4c9cff}.folder-open>span{min-width:0}.folder-open strong,.folder-open small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-open strong{font-size:.75rem;color:#243249}.folder-open small{font-size:.62rem;color:#9ba5b3;margin-top:.15rem}.folder-card:hover{border-color:#82bafa}.link-btn{border:0;background:none;cursor:pointer;font:inherit;font-size:.7rem;color:#1875e6;padding:0}.link-btn:hover{text-decoration:underline}.search-input.wide{flex:1;max-width:none}@media(max-width:1280px){.project-grid,.stat-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.page{padding:1.15rem .8rem 2rem}.page-header{align-items:flex-start;flex-direction:column;gap:1rem}.page-header .btn{width:100%}.page-header-tools{align-items:stretch;flex-direction:column;width:100%}.page-header-tools .search-input{min-width:0;width:100%}.toolbar{align-items:stretch;flex-direction:column}.toolbar .search-input{min-width:0;width:100%}.toolbar select{width:100%}.result-count{margin:0}.project-grid,.stat-grid,.dashboard-grid,.overview-grid,.s-curve-metrics{grid-template-columns:1fr}.curve-filter{justify-content:stretch}.project-row .status-badge,.project-value{display:none}.detail-hero{align-items:flex-start;flex-direction:column;gap:1rem}.hero-side{width:100%;justify-content:space-between}.detail-tabs{overflow-x:auto}.detail-tabs button{min-width:6rem}.boq-summary{align-items:flex-start;flex-direction:column}.summary-total{margin:0;text-align:left}.summary-actions{width:100%}.summary-actions .btn{flex:1}.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:span 1}.link-row{grid-template-columns:1fr}.modal-backdrop{padding:.4rem;align-items:end}.modal{max-height:92vh;border-radius:.9rem .9rem 0 0}.data-table.responsive-cards{min-width:0}.pagination{align-items:flex-start;gap:.5rem}.logout{display:none}}@media(max-width:480px){.stat-grid,.project-grid{grid-template-columns:1fr}.project-card{padding:1rem}.profile{padding-left:.5rem;border:0}.page-header h1{font-size:1.45rem}.modal>header,.modal form{padding:1rem}.project-overview dl{grid-template-columns:1fr}.project-overview dl>div.span-2{grid-column:span 1}.hero-main{align-items:flex-start}.project-monogram.large{display:none}}@media(max-width:900px){.cde-layout{grid-template-columns:1fr}.cde-tree{position:static;max-height:18rem}}*,*:before,*:after{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f6f8fb;color:#243249}body{margin:0;background:#f6f8fb;min-width:320px}button,input,select,textarea{font:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #278cff;outline-offset:2px}::selection{background:#e7f2ff;color:#0b1f3a}
