:root{font-family:Manrope,'Segoe UI',Arial,sans-serif;color:#183049;background:#f5f7f9;--ink:#0e223a;--muted:#6b7d8d;--line:#e2e9ec;--teal:#0aa8a5;--orange:#f4a167;--paper:#fff}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:radial-gradient(circle at 85% 17%,#e1f4f2 0,transparent 27%),#f5f7f9}button,input,select,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #75d8d3;outline-offset:2px}[hidden]{display:none!important}
.top{height:76px;background:#ffffffed;color:var(--ink);display:flex;align-items:center;justify-content:space-between;gap:22px;padding:11px max(30px,calc((100vw - 1660px)/2));position:sticky;top:0;z-index:5;box-shadow:0 1px 0 #dce8e9,0 8px 26px #17314b0b;backdrop-filter:blur(18px)}.brand{display:flex;align-items:center;gap:12px;white-space:nowrap}.brand strong{font-size:20px;font-weight:800;letter-spacing:.06em;line-height:1}.brand-accent{color:var(--teal)}.brand small{display:block;font-size:9px;letter-spacing:.19em;color:#78909c;font-weight:800;margin-top:6px}.logo{display:grid;place-items:center;border-radius:13px;background:var(--ink);color:#65ded0;width:44px;height:44px;box-shadow:0 7px 16px #122b4650}.logo svg{width:30px;height:30px}.topactions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.save{font-size:11px;font-weight:800;color:#258775;margin-right:13px;white-space:nowrap}.btn{border-radius:10px;border:1px solid transparent;padding:11px 15px;font-size:12px;font-weight:800;white-space:nowrap;transition:transform .18s,background .18s,box-shadow .18s}.btn:hover{transform:translateY(-2px)}.primary{background:#12aaa5;color:#fff;box-shadow:0 7px 18px #0ca6a43f}.primary:hover{background:#078e8d;box-shadow:0 9px 21px #0ca6a45d}.light{background:#f2f6f7;color:#324f5c;border-color:#e1e9ed}.light:hover{background:#e8f5f3}.outline{background:#fff;color:#1f5860;border-color:#d5e5e5}.outline:hover{background:#eff9f8}.danger{color:#b4474c}
main{max-width:1710px;margin:auto;padding:24px 30px 30px}.hero{min-height:362px;border-radius:24px;background:linear-gradient(113deg,#0d2138 0%,#122f45 57%,#0b494e 100%);position:relative;overflow:hidden;color:white;display:grid;grid-template-columns:1fr minmax(360px,530px);gap:32px;padding:45px 55px;box-shadow:0 21px 37px #122b421f}.hero:before{content:'';position:absolute;inset:0;background-image:linear-gradient(#b0fcfc0b 1px,transparent 1px),linear-gradient(90deg,#b0fcfc0b 1px,transparent 1px);background-size:35px 35px;mask-image:linear-gradient(90deg,transparent 28%,black)}.hero:after{content:'';position:absolute;width:540px;height:540px;border:1px solid #b6ffff1c;border-radius:50%;top:-300px;right:-75px;box-shadow:0 0 0 70px #b6ffff08,0 0 0 140px #b6ffff05}.hero-copy{position:relative;z-index:1;align-self:center}.eyebrow,.overline{display:inline-flex;align-items:center;gap:9px;font-size:10px;font-weight:800;letter-spacing:.17em}.eyebrow{color:#97e6d9}.eyebrow i{width:7px;height:7px;border-radius:50%;background:#57dcc3;box-shadow:0 0 0 5px #57dcc326;animation:pulse 2.6s infinite}.hero h1{font-size:clamp(35px,3.5vw,62px);line-height:1.13;letter-spacing:-.045em;margin:21px 0 16px;font-weight:800}.hero h1 em{font-style:normal;color:#79ded2}.hero-copy>p{max-width:510px;color:#bbd1d7;font-size:14px;line-height:1.75;margin:0}.hero-actions{display:flex;align-items:center;gap:18px;margin-top:27px}.hero-actions .btn{font-size:14px;padding:14px 19px}.hero-actions .btn span{padding-left:17px;opacity:.78}.hero-hint{font-size:11px;color:#92b9bf}.hero-art{position:relative;z-index:1;align-self:center;height:260px;border:1px solid #7adbd542;border-radius:20px;background:linear-gradient(145deg,#27445499,#1436488a);box-shadow:inset 0 1px 0 #ffffff18,0 20px 38px #051a2e35;overflow:hidden}.art-caption,.art-foot{position:absolute;left:25px;right:25px;font-size:9px;font-weight:800;letter-spacing:.14em;color:#87b9b8}.art-caption{top:18px}.wires{position:absolute;inset:0;width:100%;height:100%}.wires path{stroke:#49d6c6;stroke-width:2;stroke-dasharray:5 6;opacity:.75}.wires circle{fill:#75e1d2}.art-room,.art-rack{position:absolute;border-radius:12px;background:#0e2538;border:1px solid #72d2ca54;box-shadow:0 12px 25px #051b2d77}.art-room{left:27px;top:67px;width:85px;height:120px;padding:13px 13px;display:grid;grid-template-columns:1fr;gap:4px}.art-room span,.art-rack span{font-size:8px;color:#7dbab8;letter-spacing:.1em;font-weight:800;white-space:nowrap}.art-room b{font-size:12px;color:#d8f8f4;line-height:1.3}.art-rack{right:21px;top:62px;width:190px;height:130px;padding:15px}.rack-row{display:flex;gap:8px;margin-top:12px}.rack-row i{width:16px;height:13px;border:1px solid #6c9caa;border-radius:2px;background:#26495a;box-shadow:inset 0 -3px 0 #102b3e}.rack-row i:nth-child(2),.rack-row i:nth-child(5){border-color:#6be0cd;background:#285b62}.rack-leds{display:flex;gap:5px;align-items:center;margin-top:13px}.rack-leds i{width:5px;height:5px;border-radius:50%;background:#6ce4c8}.rack-leds i:nth-child(2){background:#f6ad73}.rack-leds small{margin-left:auto;color:#95c5bf;font-size:7px;letter-spacing:.14em}.art-foot{bottom:15px;display:grid;grid-template-columns:1fr auto;gap:8px}.art-foot strong{color:#c8f4ea;font-size:11px}.art-meter{grid-column:1/-1;height:4px;border-radius:10px;background:#ffffff25;overflow:hidden}.art-meter i{display:block;height:100%;width:0;background:linear-gradient(90deg,#32d3c0,#f5a66f);transition:width .45s}
.notice{background:#e8f6f3;border:1px solid #cfece6;color:#3d6969;padding:11px 16px;border-radius:12px;margin:19px 0;font-size:11px;display:flex;align-items:center;gap:12px}.notice b{color:#235558}.notice-icon{width:24px;height:24px;display:grid;place-items:center;background:#cceee7;color:#168d80;border-radius:8px;font-size:17px;flex:none}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0 36px}.stat,.box,.roomcard{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 8px 22px #19374d08}.stat{min-height:139px;padding:17px 20px;position:relative;overflow:hidden}.stat:before{content:'';width:3px;height:45px;position:absolute;left:0;top:22px;background:var(--teal);border-radius:0 4px 4px 0}.stat-2:before{background:#f4a167}.stat-3:before{background:#8c88d8}.stat-4:before{background:#74b0d1}.stat .stat-index{display:block;color:#9baaae;font-size:9px;letter-spacing:.13em;font-weight:800;margin-bottom:9px}.stat b{font-size:34px;line-height:1.25;display:block;color:#183448;letter-spacing:-.07em}.stat span:not(.stat-index){font-size:11px;color:#69808a;font-weight:700}.stat-glyph{position:absolute;right:18px;bottom:19px;width:41px;height:41px;display:grid;place-items:center;border-radius:12px;background:#e4f6f2;color:#26a297;font-size:25px;font-style:normal;font-weight:500}.stat-2 .stat-glyph{background:#fff2e6;color:#e89557}.stat-3 .stat-glyph{background:#efedfb;color:#918bd1}.stat-4 .stat-glyph{background:#eaf3fa;color:#80aed3}.workspace-title,.content-head,.sectionhead{display:flex;align-items:center;justify-content:space-between;gap:16px}.workspace-title{margin-bottom:16px}.overline{color:#149b98}.workspace-title h2{margin:4px 0 0;font-size:23px;letter-spacing:-.04em;color:#183348}.workspace-aside{font-size:11px;color:#8196a0}.tabs{display:flex;gap:6px;overflow:auto;padding:6px;background:#ecf1f2;border-radius:13px;margin-bottom:17px;width:max-content;max-width:100%}.tabs button{padding:11px 19px;border:0;background:none;color:#68818d;font-size:12px;font-weight:800;border-radius:9px;white-space:nowrap;transition:background .18s,color .18s}.tabs button:hover{color:#178c87}.tabs button.active{color:#087d79;background:#fff;box-shadow:0 2px 8px #16344912}.view{display:none;background:#fff;border:1px solid #e2eaed;border-radius:17px;padding:21px;min-height:280px;box-shadow:0 9px 25px #19384d07}.view.active{display:block}.content-head{margin-bottom:18px}.content-head h2,.sectionhead h2{margin:0 0 3px;font-size:17px;letter-spacing:-.035em;color:#1b384b}.content-head p,.sectionhead p{color:#8295a0;margin:0;font-size:11px}.content-mark{font-size:10px;letter-spacing:.13em;color:#9babb1;font-weight:800}.toolbar{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:14px}.toolbar input{min-width:290px;flex:1}.toolbar input,.toolbar select,.sectionhead select,dialog input,dialog select,dialog textarea{border:1.5px solid #d8e3e7;border-radius:9px;padding:10px 12px;background:#fff;color:#233f4f;font-size:12px}.toolbar input:focus,.toolbar select:focus,dialog input:focus,dialog select:focus,dialog textarea:focus{border-color:#25b1aa}.toolbar input::placeholder,dialog input::placeholder,dialog textarea::placeholder{color:#a0adb6}.tablewrap{overflow:auto;border:1px solid #e3ebee;border-radius:11px;background:#fff}table{width:100%;border-collapse:collapse;min-width:880px}th{text-align:left;background:#f0f6f5;color:#607a81;font-size:10px;text-transform:uppercase;letter-spacing:.07em}td,th{padding:14px 14px;border-bottom:1px solid #ebeff1}tbody tr:nth-child(even){background:#f8fbfa}tbody tr:hover{background:#edf9f6}td{font-size:12px}td b{color:#223e50}td small,.muted{display:block;color:#81939e;margin-top:3px;font-size:11px}.badge{display:inline-block;padding:5px 10px;border-radius:16px;background:#e0f6ed;color:#21805c;font-size:10px;font-weight:800}.badge.Reserva{background:#fff1dd;color:#a96d23}.badge.Inativa{background:#eff1f4;color:#74818e}.icon{background:transparent;border:0;color:#168f8a;font-size:20px;border-radius:7px;padding:4px 7px}.icon:hover{background:#e7f6f3}.icon.danger{color:#c15359}.icon.danger:hover{background:#fff0f0}.empty{text-align:center;padding:34px;color:#7d929a}.empty span{display:block;font-size:39px;color:#44b8ac}.empty b{display:block;font-size:15px;color:#2b4954}.empty p{font-size:11px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:14px;margin-top:18px}.roomcard{padding:17px;border-top:3px solid #4fbfb3}.roomcard h3{margin:0 0 5px;font-size:15px}.roomcard p{color:#708994;font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere}.roomcard .count{background:#e6f6f2;color:#168b7d;border-radius:12px;padding:5px 10px;font-size:10px;font-weight:800;display:inline-block}.rowactions{display:flex;gap:4px;justify-content:flex-end}.portgrid{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:10px;margin-top:20px;padding:17px;border:1px solid #e4ecee;border-radius:13px;background:repeating-linear-gradient(0deg,#f5f8f9,#f5f8f9 54px,#edf2f3 55px)}.port{border:1px solid #cfdcdf;background:#fff;border-radius:9px;min-height:83px;padding:11px;text-align:left;overflow:hidden;position:relative;box-shadow:0 3px 5px #1b364808;transition:transform .18s,border-color .18s,box-shadow .18s}.port:before{content:'';position:absolute;right:9px;top:10px;width:6px;height:6px;background:#c6d4d8;border-radius:50%}.port:hover{transform:translateY(-3px);box-shadow:0 7px 13px #183c4b22}.port.occupied{background:#eaf8f4;border-color:#66c7b9}.port.occupied:before{background:#20ae92;box-shadow:0 0 0 3px #20ae9227}.port strong{display:block;font-size:15px;color:#1d4854}.port span{display:block;font-size:10px;color:#6d8990;margin-top:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend{display:flex;gap:20px;margin:17px 0 0;font-size:11px;color:#748992}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.dot.occupied{background:#2cae9a}.dot.available{background:#c6d4d8}.equipment{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-top:18px}.box{padding:18px}.box h3{margin:0;font-size:15px}.equiprow{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #edf1f2;padding:12px 0}.equiprow:first-child{margin-top:13px}.equiprow small{display:block;color:#78909a;font-size:11px;margin-top:3px}footer{text-align:center;color:#98a8ae;font-size:10px;letter-spacing:.04em;margin:34px 0 14px}
dialog{width:min(640px,calc(100% - 24px));border:1px solid #dce9e8;border-radius:18px;padding:24px;box-shadow:0 28px 65px #0b293e60;max-height:90vh;background:#fff}dialog::backdrop{background:#0b2637a3;backdrop-filter:blur(4px)}.modalhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.modalhead h2{margin:0;font-size:21px;color:#173747}dialog form{display:grid;gap:14px}dialog label{display:grid;gap:6px;font-size:12px;font-weight:800;color:#45616c}dialog label input,dialog label select,dialog label textarea{width:100%;font-weight:500}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.actions{display:flex;justify-content:flex-end;gap:9px;margin-top:5px}.error{background:#ffeded;color:#b73c45;padding:10px;border-radius:9px;margin:0;font-size:12px}.toast{position:fixed;bottom:20px;right:20px;background:#133a44;color:white;border-radius:10px;padding:12px 18px;z-index:12;box-shadow:0 6px 20px #112d3755;font-size:12px}body.saving main,body.saving .topactions{pointer-events:none;opacity:.68}.login-dialog{width:min(430px,calc(100% - 24px))}.login-dialog::backdrop{background:#0d2736f2}.login-dialog form{gap:15px}.login-dialog .login-brand{display:flex;gap:12px;align-items:center}.login-brand strong{font-size:18px;letter-spacing:.1em}.login-brand small{display:block;color:#8199a1;font-size:9px;letter-spacing:.12em}.login-dialog h2{margin:15px 0 0}.login-dialog p:not(.error){margin:0;color:#647c87;font-size:12px}.login-dialog .btn{width:100%}body.pending main{visibility:hidden}body.pending .topactions{visibility:hidden}
@keyframes pulse{50%{box-shadow:0 0 0 8px #57dcc314}}@media(max-width:1120px){.hero{grid-template-columns:1fr 410px;padding:38px}.hero-art{transform:scale(.9);transform-origin:center right}.portgrid{grid-template-columns:repeat(6,minmax(0,1fr))}}@media(max-width:850px){.top{height:auto;min-height:72px;position:static;flex-wrap:wrap;padding:12px 20px}.topactions{width:100%;justify-content:flex-start}.save{width:100%}.hero{grid-template-columns:1fr;min-height:unset;padding:36px}.hero-art{transform:none;width:min(100%,510px)}.stats{grid-template-columns:repeat(2,1fr)}.portgrid{grid-template-columns:repeat(4,minmax(0,1fr))}.equipment{grid-template-columns:1fr}}@media(max-width:520px){main{padding:13px}.top{padding:12px}.topactions .btn{font-size:10px;padding:8px}.hero{padding:27px 23px;border-radius:18px}.hero h1{font-size:39px}.hero-copy>p{font-size:12px}.hero-hint{display:none}.hero-art{height:205px}.art-caption{left:16px}.art-room{left:15px;top:50px}.art-rack{right:12px;top:48px;transform:scale(.76);transform-origin:top right}.art-foot{left:16px;right:16px}.wires{width:120%;transform:translateX(-3%)}.stats{gap:9px;margin-bottom:27px}.stat{min-height:116px;padding:13px}.stat b{font-size:28px}.stat-glyph{width:30px;height:30px;font-size:19px;right:11px;bottom:12px}.workspace-title{display:block}.workspace-aside{display:none}.workspace-title h2{font-size:20px}.notice{font-size:10px}.tabs{width:100%}.tabs button{font-size:11px;padding:10px 13px}.view{padding:14px}.content-head,.sectionhead{align-items:flex-start;flex-wrap:wrap}.toolbar>*{flex:1}.toolbar input{min-width:100%}.portgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding:9px}.port{min-height:74px;padding:9px}.formgrid{grid-template-columns:1fr}dialog{padding:17px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media print{body{background:white}.topactions,.tabs,.toolbar,.hero-actions,.hero-art,.notice,footer,.rowactions,.sectionhead .btn,.workspace-title{display:none!important}.top{position:static;box-shadow:none}.hero{box-shadow:none;background:white;color:#15323d;padding:10px;min-height:0}.hero h1{font-size:20px;margin:0}.hero h1 em{color:#15323d}.hero p,.eyebrow{display:none}.view{display:none!important;border:0;box-shadow:none}#connections{display:block!important}.tablewrap{overflow:visible}table{min-width:0}.stats{grid-template-columns:repeat(4,1fr);margin:10px 0}.stat{min-height:65px;padding:8px}.stat b{font-size:18px}.stat-glyph,.stat-index{display:none!important}}
/* Rack principal e cadastros. */
.monitor-trigger{background:#102d3c;color:#dafff8;border-color:#2b5961}.monitor-trigger:hover{background:#1b4851}.hero-monitor{background:#ffffff13;color:#d2faf1;border-color:#a7eee261;padding:14px 17px;font-size:13px}.hero-monitor:hover{background:#ffffff26}
body.monitor-open{overflow:hidden}.monitor{position:fixed;inset:0;z-index:30;overflow:auto;background:#081926;color:#e8f6f7;font-family:Manrope,'Segoe UI',Arial,sans-serif;background-image:radial-gradient(circle at 89% -12%,#12565766,transparent 36%),linear-gradient(135deg,#091d2c,#0c2331 60%,#102c39)}.monitor:fullscreen{width:100vw;height:100vh}.monitor-head{position:sticky;top:0;z-index:20;isolation:isolate;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:17px 28px;background:#091c2bef;backdrop-filter:blur(16px);border-bottom:1px solid #76bcb12c;box-shadow:0 12px 30px #0002}.monitor-brand{display:flex;align-items:center;gap:13px}.monitor-logo{width:43px;height:43px;display:grid;place-items:center;border-radius:13px;color:#89e9d8;background:#14515a;font-size:25px}.monitor-brand small{display:block;color:#70b9b4;font-size:9px;font-weight:800;letter-spacing:.19em}.monitor-brand h2{margin:3px 0 0;color:#f4fffd;font-size:20px;letter-spacing:-.04em}.monitor-controls{display:flex;align-items:center;gap:9px}.monitor-time{display:grid;justify-items:end;margin-right:10px}.monitor-time strong{font-size:19px;font-variant-numeric:tabular-nums;letter-spacing:.08em}.monitor-time small{font-size:9px;color:#91b4b7}.monitor-control,.monitor-close{border:1px solid #51888a70;background:#ffffff0e;color:#bce8e2;border-radius:9px;font-size:11px;padding:10px 13px}.monitor-control:hover,.monitor-close:hover{background:#27515a}.monitor-close{background:#1a6e6c;color:#fff;border-color:#398a83}.monitor-content{max-width:2300px;margin:auto;padding:18px 25px 25px}.monitor-summary{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:17px}.monitor-label{color:#69cabb;font-size:9px;letter-spacing:.16em;font-weight:800}.monitor-summary p{font-size:11px;color:#98b9bc;margin:6px 0 0}.monitor-metrics{display:flex;gap:8px}.monitor-metrics>div{min-width:116px;display:grid;gap:1px;padding:9px 14px;background:#ffffff0c;border:1px solid #6dafa62e;border-radius:10px}.monitor-metrics strong{font-size:18px;line-height:1.25;color:#d6fdf7;letter-spacing:-.04em}.monitor-metrics strong small{font-size:11px;color:#79b5b2}.monitor-metrics span{color:#85aaa9;font-size:8px;font-weight:800;letter-spacing:.07em}.monitor-message{background:#533e2544;border:1px solid #dca06177;color:#ffdcaa;padding:10px 13px;border-radius:8px;font-size:11px;margin-bottom:14px}.monitor-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;align-items:stretch}.monitor-device{min-width:0;background:linear-gradient(145deg,#153040,#112b3a);border:1px solid #58817f75;border-radius:14px;padding:14px;box-shadow:0 8px 23px #0003;display:flex;flex-direction:column}.monitor-device-head{display:flex;justify-content:space-between;gap:8px;align-items:center;border-bottom:1px solid #86b8b032;padding-bottom:11px;margin-bottom:12px}.monitor-device-title{display:flex;align-items:center;gap:10px;min-width:0}.monitor-device-icon{display:grid;place-items:center;border-radius:8px;width:31px;height:31px;flex:none;background:#244e56;color:#a4e4d7;font-size:19px}.monitor-device-title small{display:block;color:#76aba9;font-size:8px;letter-spacing:.13em;font-weight:800}.monitor-device-title h3{color:#f4fffb;margin:1px 0 0;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.monitor-device-count{text-align:right;flex:none}.monitor-device-count b{display:block;color:#a4f2df;font-size:14px;font-variant-numeric:tabular-nums}.monitor-device-count span{display:block;color:#75a6a6;font-size:7px;font-weight:800;letter-spacing:.09em}.monitor-ports{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;flex:1}.monitor-port{min-width:0;min-height:43px;position:relative;display:grid;align-content:center;gap:1px;text-align:left;border-radius:6px;padding:5px 6px;background:#193544;border:1px solid #4a717982;color:#9ebbbd;transition:background .16s,border-color .16s,transform .16s}.monitor-port:before{content:'';position:absolute;right:5px;top:6px;width:5px;height:5px;background:#668087;border-radius:50%}.monitor-port.used{background:#184a4b;border-color:#2e9a8c;color:#e0fff4}.monitor-port.used:before{background:#66edbd;box-shadow:0 0 8px #66edbd}.monitor-port.reserved{border-color:#b48a4a;background:#574a344e}.monitor-port.reserved:before{background:#ffbb6d}.monitor-port.inactive{border-color:#73818d;background:#37414d}.monitor-port.inactive:before{background:#a9b5bf}.monitor-port:hover,.monitor-port:focus-visible{transform:translateY(-2px);border-color:#a5f5df;background:#22616a;z-index:1}.monitor-port-number{font-size:11px;font-weight:800;letter-spacing:.05em;font-variant-numeric:tabular-nums}.monitor-port-name{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.15}.monitor-port small{font-size:8px;color:#80acaa;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.monitor-switch .monitor-ports{grid-template-columns:repeat(8,minmax(0,1fr))}.monitor-switch .monitor-port{padding:4px;min-height:38px}.monitor-switch .monitor-port small{display:none}.monitor-no-devices{grid-column:1/-1;padding:35px;text-align:center;color:#9bc7c5}.monitor-bottom{display:flex;gap:17px;align-items:center;color:#9cbabc;font-size:10px;margin-top:13px}.monitor-bottom>span:last-child{margin-left:auto}.monitor-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}.monitor-dot.used{background:#65e4ba}.monitor-dot.free{background:#617d83}.monitor-detail{position:fixed;z-index:5;right:20px;top:90px;width:min(350px,calc(100vw - 32px));max-height:calc(100vh - 105px);overflow:auto;border-radius:15px;background:#f8fbfa;color:#1c3c48;box-shadow:0 22px 70px #0009;border:1px solid #a4dad1}.monitor-detail-head{display:flex;justify-content:space-between;align-items:center;padding:14px 17px;font-size:9px;letter-spacing:.13em;font-weight:800;color:#51837f;border-bottom:1px solid #d7e8e6}.monitor-detail-close{font-size:22px;background:transparent;border:0;color:#527575}.monitor-detail-id{padding:17px;background:#e4f5f0;border-bottom:1px solid #c9e2da}.monitor-detail-id span{font-size:9px;font-weight:800;letter-spacing:.14em;color:#37887e}.monitor-detail-id strong{font-size:39px;display:block;line-height:1.2;color:#174e53}.monitor-detail-id p{margin:1px 0 0;font-size:12px}.monitor-detail-row{display:flex;justify-content:space-between;gap:16px;padding:11px 17px;border-bottom:1px solid #e3eceb;font-size:11px}.monitor-detail-row span{color:#6c868a;flex:none}.monitor-detail-row strong{text-align:right;overflow-wrap:anywhere;white-space:pre-wrap}.monitor-detail-empty{font-size:12px;color:#71898c;padding:12px 17px}
@media(max-width:1600px){.monitor-content{padding:14px}.monitor-board{gap:9px}.monitor-device{padding:11px}.monitor-ports{gap:4px}.monitor-port{min-height:39px;padding:4px}.monitor-port-name{font-size:8px}.monitor-port small{font-size:7px}.monitor-switch .monitor-port{min-height:35px}}
@media(max-width:1100px){.monitor-board{grid-template-columns:repeat(2,minmax(0,1fr))}.monitor-summary{align-items:flex-start;flex-direction:column}.monitor-metrics{width:100%;flex-wrap:wrap}.monitor-metrics>div{flex:1}}
@media(max-width:700px){.monitor-head{padding:11px;align-items:flex-start}.monitor-brand h2{font-size:15px}.monitor-logo{display:none}.monitor-controls{gap:5px;flex-wrap:wrap;justify-content:flex-end}.monitor-time{width:100%;margin:0}.monitor-time strong{font-size:14px}.monitor-time small{font-size:8px}.monitor-control,.monitor-close{padding:7px;font-size:9px}.monitor-content{padding:10px}.monitor-board{grid-template-columns:1fr}.monitor-summary p{font-size:10px}.monitor-metrics{display:grid;grid-template-columns:1fr 1fr}.monitor-metrics>div{min-width:0}.monitor-ports{grid-template-columns:repeat(6,minmax(0,1fr))}.monitor-bottom{flex-wrap:wrap}.monitor-bottom>span:last-child{margin:0;width:100%}.monitor-detail{top:98px;right:8px}}
@media print{.monitor{display:none!important}}
/* Rack em fileiras, conforme o esboço A–C / Cisco / D–F / ramais. */
.monitor-board{display:grid;grid-template-columns:1fr;gap:5px;padding:10px;background:#07131c;border:1px solid #48616b;border-radius:15px;box-shadow:inset 0 0 0 4px #101f28,0 20px 40px #0005;overflow-x:auto}.rack-device{min-width:1080px;display:grid;grid-template-columns:18px 125px minmax(0,1fr) 18px;align-items:center;gap:8px;padding:5px 8px;min-height:58px;border-radius:5px;border:1px solid #436477;background:linear-gradient(180deg,#284255 0%,#102534 24%,#112633 74%,#0b1925);box-shadow:inset 0 1px 0 #8fc2d445,0 2px 5px #0008}.rack-device.rack-switch,.rack-device.rack-ramais{background:linear-gradient(180deg,#334048,#0b1015 24%,#11191d 75%,#070b0e);border-color:#404f56}.rack-device.rack-switch{min-height:88px}.rack-device.rack-ramais{min-height:88px}.rack-ear{height:100%;display:grid;place-items:center}.rack-ear i{display:block;width:9px;height:10px;background:#d4dce0;border:2px solid #6e8c98;border-radius:3px;box-shadow:inset 0 0 0 2px #354c59}.rack-title{min-width:0;line-height:1.2}.rack-title small{display:block;font-size:8px;color:#8cb3c5;letter-spacing:.12em;font-weight:800}.rack-title strong{display:block;color:#f4fbfd;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rack-title span{display:block;font-size:8px;color:#a0b6ba;margin-top:3px}.rack-switch .rack-title small{color:#8bc6b1}.rack-ramais .rack-title small{color:#dccb9b}.rack-ports{min-width:0;display:grid;grid-template-columns:repeat(var(--rack-columns),minmax(0,1fr));gap:3px;align-items:stretch}.rack-jack{min-width:0;min-height:37px;padding:3px 1px;border:1px solid #5f8390;border-radius:3px;background:#091925;color:#dce8e8;display:grid;justify-items:center;align-content:center;gap:1px;position:relative;transition:transform .14s,box-shadow .14s}.rack-jack:hover,.rack-jack:focus-visible{transform:scale(1.17);z-index:2;box-shadow:0 0 0 2px #fff,0 8px 15px #000a}.jack-mouth{display:block;width:20px;max-width:80%;height:12px;background:linear-gradient(180deg,#040b10 0 72%,#102630 72%);border:2px solid #35505a;border-bottom-width:3px;border-radius:2px}.jack-number{font-size:8px;font-weight:800;line-height:1;letter-spacing:.03em;font-variant-numeric:tabular-nums}.monitor-board::-webkit-scrollbar{height:10px}.monitor-board::-webkit-scrollbar-thumb{background:#496a70;border-radius:10px}.monitor-board::-webkit-scrollbar-track{background:#0b1e26}
@media(max-width:700px){.monitor-board{padding:7px}.rack-device{min-width:1080px}.monitor-summary{min-width:0}}
/* Rack principal: portas pretas, seleção de origem e destino. */
.rack-source,.rack-destination,.rack-source.rack-linked,.rack-destination.rack-linked,.rack-source.rack-unlinked,.rack-destination.rack-unlinked{background:#080e13;border-color:#435660;color:#e1ebed;box-shadow:inset 0 -2px 0 #263943}
.rack-source .jack-number,.rack-destination .jack-number,.rack-source.rack-linked .jack-number,.rack-destination.rack-linked .jack-number{color:#d5e1e4;font-weight:800}
.rack-source .jack-mouth,.rack-destination .jack-mouth,.rack-source.rack-linked .jack-mouth,.rack-destination.rack-linked .jack-mouth{background:#03080b;border-color:#43545b;border-bottom-color:#0c1c23;box-shadow:none}
.rack-jack.rack-linked:after{content:'';position:absolute;right:2px;top:2px;width:3px;height:3px;border-radius:50%;background:#9db1b6}
.rack-jack.rack-pending,.rack-jack.rack-pending:hover{z-index:2;transform:scale(1.12);border-color:#f7c478;background:#372c1b;box-shadow:0 0 0 2px #f4b85d,0 0 15px #f4b85d88}
.rack-jack.rack-selected,.rack-jack.rack-selected:hover{z-index:2;transform:scale(1.12);border-color:#dffff8;background:#134b4b;box-shadow:0 0 0 2px #52d9c6,0 0 17px #50d9c6bb}
.rack-jack.rack-selected .jack-number,.rack-jack.rack-pending .jack-number{color:#fff}
.rack-selection-bar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:10px;padding:11px 15px;border:1px solid #c69d5c;background:#3b301e;color:#ffddb0;border-radius:10px;font-size:12px;font-weight:700}
.rack-selection-bar button{background:#ffe2af;color:#4d3413;border:0;border-radius:8px;padding:7px 10px;font-size:11px;font-weight:800;white-space:nowrap}
.rack-selection-bar>span{flex:1;min-width:0}
.rack-selection-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap}
.rack-selection-actions #monitorDeactivatePort{background:#ac3d4d;color:#fff;box-shadow:0 3px 12px #6c182947}
.rack-selection-actions #monitorDeactivatePort:hover{background:#c04657}
.rack-selection-actions #monitorAssignExtension{background:#ffe2af;color:#4d3413}
.toast{display:flex;align-items:center;gap:15px;max-width:calc(100vw - 32px)}
.toast #toastText{display:block;white-space:nowrap;min-width:0;overflow-x:auto;scrollbar-width:thin}
.toast #toastClose{flex:none;width:27px;height:27px;display:grid;place-items:center;padding:0;border:1px solid #ffffff70;border-radius:7px;background:#ffffff19;color:inherit;font-size:22px;line-height:1}
.toast #toastClose:hover{background:#ffffff36}
.monitor .toast{left:50%;right:auto;top:50%;bottom:auto;transform:translate(-50%,-50%);width:max-content;max-width:min(1120px,calc(100vw - 36px));padding:17px 20px;border:1px solid #f7bd67;background:#593a1c;color:#fff0d6;border-radius:14px;box-shadow:0 20px 60px #000c,0 0 0 7px #ed9b473b;font-size:15px;font-weight:800;line-height:1.5;z-index:20}
.monitor .toast #toastClose{border-color:#ffdda470;background:#ffcc7840}
@media(max-width:600px){.monitor .toast{font-size:13px;padding:12px 14px;gap:9px}}
.monitor-connection{margin-top:12px;padding:10px 12px;background:#fff;border:1px solid #cde3df;border-radius:9px;font-size:12px;font-weight:800;color:#24625c;line-height:1.5}.monitor-connection span{margin:0 6px;color:#169990}
.monitor-edit{display:block;width:calc(100% - 34px);margin:16px 17px 18px;text-align:center}
@media(max-width:700px){.rack-selection-bar{align-items:flex-start;flex-direction:column}.rack-selection-actions{width:100%;justify-content:flex-end}}
/* Leitura do rack: números ampliados, luz de cadastro e identificação por equipamento. */
.rack-device{min-width:1320px;min-height:70px;grid-template-columns:18px 150px minmax(0,1fr) 18px;padding:7px 10px;gap:10px;position:relative;overflow:visible}
.rack-device.rack-switch,.rack-device.rack-ramais{min-height:102px}
.rack-panel{border-left:4px solid #53c9de;background:linear-gradient(180deg,#2a4d5d,#122b38 27%,#0d202a 80%)}
.rack-device.rack-switch{border-left:4px solid #a99bff;background:linear-gradient(180deg,#3b3855,#1b2036 27%,#131b29 80%)}
.rack-device.rack-ramais{border-left:4px solid #f2b976;background:linear-gradient(180deg,#54402e,#2b251d 27%,#1b1b19 80%)}
.rack-title small{display:inline-block;font-size:10px;line-height:1.1;letter-spacing:.1em;padding:5px 8px;border-radius:5px;background:#174d5b;color:#a3eff4}
.rack-switch .rack-title small{background:#403966;color:#e0d8ff}
.rack-ramais .rack-title small{background:#624529;color:#ffe0a8}
.rack-title strong{font-size:20px;margin-top:5px}
.rack-title span{font-size:10px;margin-top:5px}
.rack-ports{gap:4px}
.rack-jack{min-height:51px;gap:3px;padding:5px 1px;border-radius:5px;transition:transform .17s ease,box-shadow .17s ease,background .17s ease;isolation:isolate}
.jack-number{font-size:13px;font-weight:900;letter-spacing:0;line-height:1.15}
.jack-mouth{width:22px;height:15px}
.rack-source .jack-number,.rack-destination .jack-number,.rack-source.rack-linked .jack-number,.rack-destination.rack-linked .jack-number{font-size:13px;font-weight:900;color:#eaf2f4}
.rack-jack.rack-linked{border-color:#53c99b;background:linear-gradient(180deg,#123b32,#0b231f);box-shadow:inset 0 -3px 0 #43bb89,0 0 9px #49d79d39}
.rack-jack.rack-linked .jack-mouth{border-color:#55a988;border-bottom-color:#75e5ad;background:linear-gradient(180deg,#06251b,#1e855b);box-shadow:inset 0 0 8px #6df3ae9c,0 0 5px #51d8998f}
.rack-jack.rack-linked .jack-number{color:#e3ffeb;text-shadow:0 0 7px #75ecad93}
.rack-jack.rack-linked:after{width:6px;height:6px;top:3px;right:3px;background:#80ffae;box-shadow:0 0 7px 3px #49db8c9c}
.rack-jack.rack-linked[data-status="Reserva"]{border-color:#d8aa59;background:linear-gradient(180deg,#45361b,#282116);box-shadow:inset 0 -3px 0 #c8994a,0 0 8px #e2b76438}
.rack-jack.rack-linked[data-status="Reserva"] .jack-mouth{border-color:#ae864c;border-bottom-color:#edba67;background:#533518;box-shadow:inset 0 0 7px #e6ac67b3}
.rack-jack.rack-linked[data-status="Reserva"]:after{background:#ffd083;box-shadow:0 0 7px 2px #e5ac65a6}
.rack-jack.rack-linked[data-status="Inativa"]{border-color:#6a7880;background:#1a2226;box-shadow:inset 0 -3px 0 #63737a}
.rack-jack.rack-linked[data-status="Inativa"] .jack-mouth{border-color:#697981;border-bottom-color:#7b9096;background:#25363b;box-shadow:none}
.rack-jack.rack-linked[data-status="Inativa"]:after{background:#9fb1b6;box-shadow:0 0 4px #9fb1b690}
.rack-jack.rack-pending,.rack-jack.rack-pending:hover{z-index:4;transform:scale(1.28);border-color:#fff5d7;background:#725323;box-shadow:0 0 0 3px #ffc76d,0 0 24px 9px #f4b85d9c}
.rack-jack.rack-selected,.rack-jack.rack-selected:hover{z-index:4;transform:scale(1.28);border-color:#fff;background:#126d70;box-shadow:0 0 0 3px #7af8e4,0 0 27px 11px #50d9c6bc}
.rack-jack.rack-selected .jack-number,.rack-jack.rack-pending .jack-number{color:#fff;font-size:14px;text-shadow:0 1px 4px #001d1b}
.rack-jack.rack-selected .jack-mouth,.rack-jack.rack-pending .jack-mouth{background:#123c3d;border-color:#d4fff7;box-shadow:inset 0 0 8px #89ffe6,0 0 7px #adfff2}
.monitor-detail{inset:0;top:0;right:0;width:100%;height:100%;max-height:none;overflow:auto;z-index:8;display:flex;align-items:center;justify-content:center;padding:20px;background:#020c14bb;border:0;border-radius:0;box-shadow:none;backdrop-filter:blur(5px)}
.monitor-detail-card{width:min(550px,100%);max-height:min(85vh,760px);overflow:auto;border-radius:18px;background:#f8fbfa;color:#1c3c48;box-shadow:0 28px 80px #000c;border:1px solid #a4dad1}
.monitor-detail-head{padding:17px 21px;font-size:11px}
.monitor-detail-id{padding:20px 23px}
.monitor-detail-id strong{font-size:50px}
.monitor-detail-row{padding:13px 23px;font-size:13px}
.monitor-detail-empty{padding:15px 23px;font-size:13px}
.monitor-edit{width:calc(100% - 46px);margin:19px 23px 23px}
@media(max-width:700px){.rack-device{min-width:1320px}.monitor-detail{padding:12px}.monitor-detail-card{max-height:90vh}.monitor-detail-id strong{font-size:42px}}
/* O foco da ligação prevalece sobre as luzes de Reserva e Inativa. */
.rack-jack.rack-linked.rack-selected,.rack-jack.rack-linked.rack-selected:hover{border-color:#fff;background:#126d70;box-shadow:0 0 0 3px #7af8e4,0 0 27px 11px #50d9c6bc}
.rack-jack.rack-linked.rack-selected .jack-mouth{background:#123c3d;border-color:#d4fff7;box-shadow:inset 0 0 8px #89ffe6,0 0 7px #adfff2}
.rack-jack.rack-linked.rack-selected:after{background:#a5fff0;box-shadow:0 0 9px 3px #68e9d2}
/* Cadastro de números de ramais sem assumir a ordem das portas. */
.monitor-controls{flex-wrap:wrap;justify-content:flex-end}
.rack-ramais .rack-jack{min-height:62px}
.jack-extension{font-size:10px;font-weight:900;line-height:1;color:#ffdba2;background:#684b26;border-radius:4px;padding:2px 3px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.rack-jack.rack-extension:not(.rack-linked){border-color:#d8a45c;box-shadow:inset 0 -3px 0 #ba8548}
.rack-jack.rack-extension:not(.rack-linked):after{content:'';position:absolute;right:3px;top:3px;width:5px;height:5px;border-radius:50%;background:#f5c477;box-shadow:0 0 6px #f5c4778c}
.rack-jack.rack-selected .jack-extension{background:#145759;color:white}
.rack-selection-bar button[hidden]{display:none}
.extensions-dialog{width:min(760px,calc(100% - 24px));max-height:96dvh}
.extensions-dialog .modalhead p{font-size:12px;line-height:1.5;color:#65818b;margin:5px 0 0}
.extensions-dialog h3{margin:0;color:#234651;font-size:16px}
#extensionBulkForm{display:grid;grid-template-columns:1fr auto;align-items:end;gap:10px;padding:14px;border:1px solid #d7eae5;background:#f2faf7;border-radius:12px;margin:15px 0}
#extensionBulkForm textarea{width:100%;min-height:62px}
#extensionBulkForm button{min-height:42px}
.extension-list{max-height:210px;overflow:auto;border:1px solid #dfe9ea;border-radius:11px;margin-bottom:17px}
.extension-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 14px;border-bottom:1px solid #e8eeef}
.extension-row:last-child{border-bottom:0}
.extension-row:nth-child(even){background:#f5faf9}
.extension-row strong{display:block;color:#234450;font-size:14px}
.extension-row span{display:block;color:#718994;font-size:11px;margin-top:2px}
.extension-empty{padding:15px;color:#718994;font-size:12px}
#extensionForm{border-top:1px solid #e0e9eb;padding-top:14px}
@media(max-width:700px){#extensionBulkForm{grid-template-columns:1fr}.monitor-head{align-items:flex-start}.monitor-controls{gap:5px}.monitor-control,.monitor-close{font-size:10px;padding:8px}}
.extension-target{padding:10px 13px;margin:0 0 10px;background:#fff0d9;border:1px solid #e4c288;border-radius:9px;color:#705023;font-size:12px;font-weight:800}
.monitor-release{background:#fff2ed;color:#a34235;border:1px solid #eab7ab}
.monitor-release:hover{background:#ffe3dc}
.monitor-detail-card .monitor-edit+.monitor-edit{margin-top:-8px}
.monitor-port-warning{margin:14px 20px 0;padding:10px 12px;border:1px solid #dfb578;border-radius:9px;background:#fff1db;color:#704818;font-size:12px;font-weight:800;line-height:1.45}
/* Nomenclatura de porta, serviço e legenda flutuante do rack. */
.rack-panel{min-height:86px}
.rack-panel .rack-jack{min-height:63px}
.rack-panel .jack-number{font-size:12px;letter-spacing:-.025em}
.jack-service{display:block;max-width:100%;padding:2px 5px;border-radius:4px;background:#224b60;color:#d9f5ff;border:1px solid #529fc5;font-size:8px;line-height:1;font-weight:900;letter-spacing:.05em}
.rack-panel .rack-jack[data-service="phone"] .jack-service{background:#66462a;color:#ffe2b5;border-color:#c99a5e}
.rack-panel .rack-jack.rack-selected .jack-service{background:#bfffee;color:#154340;border-color:#f4fff9}
.service-legend{display:inline-block;padding:3px 5px;margin-right:3px;border-radius:4px;font-size:9px;letter-spacing:.04em}
.service-legend.net{color:#cceaff;border:1px solid #4c9ab9;background:#20485d}
.service-legend.tel{color:#ffe1b4;border:1px solid #d7a262;background:#55402a}
.rack-tooltip{position:fixed;z-index:7;pointer-events:none;width:min(400px,calc(100vw - 24px));padding:0;border:1px solid #8cbbbc8c;border-radius:15px;background:linear-gradient(145deg,#163442,#0c2330 72%);color:#ebfaf8;box-shadow:0 22px 54px #000b,0 0 0 3px #67d4cd17;overflow:hidden;animation:rack-tip-in .14s ease-out}
@keyframes rack-tip-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
.rack-tip-top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px 9px;border-bottom:1px solid #89c7c02b}
.rack-tip-kind{font-size:9px;font-weight:900;letter-spacing:.13em;color:#9ce9ef}
.rack-tip-kind.switch{color:#dad1ff}.rack-tip-kind.phone{color:#ffd398}
.rack-tip-state{font-size:9px;font-weight:800;color:#a7c5c6;border:1px solid #72979b66;border-radius:999px;padding:4px 7px;white-space:nowrap}
.rack-tip-main{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 14px}
.rack-tip-main>strong{font-size:20px;line-height:1.15;letter-spacing:-.02em;overflow-wrap:anywhere}
.rack-tip-service{flex:none;font-size:10px;font-weight:900;padding:6px 8px;border-radius:7px}
.rack-tip-service.internet{color:#b9ebff;background:#235474;border:1px solid #4a9fc5}
.rack-tip-service.phone{color:#ffe1b2;background:#68462c;border:1px solid #bf8f53}
.rack-tip-lines{padding:0 14px 10px}
.rack-tip-line{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:6px 0;border-top:1px solid #b4e7db1c}
.rack-tip-line span{flex:none;color:#85aeb1;font-size:9px;letter-spacing:.08em;font-weight:900}
.rack-tip-line strong{text-align:right;color:#f3fffc;font-size:12px;line-height:1.35;overflow-wrap:anywhere}
.rack-tip-audit{display:grid;gap:3px;padding-top:9px}
.rack-tip-audit strong{text-align:left;white-space:nowrap;overflow-wrap:normal;font-size:clamp(6px,2vw,9px)}
.rack-tip-foot{margin:0;padding:10px 14px;background:#79dbcd12;color:#a4d3d0;font-size:10px;line-height:1.4}
/* Local criado durante a ligação e Patch Panel inativo sem destino. */
.link-local-field{display:flex;align-items:end;gap:9px;min-width:0}
.link-local-field label{flex:1;min-width:0}
.link-local-field .btn{flex:none;min-height:40px;padding:8px 10px}
.rack-jack.rack-inactive,.rack-jack.rack-inactive:hover{background:#241b22;border-color:#a96d76;box-shadow:inset 0 -3px 0 #a86d79;color:#e4c9cd}
.rack-jack.rack-inactive .jack-mouth{background:#211821;border-color:#875f6a;border-bottom-color:#ac6976;box-shadow:none}
.rack-jack.rack-inactive .jack-number{color:#eed1d7;text-shadow:none}
.jack-service.off,.rack-jack.rack-inactive .jack-service{background:#5a303d;color:#ffdde3;border-color:#b46d7c}
.service-legend.off{background:#57313b;color:#ffdbe3;border:1px solid #b87985}
.port.inactive{background:#fbf0f2;border-color:#cf929c}
.port.inactive:before,.dot.inactive{background:#b97383}
.port.inactive span{color:#9b5566;font-weight:800}
@media(max-width:520px){.link-local-field{align-items:stretch;flex-wrap:wrap}.link-local-field .btn{width:100%}}

.rack-title[data-rack-handle]{cursor:grab;border-radius:7px;padding:4px 6px;margin-left:-6px;touch-action:none}
.rack-title[data-rack-handle]:active{cursor:grabbing}
.rack-device.rack-dragging{opacity:.55}
.rack-device.rack-drop-before{box-shadow:inset 0 4px 0 #ffc979,0 0 18px #ffc97977}
.rack-device.rack-drop-after{box-shadow:inset 0 -4px 0 #ffc979,0 0 18px #ffc97977}

/* Campos da ligação organizados em pares físicos. */
#linkDialog .link-local-field,#linkDialog .link-port-pair,#linkDialog .link-status-field{grid-column:1/-1}
#linkDialog .link-port-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;min-width:0}
#linkDialog .link-port-pair label{min-width:0}
@media(max-width:520px){#linkDialog .link-port-pair{grid-template-columns:1fr}}
/* A seleção aparece no cabeçalho no lugar dos antigos contadores. */
.monitor-head{gap:14px;min-height:79px}
.monitor-brand{flex:none;min-width:185px}
.monitor-head .rack-selection-bar{flex:1;min-width:0;min-height:48px;margin:0;padding:7px 10px;gap:10px}
.monitor-head #rackSelectionText{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.monitor-head .rack-selection-actions{flex:none}
.monitor-controls{flex:none}
@media(max-width:1200px){.monitor-head{flex-wrap:wrap;padding:12px 16px}.monitor-brand{flex:1}.monitor-head .rack-selection-bar{order:3;flex-basis:100%}.monitor-controls{justify-content:flex-end}}
@media(max-width:700px){.monitor-head{gap:8px}.monitor-brand{min-width:0}.monitor-head .rack-selection-bar{flex-wrap:wrap}.monitor-head #rackSelectionText{flex-basis:100%;white-space:normal}.monitor-head .rack-selection-actions{flex-wrap:wrap}.monitor-controls{width:100%}}
/* O cartão cresce com o conteúdo; em telas baixas, a rolagem é da janela sobreposta. */
.monitor-detail{align-items:safe center;overflow:auto;padding:12px}
.monitor-detail-card{width:min(580px,100%);max-height:none;overflow:visible;flex:none}
.monitor-detail-head{padding:11px 19px}
.monitor-detail-id{padding:12px 20px}
.monitor-detail-id strong{font-size:43px}
.monitor-detail-row{padding:9px 20px;font-size:12px}
.monitor-detail-empty{padding:10px 20px}
.monitor-edit{width:calc(100% - 40px);margin:11px 20px 13px;padding:10px}
.monitor-detail-card .monitor-edit+.monitor-edit{margin-top:-5px}
@media(max-width:700px){.monitor-detail-card{max-height:none}.monitor-detail-id strong{font-size:38px}}

#linkDialog .link-local-field{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;align-items:end}
#linkDialog .link-local-field label{min-width:0}
#linkDialog .link-actions #linkAddRoom{margin-right:auto}
@media(max-width:520px){#linkDialog .link-local-field{grid-template-columns:1fr}#linkDialog .link-actions{flex-wrap:wrap}#linkDialog .link-actions #linkAddRoom{margin-right:auto}}
.rack-jack.rack-cascade{border-color:#e2bd73;box-shadow:inset 0 -3px 0 #b58b45}
.rack-jack.rack-cascade .jack-number{color:#ffe5aa}

/* Portas de uplink do SG500-52: 49/50 são combo e 51/52 são SFP. */
.rack-jack.rack-uplink{border-color:#927ac0;background:#181727;box-shadow:inset 0 -3px 0 #876db6}
.rack-jack.rack-uplink .jack-number{font-size:9px;color:#ecdeff;letter-spacing:-.02em}
.rack-jack.rack-uplink .jack-mouth{border-color:#a28cc5}
.rack-jack.rack-uplink.rack-selected,.rack-jack.rack-uplink.rack-pending{background:#134b4b}
.app-notice-dialog{position:fixed;inset:0;margin:auto;width:min(660px,calc(100vw - 28px));max-height:calc(100vh - 32px);padding:0;border:1px solid #e7bc73;border-radius:18px;background:#253038;color:#f7f5ed;box-shadow:0 28px 90px #000b;overflow:auto}
.app-notice-dialog::backdrop{background:#04151dcc;backdrop-filter:blur(5px)}
.app-notice-head{display:flex;align-items:center;gap:13px;padding:18px 22px;border-bottom:1px solid #e7bc7340}
.app-notice-head h2{flex:1;margin:0;color:#ffe1aa;font-size:16px}
.app-notice-mark{display:grid;place-items:center;width:27px;height:27px;border-radius:8px;background:#efab55;color:#40220f;font-weight:900}
.app-notice-head button{border:0;background:transparent;color:#efddd0;font-size:24px;line-height:1}
.app-notice-dialog p{margin:0;padding:22px;color:#f7f5ed;font-size:14px;line-height:1.55;white-space:pre-line}
.app-notice-actions{display:flex;justify-content:flex-end;gap:10px;padding:0 22px 20px}
.app-notice-actions .btn{min-width:100px}
.app-notice-actions .primary{background:#e9a95e;color:#392212}
@media(max-width:520px){.app-notice-dialog p{padding:18px;font-size:13px}.app-notice-actions{padding:0 18px 18px}}
/* Detalhes: preserva o rack nítido e apaga as luzes das portas não selecionadas. */
.monitor-detail{backdrop-filter:none;background:#020c1499}
.monitor:has(.monitor-detail:not([hidden])) .rack-jack:not(.rack-selected){filter:brightness(.32) saturate(.3);box-shadow:none;text-shadow:none}
.monitor:has(.monitor-detail:not([hidden])) .rack-jack.rack-selected{box-shadow:0 0 0 3px #b9ffef,0 0 18px 4px #4ce5c2}
/* Caminho da ligação exibido antes dos detalhes. */
.monitor-board{position:relative}
.rack-trace{position:fixed;top:0;left:0;z-index:6;pointer-events:none}

.trace-legend{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.trace-legend i{width:12px;height:3px;border-radius:3px;margin-left:7px}.trace-legend .trace-blue{background:#4d9fff}.trace-legend .trace-yellow{background:#ffcb50}.trace-legend .trace-red{background:#ff4e62}

.monitor-board[data-trace="internet"]{--route-accent:#4d9fff;--route-glow:#348cffaa}
.monitor-board[data-trace="phone"]{--route-accent:#ffcb50;--route-glow:#e6ad27aa}
.monitor-board[data-trace="server"]{--route-accent:#ff4e62;--route-glow:#ff3349aa}
.monitor-board[data-trace] .rack-jack:not(.rack-selected){filter:brightness(.36) saturate(.35);box-shadow:none;text-shadow:none}
.monitor-board[data-trace] .rack-jack:not(.rack-selected) .jack-mouth,.monitor-board[data-trace] .rack-jack:not(.rack-selected):after{box-shadow:none}
.monitor-board[data-trace] .rack-jack:not(.rack-selected):hover,.monitor-board[data-trace] .rack-jack:not(.rack-selected):focus-visible{filter:brightness(1);z-index:6}
.monitor-board[data-trace] .rack-jack.rack-selected,.monitor-board[data-trace] .rack-jack.rack-selected:hover{border-color:var(--route-accent);background:#132e3a;box-shadow:0 0 0 3px var(--route-accent),0 0 20px 6px var(--route-glow)}
.monitor-board[data-trace] .rack-jack.rack-selected .jack-mouth{border-color:var(--route-accent)}
.monitor-board[data-trace] .rack-jack.rack-selected .jack-extension{background:var(--route-accent);color:#091925}
.monitor-board[data-trace] .rack-jack.rack-selected:after{background:var(--route-accent);box-shadow:0 0 8px 3px var(--route-glow)}

/* A barra de seleção não altera a altura do cabeçalho nem a posição do rack. */
@media(min-width:1201px){
  .monitor-head{height:80px;min-height:80px}
  .monitor-head .rack-selection-bar{height:43px;min-height:43px;max-height:43px;padding:5px 10px}
  .monitor-head .rack-selection-actions{flex-wrap:nowrap}
}
@media(max-width:1200px){
  .monitor-head{backdrop-filter:none}
  .monitor-head .rack-selection-bar{position:fixed;top:auto;bottom:16px;left:16px;right:16px;z-index:9;flex-basis:auto;max-height:calc(100vh - 32px);overflow:auto;box-shadow:0 12px 38px #000b}
}

/* Luz de identificação física em todas as portas, inclusive livres e OFF. */
.rack-jack.rack-unlinked:not(.rack-inactive):not(.rack-extension):not(.rack-cascade):after{
  content:'';position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;
  background:#9cb2bd;box-shadow:0 0 5px #adc7d077
}
.rack-jack.rack-inactive:after{
  content:'';position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;
  background:#ec7483;box-shadow:0 0 7px #ed6b8399
}
.rack-jack.rack-cascade:after{
  content:'';position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;
  background:#f3c67d;box-shadow:0 0 7px #e9b45b99
}
.rack-jack.rack-linked[data-status="Inativa"]:after{background:#ec7483;box-shadow:0 0 7px #ed6b8399}
.monitor-dot.inactive{background:#ec7483;box-shadow:0 0 6px #ed6b8399}

/* Em um telão Full HD, recupera espaço entre as fileiras para mostrar a legenda. */
@media(min-width:1600px) and (min-height:950px){
  .monitor:fullscreen .monitor-content{padding:10px 20px 8px}
  .monitor:fullscreen .monitor-board{padding:6px;gap:3px}
  .monitor:fullscreen .rack-device{padding:5px 10px}
  .monitor:fullscreen .monitor-bottom{margin-top:7px}
}

.sort-header{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;padding:0;color:inherit;text-transform:inherit;letter-spacing:inherit;font-size:inherit;font-weight:800;white-space:nowrap}.sort-header:hover{color:#087d79}.sort-arrow{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:5px;color:#268f8b;font-size:14px;line-height:1}th[aria-sort="none"] .sort-arrow{color:#9ab0b5}th[aria-sort]:hover{background:#e4f1ef}

/* Cada porta do rack mantém a dimensão da grade de 26 posições do Cisco.
   Os painéis de 24 e o Switch Ramais de 25 distribuem o espaço restante. */
.rack-ports{
  grid-template-columns:repeat(var(--rack-columns),minmax(0,calc((100% - 25 * 4px) / 26)));
  justify-content:space-between;
}
.rack-device .rack-jack,
.rack-panel .rack-jack,
.rack-ramais .rack-jack{
  box-sizing:border-box;
  height:72px;
  min-height:72px;
  max-height:72px;
}

/* Switches de sala com tomadas no mesmo padrão do rack. */
.local-view{min-height:65vh;padding:clamp(15px,2vw,32px);border:1px solid #385b68;border-radius:18px;background:linear-gradient(145deg,#101f2d,#08141e);color:#eaf8f8}
.local-view-head{display:flex;align-items:center;gap:22px;flex-wrap:wrap;padding-bottom:22px;border-bottom:1px solid #355365}
.local-view-head>div{flex:1;min-width:230px}.local-view-head small{color:#77c6c1;font-size:10px;font-weight:800;letter-spacing:.1em}.local-view-head h2{margin:5px 0;color:white;font-size:clamp(22px,3vw,34px)}.local-view-head p{margin:0;color:#a5bdc7;font-size:13px}
.local-ports{padding:26px 0}.local-chassis-scroll{overflow-x:auto;padding:12px 3px 20px;scrollbar-color:#557b86 #0c1e2a}.local-chassis{box-sizing:border-box;width:max-content;min-height:103px;display:flex;align-items:center;gap:10px;padding:12px 13px;border:1px solid #60707b;border-left:4px solid #a99bff;border-radius:7px;background:linear-gradient(180deg,#3b3855,#1b2036 27%,#131b29 80%);box-shadow:inset 0 1px 0 #a9b7c26b,0 12px 28px #0009}.local-ear{width:12px;align-self:stretch;display:grid;place-items:center;flex:none}.local-ear i{width:9px;height:10px;background:#d4dce0;border:2px solid #6e8c98;border-radius:3px}.local-face{width:150px;max-width:150px;min-width:150px;line-height:1.2}.local-face small{display:block;color:#a9a1ed;font-size:8px;font-weight:800;letter-spacing:.12em}.local-face strong{display:block;color:white;font-size:15px;overflow-wrap:anywhere}.local-face span{display:block;color:#b9b9cc;font-size:9px;margin-top:4px}.local-jacks{display:grid;grid-template-columns:repeat(var(--local-columns),52px);gap:5px}.local-chassis .local-jack{box-sizing:border-box;width:52px;height:63px;min-height:63px;max-height:63px;padding:5px 1px;align-self:center;cursor:pointer}.local-chassis .local-jack:hover,.local-chassis .local-jack:focus-visible{transform:scale(1.12);z-index:3}.local-chassis .local-jack.local-free{border-color:#677e88;background:#0c1c28;box-shadow:inset 0 -3px 0 #526a73}.local-chassis .local-jack.local-free .jack-mouth{border-color:#506a73;background:#07121a;box-shadow:none}.local-chassis .local-jack.local-free:after{background:#a4b6bb;box-shadow:0 0 6px #a4b6bb99}.local-chassis .local-jack.local-occupied{border-color:#53c99b;background:linear-gradient(180deg,#123b32,#0b231f);box-shadow:inset 0 -3px 0 #43bb89,0 0 8px #49d79d39}.local-chassis .local-jack.local-occupied .jack-mouth{border-color:#55a988;border-bottom-color:#75e5ad;background:linear-gradient(180deg,#06251b,#1e855b);box-shadow:inset 0 0 7px #6df3ae9c}.local-chassis .local-jack.local-occupied:after{background:#80ffae;box-shadow:0 0 7px 2px #49db8c9c}.local-chassis .local-jack.local-uplink{border-color:#69aef0;background:linear-gradient(180deg,#173f67,#102640);box-shadow:inset 0 -3px 0 #3b89d3}.local-chassis .local-jack.local-uplink .jack-mouth{border-color:#5a9fd7;border-bottom-color:#78c1ff;background:linear-gradient(180deg,#091b31,#236eb0);box-shadow:inset 0 0 7px #74bfff}.local-chassis .local-jack.local-uplink:after{background:#76c5ff;box-shadow:0 0 7px 2px #4aaaff}.local-chassis .local-jack.local-uplink .jack-service{background:#164467;color:#c9eaff;border-color:#4c9ddb}.local-chassis .local-jack .jack-number{color:#effaff;font-size:10px}
.local-legend{display:flex;align-items:center;gap:20px;flex-wrap:wrap;color:#b4cbd0;font-size:11px}.local-legend span{display:inline-flex;align-items:center;gap:6px}.local-light{width:8px;height:8px;border-radius:50%;display:inline-block}.local-blue{background:#76c5ff;box-shadow:0 0 7px #4aaaff}.local-green{background:#80ffae;box-shadow:0 0 7px #49db8c}.local-gray{background:#a4b6bb;box-shadow:0 0 6px #a4b6bb}
.local-devices{margin-top:27px;border-top:1px solid #355365;padding-top:16px}.local-devices h3{display:flex;align-items:baseline;gap:12px;color:#ecf8f8;font-size:16px;margin:0 0 14px}.local-devices h3 small{color:#9cbac2;font-size:11px;font-weight:normal} .local-device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(165px,180px));gap:12px;justify-content:start}.local-device-row{display:flex;flex-direction:column;align-items:stretch;text-align:left;min-width:0;min-height:126px;border:1px solid #4f9e7a;border-radius:12px;background:#10372d;color:#e9f9f4;padding:14px 15px;cursor:pointer;transition:transform .15s,border-color .15s,box-shadow .15s}.local-device-row:hover,.local-device-row:focus-visible{transform:translateY(-3px);border-color:#9bffcd;box-shadow:0 10px 22px #0007}.local-device-row.is-uplink{background:#183550;border-color:#60aeec}.local-device-row.is-uplink:hover{border-color:#a3d7ff}.local-device-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:11px}.local-device-index{font-size:24px;font-weight:900;color:#eaf8f4;line-height:1}.local-device-led{width:9px;height:9px;border-radius:50%;background:#69efa5;box-shadow:0 0 10px 3px #48d98b70}.local-device-row.is-uplink .local-device-led{background:#6bbaff;box-shadow:0 0 10px 3px #4aaaff80}.local-device-row b,.local-device-row small{display:block;overflow-wrap:anywhere}.local-device-row b{font-size:13px;line-height:1.2}.local-device-row small{font-size:11px;color:#b8d2cc;margin-top:5px}.local-device-row.is-uplink small{color:#b8d6ed}.local-help{color:#a2bac2;font-size:12px;margin-top:22px}.local-empty{text-align:center;padding:50px 20px}.local-empty span{font-size:44px;color:#5dd6c3}.local-empty h3{color:#f3ffff}.local-empty p{color:#a5bdc7}.local-dialog{width:min(620px,calc(100vw - 26px))}.monitor-detail-card #monitorDetailLocal{background:#126e75;color:white}
#monitorBoard[hidden],#monitorBottom[hidden],#localView[hidden]{display:none!important}
@media(max-width:700px){.local-view-head{align-items:stretch}.local-view-head>button{width:100%}.local-ports{padding-top:16px}.local-device-grid{grid-template-columns:repeat(auto-fill,minmax(145px,1fr))}}
.local-chassis .local-jack:after{content:'';position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%}

/* Identificação do ponto que alimenta um switch no Local. */
.rack-jack.rack-local-switch[data-status="Ativa"]{border-color:#69b9eb;background:linear-gradient(180deg,#163a53,#0c2336);box-shadow:inset 0 -3px 0 #4599cd,0 0 9px #51b5ed55}
.rack-jack.rack-local-switch[data-status="Ativa"] .jack-mouth{border-color:#60aede;border-bottom-color:#8ad5ff;background:linear-gradient(180deg,#071d2c,#1b6896);box-shadow:inset 0 0 8px #74cfff88}
.rack-jack.rack-local-switch[data-status="Ativa"]:after{background:#87d7ff;box-shadow:0 0 8px 2px #4faefa99}
.rack-jack.rack-local-switch .jack-service,.service-legend.sw{background:#164666;color:#dcf5ff;border-color:#70bbe7}
.rack-jack.rack-local-switch.rack-selected,.rack-jack.rack-local-switch.rack-selected:hover{border-color:#fff;box-shadow:0 0 0 3px #7af8e4,0 0 27px 11px #50d9c6bc}

/* Filtro e identificação de switches locais na tabela de ligações. */
.local-filter{white-space:nowrap}.local-filter[aria-pressed="true"]{background:#dff4f8;border-color:#73bbd7;color:#13647b;box-shadow:inset 0 0 0 1px #73bbd7}.table-switch-name{vertical-align:middle}.tablewrap td small{line-height:1.4}

/* As duas saídas do mesmo ponto telefônico ficam identificadas no rack. */
.rack-jack.rack-phone-double .jack-service{background:#705024;color:#fff1c8;border-color:#efbf62;letter-spacing:0;padding:2px 3px;font-size:8px}
.phone-double-dialog{width:min(640px,calc(100vw - 24px))}.phone-double-summary{padding:12px;border-radius:9px;background:#e8f7f5;color:#184f60;font-weight:800;font-size:12px}.phone-double-help{font-size:11px;line-height:1.5;color:#597783;padding:9px 0}.phone-double-dialog label{display:block;margin:9px 0}.phone-double-dialog label select{width:100%;display:block;margin-top:5px}

/* A autoria vem da sessão que concluiu o salvamento no D1. */
.current-user{display:inline-flex;align-items:center;padding:8px 10px;border:1px solid #b6dbd4;border-radius:9px;background:#eaf8f4;color:#17675e;font-size:11px;font-weight:800;white-space:nowrap}
.monitor-time{display:flex;align-items:center;gap:12px;margin-right:10px}
.monitor-user{padding:4px 7px;border-radius:6px;background:#154b47;color:#b9ffe6;font-size:10px;font-weight:800;white-space:nowrap}
@media(max-width:900px){.top{height:auto;min-height:76px;flex-wrap:wrap}.topactions{flex:1}}
@media(max-width:700px){.monitor-time{width:100%;justify-content:flex-end;margin:0}}
.hero{grid-template-areas:"copy art" "description description";grid-template-rows:auto auto;row-gap:16px}
.hero-copy{grid-area:copy}
.hero-art{grid-area:art}
.hero-description{grid-area:description;position:relative;z-index:1;max-width:100%;margin:0;color:#bbd1d7;font-size:14px;line-height:1.6;white-space:nowrap;overflow-x:auto;scrollbar-width:thin}
@media(max-width:850px){.hero{grid-template-areas:"copy" "art" "description"}.hero-description{font-size:12px}}

@media print{
  #connections .content-mark,
  #connections table th:last-child,
  #connections table td:last-child{display:none!important}
}

/* Portas livres dos switches têm preto um pouco mais claro que o Patch Panel. */
.rack-switch .rack-jack.rack-unlinked:not(.rack-inactive):not(.rack-selected):not(.rack-pending):not(.rack-uplink),
.rack-ramais .rack-jack.rack-unlinked:not(.rack-inactive):not(.rack-selected):not(.rack-pending):not(.rack-uplink){background:linear-gradient(180deg,#192b35,#2b414d);box-shadow:inset 0 -3px 0 #526b77}
.rack-switch .rack-jack.rack-unlinked:not(.rack-inactive):not(.rack-selected):not(.rack-pending):not(.rack-uplink) .jack-mouth,
.rack-ramais .rack-jack.rack-unlinked:not(.rack-inactive):not(.rack-selected):not(.rack-pending):not(.rack-uplink) .jack-mouth{background:#0d1920}

/* Opção B: mapa vivo de conexões e painel de acesso escuro. */
.login-option-b{box-sizing:border-box;width:min(1180px,calc(100vw - 30px));max-height:min(94vh,820px);padding:0;border:1px solid #2e5f71;border-radius:24px;overflow:auto;background:#081b2b;color:#eefafc;box-shadow:0 38px 110px #000d}
.login-option-b::backdrop{background:radial-gradient(circle at 50% 24%,#174c67,#030e19 72%);backdrop-filter:blur(10px)}
.b-shell{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(360px,.85fr);min-height:680px}
.b-world{position:relative;display:flex;flex-direction:column;justify-content:space-between;min-width:0;overflow:hidden;padding:37px 43px 30px;background:radial-gradient(circle at 20% 75%,#166c81aa,transparent 40%),radial-gradient(circle at 88% 25%,#12659688,transparent 42%),linear-gradient(135deg,#092539,#061521 78%)}
.b-world:before{content:'';position:absolute;inset:-30px;background-image:linear-gradient(#63cfe50b 1px,transparent 1px),linear-gradient(90deg,#63cfe50b 1px,transparent 1px);background-size:30px 30px;transform:rotate(-8deg) scale(1.15);animation:b-grid 20s linear infinite;pointer-events:none}
.b-world:after{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,#8be8ff13 50%,transparent 70%);transform:translateX(-130%);animation:b-sweep 9s ease-in-out infinite;pointer-events:none}
.b-brand,.b-copy,.b-topology,.b-world-foot{position:relative;z-index:1}.b-brand{display:flex;align-items:center;gap:12px;color:#f0fdff}.b-brand>span{display:grid;place-items:center;width:42px;height:42px;border:1px solid #68d8e09e;border-radius:12px;background:#74d8ed13;font-size:27px;color:#83e8ec}.b-brand strong{font-size:21px;letter-spacing:.11em}.b-brand em{font-style:normal;color:#8be8de}.b-brand small{margin-left:auto;font-size:8px;font-weight:800;letter-spacing:.13em;color:#9cbdc9}
.b-copy{margin:36px 0 0}.b-copy>span{display:inline-flex;align-items:center;gap:9px;color:#89d9e3;font-size:10px;font-weight:900;letter-spacing:.16em}.b-copy>span i,.b-world-foot i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#78efbb;box-shadow:0 0 12px #78efbb;animation:login-blink 2s infinite}.b-copy h2{margin:14px 0 13px!important;color:#fff;font-size:clamp(36px,4.4vw,58px);line-height:1.06;letter-spacing:-.055em}.b-copy h2 em{font-style:normal;color:#81e2e8}.b-copy p{max-width:390px;margin:0!important;color:#a8c9d4!important;font-size:13px!important;line-height:1.6}
.b-topology{height:296px;margin:12px -12px 2px}.b-topology svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.b-line{stroke-width:2;stroke-dasharray:10 12;filter:drop-shadow(0 0 6px #55e4e6);animation:b-dash 9s linear infinite}.line-one{stroke:#49c8ef}.line-two{stroke:#77edc6;animation-delay:-3s}.line-three{stroke:#e8bc72;animation-delay:-5s}.b-halo{position:absolute;left:48%;top:49%;width:215px;height:215px;border:1px solid #7fe6e62e;border-radius:50%;transform:translate(-50%,-50%);animation:b-halo 5s ease-out infinite}.halo-b{animation-delay:2.5s}
.b-node{position:absolute;z-index:2;display:grid;gap:3px;min-width:93px;padding:9px 10px;border:1px solid #73bfd0a3;border-radius:9px;background:#0b3040e8;box-shadow:0 12px 25px #00111c80,0 0 20px #33a9c43b}.b-node span{color:#7bd9df;font-size:9px;font-weight:900}.b-node strong{color:white;font-size:10px;letter-spacing:.04em}.b-node small{color:#a5d4d7;font-size:9px;letter-spacing:.04em}.b-source{left:1%;top:43%}.b-branch.upper{left:43%;top:4%;border-color:#67cbee}.b-branch.lower{left:43%;bottom:4%;border-color:#85d7bd}.b-end{right:0;top:40%;border-color:#e1bb76}.b-end small{color:#f1d695}.b-world-foot{display:flex;justify-content:space-between;gap:10px;color:#89adba;font-size:9px;font-weight:800;letter-spacing:.11em}.b-world-foot span:first-child{display:flex;align-items:center;gap:8px}
.b-form{align-content:center;gap:17px!important;min-width:0;padding:45px clamp(28px,4vw,55px);background:linear-gradient(150deg,#122d41,#081b2b 62%);box-shadow:-20px 0 45px #00101a48}.b-form-top{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#9ac3d0;font-size:9px;font-weight:900;letter-spacing:.13em}.b-lock{padding:7px 9px;border:1px solid #5bbaaa70;border-radius:20px;color:#8ef0ca;white-space:nowrap}.b-form-intro{margin:34px 0 16px}.b-icon{display:grid;place-items:center;width:48px;height:48px;margin-bottom:21px;border:1px solid #4aadc0;border-radius:14px;background:#1c5660;color:#a1f3e6;font-size:35px;line-height:1}.b-form-intro>span{color:#88dace;font-size:10px;font-weight:900;letter-spacing:.15em}.b-form h2{margin:11px 0 12px!important;color:#f7fdff;font-size:clamp(38px,4.2vw,55px);line-height:1.05;letter-spacing:-.055em}.b-form-intro p{max-width:300px;color:#aac2ce!important;font-size:13px!important;line-height:1.6}.b-form label{gap:8px;color:#c4e0e6;font-size:12px}.b-form input{height:48px;padding:0 14px;border:1px solid #4d7888;border-radius:10px;outline:none;background:#0a2435;color:#f5fdff;font-size:14px;transition:border .2s,box-shadow .2s}.b-form input::placeholder{color:#7595a2}.b-form input:focus{border-color:#6bd9ca;box-shadow:0 0 0 4px #5cdbc029}.b-form .error{background:#7a3549;color:#fff}.b-submit{display:flex;align-items:center;justify-content:space-between;min-height:52px;margin-top:8px;border:1px solid #9be9dd66;border-radius:10px;background:linear-gradient(100deg,#168b94,#27b096);font-size:14px;box-shadow:0 12px 28px #079e9875}.b-submit:hover{background:linear-gradient(100deg,#21a7ac,#32c7a6)}.b-submit span{font-size:22px}.b-form-foot{margin-top:20px;color:#7e9ea9;font-size:9px;text-align:center;letter-spacing:.08em}
@keyframes b-grid{to{transform:rotate(-8deg) translate(30px,30px) scale(1.15)}}@keyframes b-sweep{50%,100%{transform:translateX(130%)}}@keyframes b-dash{to{stroke-dashoffset:-176}}@keyframes b-halo{0%{opacity:.7;transform:translate(-50%,-50%) scale(.45)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.8)}}
@media(max-width:800px){.b-shell{grid-template-columns:1fr;min-height:0}.b-world{min-height:210px;padding:24px}.b-copy{margin:24px 0 12px}.b-copy h2{font-size:39px}.b-copy p,.b-topology{display:none}.b-world-foot{margin-top:17px}.b-form{padding:30px}.b-form-intro{margin:10px 0}.b-icon{display:none}}
@media(max-width:480px){.login-option-b{width:calc(100vw - 16px);max-height:96vh;border-radius:18px}.b-world{min-height:178px;padding:19px}.b-brand strong{font-size:16px}.b-brand small{display:none}.b-copy h2{font-size:33px}.b-world-foot{font-size:7px}.b-form{padding:22px}.b-form h2{font-size:38px}.b-form-top{font-size:8px}}
@media(prefers-reduced-motion:reduce){.login-option-b *,.b-world:before,.b-world:after{animation:none!important;transition:none!important}}

/* Opção B final: títulos e descrições inteiros em uma só linha. */
.b-copy h2{font-size:clamp(25px,2.65vw,32px);white-space:nowrap;letter-spacing:-.055em}
.b-form h2{font-size:clamp(26px,2.55vw,31px);white-space:nowrap;letter-spacing:-.055em}
.b-copy p,.b-form-intro p{max-width:none;white-space:nowrap;font-size:12px!important}
.b-brand,.b-brand small,.b-copy>span,.b-form-top,.b-form-foot,.b-world-foot,.b-node strong,.b-node small{white-space:nowrap}
@media(max-width:1050px){.b-shell{grid-template-columns:1fr;min-height:0}.b-world{min-height:210px;padding:24px}.b-copy{margin:24px 0 12px}.b-copy h2{font-size:clamp(18px,4.8vw,32px)}.b-copy p,.b-topology{display:none}.b-world-foot{margin-top:17px}.b-form{padding:30px}.b-form-intro{margin:10px 0}.b-icon{display:none}.b-form h2{font-size:clamp(24px,4.8vw,32px)}}
@media(max-width:480px){.b-copy h2{font-size:clamp(16px,4.55vw,22px)}.b-form h2{font-size:clamp(22px,5vw,26px)}}

/* Navegação dedicada aos switches cadastrados nas salas. */
.local-switch-card{display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.local-switch-card h3,.local-switch-card p{margin:0}
.local-switch-card .btn{margin-top:auto}
.local-switch-info{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:18px;padding:12px 15px;border:1px solid #dcebea;border-radius:11px;background:#f7fbfa;color:#254b58}
.local-switch-info[hidden]{display:none}
.local-switch-info strong,.local-switch-info span{display:block}
.local-switch-info strong{font-size:13px}
.local-switch-info span{margin-top:4px;font-size:11px;color:#718b95}
.local-switch-info .btn{flex:none}
.port.local-input{background:#eaf3ff;border-color:#79b3e8}
.port.local-input:before,.dot.local-input{background:#4b98dd}
@media(max-width:520px){.local-switch-info{align-items:stretch;flex-direction:column}.local-switch-info .btn{align-self:flex-start}}
.local-card-type{color:#278c93;font-size:10px;font-weight:900;letter-spacing:.12em}
.point-audit-note{margin:0;padding:9px 11px;border:1px solid #bbdcd7;border-radius:9px;background:#edf8f5;color:#22635e;font-size:11px;font-weight:800;line-height:1.4}
.point-audit-note,.monitor-detail-audit strong{white-space:nowrap;overflow-wrap:normal;font-size:clamp(6px,2vw,11px)}
.monitor-detail-audit strong{display:block;text-align:left;width:100%}
