.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;top:0;left:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:0 0}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{-webkit-transform-origin:0 0;width:1600px;height:1600px}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg{max-width:none!important;max-height:none!important}.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{width:auto;padding:0;max-width:none!important;max-height:none!important}.leaflet-container img.leaflet-tile{mix-blend-mode:plus-lighter}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:#33b5e566}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{box-sizing:border-box;z-index:800;width:0;height:0}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{z-index:800;pointer-events:visiblePainted;pointer-events:auto;position:relative}.leaflet-top,.leaflet-bottom{z-index:1000;pointer-events:none;position:absolute}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-popup{opacity:0;transition:opacity .2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{transform-origin:0 0}svg.leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{outline-offset:1px;background:#ddd}.leaflet-container a{color:#0078a8}.leaflet-zoom-box{background:#ffffff80;border:2px dotted #38f}.leaflet-container{font-family:Helvetica Neue,Arial,Helvetica,sans-serif;font-size:.75rem;line-height:1.5}.leaflet-bar{border-radius:4px;box-shadow:0 1px 5px #000000a6}.leaflet-bar a{text-align:center;color:#000;background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;text-decoration:none;display:block}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover,.leaflet-bar a:focus{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom:none;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.leaflet-bar a.leaflet-disabled{cursor:default;color:#bbb;background-color:#f4f4f4}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-right-radius:2px;border-bottom-left-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{text-indent:1px;font:700 18px Lucida Console,Monaco,monospace}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{background:#fff;border-radius:5px;box-shadow:0 1px 5px #0006}.leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{color:#333;background:#fff;padding:6px 10px 6px 6px}.leaflet-control-layers-scrollbar{padding-right:5px;overflow:hidden scroll}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{font-size:1.08333em;display:block}.leaflet-control-layers-separator{border-top:1px solid #ddd;height:0;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=)}.leaflet-container .leaflet-control-attribution{background:#fffc;margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{color:#333;padding:0 5px;line-height:1.4}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover,.leaflet-control-attribution a:focus{text-decoration:underline}.leaflet-attribution-flag{width:1em;height:.6669em;vertical-align:baseline!important;display:inline!important}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{white-space:nowrap;box-sizing:border-box;text-shadow:1px 1px #fff;background:#fffc;border:2px solid #777;border-top:none;padding:2px 5px 1px;line-height:1.1}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{background-clip:padding-box;border:2px solid #0003}.leaflet-popup{text-align:center;margin-bottom:20px;position:absolute}.leaflet-popup-content-wrapper{text-align:left;border-radius:12px;padding:1px}.leaflet-popup-content{min-height:1px;margin:13px 24px 13px 20px;font-size:1.08333em;line-height:1.3}.leaflet-popup-content p{margin:1.3em 0}.leaflet-popup-tip-container{pointer-events:none;width:40px;height:20px;margin-top:-1px;margin-left:-20px;position:absolute;left:50%;overflow:hidden}.leaflet-popup-tip{pointer-events:auto;width:17px;height:17px;margin:-10px auto 0;padding:1px;transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{color:#333;background:#fff;box-shadow:0 3px 14px #0006}.leaflet-container a.leaflet-popup-close-button{text-align:center;color:#757575;background:0 0;border:none;width:24px;height:24px;font:16px/24px Tahoma,Verdana,sans-serif;text-decoration:none;position:absolute;top:0;right:0}.leaflet-container a.leaflet-popup-close-button:hover,.leaflet-container a.leaflet-popup-close-button:focus{color:#585858}.leaflet-popup-scrolled{overflow:auto}.leaflet-oldie .leaflet-popup-content-wrapper{-ms-zoom:1}.leaflet-oldie .leaflet-popup-tip{-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";width:24px;filter:progid:DXImageTransform.Microsoft.Matrix(M11=.707107, M12=.707107, M21=-.707107, M22=.707107);margin:0 auto}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{color:#222;white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:none;background-color:#fff;border:1px solid #fff;border-radius:3px;padding:6px;position:absolute;box-shadow:0 1px 3px #0006}.leaflet-tooltip.leaflet-interactive{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{pointer-events:none;content:"";background:0 0;border:6px solid #0000;position:absolute}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{margin-left:-6px;left:50%}.leaflet-tooltip-top:before{border-top-color:#fff;margin-bottom:-12px;bottom:0}.leaflet-tooltip-bottom:before{border-bottom-color:#fff;margin-top:-12px;margin-left:-6px;top:0}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{margin-top:-6px;top:50%}.leaflet-tooltip-left:before{border-left-color:#fff;margin-right:-12px;right:0}.leaflet-tooltip-right:before{border-right-color:#fff;margin-left:-12px;left:0}@media print{.leaflet-control{-webkit-print-color-adjust:exact;print-color-adjust:exact}}:root{--mobile-bar-h:calc(51px + env(safe-area-inset-top));--bg:#f4f6f9;--surface:#fff;--surface-2:#f7f9fc;--surface-3:#eef2f7;--border:#e5e9f0;--border-strong:#d3dae4;--text:#16202e;--text-2:#3a4757;--muted:#6b7788;--primary:#2456d6;--primary-hover:#1c46b4;--primary-weak:#eaf0ff;--primary-ink:#1c46b4;--ok:#10893e;--ok-weak:#e6f6ec;--ok-border:#bfe6cc;--warn:#b5730b;--warn-weak:#fdf3e2;--warn-border:#eecfa0;--warn-ink:#8a5a08;--danger:#cf2e2e;--danger-weak:#fdecec;--danger-border:#f0c3c3;--danger-hover:#b02525;--danger-ink:#a11c1c;--info:#1d6fd0;--info-weak:#e8f1fc;--violet:#6b4bd6;--violet-weak:#efeafb;--violet-ink:#4e34ad;--viz-1:#2a78d6;--viz-2:#eb6834;--shadow-sm:0 1px 2px #1018280d;--shadow:0 1px 3px #10182814, 0 1px 2px #1018280a;--shadow-md:0 6px 18px #1018281a;--r-sm:8px;--r:10px;--r-lg:14px;--sidebar-w:244px;--press-bright:.96;--fs-xs:11px;--fs-sm:12px;--fs-base:13px;--fs-md:14px;--fs-lg:16px;--fs-xl:20px;--fs-2xl:26px;--fw-normal:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--r-xs:4px;--r-pill:999px;--r-round:50%;--s-0:2px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0f1319;--surface:#161b23;--surface-2:#1c222c;--surface-3:#232b37;--border:#262e3a;--border-strong:#38424f;--text:#e6edf5;--text-2:#b6c2d1;--muted:#8b97a6;--primary:#4d84f5;--primary-hover:#6b9bff;--primary-weak:#16223c;--primary-ink:#9dbcff;--ok:#3fb950;--ok-weak:#10251a;--ok-border:#1e4530;--warn:#d29922;--warn-weak:#2a2011;--warn-border:#5a4520;--warn-ink:#d29922;--danger:#f0656a;--danger-weak:#2c1518;--danger-border:#5c2a2e;--danger-hover:#b02525;--danger-ink:#f0656a;--info:#58a6ff;--info-weak:#101f33;--violet:#a78bfa;--violet-weak:#1d1830;--violet-ink:#a78bfa;--viz-1:#3987e5;--viz-2:#d95926;--shadow-sm:0 1px 2px #00000059;--shadow:0 1px 3px #00000073, 0 1px 2px #0000004d;--shadow-md:0 8px 24px #00000080;--cal-today:#ff453a;--press-bright:1.18;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1319;--surface:#161b23;--surface-2:#1c222c;--surface-3:#232b37;--border:#262e3a;--border-strong:#38424f;--text:#e6edf5;--text-2:#b6c2d1;--muted:#8b97a6;--primary:#4d84f5;--primary-hover:#6b9bff;--primary-weak:#16223c;--primary-ink:#9dbcff;--ok:#3fb950;--ok-weak:#10251a;--ok-border:#1e4530;--warn:#d29922;--warn-weak:#2a2011;--warn-border:#5a4520;--warn-ink:#d29922;--danger:#f0656a;--danger-weak:#2c1518;--danger-border:#5c2a2e;--danger-hover:#b02525;--danger-ink:#f0656a;--info:#58a6ff;--info-weak:#101f33;--violet:#a78bfa;--violet-weak:#1d1830;--violet-ink:#a78bfa;--viz-1:#3987e5;--viz-2:#d95926;--shadow-sm:0 1px 2px #00000059;--shadow:0 1px 3px #00000073, 0 1px 2px #0000004d;--shadow-md:0 8px 24px #00000080;--cal-today:#ff453a;--press-bright:1.18;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{height:100%}html{-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Inter,system-ui,sans-serif;font-size:var(--fs-md);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overscroll-behavior:none;margin:0;line-height:1.55}h1,h2,h3,h4{font-weight:var(--fw-semibold);color:var(--text);line-height:1.25}h1{font-size:var(--fs-2xl);letter-spacing:-.02em;margin:0 0 var(--s-1)}h2{font-size:var(--fs-xl);letter-spacing:-.01em;margin:0 0 var(--s-0)}h3{font-size:var(--fs-lg);margin:0 0 var(--s-0)}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--muted)}.small{font-size:var(--fs-base)}.mono{font-variant-numeric:tabular-nums}.error{background:var(--danger-weak);border:1px solid var(--danger-border);color:var(--danger-ink);padding:var(--s-3) var(--s-3);border-radius:var(--r-sm);margin:var(--s-3) 0;font-size:var(--fs-md)}.flash{animation:2.4s ease-out flash-row}@keyframes flash-row{0%,55%{box-shadow:0 0 0 2px var(--primary);background:var(--info-weak)}to{background:0 0;box-shadow:0 0 #0000}}.notice{background:var(--info-weak);border:1px solid var(--border);color:var(--text);padding:var(--s-3) var(--s-3);border-radius:var(--r-sm);margin:var(--s-3) 0;font-size:var(--fs-base)}.notice.warn{background:var(--warn-weak);border-color:var(--warn-border);color:var(--warn-ink)}.offline-banner{background:var(--warn-weak);border-bottom:1px solid var(--warn-border);color:var(--warn-ink);padding:var(--s-2) var(--s-4);font-size:var(--fs-base);text-align:center;z-index:30;position:sticky;top:0}.app-shell{grid-template-columns:var(--sidebar-w) 1fr;min-height:100dvh;display:grid}.sidebar{align-self:start;gap:var(--s-1);background:var(--surface);border-right:1px solid var(--border);height:100dvh;padding:var(--s-3) var(--s-3);flex-direction:column;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar .brand-row{align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-2) var(--s-3);display:flex}.sidebar .brand-row .brand{flex:1;min-width:0;padding:0}.sidebar .brand{align-items:center;gap:var(--s-2);font-weight:var(--fw-bold);font-size:var(--fs-lg);letter-spacing:-.01em;padding:var(--s-2) var(--s-2) var(--s-3);color:var(--text);display:flex}.brand-mark{border-radius:var(--r-sm);background:linear-gradient(135deg, var(--primary), #4a7bff);color:#fff;width:26px;height:26px;font-size:var(--fs-md);font-weight:var(--fw-bold);box-shadow:var(--shadow-sm);flex:none;place-items:center;display:grid}.nav-group{margin-top:var(--s-3)}.nav-group-label{font-size:var(--fs-xs);font-weight:var(--fw-semibold);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:var(--s-1) var(--s-3);margin-bottom:var(--s-0)}.nav-item{align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);color:var(--text-2);font-size:var(--fs-md);font-weight:var(--fw-medium);cursor:pointer;transition:background .12s,color .12s;display:flex}.nav-item:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav-item.active{background:var(--primary-weak);color:var(--primary-ink);font-weight:var(--fw-semibold)}.nav-item .ico{opacity:.85;flex:none}.nav-item.active .ico{opacity:1}.nav-item .nav-badge{background:var(--primary);color:#fff;font-size:var(--fs-xs);font-weight:var(--fw-bold);min-width:18px;height:18px;padding:0 var(--s-1);border-radius:var(--r-pill);place-items:center;margin-left:auto;display:grid}.sidebar-foot{padding-top:var(--s-3);border-top:1px solid var(--border);background:var(--surface);margin-top:auto;position:sticky;bottom:0}.user-chip{align-items:center;gap:var(--s-2);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);cursor:pointer;color:var(--text-2);text-align:left;width:100%;box-shadow:none;font-weight:var(--fw-normal);font-size:inherit;background:0 0;border:1px solid #0000;display:flex}.user-chip:hover{background:var(--surface-2);border-color:#0000}.user-menu{position:relative}.user-menu-pop{z-index:1150;gap:var(--s-0);padding:var(--s-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-md);display:grid;position:absolute;bottom:calc(100% + 6px);left:0;right:0}.user-menu-pop .density-toggle,.user-menu-pop .menu-item{align-items:center;gap:var(--s-2);width:100%;padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);box-shadow:none;color:var(--text);font-size:var(--fs-md);font-weight:var(--fw-medium);text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;justify-content:flex-start;text-decoration:none;display:flex}.user-menu-pop .density-toggle:hover,.user-menu-pop .menu-item:hover{background:var(--surface-2);color:var(--text);border-color:#0000}.user-menu-pop .menu-item.danger{color:var(--danger)}.user-menu-pop .menu-item.danger:hover{background:var(--danger-weak)}@media (pointer:coarse){.user-menu-pop .density-toggle,.user-menu-pop .menu-item{min-height:44px}}.user-chip:hover{background:var(--surface-2);text-decoration:none}.avatar{border-radius:var(--r-round);background:var(--surface-3);width:30px;height:30px;color:var(--text);font-weight:var(--fw-bold);font-size:var(--fs-sm);flex:none;place-items:center;display:grid}.user-chip .u-who{min-width:0}.user-chip .u-name{font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--text);text-overflow:ellipsis;white-space:nowrap;line-height:1.2;overflow:hidden}.user-chip .u-role{font-size:var(--fs-xs);color:var(--muted)}.user-chip .u-cog{color:var(--muted);flex:none;margin-left:auto;transition:color .12s}.user-chip:hover .u-cog{color:var(--primary-ink)}.main{flex-direction:column;min-width:0;display:flex}.mobile-bar{display:none}.wrap{max-width:1080px;padding:var(--s-5) var(--s-5) var(--s-6);width:100%;margin:0 auto}.center{min-height:100dvh;padding:var(--s-4);background:var(--bg);place-items:center;display:grid}.page-head{margin-bottom:var(--s-4)}.page-head .sub{color:var(--muted);font-size:var(--fs-md);margin-top:var(--s-0)}.row{align-items:center;gap:var(--s-2);display:flex}.between{justify-content:space-between}.row.wrap{flex-wrap:wrap;width:auto;max-width:none;margin-inline:0;padding:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:var(--s-4) var(--s-4);box-shadow:var(--shadow-sm)}.card.drop-over{outline:2px dashed var(--primary);outline-offset:-4px}.card+.card{margin-top:var(--s-3)}.list{margin-top:var(--s-3);gap:var(--s-3);grid-template-columns:minmax(0,1fr);display:grid}.list .card{margin-top:0}.item{justify-content:space-between;align-items:center;gap:var(--s-3);display:flex}.item>*{min-width:0}.item>*+*{flex-shrink:0}.item:not(.column)>select,.item:not(.column)>input:not([type=checkbox]):not([type=radio]),.item:not(.column)>textarea{flex-shrink:1;width:auto;max-width:min(340px,50%)}.item .title{font-weight:var(--fw-semibold);color:var(--text)}@media (width<=720px){.item{flex-wrap:wrap;justify-content:flex-start;align-items:flex-start}.item>.row{flex-wrap:wrap;flex-shrink:1}.item:not(.column)>select,.item:not(.column)>input:not([type=checkbox]):not([type=radio]),.item:not(.column)>textarea{width:100%;max-width:none}.row.between,.row.between>.row{flex-wrap:wrap}}.card.hover{transition:box-shadow .12s,border-color .12s,transform 60ms}.card.hover:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong)}.empty{text-align:center;color:var(--muted);padding:var(--s-5) var(--s-4)}.empty .big{font-size:var(--fs-md);color:var(--text-2);margin-bottom:var(--s-1)}label{gap:var(--s-1);font-size:var(--fs-base);color:var(--text-2);font-weight:var(--fw-medium);display:grid}input,select,textarea{padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:var(--fs-md);width:100%;font-family:inherit;transition:border-color .12s,box-shadow .12s}input[type=checkbox],input[type=radio]{width:auto;min-width:0;height:auto;accent-color:var(--primary);flex:none;padding:0}:is(label:not([class]):has(>input[type=checkbox]),label:not([class]):has(>input[type=radio])){align-items:center;gap:var(--s-2);display:flex}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-weak);outline:none}textarea{resize:vertical}::placeholder{color:var(--muted)}button{padding:var(--s-2) var(--s-4);border-radius:var(--r-sm);border:1px solid var(--primary);background:var(--primary);color:#fff;font-size:var(--fs-md);font-weight:var(--fw-semibold);cursor:pointer;font-family:inherit;transition:background .12s,border-color .12s,box-shadow .12s}button:hover{background:var(--primary-hover);border-color:var(--primary-hover)}button.ghost{background:var(--surface);color:var(--text-2);border-color:var(--border-strong)}button.ghost:hover{background:var(--surface-2);color:var(--text);border-color:var(--border-strong)}button.small{padding:var(--s-2) var(--s-3);font-size:var(--fs-base)}button:disabled{opacity:.55;cursor:default}button.danger{background:var(--danger);border-color:var(--danger)}button.danger:hover{background:var(--danger-hover);border-color:var(--danger-hover)}button.danger.ghost{background:var(--surface);color:var(--danger);border-color:var(--danger-weak)}@media (pointer:coarse){button,.btnlink,input,select,textarea{min-height:44px}input,select,textarea{font-size:16px}button.small,.btnlink.small,.tabs button,.chip,.badge-btn{min-height:36px}input[type=checkbox],input[type=radio]{width:20px;height:20px;min-height:0}.check-inline{min-height:44px}label:has(>input[type=checkbox]){min-height:44px}label:has(>input[type=radio]){min-height:44px}}button:active,.btnlink:active,.nav-item:active,.chip:active,.tab:active{filter:brightness(var(--press-bright));transition:transform 60ms;transform:scale(.985)}@media (prefers-reduced-motion:reduce){button:active,.btnlink:active,.nav-item:active,.chip:active,.tab:active{transform:none}}button,.btnlink,.nav-item,.tab,.chip,.badge{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.sidebar,.modal-body{overscroll-behavior:contain}.board,.table-wrap,.table-scroll,.cal-layers{overscroll-behavior-x:contain}.badge{padding:var(--s-0) var(--s-2);border-radius:var(--r-pill);font-size:var(--fs-sm);font-weight:var(--fw-semibold);border:1px solid var(--border-strong);color:var(--text-2);background:var(--surface);align-items:center;gap:var(--s-1);white-space:nowrap;display:inline-flex}.badge.s1{color:var(--info);background:var(--info-weak);border-color:#0000}.badge.s3,.badge.i-progress{color:var(--ok);background:var(--ok-weak);border-color:#0000}.badge.i-material{color:var(--info);background:var(--info-weak);border-color:#0000}.badge.i-problem{color:var(--danger);background:var(--danger-weak);border-color:#0000}.badge.i-question{color:var(--warn);background:var(--warn-weak);border-color:#0000}.badge.i-other{color:var(--muted)}.badge.cat{color:var(--muted);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em}.badge.unread{background:var(--primary);color:#fff;border-color:var(--primary);margin-left:var(--s-1)}.badge.ok{color:var(--ok);background:var(--ok-weak);border-color:#0000}.badge.warn{color:var(--warn);background:var(--warn-weak);border-color:#0000}.badge.danger{color:var(--danger);background:var(--danger-weak);border-color:#0000}.badge.dot:before{content:"●";font-size:var(--fs-xs)}.topbar{display:none}.navlink{color:var(--muted);font-size:var(--fs-md)}.navlink:hover{color:var(--text)}.navlink.accent{color:var(--primary);font-weight:var(--fw-semibold)}.login{gap:var(--s-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);width:340px;padding:var(--s-5);box-shadow:var(--shadow-md);display:grid}.login h1{margin:0}.login .brand-row{align-items:center;gap:var(--s-3);margin-bottom:var(--s-1);display:flex}.board{gap:var(--s-2);padding-bottom:var(--s-2);grid-auto-columns:minmax(150px,1fr);grid-auto-flow:column;display:grid;overflow-x:auto}.board-col{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r);padding:var(--s-2);min-height:120px}.board-col-head{padding:var(--s-0) var(--s-1) var(--s-3);justify-content:space-between;align-items:center;display:flex}.board-col-head .t{font-weight:var(--fw-semibold);font-size:var(--fs-base);white-space:nowrap}.board-col-head .c{font-size:var(--fs-sm);color:var(--muted);background:var(--surface-3);border-radius:var(--r-pill);padding:var(--s-0) var(--s-2);font-weight:var(--fw-semibold);white-space:nowrap}.board-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s-2) var(--s-2);box-shadow:var(--shadow-sm);cursor:default}.board-card+.board-card{margin-top:var(--s-2)}.board-card .bc-title{font-weight:var(--fw-semibold);font-size:var(--fs-base);line-height:1.3}.board-card .bc-meta{color:var(--muted);font-size:var(--fs-sm);margin-top:var(--s-0)}.board-card .bc-head{gap:var(--s-1);grid-template-columns:minmax(0,1fr) auto;align-items:start;display:grid}.board-card .bc-menu{position:relative}.bc-menu-pop{z-index:30;min-width:170px;padding:var(--s-1);border:1px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow);display:grid;position:fixed}.bc-menu-pop button{text-align:left;width:100%;padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);box-shadow:none;color:var(--text);font:inherit;font-size:var(--fs-base);cursor:pointer;background:0 0;border:0}.bc-menu-pop button:hover{background:var(--surface-2)}.bc-menu-pop button.danger{color:var(--danger);background:0 0;border:0}.bc-menu-pop button.danger:hover{background:var(--danger-weak)}.board-card .bc-rename{width:100%;font-size:var(--fs-base);font-weight:var(--fw-semibold);padding:var(--s-1) var(--s-2)}.board-card .bc-meta button.textbtn{font-size:var(--fs-sm)}.board-card .bc-meta select{width:auto;max-width:100%;font-size:var(--fs-sm);padding:var(--s-0) var(--s-1)}.board-card .badge{white-space:normal;max-width:100%;line-height:1.35}.board-col.won{border-top:2px solid var(--ok)}.board-col.lost{border-top:2px solid var(--danger)}.stat-grid{gap:var(--s-3);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:var(--s-3) var(--s-4);box-shadow:var(--shadow-sm)}.stat .k{color:var(--muted);font-size:var(--fs-base)}.stat .v{font-size:var(--fs-2xl);font-weight:var(--fw-bold);letter-spacing:-.01em;margin-top:var(--s-0)}.stat .v.danger-text,.danger-text,.bad{color:var(--danger)}.ok-text{color:var(--ok)}.kpi-row{margin:var(--s-4) 0 var(--s-2)}.table-wrap{margin-top:var(--s-3);overflow-x:auto}.table-scroll{-webkit-overflow-scrolling:touch;max-width:100%;overflow-x:auto}.fin-table{border-collapse:collapse;width:100%;font-size:var(--fs-md);min-width:480px}.fin-table th,.fin-table td{border-top:1px solid var(--border);text-align:left;padding:8px 10px}.fin-table thead th{color:var(--muted);font-weight:var(--fw-semibold);font-size:var(--fs-base);border-top:none}.fin-table .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.fin-table tfoot th{border-top:2px solid var(--border-strong);font-weight:var(--fw-bold)}.alloc-editor{gap:var(--s-2);padding:var(--s-3) 0;grid-column:1/-1;display:grid}.alloc-row{gap:var(--s-2);flex-wrap:wrap}.alloc-row select{flex:150px;min-width:0}.alloc-amount{flex:none;width:120px}.alloc-foreign{flex:150px;align-self:center;min-width:0}.alloc-summary{gap:var(--s-2);margin-top:var(--s-2);flex-wrap:wrap;display:flex}.alloc-summary .chip{cursor:default;padding:var(--s-0) var(--s-3);font-size:var(--fs-sm)}.alloc-summary .chip.on{border-color:var(--primary);color:var(--primary);font-weight:var(--fw-semibold)}.alloc-edit-box{gap:var(--s-3);margin-top:var(--s-2);padding-top:var(--s-2);border-top:1px dashed var(--border);display:grid}.card.item.column{flex-direction:column;align-items:stretch}.card.item.dim{opacity:.6}.card.item.pending-row{border-left:3px solid var(--danger)}.link-box{gap:var(--s-2);display:grid}.link-code{font-size:var(--fs-sm);word-break:break-all;background:var(--bg);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);border:1px solid var(--border);flex:1}.portal-wrap{max-width:760px;padding:var(--s-5) var(--s-4) var(--s-6);gap:var(--s-4);margin:0 auto;display:grid}.portal-head{gap:var(--s-2);padding:var(--s-1) var(--s-0);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.portal-head .brand{align-items:center;gap:var(--s-3);font-weight:var(--fw-bold);font-size:var(--fs-xl);display:flex}.portal-head .logo{border-radius:var(--r-sm);background:var(--primary);color:#fff;width:30px;height:30px;font-weight:var(--fw-bold);place-items:center;display:inline-grid}.portal-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:var(--s-5) var(--s-5);box-shadow:var(--shadow-sm)}.portal-card h1{font-size:var(--fs-xl);margin:0}.portal-card h2{margin:0 0 var(--s-1);font-size:var(--fs-lg)}.portal-stats{gap:var(--s-6);margin-top:var(--s-3);display:flex}.portal-stats .k{color:var(--muted);font-size:var(--fs-base)}.portal-stats .v{font-size:var(--fs-xl);font-weight:var(--fw-bold);margin-top:var(--s-0)}.portal-decide{gap:var(--s-2);margin-top:var(--s-3);padding-top:var(--s-3);border-top:1px dashed var(--border);display:grid}.portal-form{margin-top:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--border)}.portal-form>.row.between>.muted{min-width:0}.portal-form>.row.between{gap:var(--s-2)}.portal-foot{text-align:center}.card.dim{opacity:.6}.field-wrap{max-width:520px;padding:var(--s-4) var(--s-3) var(--s-6);gap:var(--s-3);margin:0 auto;display:grid}.field-head{justify-content:space-between;align-items:center;display:flex}.field-head .brand{align-items:center;gap:var(--s-2);font-weight:var(--fw-bold);font-size:var(--fs-lg);display:flex}.field-head .logo{border-radius:var(--r-sm);background:var(--primary);color:#fff;width:28px;height:28px;font-weight:var(--fw-bold);place-items:center;display:inline-grid}.field-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:var(--s-4);box-shadow:var(--shadow-sm)}.field-hours{font-size:var(--fs-2xl);font-weight:var(--fw-bold);letter-spacing:-.02em;margin-top:var(--s-0)}.field-h{font-size:var(--fs-md);color:var(--muted);margin:var(--s-1) var(--s-0) calc(var(--s-0) * -1)}.field-proj{font-weight:var(--fw-bold);font-size:var(--fs-lg)}.field-form{gap:var(--s-3);margin-top:var(--s-3);display:grid}.field-form select,.field-form input{height:46px;font-size:var(--fs-lg)}.field-job{gap:var(--s-3);padding:var(--s-3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);display:grid}.field-row{gap:var(--s-2);display:flex}.field-hrs{text-align:center;width:90px}.field-row input:not(.field-hrs){flex:1}.field-btn{height:48px;font-size:var(--fs-lg);font-weight:var(--fw-semibold)}.field-toast{z-index:5;text-align:center;background:var(--ok);color:#fff;padding:var(--s-3);border-radius:var(--r);font-weight:var(--fw-semibold);position:sticky;top:8px}.field-foot{text-align:center}.field-text{white-space:pre-wrap;font-size:var(--fs-lg);max-height:50dvh;padding:var(--s-3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg);margin-top:var(--s-2);line-height:1.5;overflow-y:auto}.field-form textarea{font-size:var(--fs-lg)}.cockpit{flex-direction:column;min-height:calc(100dvh - 120px);display:flex}.chip{background:var(--surface);border:1px solid var(--border-strong);color:var(--text-2);border-radius:var(--r-pill);padding:var(--s-2) var(--s-3);font-size:var(--fs-base);cursor:pointer;transition:border-color .12s,color .12s}.chip:hover{border-color:var(--primary);color:var(--primary)}.chip.on{background:var(--primary-weak);border-color:var(--primary);color:var(--primary-ink);font-weight:var(--fw-semibold)}.chat{gap:var(--s-4);margin:var(--s-3) 0;flex-direction:column;flex:1;display:flex}.turn{gap:var(--s-2);flex-direction:column;display:flex}.turn .q{background:var(--primary);color:#fff;max-width:80%;padding:var(--s-3) var(--s-3);border-radius:var(--r-lg) var(--r-lg) var(--r-xs) var(--r-lg);font-size:var(--fs-md);align-self:flex-end}.turn-photo{border-radius:var(--r);border:1px solid var(--border);background:var(--surface-2);align-self:flex-end;max-width:min(160px,45%);display:block}.turn .a{background:var(--surface);border:1px solid var(--border);max-width:90%;box-shadow:var(--shadow-sm);padding:var(--s-3) var(--s-4);border-radius:var(--r-lg) var(--r-lg) var(--r-lg) var(--r-xs);font-size:var(--fs-md);white-space:pre-wrap;align-self:flex-start;line-height:1.6}.bim-body{gap:var(--s-3);grid-template-columns:minmax(0,1fr) 300px;align-items:start;display:grid}.bim-canvas{border:1px solid var(--border);border-radius:var(--r);background:var(--bg);width:100%;height:520px;overflow:hidden}.bim-side{border:1px solid var(--border);border-radius:var(--r);padding:var(--s-3);max-height:520px;overflow:auto}.bim-side .tabs,.bim-toolbar{margin-bottom:var(--s-2)}.bim-toolbar .sep{background:var(--border);width:1px;margin:0 var(--s-1);align-self:stretch}.bim-tree{font-size:var(--fs-base)}.bim-tree .tree-toggle{width:18px;min-width:0;padding:0}.bim-tree .tree-label{text-align:left;padding:var(--s-0) var(--s-1)}.bim-side{min-width:0;overflow-x:hidden}.bim-side .tabs{flex-wrap:wrap;margin-top:0;overflow-x:visible}.bim-side .tab{padding:var(--s-2) var(--s-1);font-size:var(--fs-base)}.bim-tree .tree-label{white-space:normal;overflow-wrap:anywhere;min-width:0}.bim-qty-list{margin:var(--s-2) 0 0;padding:0;list-style:none}.bim-qty-list li{padding:var(--s-1) 0;border-bottom:1px solid var(--border);overflow-wrap:anywhere}.bim-qty-val{font-variant-numeric:tabular-nums;font-weight:600}.takeoff-list{margin:var(--s-2) 0 0;padding:0;list-style:none}.takeoff-list li{border-bottom:1px solid var(--border)}.takeoff-list label{gap:var(--s-2);padding:var(--s-2) 0;cursor:pointer;align-items:flex-start;display:flex}.takeoff-list input{flex:none;margin-top:3px}.takeoff-body{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.takeoff-head{justify-content:space-between;gap:0 var(--s-3);flex-wrap:wrap;display:flex}.takeoff-qty{font-variant-numeric:tabular-nums;white-space:nowrap}.bim-hint-touch{display:none}@media (pointer:coarse){.bim-hint-mouse{display:none}.bim-hint-touch{display:inline}}@media (width<=900px){.bim-body{grid-template-columns:1fr}.bim-side{max-height:320px}}.call-turn{padding:var(--s-2) 0;border-top:1px solid var(--border)}.call-turn:first-of-type{border-top:0}.call-turn textarea{font:inherit}.call-row{text-align:left;cursor:pointer;width:100%;font:inherit;color:inherit;display:block}.call-row:hover{border-color:var(--primary)}.ask-bar{gap:var(--s-3);padding:var(--s-3) 0;background:linear-gradient(to top, var(--bg) 70%, transparent);display:flex;position:sticky;bottom:0}.ask-bar input{flex:1}.composer-wrap{padding:var(--s-3) 0;gap:var(--s-2);background:linear-gradient(to top, var(--bg) 70%, transparent);display:grid;position:sticky;bottom:0}.composer{align-items:center;gap:var(--s-1);padding:var(--s-1);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-pill);box-shadow:var(--shadow-sm);display:flex}.composer:focus-within{border-color:var(--primary)}.composer.rec{border-color:var(--warn)}.composer-input{min-width:0;box-shadow:none;padding:var(--s-2) var(--s-1);font-size:var(--fs-md);color:var(--text);background:0 0;border:none;flex:1}.composer-input:focus{box-shadow:none;outline:none}.composer-side{border-radius:var(--r-pill);width:40px;height:40px;color:var(--muted);box-shadow:none;cursor:pointer;background:0 0;border:none;flex:none;place-items:center;padding:0;display:grid}.composer-side:hover:not(:disabled){background:var(--primary-weak);color:var(--primary-ink)}.composer-side:disabled{opacity:.45;cursor:default}.composer-side.send{background:var(--primary);color:#fff}.composer-side.send:hover:not(:disabled){background:var(--primary-hover)}.composer.rec .composer-side:not(.send){color:var(--warn)}.mention-pop{gap:var(--s-0);max-height:260px;margin-bottom:var(--s-2);padding:var(--s-1);border:1px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--shadow);display:grid;overflow:auto}.mention-item{gap:var(--s-2);text-align:left;width:100%;padding:var(--s-2) var(--s-2);border-radius:var(--r-sm);box-shadow:none;color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;display:grid}.mention-item.on,.mention-item:hover{background:var(--surface-2)}.mention-item .k{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.mention-item .t{font-weight:var(--fw-semibold);font-size:var(--fs-base)}.composer-file{align-items:center;gap:var(--s-3);max-width:100%;padding:var(--s-2) var(--s-3) var(--s-2) var(--s-2);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);font-size:var(--fs-base);color:var(--text);justify-self:start;display:flex}.composer-thumb{border-radius:var(--r);object-fit:cover;background:var(--surface-2);flex:none;width:64px;height:64px}@media (pointer:coarse){.composer-thumb{width:72px;height:72px}}.chip-x{border-radius:var(--r-pill);width:26px;height:26px;color:var(--muted);box-shadow:none;cursor:pointer;background:0 0;border:none;flex:none;place-items:center;padding:0;display:grid}.chip-x:hover{background:var(--surface-2);color:var(--text)}.comms-msg.draggable{cursor:grab}.comms-msg.draggable:active{cursor:grabbing}.thread-item.drop{border-color:var(--primary);background:var(--surface-3)}@media (pointer:coarse){.chip-x{width:32px;height:32px}}.composer-live{min-width:0;padding:var(--s-2) var(--s-1);font-size:var(--fs-md);color:var(--muted);flex:1;font-style:italic}.composer-wave{align-items:center;gap:var(--s-0);height:24px;padding:0 var(--s-2);flex:none;display:flex}.composer-wave i{border-radius:var(--r-xs);background:var(--muted);transform-origin:50%;width:3px;height:18px;transition:transform 60ms linear;display:block}.composer.rec .composer-wave i{background:var(--warn)}@media (width<=720px){.composer-wave i:nth-child(n+13){display:none}}.composer-note{padding-left:var(--s-3)}.skeleton{gap:var(--s-2);padding:var(--s-0) 0;display:grid}.skeleton-say{align-items:center;gap:var(--s-2);color:var(--muted);font-size:var(--fs-base);display:flex}.skeleton-say b{border-radius:var(--r-round);background:var(--primary);width:6px;height:6px;animation:1.1s ease-in-out infinite skeleton-pulse;display:block}.skeleton i{border-radius:var(--r-sm);background:var(--border);height:11px;animation:1.4s ease-in-out infinite skeleton-pulse;display:block}.skeleton i:nth-of-type(2){animation-delay:.18s}.skeleton i:nth-of-type(3){animation-delay:.36s}@keyframes skeleton-pulse{0%,to{opacity:.35}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.skeleton i,.skeleton-say b{opacity:.6;animation:none}}.chat-history{margin-bottom:var(--s-3)}.chat-history-row{align-items:center;gap:var(--s-3)}.chat-history-row.current{border-left:3px solid var(--primary);padding-left:var(--s-2)}.chat-history-open{gap:var(--s-0);text-align:left;min-width:0;box-shadow:none;padding:var(--s-2) 0;cursor:pointer;background:0 0;border:none;flex:1;justify-items:start;display:grid}.chat-history-open .title{font-weight:var(--fw-semibold);color:var(--text);max-width:100%}.chat-history-open:hover .title{color:var(--primary)}.ellip{text-overflow:ellipsis;white-space:nowrap;max-width:100%;overflow:hidden}@media (pointer:coarse){.composer-side{width:44px;height:44px}}.rag{margin:var(--s-2) 0 var(--s-1)}.rag-bar{background:0 0;padding:0;position:static}.progress-form{gap:var(--s-3);grid-template-columns:2fr 1fr 1fr auto;align-items:end;display:grid}.progress-form button{height:40px}.progress-form .ok{color:var(--ok)}@media (width<=720px){.progress-form{grid-template-columns:1fr}}.msg{gap:var(--s-2);display:grid}.msg-text{font-size:var(--fs-md)}.alert-item .row{gap:var(--s-3);align-items:flex-start}.alert-item .badge{margin-top:var(--s-0);flex-shrink:0}.btnlink{line-height:normal;text-decoration:none;display:inline-block}button.textbtn{box-shadow:none;color:inherit;font:inherit;text-align:left;cursor:pointer;text-underline-offset:2px;background:0 0;border:0;border-radius:0;min-height:0;padding:0;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}button.textbtn:hover{color:var(--text);background:0 0;border-color:#0000}button.textbtn:disabled{opacity:.55}button.icon-only{padding:var(--s-2);place-items:center;width:34px;height:34px;display:inline-grid}@media (pointer:coarse){button.icon-only{width:44px;height:44px}}.btnlink:hover{text-decoration:none}.btnlink.ghost{border:1px solid var(--border-strong);padding:var(--s-2) var(--s-4);border-radius:var(--r-sm);color:var(--text-2);background:var(--surface);font-weight:var(--fw-semibold);font-size:var(--fs-md)}.btnlink.ghost.small,.btnlink.small{padding:var(--s-2) var(--s-3);font-size:var(--fs-base)}.btnlink.ghost:hover{background:var(--surface-2)}.ok-card{color:var(--ok);border-color:var(--ok-border);background:var(--ok-weak);margin-top:var(--s-2)}.sdz-form{gap:var(--s-3);display:grid}.tender .a{margin-top:var(--s-3);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s-3) var(--s-3);white-space:pre-wrap;font-size:var(--fs-md);color:var(--text-2);line-height:1.55}.weather{gap:var(--s-2);margin:var(--s-3) 0;display:flex;overflow-x:auto}.wday{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s-2) var(--s-3);min-width:72px;box-shadow:var(--shadow-sm);flex:none}.wday.frost{border-color:var(--info);background:var(--info-weak)}.wicon{font-size:var(--fs-2xl);line-height:1.2}.wdesc{max-width:92px}.comms-layout{gap:var(--s-4);grid-template-columns:minmax(220px,320px) 1fr;align-items:start;display:grid}.comms-threads .thread-item{text-align:left;cursor:pointer;background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);font-weight:var(--fw-medium)}.comms-threads .thread-item:hover{background:var(--surface-2)}.comms-threads .thread-item.active{border-color:var(--primary);background:var(--primary-weak)}.comms-messages{gap:var(--s-2);max-height:55dvh;padding:var(--s-1);flex-direction:column;display:flex;overflow-y:auto}.comms-msg{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);padding:var(--s-2) var(--s-3);box-shadow:var(--shadow-sm)}.comms-body{white-space:pre-wrap;margin-top:var(--s-0);color:var(--text-2)}.comms-back{display:none}@media (width<=720px){.comms-layout{grid-template-columns:1fr}.comms-layout.has-open .comms-threads{display:none}.comms-back{display:inline-block}.comms-messages{max-height:62dvh}}.anchor-grid{gap:var(--s-3);margin-top:var(--s-3);grid-template-columns:repeat(auto-fill,minmax(160px,1fr));display:grid}.anchor-card{text-align:center}.anchor-qr{aspect-ratio:1;border-radius:var(--r-sm);width:100%;max-width:160px;margin:0 auto var(--s-2);border:1px solid var(--border);background:#fff}.tabs{gap:var(--s-1);border-bottom:1px solid var(--border);margin:var(--s-2) 0 var(--s-5);display:flex;overflow-x:auto}.tab{color:var(--muted);font-size:var(--fs-md);font-weight:var(--fw-semibold);padding:var(--s-3) var(--s-3);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0}.tab:hover{color:var(--text);background:0 0;border-color:#0000}.tab.active{color:var(--primary-ink);border-bottom-color:var(--primary)}.segmented{gap:var(--s-0);background:var(--surface-3);border-radius:var(--r-sm);padding:var(--s-0);border-bottom:none}.segmented .tab{padding:var(--s-1) var(--s-3);border-radius:var(--r-sm);font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--text-2);border:none}.segmented .tab:hover{color:var(--text);background:#7f7f7f1f}.segmented .tab.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.provenance{border-left:3px solid var(--ok);gap:var(--s-0);margin-bottom:var(--s-3);display:grid}.addr-field{gap:var(--s-1);display:grid}.addr-chosen{padding:var(--s-2) var(--s-3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);font-size:var(--fs-md);align-items:center}.addr-hits{gap:var(--s-0)}.addr-hit{text-align:left;font-size:var(--fs-base);justify-content:flex-start}.linklike{color:var(--primary-ink);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.fact-grid{gap:var(--s-3);overflow-wrap:anywhere;grid-template-columns:repeat(auto-fill,minmax(min(150px,100%),1fr));display:grid}.stars-row{align-items:center;gap:var(--s-2);display:flex}.stars-label{min-width:78px}.stars{align-items:center;gap:var(--s-0);display:inline-flex}.star{padding:0 var(--s-0);font-size:var(--fs-lg);color:var(--border-strong);cursor:pointer;background:0 0;border:none;line-height:1}.star:hover{color:var(--warn);background:0 0}.star.on{color:var(--warn)}.trait-grid{gap:var(--s-2) var(--s-5);margin-top:var(--s-1)}.trait-line{gap:var(--s-3);margin-top:var(--s-0)}.stars-view .on{color:var(--warn)}.stars-view .off{color:var(--border-strong)}.worker-notes{margin-top:var(--s-2);padding-top:var(--s-2);border-top:1px solid var(--border);color:var(--text-2);white-space:pre-wrap}.contact-editor{gap:var(--s-2);padding:var(--s-3);border:1px dashed var(--border-strong);border-radius:var(--r-sm);background:var(--surface-2);display:grid}.contact-row{align-items:center}.contact-row input{width:auto}.contact-list{gap:var(--s-0);margin-top:var(--s-2);padding-top:var(--s-2);border-top:1px solid var(--border);flex-direction:column;display:flex}.contact-chip{font-size:var(--fs-base);color:var(--text-2)}.contact-chip .cn{font-weight:var(--fw-semibold);color:var(--text)}.bim-canvas{border-radius:var(--r);border:1px solid var(--border);background:var(--surface-2);width:100%;height:480px;box-shadow:var(--shadow-sm);overflow:hidden}.bim-canvas canvas{display:block}.capture-list{margin-top:var(--s-2);padding-top:var(--s-2);border-top:1px solid var(--border);gap:var(--s-2);display:grid}.capture-row{align-items:flex-start;gap:var(--s-3)}.map-canvas{position:absolute;inset:0}.leaflet-container{background:#e8ecf1}.inline-date{align-items:center;gap:var(--s-2);color:var(--muted);font-size:var(--fs-base);flex-direction:row}.inline-date input{padding:var(--s-1) var(--s-2);font-size:var(--fs-base);width:auto}.gantt-wrap{margin-top:var(--s-3)}.g-axis{gap:var(--s-3);grid-template-columns:160px 1fr;display:grid}.g-axis-track{border-bottom:1px solid var(--border);height:18px;position:relative}.gmonth{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap;padding-left:var(--s-0);border-left:1px solid var(--border);height:18px;position:absolute;top:0}.gantt-body{--g-labelw:170px;position:relative}.g-connectors{pointer-events:none;z-index:2;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible}.ggrid{left:var(--g-labelw);pointer-events:none;z-index:0;position:absolute;top:0;bottom:0;right:0}.gline{background:var(--border);opacity:.7;width:1px;position:absolute;top:0;bottom:0}.ggrid{z-index:0}.g-overlay{left:var(--g-labelw);pointer-events:none;z-index:3;position:absolute;top:0;bottom:0;right:0}.gweekend{background:var(--surface-3);z-index:0;position:absolute;top:0;bottom:0}.g-today{border-left:2px solid var(--cal-today);z-index:3;pointer-events:none;width:0;position:absolute;top:0;bottom:0}.g-today:before{content:"";border-radius:var(--r-round);background:var(--cal-today);width:6px;height:6px;position:absolute;top:-4px;left:-4px}.gantt-body.editing .g-overlay{z-index:0}.g-today.flash{animation:1.6s ease-out g-today-flash}@keyframes g-today-flash{0%,to{box-shadow:none}15%,60%{box-shadow:0 0 0 3px color-mix(in srgb, var(--cal-today) 28%, transparent)}}@media (prefers-reduced-motion:reduce){.g-today.flash{animation:none}}.gtoday-tick{border-left:2px solid var(--cal-today);width:0;height:8px;position:absolute;bottom:-1px}.g-ghost{border-radius:var(--r-xs);pointer-events:none;z-index:0;background:repeating-linear-gradient(135deg, var(--border-strong) 0 3px, transparent 3px 6px);outline:1px solid var(--border-strong);outline-offset:-1px;height:4px;position:absolute;top:22px;left:0}.gdate.gdrift{color:var(--muted)}.gdate.gdrift.late{color:var(--warn)}.ghost-legend{color:var(--border-strong)}.gstage{z-index:1;position:relative}.gstage-hd{font-weight:var(--fw-semibold);font-size:var(--fs-sm);color:var(--text);margin:var(--s-3) 0 var(--s-1);padding-left:var(--s-2);border-left:3px solid var(--primary)}.g-row{align-items:center;gap:var(--s-3);padding:var(--s-0) 0;grid-template-columns:160px 1fr;display:grid}.g-label{overflow:hidden}.g-label .gname{font-size:var(--fs-base);color:var(--text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.g-label .gdate{font-size:var(--fs-xs);color:var(--muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.g-track{border-radius:var(--r-sm);background:0 0;height:28px;position:relative}.g-bar{z-index:2;background:var(--primary-weak);border:1px solid var(--primary);border-radius:var(--r-xs);cursor:grab;min-width:3px;position:absolute;top:3px;bottom:7px;overflow:hidden}.g-bar.dragging{cursor:grabbing;opacity:.9;box-shadow:0 0 0 2px var(--primary-weak)}.g-handle{cursor:ew-resize;border-radius:0 var(--r-xs) var(--r-xs) 0;background:#2456d62e;width:8px;position:absolute;top:0;bottom:0;right:0}.g-handle:hover{background:#2456d659}.g-bar.g-critical{border-color:var(--danger);background:var(--danger-weak)}.g-bar.g-critical .g-fill{background:var(--danger)}.g-label .gdate.dep{color:var(--info)}.crit-legend{color:var(--danger)}.g-bar.g-behind{border-color:var(--warn);background:var(--warn-weak)}.g-fill{background:var(--primary);opacity:.55;position:absolute;top:0;bottom:0;left:0}.g-bar.g-behind .g-fill{background:var(--warn)}.g-txt{font-size:var(--fs-xs);color:var(--text);position:absolute;top:2px;right:4px}.gfoot{margin-top:var(--s-2)}@media (width<=720px){.g-axis,.g-row{grid-template-columns:110px 1fr}.gantt-body{--g-labelw:120px}}.item-editor{margin:var(--s-2) 0 var(--s-3);gap:var(--s-3);display:grid}.item-editor .row{flex-wrap:wrap}.item-editor label{min-width:110px}.risk-card{margin:var(--s-3) 0}.risk-factors{margin:var(--s-3) 0 0;gap:var(--s-1);padding:0;list-style:none;display:grid}.risk-factors li{justify-content:space-between;gap:var(--s-3);border-top:1px solid var(--border);padding-top:var(--s-1);display:flex}.risk-score{align-items:baseline;gap:var(--s-2);display:flex}.risk-score .n,.risk-num{font-size:var(--fs-xl);font-weight:var(--fw-bold)}.sign-ask .code-in{width:200px}.sign-wait{align-items:center;gap:var(--s-2);display:inline-flex}.sign-wait .vc{font-size:var(--fs-xl);letter-spacing:2px;color:var(--primary);border:1px solid var(--primary);background:var(--primary-weak);border-radius:var(--r-sm);padding:var(--s-0) var(--s-2)}.err{color:var(--danger)}.twofa-enrol{margin-top:var(--s-3);gap:var(--s-1);display:grid}.twofa-enrol ol{margin:0 0 var(--s-2);padding-left:var(--s-4);color:var(--muted)}.qr-box{border-radius:var(--r);padding:var(--s-3);border:1px solid var(--border);background:#fff;width:fit-content}.qr-box canvas{display:block}.secret{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:var(--s-2) var(--s-3);letter-spacing:2px;word-break:break-all;display:inline-block}section{margin-top:var(--s-5)}.stage table.wbs{border-collapse:collapse;width:100%;margin-top:var(--s-2)}.wbs td{border-top:1px solid var(--border);font-size:var(--fs-md);padding:6px 8px}.wbs td.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.wbs td:first-child{width:32px;color:var(--muted)}.claim-table{border-collapse:collapse;width:100%;font-size:var(--fs-md)}.claim-table th{text-align:left;font-weight:var(--fw-semibold);color:var(--muted);font-size:var(--fs-sm);border-bottom:1px solid var(--border);white-space:nowrap;padding:4px 8px}.claim-table td{border-top:1px solid var(--border);padding:5px 8px}.claim-table th:not(:first-child),.claim-table td:not(:first-child){text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.claim-table th.text,.claim-table td.text{text-align:left;white-space:normal;font-variant-numeric:normal}:root[data-density=compact] .claim-table td,:root[data-density=compact] .claim-table th{padding:3px 6px}@media (width<=900px){.app-shell{grid-template-columns:1fr}body.drawer-open{overflow:hidden}.sidebar{z-index:1200;width:260px;height:100dvh;padding-top:calc(14px + env(safe-area-inset-top));padding-bottom:calc(14px + env(safe-area-inset-bottom));padding-left:calc(12px + env(safe-area-inset-left));box-sizing:border-box;will-change:transform;box-shadow:var(--shadow-md);transition:transform .28s cubic-bezier(.32,.72,0,1);position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar.dragging{transition:none}@media (width<=560px){.sidebar{width:100%;padding-right:calc(12px + env(safe-area-inset-right))}.sidebar .sidebar-search{display:none}.sidebar .sidebar-close{display:grid}}.scrim{z-index:1100;background:#10182866;animation:.28s cubic-bezier(.32,.72,0,1) scrim-fade;position:fixed;inset:0}@keyframes scrim-fade{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.sidebar{transition:none}.scrim{animation:none}}.mobile-bar{align-items:center;gap:var(--s-3);z-index:1050;background:var(--surface);border-bottom:1px solid var(--border);box-sizing:border-box;min-height:var(--mobile-bar-h);padding:calc(10px + env(safe-area-inset-top)) var(--s-3) var(--s-3);display:flex;position:sticky;top:0}.offline-banner{top:var(--mobile-bar-h)}.mobile-bar .brand{align-items:center;gap:var(--s-2);font-weight:var(--fw-bold);font-size:var(--fs-lg);display:flex}.icon-btn{padding:var(--s-1);color:var(--text);cursor:pointer;background:0 0;border:none}.wrap{padding:var(--s-4) calc(16px + env(safe-area-inset-right)) calc(60px + env(safe-area-inset-bottom)) calc(16px + env(safe-area-inset-left))}}:root[data-density=compact]{--r-sm:6px;--r:8px;--r-lg:10px;--s-1:3px;--s-2:6px;--s-3:9px;--s-4:12px;--fs-2xl:22px;--fs-xl:18px;--fs-lg:15px;--fs-md:13px}:root[data-density=compact] body{line-height:1.45}:root[data-density=compact] .wrap{max-width:1320px;padding:var(--s-4) var(--s-5) var(--s-6)}:root[data-density=compact] .fin-table th,:root[data-density=compact] .fin-table td{padding:4px 8px}:root[data-density=compact] .stage table.wbs td,:root[data-density=compact] .stage table.wbs th{padding:3px 6px}.density-toggle{justify-content:center;align-items:center;gap:var(--s-2);width:100%;margin-bottom:var(--s-2);display:flex}.worklist{gap:var(--s-3);margin:var(--s-1) 0 var(--s-4);grid-template-columns:repeat(auto-fit,minmax(168px,1fr));display:grid}.wl-tile{gap:var(--s-0);text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:var(--s-3) var(--s-3);box-shadow:var(--shadow-sm);color:var(--text);cursor:pointer;flex-direction:column;display:flex}.wl-tile:hover{border-color:var(--border-strong);box-shadow:var(--shadow);text-decoration:none}.wl-tile .wl-v{font-size:var(--fs-2xl);font-weight:var(--fw-bold);letter-spacing:-.02em;line-height:1.15}.wl-tile .wl-k{font-size:var(--fs-base);color:var(--muted)}.wl-tile .wl-sub{font-size:var(--fs-sm);color:var(--muted)}.wl-tile.urgent{border-color:var(--danger-border);background:var(--danger-weak)}.wl-tile.urgent .wl-v{color:var(--danger-ink)}.wl-tile.attn{border-color:var(--warn-border);background:var(--warn-weak)}.wl-tile.attn .wl-v{color:var(--warn-ink)}.wl-tile.calm .wl-v{color:var(--ok)}.ai-suggest{border-left:3px solid var(--violet);background:var(--violet-weak)}.ai-suggest .ai-tag{align-items:center;gap:var(--s-1);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--violet-ink);display:inline-flex}.ai-suggest .ai-text{margin:var(--s-1) 0 var(--s-2);color:var(--text-2)}.need-specs{margin-top:var(--s-2);padding:var(--s-2) var(--s-3);background:var(--surface-2);border-radius:var(--r-sm);gap:var(--s-0);display:grid}.ai-answer{margin-top:var(--s-3);padding:var(--s-3) var(--s-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);white-space:pre-wrap;font-size:var(--fs-base);line-height:1.6}.overdue-lease{border-color:var(--danger-border);background:var(--danger-weak)}.date-input{align-items:center;gap:var(--s-1);width:100%;display:inline-flex}.date-input input[type=text]{font-variant-numeric:tabular-nums}.date-input .date-partial{border-color:var(--warn)}.date-picker-hidden{opacity:0;pointer-events:none;border:0;width:0;height:0;padding:0;position:absolute}.date-pick{padding:var(--s-2) var(--s-2);flex:none;line-height:1}.sub-block{margin-top:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--border)}.sub-block .title.small{font-size:var(--fs-base)}button.ghost.small.on,button.ghost.small.on:hover{background:var(--primary-weak);color:var(--primary-ink);border-color:var(--primary)}.settings-grid{gap:var(--s-3);margin-top:var(--s-3);display:grid}.setting-row{gap:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto;align-items:start;display:grid}.setting-row:first-child{border-top:none;padding-top:0}.setting-row label{gap:var(--s-0)}.setting-row .s-label{font-weight:var(--fw-semibold);color:var(--text);font-size:var(--fs-base)}.setting-row .s-help{color:var(--muted);font-size:var(--fs-sm);font-weight:var(--fw-normal);line-height:1.45}.setting-row input.changed,.setting-row select.changed{border-color:var(--primary);background:var(--primary-weak)}.setting-row input[type=checkbox]{width:auto}.classifier-row{padding:var(--s-1) 0;border-bottom:1px solid var(--border);align-items:center}.classifier-row:last-of-type{border-bottom:none}@media (width<=720px){.setting-row{grid-template-columns:1fr}}.map-page .map-shell{border-radius:var(--r);border:1px solid var(--border);height:calc(100dvh - 210px);min-height:440px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.map-float{z-index:900;gap:var(--s-2);max-width:min(340px,100% - 24px);display:grid;position:absolute}.map-float.top-left{top:12px;left:12px}.map-float.top-right{justify-items:end;top:12px;right:12px}.map-float.bottom-left{align-content:end;justify-items:start;bottom:12px;left:12px}.map-float.bottom-center{max-width:min(420px,100% - 24px);bottom:14px;left:50%;transform:translate(-50%)}.map-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-md);padding:var(--s-2) var(--s-3);font-size:var(--fs-base);line-height:1.35}.map-card.warn{border-color:var(--warn);background:var(--warn-weak)}.map-card.readout{font-weight:var(--fw-semibold);text-align:center;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.map-tools{gap:var(--s-0);background:var(--border);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-md);display:grid;overflow:hidden}.map-btn{background:var(--surface);width:38px;height:38px;color:var(--text);cursor:pointer;border:none;border-radius:0;place-items:center;padding:0;display:grid}.map-btn:hover{background:var(--surface-2);border:none}.map-btn.on,.map-btn.on:hover{background:var(--primary);color:#fff}.map-layers-btn{align-items:center;gap:var(--s-2);padding:var(--s-1) var(--s-3) var(--s-1) var(--s-1);background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--r-sm);box-shadow:var(--shadow-md);font-size:var(--fs-base);font-weight:var(--fw-semibold);cursor:pointer;display:flex}.map-layers-btn:hover{background:var(--surface-2);border-color:var(--border-strong)}.map-layers-btn.on{border-color:var(--primary);color:var(--primary-ink)}.map-layers-btn .thumb{border-radius:var(--r-sm);background:var(--surface-3);flex:none;width:34px;height:34px;overflow:hidden}.map-layers-btn .thumb img{object-fit:cover;width:100%;height:100%;display:block}.map-layers-btn .lbl{align-items:center;gap:var(--s-2);display:inline-flex}.map-layers-btn .badge{background:var(--primary-weak);color:var(--primary-ink);font-size:var(--fs-xs);border:none}.map-card.panel{width:258px;padding:var(--s-3) var(--s-3) var(--s-3)}.base-picker{gap:var(--s-2);grid-template-columns:repeat(3,1fr);display:grid}.base-tile{gap:var(--s-1);cursor:pointer;font-size:var(--fs-xs);color:var(--muted);text-align:center;background:0 0;border:none;padding:0;display:grid}.base-tile img{aspect-ratio:1;object-fit:cover;border-radius:var(--r-sm);width:100%;box-shadow:var(--shadow-sm);border:2px solid #0000;display:block}.base-tile:hover{background:0 0}.base-tile:hover img{border-color:var(--border-strong)}.base-tile.on img{border-color:var(--primary)}.base-tile.on{color:var(--primary-ink);font-weight:var(--fw-semibold)}.panel-sep{background:var(--border);height:1px;margin:var(--s-3) calc(var(--s-3) * -1)}.filter-list{gap:var(--s-0);display:grid}.filter-row{align-items:center;gap:var(--s-2);padding:var(--s-1) var(--s-0);font-size:var(--fs-base);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--r-sm);display:flex}.filter-row:hover{background:var(--surface-2)}.filter-row input{width:auto;margin:0}.filter-row .dot{border-radius:var(--r-round);flex:none;width:9px;height:9px}.filter-row .f-label{flex:1}.map-x{padding:var(--s-0);width:22px;height:22px;color:var(--muted);cursor:pointer;background:0 0;border:none;place-items:center;display:grid}.map-x:hover{background:var(--surface-2);color:var(--text)}.measure-label{border:1px solid var(--danger);color:var(--danger-ink);border-radius:var(--r-pill);padding:var(--s-0) var(--s-2);font-size:var(--fs-xs);font-weight:var(--fw-semibold);white-space:nowrap;box-shadow:var(--shadow-sm);background:#fff;width:auto!important;height:auto!important}@media (width<=720px){.map-page .map-shell{height:calc(100dvh - 190px);min-height:380px}.map-float.bottom-left{right:12px}.map-card.panel{width:auto}.map-float.top-left{max-width:calc(100% - 70px)}.map-float.bottom-center{bottom:62px}}:root[data-density=compact] .map-page .map-shell{height:calc(100dvh - 176px)}.wrap-wide{max-width:1480px}.quote{margin:var(--s-3) 0;padding:var(--s-2) var(--s-3);border-left:3px solid var(--border-strong);background:var(--surface-2);color:var(--text-2);border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:.95em}.qa-table{border-collapse:collapse;width:100%;font-size:var(--fs-md);table-layout:fixed}.qa-table th{text-align:left;font-weight:var(--fw-semibold);color:var(--muted);font-size:var(--fs-sm);border-bottom:1px solid var(--border);padding:4px 8px}.qa-table td{border-top:1px solid var(--border);vertical-align:top;text-align:left;padding:6px 8px}.qa-table td:first-child{color:var(--muted)}.qa-table .qa-answer{color:var(--text-2)}.qa-table.wide{min-width:640px}.qa-table .qa-answer.unresolved{font-style:italic}.qa-table .qa-actions{text-align:right;white-space:nowrap}:root[data-density=compact] .qa-table td,:root[data-density=compact] .qa-table th{padding:3px 6px}.live-banner{background:var(--primary-weak);color:var(--text);justify-content:center;align-items:center;gap:var(--s-3);display:flex}.live-banner button{margin:0}.undo-toast{left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:1300;align-items:center;gap:var(--s-3);max-width:min(560px,100vw - 32px);padding:var(--s-3) var(--s-3);border-radius:var(--r);background:var(--text);color:#fff;font-size:var(--fs-md);display:flex;position:fixed;transform:translate(-50%);box-shadow:0 8px 24px #00000038}.undo-toast button{margin:0}.undo-toast button:not(.ghost){color:var(--text);background:#fff;border-color:#fff}.undo-toast button.ghost{color:#fff;background:0 0;border-color:#ffffff59}:root{--cal-today:#ff3b30;--cal-numh:30px;--cal-lane:22px;--cal-wk:34px}[data-kind=Task]{--ev:#007aff}[data-kind=ContractDeadline]{--ev:#d70015}[data-kind=Handover]{--ev:#248a3d}[data-kind=PermitExpiry]{--ev:#c93400}[data-kind=InstrumentExpiry]{--ev:#5856d6}[data-kind=WarrantyExpiry]{--ev:#8944ab}[data-kind=CredentialExpiry]{--ev:#0071a4}[data-kind=LeaseReturn]{--ev:#7f5539}[data-kind=InvoiceDue]{--ev:#a25c00}[data-kind=RetentionDue]{--ev:#6b7788}[data-kind=LetterDue]{--ev:#bf2d5b}[data-kind=ScheduleBar]{--ev:#4a5b70}.cal-card{padding-bottom:var(--s-3)}.cal-toolbar{justify-content:space-between;align-items:center;gap:var(--s-3);flex-wrap:wrap;display:flex}.cal-title{font-size:var(--fs-2xl);font-weight:var(--fw-bold);letter-spacing:-.022em;gap:var(--s-2);align-items:baseline;margin:0;display:flex}.cal-year-part{font-weight:var(--fw-normal);color:var(--muted)}.cal-tools{gap:var(--s-3)}.cal-scales{margin:0}.cal-stepper{gap:var(--s-1);display:inline-flex}.cal-nav{min-width:30px;height:28px;padding:0 var(--s-2);border-radius:var(--r-pill);background:var(--surface-3);color:var(--text-2);font-size:var(--fs-md);cursor:pointer;border:none;margin:0;line-height:1}.cal-nav.wide{padding:0 var(--s-3);font-size:var(--fs-base);font-weight:var(--fw-medium)}.cal-nav:hover{background:var(--border);color:var(--text)}.cal-layers{align-items:center;gap:var(--s-1) var(--s-3);margin-top:var(--s-3);flex-wrap:wrap;display:flex}.cal-layer{align-items:center;gap:var(--s-2);padding:var(--s-0) var(--s-2);border-radius:var(--r-pill);cursor:pointer;font-size:var(--fs-sm);color:var(--text-2);white-space:nowrap;background:0 0;border:1px solid #0000;margin:0;display:inline-flex}.cal-layer i{border-radius:var(--r-xs);background:var(--ev);flex:none;width:9px;height:9px}.cal-layer:hover{background:var(--surface-2);color:var(--text)}.cal-layer.off{color:var(--muted)}.cal-layer.off i{box-shadow:inset 0 0 0 1.5px var(--border-strong);background:0 0}.cal-barstoggle{align-items:center;gap:var(--s-2);white-space:nowrap;color:var(--text-2);margin-left:auto;display:inline-flex}.cal-month{margin-top:var(--s-3);border:1px solid var(--border);border-radius:var(--r);background:var(--surface);overflow:hidden}.cal-dow-head{grid-template-columns:var(--cal-wk) repeat(7, minmax(0, 1fr));background:var(--surface-2);display:grid}.cal-dow{padding:var(--s-2) var(--s-2);text-align:center;font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--muted)}.cal-wk-head{border-right:1px solid var(--border)}.cal-wk{padding:var(--s-2) 0 0;text-align:center;font-size:var(--fs-xs);color:var(--muted);opacity:.8;border-right:1px solid var(--border);align-self:start;height:100%}.cal-week{grid-template-columns:var(--cal-wk) repeat(7, minmax(0, 1fr));grid-template-rows:var(--cal-rows);display:grid;position:relative}.cal-cell{border-top:1px solid var(--border);border-left:1px solid var(--border);min-width:0;position:relative}.cal-cell:first-child{border-left:none}.cal-cell.weekend{background:var(--surface-2)}.cal-cell.dim{background:repeating-linear-gradient(var(--surface-2), var(--surface-2))}.cal-datenum{margin:var(--s-1) var(--s-2);border-radius:var(--r-round);cursor:pointer;width:24px;height:24px;font-size:var(--fs-base);font-weight:var(--fw-medium);color:var(--text-2);text-align:center;background:0 0;border:none;place-self:start end;padding:0;line-height:24px}.cal-datenum:has(.cal-monthtag){width:auto;min-width:24px;padding:0 var(--s-2);border-radius:var(--r-pill)}.cal-datenum:hover{background:var(--surface-3);color:var(--text)}.cal-datenum.dim{color:var(--muted);opacity:.6}.cal-datenum.today,.cal-datenum.today:hover{background:var(--cal-today);color:#fff;font-weight:var(--fw-semibold)}.cal-monthtag{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--muted);margin-right:var(--s-1)}.cal-datenum.today .cal-monthtag{color:#ffffffd9}.cal-datenum.big{font-size:var(--fs-2xl);border-radius:var(--r-round);width:40px;height:40px;margin:0;line-height:40px}.cal-datenum,.cal-barslot,.cal-more{z-index:1;position:relative}.cal-barslot{min-width:0;padding:0 var(--s-0) var(--s-0);align-items:stretch;display:flex}.cal-chip{align-items:center;gap:var(--s-0);min-width:0;height:19px;padding:0 var(--s-2);border-radius:var(--r-xs);font-size:var(--fs-xs);background:color-mix(in srgb, var(--ev) 14%, var(--surface));color:color-mix(in srgb, var(--ev) 80%, var(--text));line-height:19px;font-weight:var(--fw-medium);flex:1;text-decoration:none;display:flex}a.cal-chip:hover{background:color-mix(in srgb, var(--ev) 24%, var(--surface));text-decoration:none}.cal-chip-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cal-chip.cont-start{border-top-left-radius:0;border-bottom-left-radius:0}.cal-chip.cont-end{border-top-right-radius:0;border-bottom-right-radius:0}.cal-cont{opacity:.55;font-size:var(--fs-xs);flex:none}.cal-chip.critical{background:var(--ev);color:#fff}.cal-more{cursor:pointer;text-align:left;padding:0 var(--s-2);font-size:var(--fs-xs);color:var(--muted);background:0 0;border:none;align-self:start}.cal-more:hover{color:var(--text);text-decoration:underline}.cal-month.one-week .cal-week{--cal-numh:44px}.cal-month.one-week .cal-cell{min-height:320px}.cal-dots{border-radius:var(--r-xs);height:5px;display:none;position:absolute;bottom:7px;left:50%;overflow:hidden;transform:translate(-50%)}.cal-dots i{background:var(--ev);float:left;width:7px;height:5px;display:block}.cal-dots i:only-child{border-radius:var(--r-xs);width:5px}.cal-day-pane{margin-top:var(--s-3);border:1px solid var(--border);border-radius:var(--r);background:var(--surface);overflow:hidden}.cal-dayhead{align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-4);background:var(--surface-2);border-bottom:1px solid var(--border);display:flex}.cal-dayhead-dow{font-size:var(--fs-sm);font-weight:var(--fw-semibold);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.cal-allday{grid-template-columns:92px minmax(0,1fr);display:grid}.cal-allday-label{padding:var(--s-3) var(--s-3);font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:.03em;text-transform:uppercase;color:var(--muted);text-align:right;border-right:1px solid var(--border);background:var(--surface-2)}.cal-allday-body{padding:var(--s-3) var(--s-3);gap:var(--s-2);display:grid}.cal-row{align-items:center;gap:var(--s-3);padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);background:color-mix(in srgb, var(--ev) 7%, var(--surface));display:flex}.cal-rail{border-radius:var(--r-xs);background:var(--ev);flex:none;align-self:stretch;width:3px}.cal-row-body{flex:1;min-width:0}.cal-row-title{font-weight:var(--fw-semibold)}.cal-row.critical{background:color-mix(in srgb, var(--ev) 13%, var(--surface))}.cal-daylist{margin-top:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--border);display:none}.cal-openday{color:var(--primary-ink);font-weight:var(--fw-medium);background:0 0;border:none;padding:0}.cal-daylist-items{gap:var(--s-2);margin-top:var(--s-2);display:grid}.cal-year{gap:var(--s-4);margin-top:var(--s-3);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.cal-mini-head{padding:0 0 var(--s-1);cursor:pointer;font-weight:var(--fw-semibold);font-size:var(--fs-md);letter-spacing:-.01em;color:var(--cal-today);background:0 0;border:none}.cal-mini-head:hover{text-decoration:underline}.cal-mini-head.current{font-weight:var(--fw-bold)}.cal-mini-grid{gap:var(--s-0);grid-template-columns:16px repeat(7,minmax(0,1fr));display:grid}.cal-mini-dow{font-size:var(--fs-xs);text-align:center;color:var(--muted);line-height:14px}.cal-mini-wk{font-size:var(--fs-xs);text-align:right;padding-right:var(--s-0);color:var(--muted);opacity:.7;line-height:18px}.cal-mini-day.dim{color:var(--muted);opacity:.45}.cal-mini-day{border-radius:var(--r-xs);cursor:pointer;font-size:var(--fs-xs);color:var(--text-2);text-align:center;background:0 0;border:1px solid #0000;padding:0;line-height:18px}.cal-mini-day:hover{border-color:var(--primary);color:var(--primary-ink)}.cal-mini-day[data-heat="1"]{color:#23407a;background:#dfe9fb}.cal-mini-day[data-heat="2"]{color:#1d3568;background:#bcd3f7}.cal-mini-day[data-heat="3"]{color:#12244a;background:#8fb4ef}.cal-mini-day[data-heat="4"]{color:#fff;font-weight:var(--fw-semibold);background:#5b8ee4}.cal-mini-day.today{background:var(--cal-today);color:#fff;font-weight:var(--fw-bold);border-color:#0000}@media (width<=1000px){.cal-year{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=720px){.cal-week{--cal-wk:20px;grid-template-rows:1fr}.cal-dow-head{--cal-wk:20px}.cal-cell,.cal-month.one-week .cal-cell{min-height:46px}.cal-datenum{margin:var(--s-1) auto 0;font-size:var(--fs-sm);min-width:22px;height:22px;padding:0 var(--s-1);justify-self:center;line-height:22px}.cal-barslot,.cal-more{display:none}.cal-dots{display:flex}.cal-datenum.today{color:var(--cal-today);font-weight:var(--fw-bold);background:0 0}.cal-datenum.picked,.cal-datenum.picked:hover{background:var(--text);color:var(--surface);font-weight:var(--fw-semibold)}.cal-datenum.today.picked{background:var(--cal-today);color:#fff}.cal-daylist{display:block}.cal-dow{text-align:center;padding:var(--s-2) var(--s-0);font-size:var(--fs-xs)}.cal-wk,.cal-wk-head{font-size:var(--fs-xs)}.cal-allday{grid-template-columns:minmax(0,1fr)}.cal-allday-label{text-align:left;border-right:none;border-bottom:1px solid var(--border);padding:var(--s-2) var(--s-3)}.cal-layers{-webkit-overflow-scrolling:touch;gap:var(--s-0);flex-wrap:nowrap;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 24px),#0000)}.cal-barstoggle{margin-left:var(--s-1)}.cal-title{font-size:var(--fs-xl)}.cal-tools{justify-content:space-between;width:100%}.cal-year{grid-template-columns:repeat(2,minmax(0,1fr))}}.ptl{gap:var(--s-2);margin:var(--s-3) 0;flex-direction:column;display:flex}.ptl-row{gap:var(--s-3);grid-template-columns:180px 1fr 130px;align-items:center;display:grid}.ptl-track{background:var(--surface-2);border-radius:var(--r-xs);height:18px;position:relative}.ptl-bar{background:var(--primary-weak);border:1px solid var(--primary);border-radius:var(--r-xs);height:18px;position:absolute;top:0}.ptl-fill{background:var(--primary);border-radius:var(--r-xs);opacity:.75;height:100%}.ptl-mark{width:0;height:24px;position:absolute;top:-3px}.ptl-mark.baseline{border-left:2px dashed var(--muted)}.ptl-mark.contract{border-left:2px solid var(--danger)}.ptl-crit{background:var(--danger);border-radius:2px;height:4px;position:absolute;bottom:0}.ptl-milestone{background:var(--primary);border:1px solid var(--surface);width:9px;height:9px;margin-left:-4px;position:absolute;top:-4px;transform:rotate(45deg)}.ptl-milestone.warn{background:var(--warn)}.ptl-note{overflow-wrap:anywhere;grid-column:1/-1}.ptl-meta{text-align:right;white-space:nowrap}@media (width<=720px){.ptl-row{gap:var(--s-0);grid-template-columns:1fr}.ptl-meta{text-align:left}}.ptl-legend{margin:var(--s-3) 0 var(--s-2);padding:var(--s-3) 0 0;border-top:1px solid var(--border);gap:var(--s-2) var(--s-4);font-size:var(--fs-sm);color:var(--muted);grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));list-style:none;display:grid}.ptl-legend li{align-items:center;gap:var(--s-2);min-width:0;display:flex}.ptl-legend b{color:var(--text);font-weight:var(--fw-semibold)}.ptl-legend li>span:last-child{min-width:0}.ptl-key{flex:0 0 36px;height:18px;position:relative}.ptl-key span{display:block}.ptl-legend-figures .badge{font-size:var(--fs-xs)}abbr[title]{text-underline-offset:2px;cursor:help;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.task-stats{grid-template-columns:minmax(0,1fr)}.task-stats>.card+.card{margin-top:0}.task-stats.is-loading .stat-grid,.task-stats.is-loading .card{opacity:.6;transition:opacity .15s}.ts-h{margin:0 0 var(--s-2);font-size:var(--fs-md)}.ts-project,.ts-filters{min-width:0;max-width:100%}.ts-tiles{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr))}.stat-link{color:inherit;text-decoration:none;display:block}.stat-link:hover{border-color:var(--primary)}.stat-link:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.ts-spark{margin-top:var(--s-1);max-width:100%;display:block;overflow:visible}.ts-spark path{fill:none;stroke:var(--border-strong);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.ts-spark circle{fill:var(--viz-1);stroke:var(--surface);stroke-width:2px}.ts-legend{gap:var(--s-3);margin:var(--s-2) 0;font-size:var(--fs-sm);color:var(--text-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.ts-legend li{align-items:center;gap:var(--s-1);display:inline-flex}.ts-swatch{border-radius:2px;width:10px;height:10px;display:inline-block}.ts-swatch.s1,.ts-key.s1{background:var(--viz-1)}.ts-swatch.s2,.ts-key.s2{background:var(--viz-2)}.ts-chart{width:100%;position:relative}.ts-chart svg{display:block;overflow:visible}.ts-grid{stroke:var(--border);stroke-width:1px;shape-rendering:crispedges}.ts-tick{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.ts-col.s1{fill:var(--viz-1)}.ts-col.s2{fill:var(--viz-2)}.ts-hover{fill:var(--surface-2)}.ts-hit{fill:#0000;outline:none}.ts-hit:focus-visible{stroke:var(--primary);stroke-width:2px}.ts-tip{z-index:2;min-width:168px;padding:var(--s-2) var(--s-3);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);box-shadow:var(--shadow-md);pointer-events:none;font-size:var(--fs-sm);position:absolute;top:0}.ts-tip-date{white-space:nowrap}.ts-tip-row{align-items:center;gap:var(--s-2);display:flex}.ts-tip-row b{font-size:var(--fs-md);color:var(--text)}.ts-key{border-radius:2px;width:12px;height:3px;display:inline-block}.ts-breakdowns{gap:var(--s-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));display:grid}.ts-breakdowns .card+.card{margin-top:0}.ts-bars{gap:var(--s-2);font-size:var(--fs-sm);margin:0;padding:0;list-style:none;display:grid}.ts-bars li{align-items:center;gap:var(--s-2);grid-template-columns:minmax(0,10em) minmax(0,1fr) 3ch;display:grid}.ts-bar-label{overflow-wrap:anywhere}.ts-bar-track{height:8px}.ts-bar{background:var(--viz-1);border-radius:0 4px 4px 0;height:100%;display:block}.ts-bar-v{text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}.explainer{margin-top:var(--s-3);padding-top:var(--s-3);border-top:1px solid var(--border)}.explainer-head{justify-content:space-between;align-items:baseline;gap:var(--s-2);display:flex}.explainer-toggle{margin-top:var(--s-2)}.card>.explainer:first-child{border-top:0;margin-top:0;padding-top:0}.card>.explainer-toggle:first-child{margin-top:0}.glossary{gap:var(--s-1) var(--s-3);margin:var(--s-2) 0 0;font-size:var(--fs-sm);grid-template-columns:max-content minmax(0,1fr);display:grid}.glossary dt{font-weight:var(--fw-semibold);color:var(--text)}.glossary dd{color:var(--muted);margin:0}@media (width<=720px){.glossary{grid-template-columns:minmax(0,1fr);gap:0}.glossary dd{margin-bottom:var(--s-2)}}.modal-scrim{z-index:1300;padding:6vh var(--s-4) var(--s-5);padding:6dvh var(--s-4) calc(24px + env(safe-area-inset-bottom));background:#10182873;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-md);flex-direction:column;width:min(680px,100%);max-height:88dvh;display:flex}.modal-head{justify-content:space-between;align-items:center;gap:var(--s-3);padding:var(--s-3) var(--s-3);border-bottom:1px solid var(--border);display:flex}.modal-head .t{font-weight:var(--fw-semibold);font-size:var(--fs-md)}.modal-body{padding:var(--s-3);overflow-y:auto}.modal-body>.card.item{box-shadow:none;border:none;padding:0}@media (width<=560px){.modal-scrim{align-items:flex-end;padding:0}.modal{border-radius:var(--r-lg) var(--r-lg) 0 0;width:100%;max-height:92dvh;padding-bottom:calc(var(--s-3) + env(safe-area-inset-bottom));border-bottom:none;animation:.28s cubic-bezier(.32,.72,0,1) sheet-up}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.modal{animation:none}}}.board-card.draggable{cursor:grab}.board-card.draggable:active{cursor:grabbing}.board-card.dragging{opacity:.45}.board-col.drop{border-color:var(--primary);background:var(--surface-3)}.board-card.late{border-left:3px solid var(--danger)}.board-card .bc-foot{gap:var(--s-2);margin-top:var(--s-2);flex-wrap:wrap;align-items:center;display:flex}.board-col-empty{color:var(--muted);font-size:var(--fs-sm);padding:var(--s-2) var(--s-1)}.modal.wide{width:min(880px,100%)}.panel-title{font-size:var(--fs-lg);font-weight:var(--fw-semibold)}.panel-grid{gap:var(--s-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.panel-grid>label{gap:var(--s-1);font-size:var(--fs-sm);color:var(--muted);display:grid}.panel-grid>label>select,.panel-grid>label>input{font-size:var(--fs-md);color:var(--text)}.chip.tag{white-space:nowrap;background:var(--surface-2);border-color:var(--border);font-size:var(--fs-sm);padding:var(--s-0) var(--s-2);align-items:center;display:inline-flex}.chip-x{cursor:pointer;color:var(--muted);padding:0 0 0 var(--s-2);font-size:var(--fs-sm);background:0 0;border:none;line-height:1}.chip-x:hover{color:var(--danger)}.board-card.blocked{border-left:3px solid var(--warn)}.board-card .bc-tags{gap:var(--s-1);margin-top:var(--s-1);flex-wrap:wrap;display:flex}.board-col.wip-over{border-color:var(--danger)}.board-col.wip-over .board-col-head .c{color:var(--danger)}.lane-head{margin:0 0 var(--s-2);font-size:var(--fs-md);font-weight:var(--fw-semibold)}.check-inline{white-space:nowrap;flex:0 auto;align-items:center}.related-tasks{margin-top:var(--s-2);padding-top:var(--s-2);border-top:1px dashed var(--border)}.related-task{gap:var(--s-1) var(--s-2);font-size:var(--fs-base);flex-wrap:wrap;align-items:baseline;display:flex}.related-task.dim{opacity:.55}.sidebar-search,.sidebar-ask{align-items:center;gap:var(--s-3);width:100%;padding:var(--s-2) var(--s-3);border-radius:var(--r-sm);color:var(--text-2);font-size:var(--fs-md);font-weight:var(--fw-medium);cursor:pointer;text-align:left;border:0;text-decoration:none;transition:background .12s,color .12s;display:flex}.sidebar-close{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r);width:44px;height:44px;color:var(--text-2);flex:none;place-items:center;padding:0;display:none}.sidebar-close:hover{background:var(--surface-3);color:var(--text)}.sidebar-search{background:var(--surface-2);flex:none;justify-content:center;width:36px;height:36px;padding:0}@media (pointer:coarse){.sidebar-search{width:44px;height:44px}}.sidebar-search:hover,.sidebar-ask:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.sidebar-ask.active{background:var(--primary-weak);color:var(--primary-ink)}.sidebar-ask{background:0 0}.sidebar-search .ico,.sidebar-search svg,.sidebar-ask .ico,.sidebar-ask svg{opacity:.85;flex:none}.sidebar-ask.active .ico{opacity:1}.palette-scrim{align-items:flex-start;padding-top:12dvh}.palette{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow-md);flex-direction:column;width:min(640px,100%);max-height:70dvh;display:flex;overflow:hidden}.palette-input{border:none;border-bottom:1px solid var(--border);font-size:var(--fs-lg);padding:var(--s-3) var(--s-4);background:0 0;border-radius:0}.palette-input:focus{box-shadow:none;outline:none}.palette-body{padding:var(--s-2) 0;overflow-y:auto}.palette-hint{padding:var(--s-3) var(--s-4)}.palette-group+.palette-group{border-top:1px solid var(--border);margin-top:var(--s-1);padding-top:var(--s-1)}.palette-kind{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:var(--s-2) var(--s-4) var(--s-0)}.palette-hit{gap:var(--s-0);text-align:left;cursor:pointer;width:100%;padding:var(--s-2) var(--s-4);color:var(--text);font-size:var(--fs-md);background:0 0;border:none;flex-direction:column;align-items:flex-start;display:flex}.palette-hit.active{background:var(--surface-2)}.palette-hit .t{font-weight:var(--fw-medium)}.palette-foot{justify-content:space-between;gap:var(--s-3);padding:var(--s-2) var(--s-4);border-top:1px solid var(--border);background:var(--surface-2);display:flex}.qa-table td.days{white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--text-2)}.qa-table tr.urgent td.days{color:var(--danger);font-weight:var(--fw-semibold)}.qa-table tr.soon td.days{color:var(--warn);font-weight:var(--fw-semibold)}.qa-table tr.is-new{background:var(--surface-2)}.qa-table tr.gone td{opacity:.6}.qa-table tr.gone td.days{color:var(--muted)}.clamp-2,.clamp-3{-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.clamp-2{-webkit-line-clamp:2}.clamp-3{-webkit-line-clamp:3}.work-tree td{border-top:1px solid var(--border);padding:0}.work-row{align-items:center;gap:var(--s-0) var(--s-3);width:100%;padding:var(--s-3) var(--s-2);border-radius:var(--r);min-height:44px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"code name badges""code qty badges";display:grid}.work-row:hover{background:var(--surface-2,#7f7f7f0f)}.work-row .wcode{font-size:var(--fs-base);grid-area:code}.work-row .wname{overflow-wrap:anywhere;grid-area:name}.work-row .wqty{grid-area:qty}.work-row .wbadges{gap:var(--s-1);flex-wrap:wrap;grid-area:badges;justify-content:flex-end;display:flex}.work-detail{padding:var(--s-1) var(--s-2) var(--s-3);border-top:1px dashed var(--border);gap:var(--s-2);display:grid}@media (width<=560px){.work-row{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"code name""code qty""badges badges"}.work-row .wbadges{margin-top:var(--s-1);justify-content:flex-start}}.g-tasks{margin:var(--s-0) 0 0 var(--s-1);font-size:var(--fs-sm);align-items:center;gap:var(--s-2);display:inline-flex}.g-tasks .badge{font-size:var(--fs-xs);padding:var(--s-0) var(--s-2)}.rich{overflow-wrap:anywhere}.rich-gap{height:.5em}.rich-li{text-indent:-10px}.rich-mark{text-indent:0;min-width:10px;color:var(--muted);margin-right:4px;display:inline-block}.rich .rich-check{align-items:flex-start;gap:var(--s-2);color:var(--text);cursor:pointer;margin:2px 0;font-weight:400;display:flex}.rich .rich-check input{flex:none;width:auto;margin-top:3px}.rich .rich-check.done>span{color:var(--muted);text-decoration:line-through}@media (pointer:coarse){.rich .rich-check{align-items:center}.rich .rich-check input{margin-top:0}}.mention{border-radius:var(--r-sm);background:var(--primary-weak);color:var(--primary);padding:0 3px;font-weight:600}.hashtag{color:var(--primary);text-decoration:none}.hashtag:hover{text-decoration:underline}.rt-toolbar{gap:var(--s-1);margin-bottom:var(--s-1);flex-wrap:wrap;display:flex}.rt-btn{min-width:36px;padding:2px 8px}.rt-hint{margin-top:var(--s-1)}.rt-btn.on{background:var(--primary-weak);color:var(--primary);border-color:#0000}.rt-link{margin-bottom:var(--s-1)}.rt-edit{position:relative}.rt-doc{padding:var(--s-2) var(--s-3);border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface);color:var(--text);font-size:var(--fs-md);overflow-wrap:anywhere;white-space:pre-wrap;outline:none;line-height:1.5}.rt-doc:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-weak)}.rt-doc p{margin:0 0 var(--s-1)}.rt-doc ul,.rt-doc ol{margin:0 0 var(--s-1);padding-left:20px}.rt-doc a{color:var(--primary)}.rt-doc ul[data-type=taskList]{padding-left:0;list-style:none}.rt-doc ul[data-type=taskList]>li{align-items:flex-start;gap:var(--s-2);display:flex}.rt-doc ul[data-type=taskList]>li>label{flex:none;align-items:center;margin-top:3px;display:flex}.rt-doc ul[data-type=taskList]>li>label input{width:auto;margin:0}.rt-doc ul[data-type=taskList]>li>div{flex:1;min-width:0}.rt-doc ul[data-type=taskList]>li[data-checked=true]>div{color:var(--muted);text-decoration:line-through}.rt-doc p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--muted);float:left;pointer-events:none;height:0}@media (pointer:coarse){.rt-doc{font-size:16px}.rt-doc ul[data-type=taskList]>li>label{align-items:flex-start;margin-top:1px}}.lines-stage{border-top:1px solid var(--border);padding-top:var(--s-3)}.stage-name{max-width:28rem;font-weight:var(--fw-semibold)}.line-row{gap:var(--s-2);padding:var(--s-1) var(--s-1);border-radius:var(--r-sm);grid-template-columns:4rem minmax(0,1fr) 6rem 6.5rem 7.5rem 7.5rem 5.5rem;align-items:center;display:grid}.line-row.line-head{padding-top:0;padding-bottom:0}.line-row.active{background:var(--surface-2)}.line-row .lc{min-width:0;display:block}.line-row .lc input{box-sizing:border-box;width:100%}.line-row .lc-label{display:none}.line-row .lc-amount{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.line-row .lc-state{min-width:0;overflow:hidden}.line-row .lc-note{grid-column:1/-1;min-width:0}.line-row.unpriced .lc-price input{border-color:var(--warn-border);background:var(--warn-weak)}.line-row .lc input:disabled{color:var(--text);opacity:1;cursor:default;background:0 0;border-color:#0000}.lines-new-stage input{flex:220px;width:auto;min-width:0}.lines-new-stage select{max-width:100%}.price-suggest{padding:var(--s-2) var(--s-3);border-left:3px solid var(--primary);background:var(--surface);border-radius:var(--r-sm)}.ps-entry{gap:var(--s-1);display:grid}.ps-entry+.ps-entry{border-top:1px solid var(--border);padding-top:var(--s-2)}.ps-samples{overflow-wrap:anywhere;margin:0;padding-left:1.1rem}tr.ps-row>td{background:var(--surface-2)}@media (width<=720px){.line-row.line-head{display:none}.line-row{border:1px solid var(--border);padding:var(--s-2);grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"name name""code unit""qty price""amount state"}.line-row .lc-code{grid-area:code}.line-row .lc-name{grid-area:name}.line-row .lc-unit{grid-area:unit}.line-row .lc-qty{grid-area:qty}.line-row .lc-price{grid-area:price}.line-row .lc-amount{text-align:left;grid-area:amount}.line-row .lc-state{text-align:right;grid-area:state}.line-row .lc-label{font-size:var(--fs-sm);color:var(--muted);margin-bottom:var(--s-0);display:block}}.plan-notices{border-left:3px solid var(--warn);padding:var(--s-2) var(--s-3)}.plan-notices ul{margin:0;padding:0;list-style:none}.pn-head,.pn-row,.pn-item{align-items:center;gap:var(--s-3);width:100%;min-height:44px;padding:var(--s-2) var(--s-1);border-radius:var(--r-sm);box-shadow:none;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;display:grid}.pn-head{grid-template-columns:auto minmax(0,1fr) auto}.pn-row{grid-template-columns:auto minmax(0,1fr) auto auto}.pn-item{grid-template-columns:minmax(0,1fr) auto;text-decoration:none}.pn-head:hover,.pn-row:hover,.pn-item:hover{background:var(--surface-2);color:inherit;border-color:#0000;text-decoration:none}.pn-item.static{cursor:default}.pn-item.static:hover{background:0 0}.pn-count{font-size:var(--fs-sm);color:var(--muted)}.pn-group{border-top:1px solid var(--border)}.pn-icon{color:var(--warn-ink);display:inline-flex}.pn-text{gap:var(--s-0);flex-direction:column;min-width:0;display:flex}.pn-title{font-weight:var(--fw-semibold)}.pn-preview{font-size:var(--fs-sm);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pn-chevron{color:var(--muted);font-size:var(--fs-lg);line-height:1;transition:transform .12s}.pn-head[aria-expanded=true]>.pn-chevron,.pn-row[aria-expanded=true]>.pn-chevron{transform:rotate(90deg)}.pn-items{padding:0 0 var(--s-2) calc(18px + var(--s-3) + var(--s-1))}.pn-hint{font-size:var(--fs-sm);color:var(--muted);margin-bottom:var(--s-1)}.pn-items li+li{border-top:1px dashed var(--border)}.pn-label{color:var(--primary);overflow-wrap:anywhere}.pn-item.static .pn-label{color:inherit}.pn-meta{font-size:var(--fs-sm);color:var(--muted);overflow-wrap:break-word}.pn-date{white-space:nowrap}@media (width>=720px){.pn-row .pn-text{align-items:baseline;gap:var(--s-3);flex-direction:row}.pn-row .pn-title{flex:none}.pn-row .pn-preview{flex:auto;min-width:0}}@media (width<=560px){.pn-items{padding-left:0}}.gap-0{gap:var(--s-0)}.gap-1{gap:var(--s-1)}.gap-2{gap:var(--s-2)}.gap-3{gap:var(--s-3)}.gap-4{gap:var(--s-4)}.gap-5{gap:var(--s-5)}.gap-6{gap:var(--s-6)}.mt-0{margin-top:0}.mt-1{margin-top:var(--s-1)}.mt-2{margin-top:var(--s-2)}.mt-3{margin-top:var(--s-3)}.mt-4{margin-top:var(--s-4)}.mt-5{margin-top:var(--s-5)}.mt-6{margin-top:var(--s-6)}.mb-0{margin-bottom:0}.mb-1{margin-bottom:var(--s-1)}.mb-2{margin-bottom:var(--s-2)}.mb-3{margin-bottom:var(--s-3)}.mb-4{margin-bottom:var(--s-4)}.mb-5{margin-bottom:var(--s-5)}.mb-6{margin-bottom:var(--s-6)}.ml-1{margin-left:var(--s-1)}.ml-2{margin-left:var(--s-2)}.ml-3{margin-left:var(--s-3)}.ml-auto{margin-left:auto}.m0{margin:0}.col{flex-direction:column;display:flex}.stack-1{gap:var(--s-1);display:grid}.stack-2{gap:var(--s-2);display:grid}.stack-3{gap:var(--s-3);display:grid}.stack-4{gap:var(--s-4);display:grid}.grow{flex:1;min-width:0}.noshrink{flex:none}.tright{text-align:right}.tcenter{text-align:center}.wauto{width:auto;max-width:100%}.fld{flex:140px;min-width:0}.lookahead-constraints{margin-top:var(--s-1);overflow-wrap:anywhere;padding-left:1.1em}.lookahead-constraints li{margin:2px 0}
