.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{--color-navy-950:#060b18;--color-navy-900:#0a1128;--color-navy-800:#111e3e;--color-navy-700:#1c2e5c;--color-navy-600:#2a4382;--color-cyan-600:#00a887;--color-cyan-500:#00c49f;--color-cyan-400:#2ee6c2;--color-cyan-100:#e0f8f3;--color-cyan-50:#f0fdfa;--color-cobalt-700:#1d4ed8;--color-cobalt-600:#2563eb;--color-cobalt-100:#eff6ff;--color-slate-900:#0f172a;--color-slate-700:#334155;--color-slate-500:#64748b;--color-slate-400:#94a3b8;--color-slate-300:#cbd5e1;--color-slate-200:#e2e8f0;--color-slate-100:#f1f5f9;--color-slate-50:#f8fafc;--color-surface:#fff;--color-success-700:#047857;--color-success-600:#059669;--color-success-100:#dcfce7;--color-error-700:#b91c1c;--color-error-600:#dc2626;--color-error-100:#fee2e2;--color-warning-700:#b45309;--color-warning-600:#d97706;--color-warning-100:#fef3c7;--font-display:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-sans:"Plus Jakarta Sans", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", "IBM Plex Mono", "SF Mono", monospace;--text-xs:12px;--lh-xs:16px;--text-sm:14px;--lh-sm:20px;--text-base:16px;--lh-base:24px;--text-lg:18px;--lh-lg:26px;--text-xl:20px;--lh-xl:28px;--text-2xl:26px;--lh-2xl:32px;--text-3xl:32px;--lh-3xl:38px;--text-4xl:44px;--lh-4xl:48px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--radius-sm:8px;--radius-md:14px;--radius-lg:20px;--radius-xl:28px;--radius-full:9999px;--shadow-sm:0 1px 3px #0a11280f;--shadow-md:0 4px 16px #0a112814;--shadow-lg:0 12px 32px #0a11281f;--shadow-glow-cyan:0 0 20px #00c49f40;--shadow-glow-cobalt:0 0 20px #2563eb40;--color-ink-900:var(--color-navy-900);--color-ink-800:var(--color-navy-800);--color-ink-700:var(--color-navy-700);--color-ink-600:var(--color-navy-600);--color-ink-500:var(--color-slate-500);--color-ink-400:var(--color-slate-400);--color-ink-300:var(--color-slate-300);--color-ink-200:var(--color-slate-200);--color-ink-100:var(--color-slate-100);--color-ink-50:var(--color-slate-50);--color-paper:var(--color-slate-50);--color-ouro-900:var(--color-cyan-600);--color-ouro-700:var(--color-cyan-600);--color-ouro-600:var(--color-cyan-500);--color-ouro-300:var(--color-cyan-100);--color-ouro-100:var(--color-cyan-100);--color-ouro-50:var(--color-cyan-50);--color-green-600:var(--color-success-600);--color-primary-300:var(--color-slate-300);--color-primary-600:var(--color-navy-700);--color-primary-700:var(--color-navy-900);--color-success-500:var(--color-success-600);--color-warning-500:var(--color-warning-600);--color-error-300:var(--color-error-100);--color-border:var(--color-slate-300);--color-border-subtle:var(--color-slate-200);--color-surface-hover:var(--color-slate-100);--color-surface-sunken:var(--color-slate-50);--shadow-xl:var(--shadow-lg);--color-dark-bg:var(--color-navy-950);--color-dark-surface:var(--color-navy-800);--color-dark-border:var(--color-navy-700);--color-dark-text:var(--color-slate-50)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0;padding:0}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;scroll-behavior:smooth}body{background:var(--color-slate-50);color:var(--color-slate-900);font-family:var(--font-sans);font-size:var(--text-base);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;text-rendering:optimizelegibility;line-height:1.5}h1,h2,h3{font-family:var(--font-display);color:var(--color-ink-900);letter-spacing:-.02em;margin:0;font-weight:700}p{margin:0}button{font-family:inherit}a{color:var(--color-ink-700)}::selection{background:var(--color-cyan-100);color:var(--color-navy-900)}input,textarea{caret-color:var(--color-cyan-600)}:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:2px solid var(--color-ink-900);outline-offset:2px}.skip-link{top:var(--space-2);left:var(--space-2);z-index:1000;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--color-ink-900);color:var(--color-paper);font-size:var(--text-sm);font-weight:700;text-decoration:none;position:fixed;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.muted{color:var(--color-ink-500)}.mono{font-family:var(--font-mono)}.eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--color-ouro-700);font-weight:600}.section-label{margin-bottom:var(--space-2);color:var(--color-ink-700);font-size:var(--text-sm);font-weight:700;line-height:var(--lh-sm);align-items:center;gap:6px;display:flex}.shell{background:var(--color-paper);max-width:520px;min-height:100%;box-shadow:var(--shadow-md);flex-direction:column;margin:0 auto;display:flex}.shell.wide{max-width:1180px}.app-topbar{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-4) var(--space-3);border-bottom:1px solid var(--color-ink-100);background:var(--color-surface);z-index:20;display:flex;position:sticky;top:0}.app-topbar .brand{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);align-items:center;gap:8px;display:flex}.app-topbar .brand .mark{flex:none;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.app-topbar .brand .mark img{object-fit:contain;width:32px;height:32px;display:block}.app-topbar .who{text-align:right;margin-left:auto;line-height:1.2}.app-topbar .who b{font-size:var(--text-sm);font-weight:600;display:block}.app-topbar .who span{font-family:var(--font-mono);color:var(--color-ink-500);font-size:11px}.app-topbar .exit{cursor:pointer;color:var(--color-ink-500);padding:var(--space-2);border-radius:var(--radius-sm);background:0 0;border:none;display:flex}.app-topbar .exit:hover{background:var(--color-ink-100);color:var(--color-ink-900)}.page{min-width:0;padding:var(--space-4);gap:var(--space-5);flex-direction:column;flex:1;display:flex}.page-title{font-size:var(--text-2xl);line-height:var(--lh-2xl);text-wrap:balance}.page-sub{max-width:75ch;color:var(--color-ink-500);font-size:var(--text-sm);line-height:var(--lh-sm)}.tabbar{background:var(--color-surface);border-top:1px solid var(--color-ink-100);z-index:20;padding-bottom:env(safe-area-inset-bottom);scrollbar-width:none;display:flex;position:sticky;bottom:0;overflow-x:auto}.tabbar::-webkit-scrollbar{display:none}.tabbar a{min-width:60px;padding:var(--space-3) var(--space-2);color:var(--color-ink-500);white-space:nowrap;flex-direction:column;flex:1 0 auto;align-items:center;gap:3px;font-size:11px;font-weight:600;text-decoration:none;transition:color .18s,background-color .18s;display:flex}.tabbar a:hover{background:var(--color-paper);color:var(--color-ink-900)}.tabbar a.active{color:var(--color-ink-900)}.tabbar a.active svg{color:var(--color-ouro-600)}.card{background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-ink-100);padding:var(--space-5);gap:var(--space-3);flex-direction:column;display:flex}.card.tight{padding:var(--space-3) var(--space-4)}.card-head{align-items:flex-start;gap:var(--space-3);display:flex}.card-head h3{font-size:var(--text-xl);line-height:var(--lh-xl);flex:1}.card-meta{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-500)}.divider{background:var(--color-ink-100);height:1px;margin:var(--space-1) 0}.kv{justify-content:space-between;gap:var(--space-3);font-size:var(--text-sm);display:flex}.kv dt{color:var(--color-ink-500)}.kv dd{font-family:var(--font-mono);color:var(--color-ink-700);text-align:right;margin:0;font-size:13px}.status-badge{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-weight:600;font-size:var(--text-sm);align-items:center;gap:10px;display:flex}.status-badge.ok{background:var(--color-success-100);color:var(--color-success-700);border:1px solid #1e8a5f40}.status-badge.bad{background:var(--color-error-100);color:var(--color-error-700);border:1px solid #c6433c40}.status-badge.warn{background:var(--color-warning-100);color:var(--color-warning-700);border:1px solid #d97f1d40}.status-badge.neutral{background:var(--color-ink-100);color:var(--color-ink-700);border:1px solid var(--color-ink-300)}.status-badge .dot{border-radius:50%;flex:none;width:10px;height:10px}.status-badge.ok .dot{background:var(--color-success-600);box-shadow:0 0 0 4px var(--color-success-100)}.status-badge.bad .dot{background:var(--color-error-600);box-shadow:0 0 0 4px var(--color-error-100)}.status-badge.warn .dot{background:var(--color-warning-600);box-shadow:0 0 0 4px var(--color-warning-100)}.status-badge.neutral .dot{background:var(--color-ink-300)}.status-badge .meta{font-family:var(--font-mono);font-size:var(--text-xs);opacity:.85;margin-left:auto;font-weight:500}.status-badge .dot.pulse{animation:1.6s ease-in-out infinite pulse}[role=status].status-badge{max-width:min(420px, calc(100vw - var(--space-5) * 2))}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.btn{border-radius:var(--radius-md);cursor:pointer;height:56px;font-family:var(--font-sans);font-weight:600;font-size:var(--text-lg);border:none;justify-content:center;align-items:center;gap:10px;width:100%;transition:background-color .18s,border-color .18s,color .18s,box-shadow .18s,transform .1s;display:flex}.btn:active:not(:disabled){transform:translateY(1px)}.btn-primary{background:var(--color-cyan-500);color:var(--color-navy-900);box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--color-cyan-600);box-shadow:var(--shadow-md)}.btn-primary:active:not(:disabled){background:var(--color-cyan-600);box-shadow:none}.btn-secondary{color:var(--color-ink-900);border:1.5px solid var(--color-ink-300);background:0 0}.btn-secondary:hover:not(:disabled){background:var(--color-ink-100)}.btn-danger{background:var(--color-error-600);color:#fff}.btn-danger:hover:not(:disabled){background:var(--color-error-700)}.btn:disabled{background:var(--color-ink-100);color:var(--color-ink-300);cursor:not-allowed;box-shadow:none;border-color:var(--color-ink-100)}.btn small{font-weight:400;font-size:var(--text-xs);opacity:.75;display:block}.btn.sm{height:40px;font-size:var(--text-sm);border-radius:var(--radius-sm);padding:0 var(--space-3);width:auto}.btn-stack{gap:var(--space-3);flex-direction:column;display:flex}.field{gap:var(--space-2);flex-direction:column;display:flex}.field label{font-size:var(--text-sm);color:var(--color-ink-700);font-weight:600}.field input,.field select,.field textarea{border-radius:var(--radius-md);border:1.5px solid var(--color-ink-300);height:52px;padding:0 var(--space-4);font-family:var(--font-sans);font-size:var(--text-base);background:var(--color-surface);color:var(--color-ink-900);width:100%}.field input:hover:not(:disabled),.field select:hover:not(:disabled),.field textarea:hover:not(:disabled){border-color:var(--color-ink-500)}.field input:disabled,.field select:disabled,.field textarea:disabled{background:var(--color-ink-100);color:var(--color-ink-500);cursor:not-allowed}.field textarea{height:auto;min-height:96px;padding:var(--space-3) var(--space-4);line-height:1.5}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--color-ink-900);box-shadow:0 0 0 3px var(--color-ink-100);outline:none}.field input::placeholder{color:var(--color-ink-300)}.field .hint{font-size:var(--text-xs);color:var(--color-ink-500)}.pill{border-radius:var(--radius-full);font-size:var(--text-xs);flex:none;align-items:center;gap:5px;padding:4px 10px;font-weight:600;line-height:1.3;display:inline-flex}.pill.validado{background:var(--color-ouro-100);color:var(--color-ouro-700)}.pill.pendente{background:var(--color-ink-100);color:var(--color-ink-500)}.pill.fora{background:var(--color-error-100);color:var(--color-error-700)}.pill.ok{background:var(--color-success-100);color:var(--color-success-700)}.pill.aviso{background:var(--color-warning-100);color:var(--color-warning-700)}.error-panel{background:var(--color-error-100);border-radius:var(--radius-md);padding:var(--space-4);gap:var(--space-3);border:1px solid #c6433c4d;flex-direction:column;display:flex}.error-panel.soft{background:var(--color-warning-100);border-color:#d97f1d4d}.error-panel .msg{color:var(--color-error-700);font-weight:600;font-size:var(--text-sm);line-height:1.45}.error-panel.soft .msg{color:var(--color-warning-700)}.error-panel .code{font-family:var(--font-mono);color:var(--color-ink-500);font-size:11px}.error-panel .details{font-family:var(--font-mono);color:var(--color-ink-500);font-size:11px;line-height:1.6}.confirm{justify-content:center;align-items:center;gap:var(--space-4);text-align:center;padding:var(--space-6) 0;flex-direction:column;flex:1;display:flex}.stamp{border:3px solid var(--color-success-600);width:132px;height:132px;color:var(--color-success-700);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;animation:.32s cubic-bezier(.16,1,.3,1) stamp-in;display:flex;position:relative;transform:rotate(-9deg)}.stamp.gold{border-color:var(--color-ouro-600);color:var(--color-ouro-700)}.stamp:before{content:"";opacity:.55;border:1px dashed;border-radius:50%;position:absolute;inset:8px}.stamp svg{width:38px;height:38px}.stamp .stamp-word{font-family:var(--font-display);letter-spacing:.08em;margin-top:4px;font-size:12px;font-weight:700}@keyframes stamp-in{0%{opacity:0;transform:rotate(-30deg)scale(.4)}to{opacity:1;transform:rotate(-9deg)scale(1)}}.confirm h2{font-size:var(--text-2xl)}.confirm .ts{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-ink-500)}.qr-card{background:var(--color-ink-900);border-radius:var(--radius-lg);padding:var(--space-5);align-items:center;gap:var(--space-4);flex-direction:column;display:flex}.qr-card .qr-label{color:var(--color-ouro-100);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase}.qr-frame{background:var(--color-surface);border-radius:var(--radius-md);border:3px solid var(--color-ouro-600);padding:10px;line-height:0}.qr-frame canvas{width:232px;height:232px;image-rendering:pixelated;display:block}.qr-ring-wrap{justify-content:center;align-items:center;width:96px;height:96px;display:flex;position:relative}.qr-ring-wrap svg{width:96px;height:96px;transform:rotate(-90deg)}.qr-ring-wrap .count{font-family:var(--font-mono);font-weight:600;font-size:var(--text-2xl);color:var(--color-paper);position:absolute}.qr-ring-wrap.urgent .count{color:var(--color-warning-600)}.qr-sub{color:var(--color-ink-300);font-size:var(--text-xs);text-align:center}.qr-seq{color:var(--color-ouro-100);font-family:var(--font-mono);font-size:var(--text-xs)}.scanner{border-radius:var(--radius-lg);background:var(--color-ink-900);aspect-ratio:3/4;position:relative;overflow:hidden}.scanner video{object-fit:cover;width:100%;height:100%;display:block}.scanner .reticle{border:3px solid var(--color-ouro-600);border-radius:var(--radius-md);position:absolute;inset:18% 12%;box-shadow:0 0 0 100vmax #101b3373}.scanner .hint{left:0;right:0;bottom:var(--space-4);text-align:center;color:var(--color-paper);font-size:var(--text-sm);text-shadow:0 1px 4px #0009;font-weight:600;position:absolute}.list-card{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-ink-100);box-shadow:var(--shadow-sm);overflow:hidden}.list-card .list-head{padding:var(--space-4);border-bottom:1px solid var(--color-ink-100);justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.list-card .list-head h3{font-size:var(--text-lg)}.list-item{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-ink-100);display:flex}.list-item:last-child{border-bottom:none}.list-item .body{flex:1;min-width:0}.avatar{background:var(--color-ink-100);width:36px;height:36px;color:var(--color-ink-700);font-weight:600;font-size:var(--text-sm);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex}.avatar.flag{background:var(--color-warning-100);color:var(--color-warning-700)}.avatar.bad{background:var(--color-error-100);color:var(--color-error-700)}.list-item .name{font-weight:600;font-size:var(--text-sm);color:var(--color-ink-900)}.list-item .time{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-500)}.list-item .spacer{margin-left:auto}.stat-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.stat{border-radius:var(--radius-full);align-items:center;gap:5px;padding:3px 9px;font-size:12px;font-weight:600;display:inline-flex}.stat.ok{background:var(--color-success-100);color:var(--color-success-700)}.stat.geo{background:var(--color-ink-100);color:var(--color-ink-700)}.stat.warn{background:var(--color-warning-100);color:var(--color-warning-700)}.stat.bad{background:var(--color-error-100);color:var(--color-error-700)}.stat.gold{background:var(--color-ouro-100);color:var(--color-ouro-700)}.trial-banner{align-items:center;gap:var(--space-4);background:var(--color-ouro-100);border-radius:var(--radius-md);padding:var(--space-4);border:1px solid #b8791e59;display:flex}.trial-banner.danger{background:var(--color-error-100);border-color:#c6433c59}.trial-banner .icon{background:var(--color-ouro-600);width:40px;height:40px;color:var(--color-surface);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex}.trial-banner.danger .icon{background:var(--color-error-600)}.trial-banner .txt{flex:1;min-width:0}.trial-banner .txt b{color:var(--color-ouro-700);font-size:var(--text-sm);display:block}.trial-banner.danger .txt b{color:var(--color-error-700)}.trial-banner .txt span{font-size:var(--text-xs);color:var(--color-ink-500)}.trial-bar{background:#b8791e33;border-radius:99px;flex:1;max-width:220px;height:6px;overflow:hidden}.trial-bar i{background:var(--color-ouro-600);height:100%;display:block}.report-card{background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-ink-100);position:relative;overflow:hidden}.report-head{padding:var(--space-5);border-bottom:2px solid var(--color-ink-900);justify-content:space-between;align-items:flex-end;gap:var(--space-4);flex-wrap:wrap;display:flex}.report-head h3{font-size:var(--text-xl)}.report-head .meta{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-500);text-align:right}.watermark{font-family:var(--font-display);color:var(--color-ink-900);opacity:.03;pointer-events:none;white-space:nowrap;letter-spacing:.05em;font-size:96px;font-weight:900;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)rotate(-18deg)}.report-scroll{z-index:1;overscroll-behavior-inline:contain;scrollbar-color:var(--color-ink-300) var(--color-paper);scrollbar-width:thin;position:relative;overflow-x:auto}.report-scroll:focus-visible{outline-offset:-3px}table.report{border-collapse:collapse;width:100%;min-width:980px}table.report thead th{text-align:left;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-500);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--color-ink-100);background:var(--color-paper);white-space:nowrap;font-size:11px}table.report td{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);line-height:var(--lh-sm);border-bottom:1px solid var(--color-ink-100);vertical-align:middle}table.report tbody tr:nth-child(2n){background:#101b3304}table.report tbody tr{transition:background-color .16s}table.report tbody tr:hover{background:var(--color-paper)}table.report :is(.mono,time,[data-numeric]){font-variant-numeric:tabular-nums}table.report td.mono{font-family:var(--font-mono);color:var(--color-ink-700);white-space:nowrap;font-size:13px}table.report td .aluno{color:var(--color-ink-900);font-weight:600}table.report td .geo{color:var(--color-ink-500);font-family:var(--font-mono);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:flex}table.report .empty:has(.spinner){color:#0000;min-height:132px;overflow:hidden}table.report .empty:has(.spinner) .spinner{display:none}table.report .empty:has(.spinner):before{content:"";border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--color-ink-100) 25%, var(--color-paper) 50%, var(--color-ink-100) 75%);background-size:200% 100%;width:min(680px,92%);height:14px;animation:1.35s ease-in-out infinite shimmer;display:block}table.report .empty:has(.spinner):after{content:"";border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--color-ink-100) 25%, var(--color-paper) 50%, var(--color-ink-100) 75%);background-size:200% 100%;width:min(680px,92%);height:14px;animation:1.35s ease-in-out infinite shimmer;display:block}table.report .empty:has(.spinner):after{width:min(520px,70%)}.report-foot{padding:var(--space-3) var(--space-4);font-family:var(--font-mono);color:var(--color-ink-300);border-top:1px solid var(--color-ink-100);justify-content:space-between;gap:var(--space-3);flex-wrap:wrap;font-size:11px;display:flex}.filters{gap:var(--space-3);flex-wrap:wrap;align-items:flex-end;display:flex}.filters .field{flex:1;min-width:150px}.filters .field input,.filters .field select{height:44px;font-size:var(--text-sm)}.skeleton{background:linear-gradient(90deg, var(--color-ink-100) 25%, var(--color-paper) 50%, var(--color-ink-100) 75%);border-radius:var(--radius-md);background-size:200% 100%;height:92px;animation:1.35s ease-in-out infinite shimmer}.empty{text-align:center;padding:var(--space-7) var(--space-5);color:var(--color-ink-500);gap:var(--space-2);flex-direction:column;align-items:center;display:flex}.empty h3{font-size:var(--text-xl);color:var(--color-ink-700)}.empty p{max-width:52ch;line-height:var(--lh-sm)}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.row{gap:var(--space-3);align-items:center;display:flex}.row.wrap{flex-wrap:wrap}.grow{flex:1}.teacher-open-session-actions{gap:var(--space-2);display:flex}.teacher-open-session-actions .btn{min-width:0;min-height:44px}.teacher-open-session-actions .grow{flex:auto}.center{text-align:center}@media (width<=480px){.teacher-open-session-actions{flex-direction:column;align-items:stretch}.teacher-open-session-actions .btn{width:100%}}.login-wrap{min-height:100%;padding:var(--space-6) var(--space-4);justify-content:center;gap:var(--space-5);flex-direction:column;max-width:440px;margin:0 auto;display:flex}.login-brand{align-items:center;gap:var(--space-3);text-align:center;flex-direction:column;display:flex}.login-brand .login-logo{object-fit:contain;filter:drop-shadow(0 10px 18px #0a112829);width:min(100%,300px);height:auto;max-height:250px}.login-brand h1{font-size:var(--text-3xl);line-height:var(--lh-3xl)}.modal-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:50;padding:var(--space-4);background:#101b3373;justify-content:center;align-items:center;animation:.18s ease-out modal-fade;display:flex;position:fixed;inset:0}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}.modal-card{background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-ink-100);box-shadow:var(--shadow-lg);flex-direction:column;width:100%;max-width:620px;max-height:85vh;animation:.2s cubic-bezier(.16,1,.3,1) modal-slide;display:flex;overflow:hidden}@keyframes modal-slide{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-card form{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.modal-head{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-ink-100);justify-content:space-between;align-items:center;gap:var(--space-3);background:var(--color-paper);flex:none;display:flex}.modal-head h3{font-size:var(--text-xl);line-height:1.2}.modal-close{cursor:pointer;color:var(--color-ink-500);padding:var(--space-2);border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;line-height:1;display:flex}.modal-close:hover{background:var(--color-ink-100);color:var(--color-ink-900)}.modal-close:active{transform:scale(.94)}.modal-body{padding:var(--space-5);gap:var(--space-4);flex-direction:column;flex:1;display:flex;overflow-y:auto}.modal-foot{padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-ink-100);background:var(--color-paper);justify-content:flex-end;align-items:center;gap:var(--space-3);flex:none;display:flex}.field.has-error input,.field.has-error select,.field.has-error textarea{border-color:var(--color-error-600);box-shadow:0 0 0 3px var(--color-error-100)}.field .field-error-msg{font-size:var(--text-xs);color:var(--color-error-600);margin-top:2px;font-weight:600}.form-grid-2{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}@media (width<=600px){.form-grid-2{grid-template-columns:1fr}}.form-grid-3{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.modal-content{width:100%;max-height:min(88vh,760px);padding:var(--space-5);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-lg);animation:.2s cubic-bezier(.16,1,.3,1) modal-slide;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;gap:var(--space-3);margin:calc(var(--space-5) * -1) calc(var(--space-5) * -1) var(--space-5);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-ink-100);background:var(--color-paper);top:calc(var(--space-5) * -1);z-index:2;display:flex;position:sticky}.modal-header h3{font-size:var(--text-xl);line-height:var(--lh-xl)}.btn-close{border-radius:var(--radius-sm);width:40px;height:40px;color:var(--color-ink-500);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.btn-close:hover{background:var(--color-ink-100);color:var(--color-ink-900)}.modal-actions{justify-content:flex-end;align-items:center;gap:var(--space-3);display:flex}.modal-actions .btn{width:auto;min-width:132px}.grid-2{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.callout-box{background:var(--color-ouro-100);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--text-xs);color:var(--color-ouro-700);border:1px solid #b8791e4d;line-height:1.45}.callout-box.info{background:var(--color-ink-100);border-color:var(--color-ink-300);color:var(--color-ink-700)}.callout-box.success{background:var(--color-success-100);color:var(--color-success-700);border-color:#1e8a5f4d}.check-label{align-items:flex-start;gap:var(--space-3);cursor:pointer;padding:var(--space-3) var(--space-4);border:1.5px solid var(--color-ink-300);border-radius:var(--radius-md);background:var(--color-surface);transition:all .12s;display:flex}.check-label:hover{border-color:var(--color-ink-700)}.check-label input[type=checkbox],.check-label input[type=radio]{width:18px;height:18px;accent-color:var(--color-ink-900);flex:none;margin-top:2px}.check-label .check-text{font-size:var(--text-sm);color:var(--color-ink-900);font-weight:600}.check-label .check-sub{font-size:var(--text-xs);color:var(--color-ink-500);margin-top:2px;font-weight:400}.quick-chips{gap:var(--space-2);flex-wrap:wrap;margin-top:4px;display:flex}.quick-chip{background:var(--color-paper);border:1px solid var(--color-ink-300);border-radius:var(--radius-full);font-size:var(--text-xs);font-family:var(--font-mono);color:var(--color-ink-700);cursor:pointer;padding:3px 10px;font-weight:600;transition:all .1s}.quick-chip:hover{background:var(--color-ink-100);border-color:var(--color-ink-700);color:var(--color-ink-900)}.quick-chip.selected{background:var(--color-ink-900);border-color:var(--color-ink-900);color:var(--color-paper)}@media (width>=900px){.shell.wide{background:var(--color-paper);max-width:100%;min-height:100vh;box-shadow:none;flex-direction:row}.shell.wide .app-topbar,.shell.wide .tabbar{display:none}.shell.wide .desktop-sidebar{background:var(--color-surface);border-right:1px solid var(--color-ink-100);width:250px;height:100vh;padding:var(--space-5) var(--space-4);box-shadow:var(--shadow-sm);z-index:10;flex-direction:column;flex:none;display:flex;position:sticky;top:0}.sidebar-brand{align-items:center;gap:var(--space-3);padding-bottom:var(--space-4);border-bottom:1px solid var(--color-ink-100);margin-bottom:var(--space-4);display:flex}.sidebar-brand .sidebar-full-logo{object-fit:contain;filter:drop-shadow(0 8px 14px #0a112824);width:132px;height:auto;max-height:112px;display:block}.sidebar-brand .sidebar-brand-copy{text-align:center}.sidebar-brand .brand-name{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);color:var(--color-ink-900);line-height:1.1;display:block}.sidebar-brand .brand-sub{font-size:var(--text-xs);color:var(--color-ouro-700);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;font-weight:600;display:block}.sidebar-nav{gap:var(--space-1);flex-direction:column;flex:1;display:flex}.nav-heading{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-300);margin-bottom:var(--space-2);padding-left:var(--space-3);font-size:11px}.sidebar-nav .nav-item{align-items:center;gap:var(--space-3);padding:var(--space-3);border-radius:var(--radius-md);color:var(--color-ink-700);font-weight:600;font-size:var(--text-sm);text-decoration:none;transition:all .12s;display:flex}.sidebar-nav .nav-item:hover{background:var(--color-ink-100);color:var(--color-ink-900)}.sidebar-nav .nav-item.active{background:var(--color-ink-900);color:var(--color-paper);box-shadow:var(--shadow-sm)}.sidebar-nav .nav-item.active svg{color:var(--color-ouro-600)}.sidebar-footer{padding-top:var(--space-4);border-top:1px solid var(--color-ink-100);gap:var(--space-3);flex-direction:column;display:flex}.sidebar-user{align-items:center;gap:var(--space-3);display:flex}.sidebar-user .user-avatar{background:var(--color-ouro-100);width:36px;height:36px;color:var(--color-ouro-700);font-weight:700;font-size:var(--text-sm);border-radius:50%;flex:none;justify-content:center;align-items:center;display:flex}.sidebar-user .user-info{flex-direction:column;min-width:0;display:flex}.sidebar-user .user-name{font-size:var(--text-sm);color:var(--color-ink-900);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.sidebar-user .user-tenant{font-size:var(--text-xs);color:var(--color-ink-500);font-family:var(--font-mono);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sidebar-logout{justify-content:center;width:100%}.shell.wide .shell-content{flex-direction:column;flex:1;min-width:0;display:flex;overflow-x:hidden}.desktop-header{padding:var(--space-3) var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-ink-100);z-index:9;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.desktop-header-left{align-items:center;gap:var(--space-3);display:flex}.tenant-badge{font-family:var(--font-display);font-weight:700;font-size:var(--text-base);color:var(--color-ink-900)}.desktop-header-right{align-items:center;gap:var(--space-4);display:flex}.user-tag{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-ink-500)}.shell.wide .page{padding:var(--space-6);width:100%;max-width:1440px;margin:0 auto}.shell.wide .filters{gap:var(--space-3);grid-template-columns:repeat(6,1fr);align-items:flex-end;display:grid}.shell.wide .filters .field{min-width:0}.shell.wide .report-card{border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.shell.wide .report-head{padding:var(--space-4) var(--space-6)}.shell.wide table.report{min-width:100%}.shell.wide table.report thead th{padding:var(--space-3) var(--space-4);font-size:11px}.shell.wide table.report td{padding:var(--space-3) var(--space-4)}}@media (width<=899px){.desktop-sidebar,.desktop-header{display:none!important}.shell.wide{max-width:100%;box-shadow:none}.shell.wide .page{padding-bottom:var(--space-6)}.shell.wide .tabbar{overflow-x:visible}.shell.wide .tabbar a{min-width:0;min-height:58px;padding:var(--space-2) 2px;white-space:normal;text-align:center;flex:1 1 0;font-size:9px;line-height:1.15}.shell.wide .tabbar a svg{width:18px;height:18px}.btn.sm{min-height:44px}.report-head{padding:var(--space-4);align-items:flex-start}.report-head .meta{text-align:left}.modal-backdrop{padding:var(--space-2);align-items:flex-end}.modal-card,.modal-content{max-height:calc(100dvh - var(--space-4));border-radius:var(--radius-md) var(--radius-md) 0 0}.modal-head,.modal-body,.modal-foot{padding-left:var(--space-4);padding-right:var(--space-4)}.modal-content{padding:var(--space-4)}.modal-header{margin:calc(var(--space-4) * -1) calc(var(--space-4) * -1) var(--space-4);padding:var(--space-4);top:calc(var(--space-4) * -1)}.modal-foot,.modal-actions{flex-direction:column-reverse;align-items:stretch}.modal-foot .btn,.modal-actions .btn{width:100%;min-width:0}.grid-2{grid-template-columns:1fr}}.view-switcher{background:var(--color-ink-100);border-radius:var(--radius-md);border:1px solid var(--color-ink-200);gap:4px;padding:4px;display:inline-flex}.view-switcher-btn{border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--color-ink-500);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:8px 16px;font-weight:600;transition:all .15s;display:flex}.view-switcher-btn:hover:not(.active){color:var(--color-ink-900);background:#fff9}.view-switcher-btn.active{background:var(--color-surface);color:var(--color-ink-900);box-shadow:var(--shadow-sm)}.calendar-card{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-ink-100);box-shadow:var(--shadow-md);flex-direction:column;display:flex;overflow:hidden}.calendar-header-bar{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-ink-100);background:var(--color-paper);flex-wrap:wrap;display:flex}.calendar-nav-group{align-items:center;gap:var(--space-3);display:flex}.calendar-btn-today{border-radius:var(--radius-md);font-size:var(--text-sm);border:1.5px solid var(--color-ink-300);background:var(--color-surface);color:var(--color-ink-900);cursor:pointer;padding:6px 14px;font-weight:600;transition:all .12s}.calendar-btn-today:hover{background:var(--color-ink-100);border-color:var(--color-ink-700)}.calendar-nav-arrows{align-items:center;gap:2px;display:inline-flex}.calendar-btn-nav{border:1.5px solid var(--color-ink-300);background:var(--color-surface);width:34px;height:34px;color:var(--color-ink-900);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:all .12s;display:flex}.calendar-btn-nav:hover{background:var(--color-ink-100);border-color:var(--color-ink-700)}.calendar-period-title{font-family:var(--font-display);font-size:var(--text-2xl);color:var(--color-ink-900);letter-spacing:-.01em;margin-left:var(--space-2);font-weight:700}.calendar-view-toggle{background:var(--color-ink-100);border-radius:var(--radius-md);gap:2px;padding:3px;display:inline-flex}.calendar-view-toggle button{border-radius:var(--radius-sm);font-size:var(--text-xs);color:var(--color-ink-500);cursor:pointer;background:0 0;border:none;padding:6px 14px;font-weight:600;transition:all .12s}.calendar-view-toggle button.active{background:var(--color-surface);color:var(--color-ink-900);box-shadow:var(--shadow-sm)}.calendar-filters-bar{padding:var(--space-3) var(--space-5);background:var(--color-surface);border-bottom:1px solid var(--color-ink-100);gap:var(--space-3);flex-direction:column;display:flex}.calendar-filter-row{gap:var(--space-3);flex-wrap:wrap;align-items:center;display:flex}.calendar-search-input{flex:1.5;min-width:220px;position:relative}.calendar-search-input input{height:38px;font-size:var(--text-sm);padding-left:36px}.calendar-search-input span.icon{color:var(--color-ink-300);pointer-events:none;position:absolute;top:10px;left:10px}.calendar-select{height:38px;font-size:var(--text-sm);padding:0 var(--space-3);border-radius:var(--radius-md);border:1.5px solid var(--color-ink-300);background:var(--color-surface);color:var(--color-ink-900);flex:1;min-width:170px}.calendar-specialty-tags{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.calendar-specialty-chip{border-radius:var(--radius-full);cursor:pointer;background:var(--color-ink-100);color:var(--color-ink-700);border:1px solid #0000;align-items:center;gap:6px;padding:4px 10px;font-size:11px;font-weight:600;transition:all .12s;display:inline-flex}.calendar-specialty-chip:hover{transform:translateY(-1px)}.calendar-specialty-chip.active{border-color:var(--color-ink-900);box-shadow:0 1px 3px #0000001a}.calendar-specialty-chip .chip-dot{border-radius:50%;width:8px;height:8px}.calendar-month-grid{background:var(--color-ink-100);border-bottom:1px solid var(--color-ink-100);grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.calendar-day-header{background:var(--color-paper);text-align:center;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-500);border-bottom:1px solid var(--color-ink-100);padding:10px 8px;font-size:11px;font-weight:700}.calendar-day-header.weekend{color:var(--color-ouro-700)}.calendar-day-cell{background:var(--color-surface);flex-direction:column;gap:4px;min-height:130px;padding:6px;transition:background .1s;display:flex}.calendar-day-cell:hover{background:#fdfdfd}.calendar-day-cell.other-month{opacity:.55;background:#fbfbfb}.calendar-day-cell.today{background:#fbf9f4}.calendar-day-top{justify-content:space-between;align-items:center;margin-bottom:2px;padding:2px 4px;display:flex}.calendar-day-num{font-family:var(--font-sans);color:var(--color-ink-700);border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:600;display:flex}.calendar-day-num.today{background:var(--color-ink-900);color:var(--color-paper);box-shadow:var(--shadow-sm);font-weight:700}.calendar-day-events-count{font-family:var(--font-mono);color:var(--color-ink-300);font-size:10px;font-weight:600}.calendar-events-list{flex-direction:column;flex:1;gap:4px;display:flex}.cal-event-card{border-radius:var(--radius-sm);border:1px solid var(--color-ink-100);cursor:pointer;text-align:left;flex-direction:column;gap:3px;padding:6px 8px;transition:transform .1s,box-shadow .1s;display:flex;position:relative}.cal-event-card:hover{box-shadow:var(--shadow-sm);z-index:2;transform:translateY(-1px)}.cal-event-time-row{font-family:var(--font-mono);justify-content:space-between;align-items:center;gap:4px;font-size:10px;font-weight:600;display:flex}.cal-event-title{white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:700;line-height:1.25;overflow:hidden}.cal-event-sub{opacity:.85;white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:4px;font-size:10px;display:flex;overflow:hidden}.cal-event-students-chips{flex-wrap:wrap;gap:3px;margin-top:2px;display:flex}.cal-student-avatar-chip{width:18px;height:18px;color:inherit;background:#0000001a;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:9px;font-weight:700;display:flex}.cal-more-events-btn{color:var(--color-ink-500);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:4px;padding:3px 6px;font-size:11px;font-weight:600;transition:all .1s}.cal-more-events-btn:hover{background:var(--color-ink-100);color:var(--color-ink-900)}.calendar-week-grid{background:var(--color-ink-100);grid-template-columns:repeat(7,1fr);gap:1px;min-height:520px;display:grid}.calendar-week-column{background:var(--color-surface);flex-direction:column;display:flex}.calendar-week-column.today{background:#fbf9f4}.calendar-week-col-header{text-align:center;border-bottom:1px solid var(--color-ink-100);background:var(--color-paper);padding:12px 8px}.calendar-week-col-dayname{font-family:var(--font-mono);text-transform:uppercase;color:var(--color-ink-500);font-size:11px;font-weight:700}.calendar-week-col-daynum{font-size:var(--text-lg);color:var(--color-ink-900);border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;margin-top:2px;font-weight:700;display:inline-flex}.calendar-week-col-daynum.today{background:var(--color-ink-900);color:var(--color-paper)}.calendar-week-col-body{padding:var(--space-3);gap:var(--space-3);flex-direction:column;flex:1;display:flex}.cal-week-card{padding:var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-ink-100);cursor:pointer;flex-direction:column;gap:6px;transition:transform .12s,box-shadow .12s;display:flex}.cal-week-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.cal-week-card-header{justify-content:space-between;align-items:flex-start;gap:6px;display:flex}.cal-week-card-title{font-size:var(--text-sm);font-weight:700;line-height:1.3}.cal-week-card-time{font-family:var(--font-mono);font-size:11px;font-weight:600}.cal-week-card-info{opacity:.9;flex-direction:column;gap:3px;font-size:12px;display:flex}.cal-week-students-list{border-top:1px dashed #0000001f;flex-direction:column;gap:3px;margin-top:4px;padding-top:6px;display:flex}.cal-week-student-item{align-items:center;gap:6px;font-size:11px;font-weight:600;display:flex}.cal-event-modal-head{padding:var(--space-4) var(--space-5);justify-content:space-between;align-items:flex-start;gap:var(--space-3);border-bottom:1px solid var(--color-ink-100);display:flex}.cal-event-progress-bar{border-radius:var(--radius-full);background:var(--color-ink-100);height:8px;margin-top:4px;overflow:hidden}.cal-event-progress-fill{border-radius:var(--radius-full);height:100%}@media (width<=768px){.calendar-month-grid{grid-template-columns:repeat(7,minmax(42px,1fr));overflow-x:auto}.calendar-week-grid{grid-template-columns:repeat(7,minmax(130px,1fr));overflow-x:auto}.cal-event-sub{display:none}}.report-mode-tabs{background:var(--color-surface);border:1px solid var(--color-ink-100);border-radius:var(--radius-md);margin-bottom:var(--space-3);gap:4px;padding:4px;display:flex}.report-mode-btn{padding:10px var(--space-4);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-ink-500);cursor:pointer;background:0 0;border:none;flex:1;justify-content:center;align-items:center;gap:8px;font-weight:600;transition:background-color .18s,color .18s,box-shadow .18s;display:flex}.report-mode-btn:hover{background:var(--color-ink-100);color:var(--color-ink-900)}.report-mode-btn.active{background:var(--color-ink-900);color:var(--color-paper);box-shadow:var(--shadow-sm)}.analytics-page{gap:var(--space-4);flex-direction:column;display:flex}.analytics-header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);flex-wrap:wrap;display:flex}.analytics-actions{align-items:center;gap:var(--space-3);display:flex}.live-pill{font-family:var(--font-mono);color:var(--color-ink-500);background:var(--color-surface);border:1px solid var(--color-ink-100);border-radius:var(--radius-full);align-items:center;gap:6px;padding:6px 12px;font-size:11px;display:inline-flex}.live-dot{background:var(--color-success-600);border-radius:50%;width:7px;height:7px}.kpi-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(210px,1fr));display:grid}.kpi-card{background:var(--color-surface);border:1px solid var(--color-ink-100);border-radius:var(--radius-md);padding:var(--space-4);justify-content:space-between;gap:var(--space-2);flex-direction:column;min-width:0;transition:border-color .18s,background-color .18s;display:flex}.kpi-card:hover{border-color:var(--color-ink-300)}.kpi-card.highlight-warn{background:color-mix(in srgb, var(--color-warning-100) 32%, var(--color-surface));border-color:#d97f1d66}.kpi-card.highlight-bad{background:color-mix(in srgb, var(--color-error-100) 32%, var(--color-surface));border-color:#c6433c66}.kpi-top{justify-content:space-between;align-items:center;display:flex}.kpi-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--color-ink-500);font-weight:600}.kpi-icon-wrap{border-radius:var(--radius-sm);justify-content:center;align-items:center;width:32px;height:32px;display:flex}.kpi-icon-wrap.blue{background:var(--color-ink-100);color:var(--color-ink-700)}.kpi-icon-wrap.green{background:var(--color-success-100);color:var(--color-success-700)}.kpi-icon-wrap.warn{background:var(--color-warning-100);color:var(--color-warning-700)}.kpi-icon-wrap.bad{background:var(--color-error-100);color:var(--color-error-700)}.kpi-icon-wrap.purple{background:var(--color-ouro-100);color:var(--color-ouro-700)}.kpi-icon-wrap.ok{background:var(--color-success-100);color:var(--color-success-700)}.kpi-body{justify-content:space-between;align-items:baseline;gap:var(--space-2);display:flex}.kpi-value{font-family:var(--font-display);font-size:var(--text-3xl);color:var(--color-ink-900);font-variant-numeric:tabular-nums;font-weight:700;line-height:1.1}.kpi-status-badge{border-radius:var(--radius-full);align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-flex}.kpi-status-badge.ok{background:var(--color-success-100);color:var(--color-success-700)}.kpi-status-badge.warn{background:var(--color-warning-100);color:var(--color-warning-700)}.kpi-status-badge.bad{background:var(--color-error-100);color:var(--color-error-700)}.kpi-footer{border-top:1px solid var(--color-ink-100);justify-content:space-between;align-items:center;min-height:24px;padding-top:4px;display:flex}.kpi-link-btn{font-family:var(--font-sans);font-size:var(--text-xs);color:var(--color-ink-700);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;min-height:32px;padding:0;font-weight:600;transition:color .18s;display:flex}.kpi-link-btn:hover{color:var(--color-ouro-700)}.kpi-progress-bar{border-radius:var(--radius-full);background:var(--color-ink-100);width:100%;height:6px;overflow:hidden}.kpi-progress-fill{border-radius:var(--radius-full);background:var(--color-success-600);height:100%}.analytics-filter-card{padding:var(--space-3) var(--space-4)}.filter-row{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.filter-title{font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-700);align-items:center;gap:6px;font-weight:700;display:flex}.filter-fields{align-items:center;gap:var(--space-3);flex-wrap:wrap;flex:1;display:flex}.filter-field{flex-direction:column;flex:1;gap:2px;min-width:160px;display:flex}.filter-field label{color:var(--color-ink-500);font-size:11px;font-weight:600}.filter-field select{border-radius:var(--radius-sm);border:1px solid var(--color-ink-300);height:38px;padding:0 var(--space-3);font-size:var(--text-sm);background:var(--color-surface);color:var(--color-ink-900)}.filter-field select:focus-visible{border-color:var(--color-ink-900)}.filter-clear-btn{height:38px;margin-top:15px}.analytics-charts-grid{gap:var(--space-4);grid-template-columns:repeat(2,1fr);display:grid}.analytics-charts-grid>*{min-width:0}.chart-card{gap:var(--space-4);padding:var(--space-4) var(--space-5);flex-direction:column;display:flex}.chart-head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);border-bottom:1px solid var(--color-ink-100);padding-bottom:var(--space-3);display:flex}.chart-head h3{font-size:var(--text-lg);line-height:1.3}.chart-badge-tag{border-radius:var(--radius-full);font-family:var(--font-mono);flex:none;align-items:center;gap:5px;padding:4px 10px;font-size:11px;font-weight:600;display:inline-flex}.chart-badge-tag.blue{background:var(--color-ink-100);color:var(--color-ink-700)}.chart-badge-tag.green{background:var(--color-success-100);color:var(--color-success-700)}.donut-layout{align-items:center;gap:var(--space-5);flex-wrap:wrap;display:flex}.donut-svg-wrap{flex:none;width:150px;height:150px;margin:0 auto;position:relative}.donut-svg{width:100%;height:100%;transform:rotate(0)}.donut-segment{transition:stroke-dasharray .4s,stroke-dashoffset .4s}.donut-center-info{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.donut-center-val{font-family:var(--font-display);font-size:var(--text-xl);color:var(--color-ink-900);font-variant-numeric:tabular-nums;font-weight:700;line-height:1}.donut-center-lbl{font-family:var(--font-mono);color:var(--color-ink-500);text-transform:uppercase;margin-top:2px;font-size:10px}.donut-breakdown-list{gap:var(--space-3);flex-direction:column;flex:1;min-width:240px;display:flex}.spec-item{flex-direction:column;gap:3px;display:flex}.spec-row{font-size:var(--text-sm);justify-content:space-between;align-items:center;display:flex}.spec-name-wrap{align-items:center;gap:6px;display:flex}.spec-dot{border-radius:50%;flex:none;width:8px;height:8px}.spec-name{color:var(--color-ink-900);font-weight:600}.spec-code-tag{font-family:var(--font-mono);background:var(--color-ink-100);color:var(--color-ink-700);border-radius:4px;padding:1px 5px;font-size:10px}.spec-hours{font-family:var(--font-mono);font-size:12px}.spec-meter-bg{border-radius:var(--radius-full);background:var(--color-ink-100);height:6px;overflow:hidden}.spec-meter-fill{border-radius:var(--radius-full);height:100%}.spec-sub{color:var(--color-ink-500);justify-content:space-between;font-size:11px;display:flex}.risk-badges-summary{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.risk-pill{border-radius:var(--radius-full);align-items:center;gap:6px;padding:3px 8px;font-size:11px;font-weight:600;display:inline-flex}.risk-pill:before{content:"";background:currentColor;border-radius:50%;flex:none;width:7px;height:7px}.risk-pill.bad{background:var(--color-error-100);color:var(--color-error-700)}.risk-pill.warn{background:var(--color-warning-100);color:var(--color-warning-700)}.risk-pill.ok{background:var(--color-success-100);color:var(--color-success-700)}.empty-risk-state{padding:var(--space-6) var(--space-4);text-align:center;justify-content:center;align-items:center;gap:var(--space-2);flex-direction:column;display:flex}.empty-risk-state svg{color:var(--color-success-600)}.risk-table-scroll{overflow-x:auto}.risk-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.risk-table th{text-align:left;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-500);border-bottom:1px solid var(--color-ink-100);padding:8px 12px;font-size:11px}.risk-table td{border-bottom:1px solid var(--color-ink-100);vertical-align:middle;padding:10px 12px}.risk-table tr:last-child td{border-bottom:none}.student-name{color:var(--color-ink-900);align-items:center;gap:6px;font-weight:600;display:flex}.student-email{color:var(--color-ink-500);margin-left:21px;font-size:11px}.rot-name{font-weight:600}.cg-code{font-size:11px}.absence-count{font-family:var(--font-mono);font-size:12px}.absence-bar-wrap{flex-direction:column;gap:4px;display:flex}.absence-badge{font-family:var(--font-mono);border-radius:4px;width:fit-content;padding:2px 6px;font-size:11px;font-weight:700;display:inline-block}.absence-badge.bad{background:var(--color-error-100);color:var(--color-error-700)}.absence-badge.warn{background:var(--color-warning-100);color:var(--color-warning-700)}.mini-meter{border-radius:var(--radius-full);background:var(--color-ink-100);width:90px;height:4px;overflow:hidden}.mini-fill{border-radius:var(--radius-full);height:100%}.mini-fill.bad{background:var(--color-error-600)}.mini-fill.warn{background:var(--color-warning-600)}.risk-badge-tag{border-radius:var(--radius-full);padding:3px 8px;font-size:11px;font-weight:700;display:inline-block}.risk-badge-tag.critical{background:var(--color-error-600);color:#fff}.risk-badge-tag.warning{background:var(--color-warning-600);color:#fff}.hospital-bars-list{gap:var(--space-4);flex-direction:column;display:flex}.hosp-bar-item{background:var(--color-surface);border:1px solid var(--color-ink-100);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);flex-direction:column;gap:8px;display:flex}.hosp-top{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.hosp-name{font-weight:700;font-size:var(--text-base);color:var(--color-ink-900)}.hosp-addr{font-size:11px}.hosp-stats{align-items:center;gap:var(--space-3);display:flex}.hosp-numbers{font-family:var(--font-mono);font-size:12px}.hosp-status-tag{border-radius:var(--radius-full);padding:3px 8px;font-size:11px;font-weight:700}.hosp-status-tag.normal{background:var(--color-success-100);color:var(--color-success-700)}.hosp-status-tag.alert{background:var(--color-warning-100);color:var(--color-warning-700)}.hosp-status-tag.critical{background:var(--color-error-100);color:var(--color-error-700)}.hosp-meter-container{position:relative}.hosp-meter-bg{border-radius:var(--radius-full);background:var(--color-ink-100);height:10px;position:relative;overflow:hidden}.hosp-meter-fill{border-radius:var(--radius-full);height:100%}.hosp-meter-fill.normal{background:var(--color-success-600)}.hosp-meter-fill.alert{background:var(--color-warning-600)}.hosp-meter-fill.critical{background:var(--color-error-600)}.capacity-limit-marker{background:var(--color-ink-900);width:2px;position:absolute;top:0;bottom:0;right:0}.hosp-sub-info{color:var(--color-ink-500);justify-content:space-between;font-size:11px;display:flex}.capacity-note{font-family:var(--font-mono)}.trend-legend{align-items:center;gap:var(--space-3);font-size:12px;font-weight:500;display:flex}.legend-item{align-items:center;gap:5px;display:flex}.legend-box{border-radius:2px;width:10px;height:10px}.legend-box.green{background:var(--color-success-600)}.legend-box.amber{background:var(--color-warning-600)}.legend-box.red{background:var(--color-error-600)}.trend-chart-layout{gap:var(--space-3);flex-direction:column;display:flex}.trend-bars-wrapper{height:170px;padding:var(--space-3) 0;border-bottom:1px solid var(--color-ink-100);justify-content:space-between;align-items:flex-end;gap:8px;display:flex}.trend-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:6px;height:100%;display:flex}.trend-stacked-bar{background:var(--color-ink-100);border-radius:6px 6px 0 0;flex-direction:column-reverse;justify-content:flex-start;width:100%;max-width:38px;height:100%;display:flex;overflow:hidden}.bar-slice{width:100%}.bar-slice.green{background:var(--color-success-600)}.bar-slice.amber{background:var(--color-warning-600)}.bar-slice.red{background:var(--color-error-600)}.trend-col-label{flex-direction:column;align-items:center;line-height:1.1;display:flex}.day-name{color:var(--color-ink-900);font-size:11px;font-weight:700}.day-date{color:var(--color-ink-500);font-size:10px}.trend-col-total{color:var(--color-ink-700);font-size:11px;font-weight:700}.trend-footer-summary{background:var(--color-ink-100);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);justify-content:space-around;display:flex}.trend-summary-item{align-items:center;gap:6px;display:flex}.skeleton-box{background:linear-gradient(90deg, var(--color-ink-100) 25%, var(--color-paper) 50%, var(--color-ink-100) 75%);border-radius:var(--radius-lg);background-size:200% 100%;animation:1.5s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (width<=960px){.analytics-charts-grid{grid-template-columns:1fr}}@media (width<=600px){.analytics-header,.analytics-actions{width:100%}.analytics-actions{flex-wrap:wrap;align-items:stretch}.live-pill{white-space:normal;flex:1;min-height:40px}.analytics-actions .btn{min-height:40px}.kpi-grid{gap:var(--space-3);grid-template-columns:1fr}.kpi-card{padding:var(--space-4)}.filter-row,.filter-fields{flex-direction:column;align-items:stretch}.filter-title{padding-bottom:var(--space-2);border-bottom:1px solid var(--color-ink-100)}.filter-field{width:100%;min-width:0}.filter-clear-btn{margin-top:0}.chart-card{padding:var(--space-4)}.chart-head{flex-direction:column}.chart-badge-tag,.risk-badges-summary,.trend-legend{align-self:flex-start}.donut-layout{flex-direction:column;align-items:stretch}.donut-breakdown-list{width:100%;min-width:0}.spec-row{gap:var(--space-2)}.spec-name-wrap{min-width:0}.spec-name{overflow-wrap:anywhere}.spec-hours{flex:none}.hosp-top,.hosp-stats,.hosp-sub-info{flex-direction:column;align-items:flex-start}.hosp-stats{gap:var(--space-2)}.trend-legend{flex-wrap:wrap}.trend-footer-summary{align-items:stretch;gap:var(--space-2);flex-direction:column}.trend-summary-item{justify-content:space-between}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.dossier-modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10000!important;background:#0f172abf!important}.dossier-modal-card{border:1px solid var(--color-ink-300);box-shadow:0 25px 50px -12px #00000040!important}.dossier-paper{font-family:var(--font-sans);border-radius:4px;max-width:860px;margin:0 auto;padding:40px 48px;line-height:1.4;position:relative;box-shadow:0 4px 25px #00000014;color:#0f172a!important;background:#fff!important}.dossier-watermark{color:#0f172a09;pointer-events:none;white-space:nowrap;-webkit-user-select:none;user-select:none;z-index:0;letter-spacing:.1em;font-size:52px;font-weight:900;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-30deg)}.dossier-header{z-index:1;margin-bottom:20px;position:relative}.dossier-rep-badge{border-bottom:2px solid #0f172a;justify-content:center;align-items:center;gap:16px;margin-bottom:14px;padding-bottom:12px;display:flex}.dossier-coat-of-arms{flex-shrink:0}.dossier-rep-text{text-align:left}.dossier-rep-country{letter-spacing:.12em;color:#0f172a;font-size:13px;font-weight:800;font-family:var(--font-display);display:block}.dossier-rep-ministry{color:#475569;letter-spacing:.04em;font-size:11px;font-weight:700;display:block}.dossier-rep-system{color:#b45309;letter-spacing:.08em;text-transform:uppercase;font-size:9.5px;font-weight:600;display:block}.dossier-inst-block{text-align:center;margin:10px 0 14px}.dossier-inst-name{color:#0f172a;font-size:20px;font-weight:800;font-family:var(--font-display);letter-spacing:-.01em;margin:0}.dossier-inst-details{color:#475569;justify-content:center;gap:8px;margin-top:4px;font-size:12px;display:flex}.dossier-title-banner{color:#fff;text-align:center;background:#0f172a;border-radius:4px;margin-top:14px;padding:12px 18px}.dossier-main-title{letter-spacing:.07em;text-transform:uppercase;margin:0;font-size:13.5px;font-weight:800;color:#fff!important}.dossier-legal-base{color:#cbd5e1;margin:4px 0 0;font-size:10px;line-height:1.3}.dossier-section{z-index:1;margin-bottom:20px;position:relative}.dossier-section-title{color:#0f172a;letter-spacing:.06em;text-transform:uppercase;border-bottom:1.5px solid #0f172a;margin-bottom:10px;padding-bottom:4px;font-size:11.5px;font-weight:800}.dossier-grid-info{background:#f8fafc;border:1px solid #e2e8f0;border-radius:4px;grid-template-columns:2fr 1fr 1fr;gap:10px 14px;padding:12px 16px;display:grid}.dossier-info-cell{flex-direction:column;gap:2px;display:flex}.dossier-label{color:#64748b;text-transform:uppercase;letter-spacing:.05em;font-size:9.5px;font-weight:700}.dossier-val-lg{color:#0f172a;font-size:14px;font-weight:800}.dossier-val-mono{font-family:var(--font-mono);color:#0f172a;font-size:12px;font-weight:700}.dossier-val{color:#1e293b;font-size:12px;font-weight:600}.dossier-status-pill.ok{color:#065f46;background:#d1fae5;border:1px solid #a7f3d0;border-radius:9999px;align-items:center;gap:4px;width:fit-content;padding:2px 8px;font-size:11px;font-weight:700;display:inline-flex}.dossier-table{border-collapse:collapse;width:100%;margin-bottom:8px;font-size:11px}.dossier-table th{color:#0f172a;text-transform:uppercase;letter-spacing:.04em;background:#f1f5f9;border:1px solid #cbd5e1;padding:8px 10px;font-size:10px;font-weight:800}.dossier-table td{color:#1e293b;vertical-align:middle;border:1px solid #e2e8f0;padding:7px 10px}.dossier-table tbody tr:nth-child(2n){background:#f8fafc}.dossier-code-sub{color:#64748b;font-size:9.5px;font-family:var(--font-mono);display:block}.dossier-table-badge{white-space:nowrap;border-radius:9999px;padding:2px 8px;font-size:10px;font-weight:700;display:inline-block}.dossier-table-badge.badge-ok{color:#15803d;background:#dcfce7;border:1px solid #bbf7d0}.dossier-table-badge.badge-warn{color:#b45309;background:#fef3c7;border:1px solid #fde68a}.dossier-table-badge.badge-apto{color:#fff;letter-spacing:.04em;background:#047857;padding:4px 10px;font-weight:800}.dossier-tfoot-row td{font-size:11.5px;background:#f1f5f9!important;border-top:2px solid #0f172a!important;border-bottom:2px solid #0f172a!important}.dossier-table.compact{font-size:10px}.dossier-table.compact th{padding:6px 8px;font-size:9.5px}.dossier-table.compact td{padding:5px 8px}.dossier-shift-area{color:#64748b;font-size:9px;font-weight:500;display:block}.dossier-method-tag{color:#334155;white-space:nowrap;background:#f1f5f9;border:1px solid #cbd5e1;border-radius:4px;padding:2px 6px;font-size:9px;font-weight:600;display:inline-block}.dossier-preceptor-name{color:#0f172a;font-weight:600}.dossier-preceptor-crm{color:#64748b;font-size:9px;font-family:var(--font-mono)}.dossier-seal-box{z-index:1;background:#fffdf7;border:2px solid #c29b38;border-radius:6px;gap:18px;margin-top:22px;padding:14px 18px;display:flex;position:relative}.dossier-seal-qr{flex-direction:column;flex-shrink:0;align-items:center;gap:6px;display:flex}.dossier-qr-caption{color:#64748b;text-align:center;max-width:110px;font-size:8.5px;font-weight:500;line-height:1.1}.dossier-seal-content{flex-direction:column;flex:1;gap:8px;display:flex}.dossier-seal-badge-header{color:#854d0e;letter-spacing:.04em;align-items:center;gap:6px;font-size:11.5px;font-weight:800;display:flex}.dossier-seal-icon{font-size:14px}.dossier-seal-hash-grid{background:#fff;border:1px solid #fde68a;border-radius:4px;flex-direction:column;gap:5px;padding:8px 12px;display:flex}.dossier-seal-label{color:#78350f;letter-spacing:.04em;font-size:8.5px;font-weight:700;display:block}.dossier-seal-code{font-family:var(--font-mono);color:#0f172a;letter-spacing:.08em;font-size:13px;font-weight:800}.dossier-seal-hash{color:#334155;word-break:break-all;font-size:9.5px;line-height:1.2}.dossier-seal-url{color:#0369a1;word-break:break-all;font-size:10px;font-weight:600;text-decoration:none}.dossier-seal-disclaimer{color:#64748b;margin:0;font-size:9.5px;font-style:italic;line-height:1.35}.dossier-signatures{z-index:1;justify-content:space-around;gap:40px;margin-top:36px;padding-top:10px;display:flex;position:relative}.dossier-sign-col{text-align:center;flex-direction:column;flex:1;align-items:center;display:flex}.dossier-sign-line{background:#0f172a;width:220px;height:1px;margin-bottom:6px}.dossier-sign-title{color:#0f172a;font-size:11px;font-weight:700}.dossier-sign-sub{color:#64748b;font-size:9.5px}@media print{@page{size:A4 portrait;margin:10mm 12mm 12mm}body{font-size:10pt;color:#000!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;background:#fff!important}.shell,.app-topbar,.tabbar,.dossier-screen-only,.dossier-modal-overlay{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:0 0!important}body *{visibility:hidden}#dossier-official-document,#dossier-official-document *{visibility:visible}#dossier-official-document{position:absolute;top:0;left:0;width:100%!important;max-width:100%!important;box-shadow:none!important;border-radius:0!important;margin:0!important;padding:0!important}.dossier-modal-card{box-shadow:none!important;border:none!important;width:100%!important;max-width:100%!important;max-height:none!important;padding:0!important}.dossier-modal-scroll{background:#fff!important;padding:0!important;overflow:visible!important}.dossier-table,.dossier-table tr,.dossier-table td,.dossier-table th,.dossier-seal-box,.dossier-signatures{page-break-inside:avoid!important}}.loc-stats-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.loc-stat-card{background:var(--color-surface);border:1px solid var(--color-ink-100);border-radius:var(--radius-md);padding:var(--space-4);flex-direction:column;gap:4px;display:flex}.loc-stat-card .label{font-size:var(--text-xs);color:var(--color-ink-500);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.loc-stat-card .value{font-size:var(--text-2xl);font-family:var(--font-display);color:var(--color-ink-900);font-weight:700;line-height:1.1}.loc-stat-card .sub{color:var(--color-ink-500);margin-top:2px;font-size:11px}.loc-view-tabs{background:var(--color-paper);border-radius:var(--radius-sm);border:1px solid var(--color-ink-100);gap:4px;padding:4px;display:flex}.loc-view-tab{font-size:var(--text-xs);color:var(--color-ink-500);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:none;align-items:center;gap:6px;padding:6px 14px;font-weight:600;transition:all .15s;display:inline-flex}.loc-view-tab.active{background:var(--color-surface);color:var(--color-ink-900);box-shadow:var(--shadow-sm)}.loc-modal-wide{width:95vw!important;max-width:1140px!important}.loc-modal-columns{gap:var(--space-4);grid-template-columns:minmax(320px,1fr) minmax(400px,1.25fr);align-items:start;display:grid}@media (width<=920px){.loc-modal-columns{gap:var(--space-3);grid-template-columns:1fr}}.loc-candidate-dropdown{z-index:100;background:var(--color-surface);border:1.5px solid var(--color-ink-300);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);max-height:240px;margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.loc-candidate-option{cursor:pointer;border-bottom:1px solid var(--color-ink-100);justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;transition:background .15s;display:flex}.loc-candidate-option:last-child{border-bottom:none}.loc-candidate-option:hover{background:var(--color-paper)}.loc-range-slider{width:100%;accent-color:var(--color-ouro-600);cursor:pointer}.loc-poi-search-card{z-index:60;background:var(--color-paper);border:1.5px solid var(--color-ink-200);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);position:relative;box-shadow:0 2px 8px #101b330a}.loc-poi-search-bar{align-items:center;gap:var(--space-2);display:flex;position:relative}.loc-poi-input-wrap{flex:1;position:relative}.loc-poi-input{width:100%;height:44px;font-size:var(--text-sm);border-radius:var(--radius-sm);border:1.5px solid var(--color-ink-300);background:var(--color-surface);color:var(--color-ink-900);box-shadow:var(--shadow-sm);padding:0 40px 0 38px;font-weight:500;transition:all .2s}.loc-poi-input:focus{border-color:var(--color-ouro-600);outline:none;box-shadow:0 0 0 3px #b8791e26}.loc-poi-icon-left{pointer-events:none;color:var(--color-ink-500);font-size:16px;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.loc-poi-clear-btn{color:var(--color-ink-400);cursor:pointer;background:0 0;border:none;border-radius:50%;padding:4px;font-size:14px;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.loc-poi-clear-btn:hover{color:var(--color-ink-900);background:var(--color-ink-100)}.loc-poi-dropdown{z-index:1200;background:var(--color-surface);border:1.5px solid var(--color-ouro-500);border-radius:var(--radius-md);max-height:320px;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #101b332e}.loc-poi-dropdown-header{background:var(--color-paper);border-bottom:1px solid var(--color-ink-100);color:var(--color-ink-700);justify-content:space-between;align-items:center;padding:8px 14px;font-size:11px;font-weight:700;display:flex}.loc-poi-item{cursor:pointer;border-bottom:1px solid var(--color-ink-100);align-items:flex-start;gap:12px;padding:10px 14px;transition:all .15s;display:flex}.loc-poi-item:last-child{border-bottom:none}.loc-poi-item:hover{background:#fbf9f4}.loc-poi-item-icon{flex-shrink:0;margin-top:2px;font-size:20px}.loc-poi-item-content{flex:1;min-width:0}.loc-poi-item-name{font-size:var(--text-sm);color:var(--color-ink-900);font-weight:700;line-height:1.3}.loc-poi-item-address{color:var(--color-ink-500);margin-top:2px;font-size:12px;line-height:1.3}.loc-poi-item-meta{align-items:center;gap:6px;margin-top:4px;font-size:11px;display:flex}.loc-reverse-callout{border-radius:var(--radius-sm);background:#fdfbf7;border:1px solid #f2e3c6;justify-content:space-between;align-items:center;gap:8px;margin-top:8px;padding:8px 12px;font-size:12px;display:flex}.leaflet-div-icon{box-shadow:none!important;background:0 0!important;border:none!important}.custom-google-pin,.custom-hospital-marker,.custom-gps-user-marker{box-shadow:none!important;background:0 0!important;border:none!important;overflow:visible!important}.custom-google-pin svg{filter:drop-shadow(0 4px 8px #00000073);overflow:visible}.wiz-page{gap:var(--space-5);flex-direction:column;display:flex}.wiz-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);flex-wrap:wrap;display:flex}.wiz-schedule-chip{background:var(--color-ink-50);border:1px solid var(--color-border-subtle);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--text-xs);flex-direction:column;align-items:flex-end;gap:2px;display:flex}.wiz-steps{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.wiz-step{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1.5px solid var(--color-border-subtle);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-ink-500);font-size:var(--text-xs);white-space:nowrap;font-weight:600;display:flex}.wiz-step-num{border-radius:var(--radius-full);background:var(--color-ink-100);width:20px;height:20px;color:var(--color-ink-600);flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.wiz-step.done{border-color:var(--color-cyan-500);color:var(--color-cyan-600)}.wiz-step.done .wiz-step-num{background:var(--color-cyan-500);color:#fff}.wiz-step.current{border-color:var(--color-navy-900);color:var(--color-navy-900);box-shadow:var(--shadow-sm)}.wiz-step.current .wiz-step-num{background:var(--color-navy-900);color:#fff}.wiz-card{gap:var(--space-4);flex-direction:column;display:flex}.wiz-options{gap:var(--space-3);display:grid}@media (width>=720px){.wiz-options{grid-template-columns:repeat(2,minmax(0,1fr))}}.wiz-option{text-align:left;padding:var(--space-4);border:1.5px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;flex-direction:column;gap:4px;transition:border-color .12s,box-shadow .12s;display:flex}.wiz-option:hover{border-color:var(--color-navy-700)}.wiz-option.selected{border-color:var(--color-cyan-600);background:var(--color-cyan-50);box-shadow:var(--shadow-glow-cyan)}.wiz-option-title{color:var(--color-ink-900);font-weight:700;font-size:var(--text-base)}.wiz-option-sub{color:var(--color-ink-500);font-size:var(--text-xs)}.wiz-chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.wiz-chip{padding:var(--space-3) var(--space-4);border:1.5px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);min-width:104px;color:var(--color-ink-700);font-weight:600;font-size:var(--text-sm);cursor:pointer;flex-direction:column;align-items:center;gap:2px;transition:all .12s;display:flex}.wiz-chip:hover{border-color:var(--color-navy-700)}.wiz-chip.on{border-color:var(--color-navy-900);background:var(--color-navy-900);color:#fff}.wiz-chip-hint{opacity:.75;font-size:11px;font-weight:500}.wiz-grid-wrap{overflow-x:auto}.wiz-grid{border-collapse:collapse;width:100%;font-size:var(--text-xs)}.wiz-grid th,.wiz-grid td{border:1px solid var(--color-border-subtle);padding:var(--space-2) var(--space-3);text-align:center;white-space:nowrap}.wiz-grid thead th{background:var(--color-ink-50);color:var(--color-ink-700);font-weight:700}.wiz-grid tbody th{background:var(--color-ink-50);text-align:left;font-weight:600}.wiz-grid td{color:var(--color-ink-400)}.wiz-grid td.marked{color:var(--color-navy-900);background:var(--color-cyan-50);font-weight:700}.wiz-grid td.on-schedule{color:var(--color-cyan-600);background:var(--color-cyan-100);font-weight:700}.wiz-summary-row{gap:var(--space-4);flex-wrap:wrap;align-items:center;display:flex}.wiz-summary-row .stat{font-size:var(--text-xs);flex-direction:column;gap:2px;display:flex}.wiz-summary-row .stat strong{font-size:var(--text-xl);color:var(--color-ink-900)}.callout-box.wiz-callout-ok,.callout-box.wiz-callout-warn,.callout-box.wiz-callout-error{align-items:flex-start;gap:var(--space-3);display:flex}.callout-box.wiz-callout-ok{background:var(--color-success-100);color:var(--color-success-700);border-color:#0596694d}.callout-box.wiz-callout-warn{background:var(--color-warning-100);color:var(--color-warning-700);border-color:#d977064d}.callout-box.wiz-callout-error{background:var(--color-error-100);color:var(--color-error-700);border-color:#b91c1c4d}.wiz-error-extra{font-size:var(--text-xs);color:var(--color-ink-700);gap:var(--space-2);flex-direction:column;line-height:1.5;display:flex}.wiz-conflict-list{padding-left:var(--space-5);gap:2px;margin:0;display:grid}.wiz-footer{justify-content:space-between;align-items:center;gap:var(--space-4);border-top:1px solid var(--color-border-subtle);padding-top:var(--space-4);flex-wrap:wrap;display:flex}.wiz-blocked{font-size:var(--text-xs);text-align:center;flex:auto}.wiz-footer .btn{width:auto;min-width:160px;padding:0 var(--space-5)}.wiz-card .btn{width:auto;padding:0 var(--space-5)}.wiz-card .btn.sm{min-width:0}.photo-upload{gap:var(--space-5);flex-wrap:wrap;align-items:flex-start;display:flex}.photo-frame{border-radius:var(--radius-lg);background:var(--color-ink-100);border:1.5px solid var(--color-border);flex:none;justify-content:center;align-items:center;width:132px;height:132px;display:flex;overflow:hidden}.photo-frame img{object-fit:cover;width:100%;height:100%}.photo-initial{font-size:var(--text-4xl);color:var(--color-ink-400);font-weight:700}.photo-actions{gap:var(--space-3);flex-direction:column;flex:260px;min-width:260px;display:flex}.photo-actions .btn{width:auto}.callout-box.photo-warning{align-items:center;gap:var(--space-2);background:var(--color-warning-100);color:var(--color-warning-700);border-color:#d977064d;display:flex}a.sidebar-user,a.who{color:inherit;text-decoration:none}a.sidebar-user:hover .user-name,a.who:hover b{text-decoration:underline}.pill.pill-failure{background:var(--color-warning-100);color:var(--color-warning-700);white-space:nowrap;border:1px solid #d977064d}.vitrine-grade-container{border:1px solid var(--color-slate-200);border-radius:var(--radius-sm);background:var(--color-surface);overflow:hidden}.vitrine-grade-table{text-align:left;border-collapse:collapse;width:100%;font-size:var(--text-sm)}.vitrine-grade-th{padding:var(--space-3) var(--space-4);background:var(--color-slate-50);border-bottom:1px solid var(--color-slate-200);color:var(--color-slate-500);font-weight:500}.vitrine-grade-col-day{width:25%}.vitrine-grade-th:not(.vitrine-grade-col-day){text-align:center}.vitrine-grade-tr:hover{background-color:var(--color-slate-50)}.vitrine-grade-tr:not(:last-child){border-bottom:1px solid var(--color-slate-100)}.vitrine-grade-td{padding:var(--space-3) var(--space-4)}.vitrine-grade-td-center{text-align:center}.vitrine-grade-td-disabled{background-color:#f8fafc80}.vitrine-grade-label{align-items:center;gap:var(--space-2);cursor:pointer;color:var(--color-slate-700);font-weight:500;display:flex}.vitrine-grade-checkbox{width:16px;height:16px;accent-color:var(--color-cyan-600);cursor:pointer}.vitrine-grade-checkbox:disabled{cursor:not-allowed;opacity:.5}.vitrine-avatar{border:1px solid var(--color-slate-200)}.tear-grid-location{margin-top:var(--space-5)}.tear-grid-location+.tear-grid-location{border-top:1px solid var(--color-ink-200);padding-top:var(--space-4)}.tear-grid-teacher{margin:var(--space-3) 0 var(--space-4);padding-left:var(--space-3);border-left:2px solid var(--color-ink-200)}.tear-grid-teacher h4{margin:0 0 var(--space-2);font-size:var(--text-sm)}.tear-grid-day{margin-bottom:var(--space-2)}.tear-grid-day>strong{margin-bottom:var(--space-2);font-size:var(--text-sm);display:block}.tear-shift{padding:var(--space-2);border:1px solid var(--color-ink-200);border-radius:var(--radius-md);background:var(--color-surface);flex-direction:column;gap:6px;display:flex}.tear-shift>strong{font-size:var(--text-sm)}.tear-shift .muted{font-size:var(--text-xs)}.tear-shift-off{opacity:.45;background:var(--color-paper)}.tear-seat{align-items:center;gap:6px;display:flex}.tear-seat select{height:34px;font-size:var(--text-sm)}.modal-card.modal-sm{max-width:560px}.modal-card.modal-md{max-width:780px}.modal-card.modal-lg{max-width:1040px}.modal-card.modal-xl{max-width:1280px}.modal-card.modal-sm,.modal-card.modal-md,.modal-card.modal-lg,.modal-card.modal-xl{max-height:min(88vh,940px)}.modal-head-title{align-items:center;gap:var(--space-3);min-width:0;display:flex}.modal-head-title h3{overflow-wrap:anywhere;min-width:0}.modal-head-title h3.tone-danger{color:var(--color-error-700)}.modal-head-title h3.tone-warn{color:var(--color-warning-700)}.modal-head-icon{border-radius:var(--radius-sm);background:var(--color-ink-100);width:36px;height:36px;color:var(--color-ink-700);flex:none;justify-content:center;align-items:center;display:inline-flex}.modal-head-icon.tone-danger{background:var(--color-error-100);color:var(--color-error-700)}.modal-head-icon.tone-warn{background:var(--color-warning-100);color:var(--color-warning-700)}.modal-close:disabled{opacity:.4;cursor:not-allowed}.modal-body-cols{gap:var(--space-4) var(--space-5);grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;display:grid}.modal-body-cols>.modal-span-2{grid-column:1/-1}@media (width<=860px){.modal-body-cols{grid-template-columns:1fr}}.modal-panel{background:var(--color-paper);border:1px solid var(--color-ink-100);border-radius:var(--radius-md);padding:var(--space-4);gap:var(--space-2);flex-direction:column;display:flex}.modal-panel-row{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.modal-panel-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-500);font-size:11px}.modal-foot .modal-foot-spacer{margin-right:auto}.actions-trigger{min-width:34px;height:34px;padding:0 var(--space-2);border:1px solid var(--color-ink-200);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink-700);cursor:pointer;font-size:var(--text-xs);justify-content:center;align-items:center;gap:6px;font-weight:600;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.actions-trigger:hover:not(:disabled){background:var(--color-ink-100);border-color:var(--color-ink-300);color:var(--color-ink-900)}.actions-trigger.is-open{background:var(--color-ink-900);border-color:var(--color-ink-900);color:var(--color-surface)}.actions-trigger:disabled{opacity:.45;cursor:not-allowed}.actions-menu{z-index:60;width:248px;padding:var(--space-2);background:var(--color-surface);border:1px solid var(--color-ink-200);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);flex-direction:column;gap:2px;animation:.12s ease-out modal-fade;display:flex;position:fixed}.actions-menu.drop-up{transform:translateY(-100%)}.actions-menu:focus{outline:none}.actions-menu-item{align-items:flex-start;gap:var(--space-3);width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--color-ink-800);cursor:pointer;text-align:left;font-size:var(--text-sm);font-weight:600;line-height:var(--lh-sm);background:0 0;border:none;display:flex}.actions-menu-item.separated{margin-top:var(--space-2);border-top:1px solid var(--color-ink-100);padding-top:var(--space-3)}.actions-menu-item:hover:not(:disabled),.actions-menu-item.is-active:not(:disabled){background:var(--color-ink-100)}.actions-menu-item:disabled{opacity:.4;cursor:not-allowed}.actions-menu-item.tone-danger{color:var(--color-error-700)}.actions-menu-item.tone-danger:hover:not(:disabled),.actions-menu-item.tone-danger.is-active:not(:disabled){background:var(--color-error-100)}.actions-menu-item.tone-warn{color:var(--color-warning-700)}.actions-menu-item.tone-warn:hover:not(:disabled),.actions-menu-item.tone-warn.is-active:not(:disabled){background:var(--color-warning-100)}.actions-menu-item.tone-primary{color:var(--color-cyan-600)}.actions-menu-icon{flex:none;margin-top:1px;display:inline-flex}.actions-menu-text{flex-direction:column;gap:1px;min-width:0;display:flex}.actions-menu-hint{font-size:var(--text-xs);color:var(--color-ink-500);font-weight:400;line-height:var(--lh-xs)}table.report{min-width:860px}table.report th.col-actions,table.report td.col-actions{white-space:nowrap;text-align:right;width:1%}table.report td.col-actions>.actions-cell{justify-content:flex-end;gap:var(--space-2);display:flex}table.report th.col-tight,table.report td.col-tight{white-space:nowrap;width:1%}table.report td .cell-strong{color:var(--color-ink-900);font-weight:600}table.report td .cell-sub{font-size:var(--text-xs);color:var(--color-ink-500);line-height:var(--lh-xs);display:block}@media (width>=900px){.shell.wide .page{max-width:1600px}.shell.wide table.report th{padding:var(--space-2) var(--space-3)}.shell.wide table.report td{padding:var(--space-3)}.shell.wide table.report td:first-child,.shell.wide table.report th:first-child{padding-left:var(--space-4)}.shell.wide table.report td:last-child,.shell.wide table.report th:last-child{padding-right:var(--space-4)}}.modal-backdrop.is-stacked{z-index:110}.modal-body.loc-qr-body{text-align:center;align-items:center}.modal-head-copy{flex-direction:column;gap:4px;min-width:0;display:flex}.modal-head-badges{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.modal-head-sub{font-size:var(--text-xs);color:var(--color-ink-500);line-height:var(--lh-xs)}.modal-foot:has(.modal-foot-actions){justify-content:space-between}.modal-foot-actions{gap:var(--space-2);display:flex}.modal-body.cal-event-modal-body{gap:var(--space-4)}.modal-head-actions{align-items:center;gap:var(--space-3);flex:none;display:flex}.modal-body.dossier-modal-scroll{padding:var(--space-5) var(--space-4);background:var(--color-slate-200)}.table-responsive,.table-wrap{overscroll-behavior-inline:contain;overflow-x:auto}.table-wrap>table,table.data-table{border-collapse:collapse;width:100%}.table-wrap>table thead th,table.data-table thead th{text-align:left;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-500);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-ink-100);background:var(--color-paper);white-space:nowrap;font-size:11px}.table-wrap>table td,table.data-table td{padding:var(--space-3);font-size:var(--text-sm);line-height:var(--lh-sm);border-bottom:1px solid var(--color-ink-100);vertical-align:middle}.table-wrap>table tbody tr:hover,table.data-table tbody tr:hover{background:var(--color-paper)}table.data-table td.empty-state{text-align:center;padding:var(--space-6);color:var(--color-ink-500)}th.col-actions,td.col-actions{white-space:nowrap;text-align:right;width:1%}.social-login{gap:var(--space-3);margin-top:var(--space-4);flex-direction:column;display:flex}.social-login-divider{align-items:center;gap:var(--space-3);color:var(--color-ink-500);font-size:var(--text-sm);display:flex}.social-login-divider:before,.social-login-divider:after{content:"";background:var(--color-ink-200,var(--color-ink-300));flex:1;height:1px}.social-btn-slot{flex-direction:column;display:flex}.social-btn-slot>div>div{margin:0 auto}.btn-social-apple{color:#fff;background:#000;border:none}.btn-social-apple:hover:not(:disabled){background:#1a1a1a}.social-login-note{font-size:var(--text-xs);color:var(--color-ink-500);text-align:center}
