@font-face{font-family:'Manrope';src:url('/brand/manrope-latin.woff2') format('woff2');font-style:normal;font-weight:400 800;font-display:swap}
:root{--navy:#101d31;--navy2:#16263e;--ink:#14243b;--slate:#5b6b81;--muted:#8f9aac;--border:#e4e9f0;--background:#f4f7fb;--teal:#0baf98;--teal2:#e5f8f3;--white:#fff;--shadow:0 5px 28px rgba(13,36,67,.045)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:'Manrope','DM Sans',system-ui,sans-serif;color:var(--ink);background:var(--background);font-size:13px}button,input,select{font:inherit}button{cursor:pointer}input,select{width:100%;background:white;border:1px solid #d9e0e9;border-radius:9px;padding:11px 12px;outline:0;color:var(--ink);transition:border .15s}input:focus,select:focus{border-color:var(--teal);box-shadow:0 0 0 3px #12bba31a}label{display:block;font-weight:700;font-size:12px;color:#47566a;margin-bottom:13px}label input,label select{margin-top:6px;font-weight:500}h1,h2,h3,h4,p{margin-top:0}h1{font-size:27px;letter-spacing:-.8px;margin-bottom:7px}h2{font-size:18px;letter-spacing:-.35px;margin-bottom:4px}h3{font-size:15px;margin-bottom:8px}p{line-height:1.7;color:var(--slate)}.hidden{display:none!important}.muted{color:var(--muted)}.eyebrow{font-size:10px;letter-spacing:2.1px;font-weight:800;color:var(--teal);margin-bottom:13px}.shell{display:flex;min-height:100vh}.sidebar{width:247px;flex-shrink:0;background:var(--navy);color:white;padding:26px 16px 24px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}.brand,.auth-brand{display:flex;align-items:center;gap:11px}.brand{padding:0 11px;margin-bottom:57px}.brand-mark{width:39px;height:39px;flex-shrink:0;border-radius:12px;display:grid;place-items:center;background:var(--teal);font-size:25px;font-weight:900;color:white;box-shadow:0 7px 17px #0eaf9747}.brand-name b{font-weight:800;letter-spacing:1.05px;font-size:15px}.brand-name small,.auth-brand small{display:block;color:#89a0b6;font-size:10px;letter-spacing:.6px;margin-top:2px}.nav-title{font-size:10px;color:#778da5;letter-spacing:1.3px;font-weight:800;padding:0 16px 16px}.sidebar nav{display:grid;gap:6px}.nav-link{width:100%;display:flex;align-items:center;gap:13px;background:transparent;border:0;color:#a8b8cb;border-radius:10px;padding:12px 15px;text-align:left;font-weight:700;font-size:12px}.nav-link:hover{color:white;background:#ffffff0d}.nav-link.active{background:#183f4a;color:#4ee1c9;box-shadow:inset 3px 0 0 var(--teal)}.nav-icon{font-size:21px;line-height:18px;width:20px;text-align:center;font-weight:600}.sidebar-bottom{margin-top:auto;padding:18px 10px 0;border-top:1px solid #2a394f}.status{font-size:11px;font-weight:700;color:#c7d8e6}.status i,.env-label i{display:inline-block;width:7px;height:7px;border-radius:50%;background:#2bcea6;margin-right:7px;box-shadow:0 0 0 4px #2bcea617}.sidebar-foot{font-size:10px;color:#778da5;line-height:1.8;margin-top:20px}.main-shell{display:flex;flex-direction:column;min-width:0;flex:1}.topbar{height:71px;border-bottom:1px solid var(--border);background:white;display:flex;justify-content:space-between;align-items:center;padding:0 37px}.breadcrumb{font-size:11px;letter-spacing:.8px;color:#8290a0;font-weight:800}.breadcrumb span{margin:0 14px;color:#d5dce5}.breadcrumb strong{color:var(--ink)}.top-actions{display:flex;align-items:center;gap:17px}.env-label{font-size:10px;font-weight:800;letter-spacing:.4px;color:#577488;background:#f4f8fa;padding:8px 11px;border-radius:7px}.avatar{width:33px;height:33px;border-radius:9px;background:#dcf7f0;color:#008c78;border:0;font-weight:800}.icon-btn{background:transparent;border:0;color:#758398;font-weight:700}.content{width:100%;max-width:1480px;padding:34px 37px 52px;margin:auto;flex:1}.main-footer{font-size:10px;color:#9aa8b9;border-top:1px solid var(--border);padding:17px 37px;display:flex;justify-content:space-between}.page-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:28px}.page-head h1{margin-bottom:6px}.page-head p{margin:0;font-size:12px}.page-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:1px solid transparent;border-radius:9px;padding:11px 15px;font-size:11px;font-weight:800;letter-spacing:.2px;white-space:nowrap}.btn.primary{background:var(--teal);color:white}.btn.primary:hover{background:#079a86}.btn.light{border-color:var(--border);background:white;color:var(--ink)}.btn.dark{background:#152941;color:white}.btn.wide{width:100%;justify-content:space-between;padding:15px 17px}.btn[disabled]{opacity:.45;cursor:not-allowed}.small-note{font-size:11px;color:#9babb9}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:17px;margin-bottom:24px}.stat-card,.panel,.banner,.empty-card{background:white;border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow)}.stat-card{padding:22px;position:relative;min-height:145px}.stat-icon{display:grid;place-items:center;width:37px;height:37px;border-radius:11px;font-size:21px;background:#e6f8f4;color:#0da78e;margin-bottom:15px}.stat-card:nth-child(2) .stat-icon{background:#ebf0ff;color:#5678d9}.stat-card:nth-child(3) .stat-icon{background:#fdf4e5;color:#ce8a26}.stat-card:nth-child(4) .stat-icon{background:#f2eefe;color:#9270ca}.stat-number{font-size:30px;font-weight:800;line-height:1;letter-spacing:-1.1px}.stat-label{font-size:11px;color:#79889d;font-weight:700;margin-top:8px}.section-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:18px}.panel{padding:23px;margin-bottom:20px}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:17px}.panel-head h2{margin-bottom:3px}.panel-head p{margin:0;font-size:11px}.link{border:0;background:transparent;color:#009e8e;font-size:11px;font-weight:800}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;white-space:nowrap}th{text-align:left;padding:13px 11px;background:#f7f9fc;font-size:10px;letter-spacing:.7px;font-weight:800;color:#8693a3;border-bottom:1px solid var(--border)}td{padding:15px 11px;border-bottom:1px solid #eef2f6;font-size:11px;font-weight:600}tr:last-child td{border-bottom:0}tr:hover td{background:#fafcfe}.subtext{font-size:10px;color:#92a0b1;display:block;margin-top:4px;font-weight:500}.pill{display:inline-block;border-radius:7px;background:#eef8f6;color:#0a947e;font-size:10px;font-weight:800;padding:6px 9px}.pill.blue{background:#edf1fb;color:#5275ae}.banner{padding:25px;background:linear-gradient(122deg,#163247,#0c453f);border-color:#20564e;color:white;position:relative;overflow:hidden}.banner:before{content:'';position:absolute;right:-80px;top:-130px;width:350px;height:350px;border:1px solid #ffffff25;border-radius:50%;box-shadow:0 0 0 55px #ffffff08,0 0 0 115px #ffffff06}.banner h2{font-size:18px;margin-bottom:8px}.banner p{color:#bbd7da;font-size:12px;max-width:260px}.banner .btn{background:white;color:#11695c}.banner>*{position:relative}.form-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:19px}.form-card{padding:24px}.form-card h2{margin-bottom:19px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:12px}.empty-card{text-align:center;padding:48px 25px}.empty-icon{font-size:38px;color:#87d2c6;margin-bottom:10px}.empty-card h3{font-size:15px;margin:4px}.empty-card p{font-size:12px;margin-bottom:16px}.badge-dot{width:9px;height:9px;background:#15b5a0;display:inline-block;border-radius:50%;margin-right:8px}.project-row{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--border);border-radius:11px;padding:16px 17px;margin-bottom:10px;gap:10px}.project-row h3{margin:0 0 5px}.project-row small{color:#8998a9}.project-row:hover{border-color:#94dcd0;background:#fbfffd}.survey-controls{display:flex;align-items:flex-end;gap:13px;flex-wrap:wrap;margin-bottom:16px}.survey-controls label{margin:0;min-width:180px;flex:1}.survey-controls select{max-width:100%}.survey-grid{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:18px}.map-panel{padding:0;overflow:hidden}.map-toolbar{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.mode-switch{background:#f0f3f7;border-radius:8px;padding:4px;display:flex;gap:4px}.mode-switch button{border:0;background:transparent;color:#687e8f;padding:8px 12px;font-weight:800;border-radius:6px;font-size:11px}.mode-switch button.active{background:white;color:#0c9782;box-shadow:0 2px 8px #131e2912}.map-wrap{padding:17px;background:#f6f9fb}.map-board{position:relative;background-color:white;background-image:linear-gradient(#dae1e855 1px,transparent 1px),linear-gradient(90deg,#dae1e855 1px,transparent 1px);background-size:24px 24px;border:2px dashed #d7e0e8;width:100%;aspect-ratio:16/10;overflow:hidden;cursor:crosshair;min-height:240px}.map-board img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}.map-board canvas{position:absolute;inset:0;width:100%;height:100%}.map-marker{position:absolute;transform:translate(-50%,-50%);border:2px solid white;border-radius:100px;width:15px;height:15px;background:#164aaf;box-shadow:0 2px 5px #0005;pointer-events:none}.map-marker.ap{width:23px;height:23px;background:#0f967c;display:grid;place-items:center;color:white;font-size:12px}.map-meta{display:flex;flex-wrap:wrap;align-items:center;gap:15px;justify-content:space-between;padding:11px 18px;border-top:1px solid var(--border);font-size:10px;color:#8493a7}.legend{display:flex;gap:7px;align-items:center}.legend-bar{width:110px;height:8px;border-radius:10px;background:linear-gradient(90deg,#db554d,#ffc451,#9bd98c,#14af88)}.aside-stats{display:grid;grid-template-columns:1fr 1fr;gap:9px}.mini-stat{background:#f5f9fb;border:1px solid #eaf0f4;border-radius:9px;padding:13px}.mini-stat strong{font-size:21px;display:block}.mini-stat small{font-size:10px;color:#899bac;font-weight:700}.field-tip{font-size:11px;color:#7b8e9c;line-height:1.7}.side-title{font-size:11px;font-weight:800;margin:17px 0 10px}.reading{border-bottom:1px solid var(--border);padding:11px 0;display:flex;align-items:center;justify-content:space-between}.reading:last-child{border:0}.reading b{font-size:11px}.reading small{display:block;font-size:10px;color:#94a1ae;margin-top:4px}.reading .dbm{font-size:13px;font-weight:800;color:#0caa8d}.reading .dbm.low{color:#da7255}.upload-box{margin-top:12px;border:1px dashed #accbc7;border-radius:10px;padding:14px;background:#f8fcfb}.upload-box input{font-size:10px;padding:6px;border:0;background:transparent}.upload-box label{font-size:11px}.report-card{background:white;border:1px solid var(--border);border-radius:14px;padding:30px}.report-head{display:flex;justify-content:space-between;gap:12px;border-bottom:2px solid #0eb69e;padding-bottom:20px;margin-bottom:23px}.report-head h1{margin-bottom:3px}.report-info{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:24px}.report-info>div{background:#f6f9fb;padding:15px;border-radius:8px}.report-info strong{font-size:19px;display:block}.report-info span{font-size:10px;color:#8a9aab}.dialog{border:0;border-radius:17px;width:min(460px,calc(100vw - 32px));box-shadow:0 15px 80px #0a1c3270;padding:25px}.dialog::backdrop{background:#0c21368a}.dialog header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.dialog header h2{margin:0}.close-modal{font-size:25px;background:transparent;border:0;color:#7f8b99}.modal-desc{font-size:11px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.auth-screen{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;background:#fff}.auth-aside{background:linear-gradient(135deg,#0c2438,#134c47);padding:46px 10%;color:white;position:relative;overflow:hidden}.auth-brand{font-size:20px;font-weight:800;letter-spacing:1.1px}.auth-brand small{font-size:11px}.auth-title{font-size:clamp(30px,3.4vw,55px);letter-spacing:-1.6px;line-height:1.17;margin-top:19vh;font-weight:800}.auth-aside>p{color:#b6d2d4;max-width:370px;margin-top:25px}.auth-decor{position:absolute;bottom:-140px;right:-115px;width:480px;height:480px;opacity:.35}.ring{position:absolute;border:2px solid #82eed5;border-radius:50%;inset:15px}.r2{inset:80px}.r3{inset:145px}.signal{position:absolute;top:220px;left:220px;background:#61ead3;width:40px;height:40px;border-radius:50%;box-shadow:0 0 50px #2cecd4}.auth-form-wrap{display:grid;place-items:center;padding:25px}.auth-card{width:100%;max-width:390px}.auth-card h1{font-size:28px}.auth-card>p{margin-bottom:34px}.auth-card label{margin-bottom:17px}.auth-card .btn{margin-top:10px}.form-error{font-size:12px;color:#d65b54;padding-top:13px;min-height:27px}.login-help{font-size:10px;color:#b3becb;text-align:center;margin-top:80px;font-weight:800;letter-spacing:1.2px}.login-help span{color:var(--teal);margin:0 8px}#toast{position:fixed;right:24px;bottom:25px;z-index:100;background:#162e42;color:white;padding:14px 20px;border-radius:11px;box-shadow:0 7px 35px #0003;font-weight:700;font-size:12px;transform:translateY(120px);opacity:0;transition:all .2s}#toast.show{transform:translateY(0);opacity:1}#toast.error{background:#9c3838}@media(max-width:1100px){.stat-grid{grid-template-columns:repeat(2,1fr)}.section-grid,.form-grid{grid-template-columns:1fr}.survey-grid{grid-template-columns:1fr}.sidebar{width:215px}.content{padding:28px 22px}.topbar{padding:0 22px}}@media(max-width:700px){.shell{display:block}.sidebar{height:auto;width:100%;position:static;padding:12px 15px}.brand{margin:0 0 11px}.sidebar nav{display:flex;overflow:auto;gap:3px}.nav-title,.sidebar-bottom{display:none}.nav-link{white-space:nowrap;padding:9px 11px;justify-content:center}.nav-link span:last-child{font-size:10px}.nav-icon{display:none}.topbar{height:54px;padding:0 15px}.content{padding:24px 14px}.main-footer{padding:14px;display:block}.main-footer span{display:none}.page-head{align-items:flex-start;flex-direction:column}.page-head h1{font-size:23px}.stat-grid{gap:10px}.stat-card{padding:14px;min-height:126px}.stat-number{font-size:25px}.panel{padding:16px}.auth-screen{grid-template-columns:1fr}.auth-aside{padding:22px;min-height:140px}.auth-title,.auth-decor,.auth-aside>p{display:none}.auth-form-wrap{padding:35px 25px}.auth-card h1{font-size:24px}.form-grid{grid-template-columns:1fr}.report-info{grid-template-columns:1fr 1fr}.survey-controls label{min-width:130px}}@media print{.sidebar,.topbar,.main-footer,.page-head,.no-print,.btn{display:none!important}.main-shell,.content{width:100%;max-width:100%;margin:0;padding:0;background:white}.report-card{border:0;padding:0}.report-card h1{font-size:26px}body{background:white}.panel{box-shadow:none}}

.roam-pin{width:29px;height:29px;border-radius:50%;background:#9b4aba!important;color:white;text-align:center;display:grid;place-items:center;font-size:14px;font-weight:800;z-index:3}
@media(max-width:780px){.map-toolbar select{max-width:95vw}.mode-switch{flex-wrap:wrap}}

.map-board{min-height:0}

/* Web site survey / final report refinements */
.map-board{box-sizing:border-box;border:1px solid #ccd6df;min-height:0;aspect-ratio:1/1;}
.map-board img,.map-board canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;}
.map-board canvas{pointer-events:none;}
.map-board #mapMarkers{position:absolute;inset:0;pointer-events:none;}
.map-marker.site-soft{width:8px;height:8px;background:#173653!important;opacity:.6;box-shadow:0 1px 4px #16233688;}
.map-marker.calibration-pin{background:#0ba996!important;width:25px;height:25px;color:white;display:grid;place-items:center;font-weight:800;}
.coverage-info{font-size:11px;line-height:1.5;color:#456276;padding:10px 13px;border-top:1px solid #e3e9ec;background:white;}
.report-filters{margin-top:-4px;margin-bottom:18px;align-items:end;}
#finalReport{max-width:900px;margin:0 auto;padding:35px 40px;color:#182d40;}
#finalReport .report-head{align-items:flex-start;}
.report-brand{text-align:right;font-size:14px;color:#0f283d;white-space:nowrap;}
.report-brand span{display:block;font-size:11px;color:#7e8b98;font-weight:500;margin-top:7px;}
.report-section{border-bottom:1px solid #e7edf0;padding:18px 0 20px;}
.report-section:last-of-type{border:0}
.report-section h2{font-size:18px;line-height:1.4;margin:5px 0 8px;}
.report-section p{font-size:12px;line-height:1.8;color:#405164;margin:7px 0;}
.report-section .eyebrow{margin-bottom:5px;color:#0b9783;font-size:9px;}
.report-confidence{background:#f1f7f7;padding:12px 14px;border-left:3px solid #0ba58d;font-size:11px;margin-top:14px;line-height:1.6;}
.report-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;}
.report-kpis>div{background:#f4f8fa;padding:15px 11px;border:1px solid #e8eef2;border-radius:9px;}
.report-kpis strong{display:block;font-size:21px;letter-spacing:-.4px;line-height:1.3;color:#122b42;}
.report-kpis span{display:block;color:#788a9c;font-size:10px;margin-top:5px;}
.report-map-board{position:relative;width:100%;height:auto;overflow:hidden;background:#f4f7f9;border:1px solid #d8e1e7;margin-top:10px;min-height:120px;}
.report-map-board img,.report-map-board canvas{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:fill;}
.report-map-board canvas{pointer-events:none;}
.report-map-key{display:flex;align-items:center;gap:13px;margin-top:11px;}
.report-map-key .legend-bar{flex-shrink:0;display:block;height:10px;width:130px;}
.report-map-key small{font-size:10px;color:#85919b;}
.report-caption{font-size:10px!important;color:#738392!important;line-height:1.6!important;}
.report-actions{padding-left:22px;font-size:12px;color:#334658;line-height:1.9;margin-bottom:4px;}
.report-actions li{margin-bottom:3px;}
.report-footer{display:flex;justify-content:space-between;align-items:center;margin-top:28px;padding-top:14px;border-top:2px solid #0ea78f;font-size:10px;}
.report-footer b{font-weight:800;letter-spacing:1px;}
#aiReportContent{white-space:pre-wrap;font-size:12px!important;line-height:1.65;}
#surveyAI #surveyAiText{max-height:120px;overflow:auto;line-height:1.6!important;}
.ai-compact-results{max-height:250px;overflow:auto}
@media(max-width:850px){
 #finalReport{padding:20px;}
 .report-kpis{grid-template-columns:repeat(2,1fr);}
 .report-head{gap:10px;flex-wrap:wrap}
 .report-brand{margin-left:auto}
}
@page{size:A4;margin:13mm 12mm;}
@media print{
 html,body{background:white!important;print-color-adjust:exact;-webkit-print-color-adjust:exact;}
 .sidebar,.topbar,.main-footer,.page-head,.survey-controls,.no-print,#toast{display:none!important;}
 .shell,.main-shell,.content,#view{display:block!important;max-width:100%!important;width:100%!important;margin:0!important;padding:0!important;background:white!important;}
 #finalReport{margin:0!important;max-width:100%!important;width:100%!important;border:0!important;padding:0!important;box-shadow:none!important;}
 #finalReport .report-section{break-inside:avoid;page-break-inside:avoid;}
 #finalReport .report-map-section{break-before:auto;}
 #finalReport table{white-space:normal;}
 #finalReport thead{display:table-header-group}
 #finalReport tr{break-inside:avoid;}
 #finalReport .report-map-board{max-height:125mm;}
 #finalReport .report-kpis{grid-template-columns:repeat(4,1fr);}
 #finalReport .report-kpis>div{padding:10px;}
 #finalReport .report-kpis strong{font-size:18px;}
 #finalReport .report-section{padding:12px 0;}
 #finalReport .report-head h1{font-size:24px;}
}

/* Pense Wi-Fi Web 0.9: floor-scoped AP placement and wall editor */
.rf-editor .panel-head{margin-bottom:12px;}
.rf-toolbar{display:flex;align-items:end;gap:9px;flex-wrap:wrap;}
.rf-toolbar label{display:flex;flex-direction:column;gap:4px;min-width:170px;flex:1 1 190px;font-size:11px;font-weight:700;color:#536d7c;}
.rf-toolbar label select{width:100%;min-height:35px;}
.rf-editor h3{font-size:13px;margin:16px 0 7px;}
.rf-warning{padding:13px 16px;border-left:3px solid #bf6a35;color:#8d542c;background:#fff8ee;margin-bottom:14px;font-size:12px;font-weight:600;}
.rf-editor .field-tip{line-height:1.55}
.rf-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:16px;}
.rf-columns>div{min-width:0;}
.rf-row{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:9px 0;border-bottom:1px solid #e6edf1;}
.rf-row b{display:block;font-size:12px;}
.rf-row small{display:block;font-size:10px;color:#718392;margin-top:4px;overflow-wrap:anywhere;}
.rf-actions{display:flex;flex-wrap:nowrap;gap:4px;}
.rf-actions .btn{font-size:10px;padding:7px 8px;}
.rf-discovery{background:#f5f8fa;border:1px solid #e3edf1;border-radius:12px;padding:13px 16px;margin:18px 0;}
.rf-discovery h3{margin-top:0;}
.rf-inventory{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.rf-inventory strong{font-size:22px;color:#0c8e78;}
.rf-inventory span{font-size:11px;color:#607788;margin-right:12px;}
.rf-wall-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:3;overflow:visible;}
.map-board #mapMarkers{z-index:4;}
.rf-editor .rf-toolbar .btn{min-height:36px;}
.rf-editor .btn:disabled{opacity:.5;cursor:not-allowed;}
#rfApDialog,#rfWallDialog{max-width:520px;width:calc(100% - 28px);}
.rf-legend{font-size:11px;color:#647888;padding:9px 11px;background:#f4f8fa;margin-top:8px;border:1px solid #e5ebef;border-radius:7px;}
@media(max-width:850px){
 .rf-columns{grid-template-columns:1fr;}
 .rf-actions{flex-shrink:0;}
 .rf-toolbar label{flex:1 1 100%;}
}
@media print{
 .rf-editor,.rf-wall-overlay{display:none!important;}
}

/* Survey RF inventory / report wall and AP overlays */
.rf-inventory-details{padding:7px 0 0;}
.rf-inventory-details summary{font-size:12px;font-weight:700;cursor:pointer;}
.rf-inventory-scroll{max-height:260px;overflow:auto;margin-top:9px;background:white;border-radius:7px;}
.rf-inventory-scroll table{font-size:10px;}
.rf-report-walls{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:5;}
.rf-report-aps{position:absolute;inset:0;pointer-events:none;z-index:6;}
.rf-report-aps span{position:absolute;transform:translate(-50%,-50%);font-size:9px;padding:4px;border-radius:50%;
 border:2px solid white;background:#073b5d;color:white;font-weight:800;box-shadow:0 1px 7px #0003;}
@media print{.rf-report-walls,.rf-report-aps{display:block!important;}}

/* Web V0.9.1 — AP icons and floor-plan interaction targets */
.map-board .rf-ap-pin{
 position:absolute;transform:translate(-50%,-50%);z-index:6;
 width:36px;min-height:36px;border-radius:13px;border:2px solid #fff;
 background:#0f806d;color:#fff;box-shadow:0 3px 12px #063f4166;
 padding:4px;display:flex;align-items:center;justify-content:center;
 cursor:grab;pointer-events:auto;touch-action:none;overflow:visible;
}
.map-board .rf-ap-pin svg{width:24px;height:24px;flex-shrink:0;pointer-events:none;}
.map-board .rf-ap-pin:hover,.map-board .rf-ap-pin:focus-visible{
 background:#0c4c82;outline:3px solid #1db89c99;z-index:8;
}
.map-board .rf-ap-pin:active{cursor:grabbing;}
.map-board .rf-ap-pin-label{
 position:absolute;top:calc(100% + 4px);left:50%;transform:translateX(-50%);
 border-radius:5px;background:#102b41ec;color:#fff;font-size:10px;
 font-weight:800;line-height:1.35;white-space:nowrap;max-width:130px;
 padding:3px 6px;box-shadow:0 2px 7px #0004;pointer-events:none;
}
.map-board #mapMarkers{pointer-events:none;z-index:5;}
.map-board #mapMarkers .rf-ap-pin{pointer-events:auto;}
.map-board .rf-wall-overlay{pointer-events:none;z-index:4;}
.map-board .rf-wall-hit{
 pointer-events:stroke;cursor:grab;touch-action:none;
}
.map-board .rf-wall-hit:active{cursor:grabbing;}
.map-board .rf-wall-hit:hover{stroke:#22b99c66;}
.map-board .rf-map-menu{
 position:absolute;z-index:15;width:235px;max-width:94%;background:white;
 border:1px solid #cddde3;border-radius:12px;padding:11px;
 box-shadow:0 10px 32px #102e4b55;cursor:default;touch-action:auto;
}
.rf-map-menu-head{display:flex;justify-content:space-between;align-items:center;gap:8px;}
.rf-map-menu-head b{font-size:12px;overflow-wrap:anywhere;color:#163247;}
.rf-map-menu-head button{width:25px;height:25px;background:#eef4f7;border:0;border-radius:7px;font-size:18px;}
.rf-map-menu-sub{font-size:10px;color:#718492;line-height:1.5;margin:6px 0 10px;overflow-wrap:anywhere;}
.rf-map-menu-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;}
.rf-map-menu-actions button{border:1px solid #dbe5eb;background:#f8fbfc;border-radius:7px;
 padding:8px 5px;font-size:10px;font-weight:700;color:#173346;cursor:pointer;}
.rf-map-menu-actions button:hover{background:#d7f2e9;border-color:#77c9bc;}
.rf-focus-info{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
 gap:8px;padding:9px 14px;margin-top:4px;background:#e6f5f3;border:1px solid #b9e2dd;
 color:#165a58;font-size:11px;border-radius:8px;}
.rf-focus-info:empty{display:none;}
.rf-focus-info .btn{font-size:10px;padding:7px 10px;}
/* Readable heatmap even when projected signal is weaker */
#mapBoard #heatCanvas{z-index:2;opacity:1;}
#mapBoard #floorImage{z-index:1;}
@media(max-width:700px){
 .map-board .rf-ap-pin{width:40px;min-height:40px;}
 .map-board .rf-map-menu{width:210px;}
}

/* Web V0.10 — single physical AP and multiple independently measured radios */
#rfApDialog{max-width:610px;width:calc(100vw - 36px);max-height:calc(100vh - 40px);overflow:auto;}
#rfApDialog .rf-radios-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:15px 0 9px;}
#rfApDialog .rf-radios-head h3{margin:0;font-size:14px;}
#rfApDialog .rf-radio-row{padding:12px 13px;margin:9px 0;background:#f5f9fa;border:1px solid #d8e5e9;border-radius:11px;}
#rfApDialog .rf-radio-row-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px;}
#rfApDialog .rf-radio-row-top b{font-size:12px;}
#rfApDialog .rf-remove-radio{font-size:11px;background:#fff;border:1px solid #edcbc3;border-radius:8px;color:#a14b46;padding:5px 9px;}
#rfApDialog .rf-radio-row label{margin-bottom:9px;}
#rfApDialog .rf-radio-row input,#rfApDialog .rf-radio-row select{padding:8px 10px;}
.rf-row>div:first-child{min-width:0;flex:1;}
.rf-row small b{font-size:10px;display:inline;}
#rfApDialog .rf-radios-head .btn{white-space:normal;text-align:center;}
@media(max-width:580px){#rfApDialog .rf-radios-head{align-items:start;flex-direction:column;}}

/* RF placement flow V0.10.1: visible tool state, map receives click before pins. */
#mapBoard.rf-placing-ap,#mapBoard.rf-placing-wall{cursor:crosshair!important;outline:3px solid #16af95;outline-offset:2px;}
#mapBoard.rf-placing-ap{box-shadow:inset 0 0 0 3px #16af951a;}
#mapBoard.rf-placing-wall{outline-color:#c48146;}
#rfToolHint{padding:9px 11px;border:1px solid #e5edf0;border-radius:8px;margin-top:8px;}
#mapBoard.rf-placing-ap~#rfToolHint{font-weight:700;}

/* V0.11 lifecycle management and immutable version checkpoints */
.manage-switch{display:flex;gap:8px;margin:0 0 18px;flex-wrap:wrap}
.manage-switch .btn{min-height:37px}
.manage-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:5px}
.manage-actions .btn{padding:7px 10px;font-size:11px;min-height:33px}
.managed-project{gap:12px;align-items:center;border-bottom:1px solid #e8edf1;padding:13px 0}
.managed-project .manage-project-info{flex:1;min-width:180px}
.managed-project .manage-project-info h3{margin:0 0 5px}
.managed-project .manage-project-info small{display:block;margin-bottom:9px}
.status-inline{display:inline-flex!important;align-items:center;gap:8px;font-size:11px;color:#52677a}
.status-inline select{font-size:11px;max-width:172px;min-height:31px;margin:0;padding:5px 9px;background:#f8fbfc;border:1px solid #d2dee6;border-radius:7px}
.btn.danger-outline{border-color:#f0d5d1;color:#a64740;background:#fffafa}
.btn.danger-outline:hover{border-color:#b65c50;background:#fff0ed}
.manage-dialog{max-width:545px;width:calc(100vw - 34px);max-height:85vh;overflow:auto;padding:22px}
.manage-dialog h2{font-size:19px;margin-top:0;margin-bottom:14px}
.manage-dialog label{display:flex;flex-direction:column;gap:5px;margin-bottom:12px;font-size:12px;color:#486276}
.manage-dialog input,.manage-dialog select,.manage-dialog textarea{width:100%}
.manage-dialog .dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.versions-dialog{max-width:660px}
.versions-dialog #mgNewVersionForm{padding:12px 14px;background:#f4f9fa;border:1px solid #e3ecef;border-radius:10px}
.versions-dialog #mgNewVersionForm textarea{resize:vertical;min-height:58px}
.version-history{margin:17px 0 10px}
.version-history h3{font-size:13px}
.version-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 3px;border-bottom:1px solid #e8edf1}
.version-row b{display:block;font-size:12px}
.version-row small{display:block;margin-top:4px;font-size:10px;color:#7b8d99}
.version-row .btn{font-size:11px}
@media(max-width:800px){.managed-project,.version-row{flex-wrap:wrap}.managed-project .manage-actions{justify-content:flex-start}.version-row .btn{max-width:100%}}

/* V0.12 labelled per-floor collection points and printable RF review */
.point-tools{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:10px 0 16px;padding:12px 15px;background:#f4f9fc;border:1px solid #dbe8f0;border-radius:11px}
.point-tools .btn{min-width:190px}
#mapBoard #mapMarkers .survey-point-pin{
 position:absolute;z-index:7;pointer-events:auto;transform:translate(-50%,-50%);
 border:2px solid white;border-radius:8px;min-width:42px;min-height:27px;
 background:#174a67;color:white;box-shadow:0 1px 6px #102e4c99;
 font-size:10px;line-height:1.15;font-weight:800;letter-spacing:.15px;
 padding:5px 6px;cursor:pointer;touch-action:manipulation;
}
#mapBoard #mapMarkers .survey-point-pin:hover,#mapBoard #mapMarkers .survey-point-pin:focus-visible{
 background:#068f7e;outline:3px solid #0ba99066;z-index:10;
}
#mapBoard #mapMarkers .survey-point-pin.point-pending{background:#db732c;color:white}
#mapBoard #mapMarkers .survey-point-pin.point-discarded{background:#8c929f;opacity:.5}
.collection-dialog{max-width:690px;width:calc(100vw - 30px);max-height:87vh;overflow:auto}
.collection-dialog label{display:flex;flex-direction:column;gap:5px;margin:10px 0}
.collection-dialog label input,.collection-dialog label textarea,.collection-dialog label select{width:100%}
.collection-dialog .point-actions{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.collection-dialog .point-actions .btn{padding:8px 10px;white-space:normal}
.collection-dialog .point-readings{max-height:240px;overflow:auto;font-size:11px}
.collection-dialog h3{font-size:14px;margin:15px 0 7px}
.report-map-board .report-point-overlay{position:absolute;inset:0;z-index:9;pointer-events:none}
.report-map-board .report-point-label{
 position:absolute;transform:translate(-50%,-50%);border:1px solid #fff;
 border-radius:5px;background:#1c4057e8;color:white;font-weight:800;font-size:9px;
 padding:3px 5px;box-shadow:0 1px 5px #0004;white-space:nowrap;
}
.report-map-board .report-point-label.weak{background:#b15c29e6}
@media print{
 .point-tools,.collection-dialog{display:none!important;}
 .report-map-board .report-point-overlay{display:block!important;}
 .report-map-board .report-point-label{background:#1c4057!important;color:white!important;print-color-adjust:exact;-webkit-print-color-adjust:exact;}
}

/* V0.13 — collection point removal/recovery */
.point-merge{display:flex;align-items:flex-end;gap:9px;flex-wrap:wrap;margin:11px 0 15px;padding:11px 12px;border:1px solid #e0e6ea;border-radius:9px;background:#f8fbfc}
.point-merge label{flex:1;min-width:230px}
.point-merge button{margin-bottom:10px}
.point-trash-row{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:12px 3px;border-bottom:1px solid #dee9ef}
.point-trash-row small{display:block;font-size:11px;color:#687e90;margin-top:4px}
.point-trash-row .btn{flex-shrink:0}
.collection-dialog .point-readings button{font-size:10px;padding:5px 7px}

/* RF controls placed AFTER the interactive map (web 0.13.1). */
.rf-after-map{margin-top:3px}
.map-rf-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.map-rf-actions .btn{font-size:10px;padding:8px 10px;min-height:34px}
@media(max-width:700px){.map-rf-actions{width:100%}.map-rf-actions .btn{flex:1 1 auto;white-space:normal}}

/* Enterprise RF planning V0.14: antenna pointing arrow and model parameters */
#rfApDialog{max-width:680px;width:calc(100vw - 30px);max-height:88vh;overflow-y:auto}
#rfApDialog .three-col{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
#rfApDialog .rf-pattern-specs{padding:12px 13px;margin:10px 0;border:1px solid #d9e6e9;background:#f5f9fb;border-radius:9px}
#rfApDialog .rf-pattern-specs label{font-size:11px}
#rfApDialog .rf-pattern-specs .field-tip{margin-bottom:0}
#rfApDialog .rf-radio-row .two-col{gap:9px}
.rf-ap-bearing{position:absolute;left:calc(100% - 4px);top:-8px;display:grid;place-items:center;background:#e6faf5;border-radius:50%;border:1px solid #2b9788;color:#176f67;box-shadow:0 1px 3px #0004;font-size:14px;line-height:1;width:24px;height:24px;transform-origin:calc(-100% + 4px) calc(100% - 4px);pointer-events:none;}
@media(max-width:620px){#rfApDialog .three-col{grid-template-columns:1fr 1fr}#rfApDialog .three-col label:last-child{grid-column:span 2}}

/* Pense Wi-Fi WEB 0.15: calibrated, multi-layer map zoom / pan / fullscreen */
.web-zoom-toolbar{padding:9px 13px;display:flex;align-items:center;justify-content:space-between;gap:9px;
  flex-wrap:wrap;border-bottom:1px solid var(--border);background:#f8fbfc}
.web-zoom-group{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.web-zoom-group .btn{padding:8px 10px;min-height:35px;font-size:11px}
#webZoomIn,#webZoomOut{width:37px;font-size:19px;line-height:1}
#webZoomLabel{min-width:49px;text-align:center;font-size:12px;font-weight:800;color:#21556b;font-variant-numeric:tabular-nums}
.web-map-surface{position:absolute;inset:0;transform-origin:50% 50%;will-change:transform}
#mapBoard.web-map-zoomed{cursor:grab}
#mapBoard.web-map-zoomed:active{cursor:grabbing}
#mapBoard.web-map-pan-mode{cursor:grab!important}
#mapBoard.web-map-pan-mode:active{cursor:grabbing!important}
#mapBoard.web-map-pan-mode .rf-interactive,#mapBoard.web-map-pan-mode .survey-point-pin{cursor:grab}
#mapBoard{touch-action:none;overscroll-behavior:contain}
body.web-map-body-fullscreen{overflow:hidden}
.map-panel.web-map-fullscreen{position:fixed!important;inset:0!important;width:100vw!important;height:100dvh!important;
 margin:0!important;padding:0!important;max-width:none!important;border:0!important;
 border-radius:0!important;z-index:1000!important;display:flex!important;flex-direction:column!important;
 background:#fff;box-shadow:0 0 0 100vmax #0009}
.map-panel.web-map-fullscreen .map-toolbar,
.map-panel.web-map-fullscreen .web-zoom-toolbar,
.map-panel.web-map-fullscreen .map-meta{flex:0 0 auto}
.map-panel.web-map-fullscreen .map-wrap{flex:1 1 auto;display:flex;min-height:0;padding:8px;overflow:hidden}
.map-panel.web-map-fullscreen #mapBoard{flex:1 1 auto;height:100%;width:100%;aspect-ratio:auto!important;min-height:0}
.map-panel.web-map-fullscreen #coverageInfo{flex:0 0 auto;max-height:70px;overflow:auto}
@media(max-width:700px){.web-zoom-toolbar{gap:5px;padding:7px}.web-zoom-group .btn{padding:7px 9px}.map-panel.web-map-fullscreen .map-toolbar{padding:7px}.map-panel.web-map-fullscreen .map-wrap{padding:4px}}
@media print{.web-zoom-toolbar{display:none!important}}

/* V0.15.1 — map stays a fixed clipped viewport while the content pans */
#mapBoard{position:relative!important;overflow:hidden!important;user-select:none!important;
  -webkit-user-select:none!important;touch-action:none!important;overscroll-behavior:contain!important;
  -webkit-touch-callout:none}
#mapBoard .web-map-surface{user-select:none!important;-webkit-user-select:none!important;
  touch-action:none!important;pointer-events:auto}
#mapBoard #floorImage,#mapBoard #heatCanvas{pointer-events:none!important;
  user-select:none!important;-webkit-user-select:none!important;
  -webkit-user-drag:none!important;touch-action:none!important}
#mapBoard.web-map-zoomed .web-map-surface{cursor:grab}
#mapBoard.web-map-zoomed.web-map-pan-mode .web-map-surface{cursor:grab}
#mapBoard.web-map-zoomed .web-map-surface:active{cursor:grabbing}
.map-wrap{min-width:0;max-width:100%;overflow:hidden}

/* WEB V0.15.2: engineering plan zooms, overlay UI markers do NOT balloon.
   The CSS transform (scale then translate) with origin at top-left guarantees
   the markers remain centered on their exact calibrated floor coordinates. */
#mapBoard .web-map-surface .map-marker.calibration-pin,
#mapBoard .web-map-surface .map-marker.roam-pin,
#mapBoard .web-map-surface .survey-point-pin,
#mapBoard .web-map-surface .rf-ap-pin{
  transform-origin:0 0!important;
  transform:scale(var(--map-marker-inverse,1)) translate(-50%,-50%)!important;
}
#mapBoard .web-map-surface .map-marker.calibration-pin{
  z-index:12!important;box-shadow:0 1px 3px #0006;
  font-size:12px!important;line-height:1!important;
  width:25px!important;height:25px!important;
  min-width:0!important;min-height:0!important;
  display:grid!important;place-items:center!important;
}
#mapBoard .web-map-surface .survey-point-pin{
  min-width:42px!important;min-height:27px!important;
  font-size:10px!important;
}
#mapBoard .web-map-surface .rf-ap-pin{
  width:36px!important;min-height:36px!important;
}

/* Web V0.16 — clone RF APs in sequence on large corporate floor plans */
#mapBoard.rf-duplicating-ap{cursor:copy!important;outline:3px solid #5475dd;outline-offset:2px}
#mapBoard.rf-duplicating-ap .web-map-surface{cursor:copy!important}
.map-rf-actions .rf-clone-live{width:100%;font-size:11px;background:#eef2ff;color:#2c457f;border:1px solid #c5d2f5;padding:7px 9px;border-radius:7px}
.rf-clone-picker{max-width:500px;width:calc(100vw - 28px)}
.rf-clone-picker select{width:100%}
.rf-editor .rf-row .rf-actions{flex-wrap:wrap;justify-content:flex-end}
@media(max-width:700px){.rf-editor .rf-row{align-items:flex-start;flex-direction:column}.rf-editor .rf-row .rf-actions{width:100%;justify-content:flex-start}}

.rf-model-preset{border:1px solid #d4e6eb;border-radius:8px;background:#f4fafc;padding:10px;margin-top:8px}
.rf-model-preset .field-tip{margin:5px 0 0}
.rf-scale-warning{color:#824413!important;border-left:3px solid #b87121;padding:8px 10px;background:#fff7eb;border-radius:5px}

/* V0.18: datasheet catalogue + Sexta-feira technical research audit */
.rf-catalog-tools{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0}
.rf-catalog-panel{margin-top:13px;padding:12px;border:1px solid #d9e4ed;border-radius:9px;background:#f7fbfd}
.rf-catalog-panel summary{cursor:pointer;font-size:13px}
.rf-catalog-item{padding:8px 2px;border-bottom:1px solid #dae5ea;font-size:12px}
.rf-catalog-item div{margin:4px 0}
.rf-source-link{font-size:12px;display:inline-block;margin:3px 0 5px}

/* Web V0.18.1 — don't display manufacturer-agnostic Apply until official lookup confirms model */
#rfCatalogueApply[hidden]{display:none!important}
#rfCatalogueApply:not([hidden]){display:inline-flex}

/* Role / share administration V0.19 */
.security-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.security-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid #e0e7ef}
.security-row small{display:block;color:#7b8e9c;font-size:10px;margin-top:4px}
.security-user{padding:16px 0;border-bottom:1px solid #dde8ef}
.security-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:11px}
.security-actions button{padding:9px 11px}
.permissions{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:7px}
.permissions label{margin:0}
.permissions span{display:block;overflow-wrap:anywhere}
.permissions select{padding:8px}
.share-result{margin:13px 0;border:1px solid #d1e2e8;background:#f5faf9;border-radius:8px;padding:13px}
.technician-viewer #rfEditor .rf-actions,.technician-viewer #mapQuickAP,.technician-viewer #mapQuickWall,.technician-viewer #mapQuickClone{display:none}
#mapBoard.survey-readonly{cursor:grab!important}
@media(max-width:850px){.security-grid{grid-template-columns:1fr}}

.security-row-actions{display:flex;align-items:center;gap:7px;max-width:48%}
.security-row-actions select{min-width:105px;font-size:11px;padding:8px}

/* ===============================================================
   PENSE REDE • IDENTIDADE CORPORATIVA 2026 | WEB V0.20.0
   Cores amostradas dos logotipos oficiais do cliente:
   Turquesa #00AEC3, laranja #DD8537.
   A escala RF fraco/forte é SEMPRE independente da marca.
   =============================================================== */
:root{
  --brand-primary:#00aec3;--brand-dark:#008c9d;--brand-deep:#006e7b;
  --brand-primary-soft:#e4f8fa;--brand-orange:#dd8537;--brand-orange-soft:#fff5ea;
  --brand-text:#15313c;--brand-muted:#63828c;
  --teal:#008c9d;--teal2:#e4f8fa;
  --navy:#102a35;--navy2:#163744;--ink:#15313c;
  --slate:#607984;--muted:#869fa9;--border:#dce9ee;
  --background:#f5fafb;--shadow:0 5px 25px rgba(11,90,105,.065);
}
body{color:var(--brand-text);background:var(--background)}
h1,h2,h3,h4{color:var(--brand-text)}
.sidebar{background:linear-gradient(170deg,#082f3d 0%,#0d3d4a 67%,#10333f 100%)}
.sidebar .brand{display:flex;flex-direction:column;align-items:flex-start;gap:5px;
  margin:0 0 30px;padding:5px 9px 18px;border-bottom:1px solid #ffffff21}
.sidebar-logo{display:block;max-width:100%;width:182px;height:auto;aspect-ratio:850/295;
  object-fit:contain;object-position:left center}
.sidebar-product-name{color:#d4eef0;font-weight:800;letter-spacing:1.6px;font-size:10px;
  padding-left:2px}
.sidebar .nav-link{color:#cbdee3;transition:background .15s,color .15s}
.sidebar .nav-link:hover{background:#ffffff16;color:white}
.sidebar .nav-link.active{background:#007d8b;color:#fff;
  box-shadow:inset 4px 0 0 var(--brand-orange)}
.sidebar .nav-title,.sidebar-foot{color:#a8c0c9}
.sidebar-bottom{border-top-color:#ffffff25}
.sidebar .status{color:#e0f8fb}
.auth-aside{background:linear-gradient(145deg,#073442 0%,#006e7b 100%)}
.auth-brand{gap:11px;display:flex;flex-direction:column;align-items:flex-start}
.auth-brand-logo{display:block;width:min(330px,85%);height:auto;object-fit:contain}
.auth-product-name{display:block;font-size:12px;letter-spacing:2px;color:#e9fbfd;font-weight:800}
.auth-title{color:white}
.auth-title:after{content:"";display:block;width:72px;height:5px;background:var(--brand-orange);
 margin-top:23px;border-radius:5px}
.auth-aside>p{color:#d2eef1}
.auth-decor .ring{border-color:#a4eff4}
.auth-decor .signal{background:var(--brand-orange);box-shadow:0 0 48px #dd853780}
.topbar{border-bottom:1px solid var(--border)}
.env-label{color:var(--brand-deep);background:var(--brand-primary-soft)}
.avatar{background:var(--brand-primary-soft);color:var(--brand-deep)}
.eyebrow{color:var(--brand-deep)}
.btn.primary{background:var(--brand-dark);color:white;border-color:var(--brand-dark)}
.btn.primary:hover{background:var(--brand-deep);border-color:var(--brand-deep)}
.btn.light:hover{border-color:#8acdd6;background:#f1fbfc;color:var(--brand-deep)}
.btn.dark{background:#153a48}
input:focus,select:focus,textarea:focus{border-color:var(--brand-primary);
 box-shadow:0 0 0 3px #00aec327;outline:none}
.link,.report-section .eyebrow{color:var(--brand-deep)}
.stat-icon,.stat-card:nth-child(2) .stat-icon,.stat-card:nth-child(4) .stat-icon{
  background:var(--brand-primary-soft);color:var(--brand-dark)}
.stat-card:nth-child(3) .stat-icon{background:var(--brand-orange-soft);color:#b46a22}
.stat-number{color:#143845}
.stat-card{border-top:3px solid #00aec32b}
.stat-card:nth-child(3){border-top-color:#dd85375c}
.pill{background:var(--brand-primary-soft);color:var(--brand-deep)}
.project-row:hover{background:#f4fbfc;border-color:#92d6df}
.mode-switch button.active{color:var(--brand-deep)}
.map-board{border-color:#c6dbe0}
.report-filters label:focus-within{color:var(--brand-deep)}
.banner{background:linear-gradient(124deg,#064657 0%,#008a9b 100%);
 border-color:#067f8c}
.banner .btn{color:var(--brand-deep)}
.banner p{color:#dbf5f7}
.banner:before{border-color:#dd85376e}
.upload-box{background:#f4fbfc;border-color:#98d2db}
.main-footer{align-items:center;color:var(--brand-muted)}
.footer-icon{vertical-align:middle;width:32px;height:23px;object-fit:contain;margin-right:6px}
.login-help span{color:var(--brand-orange)}
/* The client view intentionally keeps the RSSI bar red/yellow/green, never turquoise. */

/* RELATÓRIO: visual na tela e material A4 com logotipo vetorial impresso */
#finalReport{--report-teal:#00aec3;--report-orange:#dd8537;
  color:var(--brand-text);background:white;max-width:980px}
#finalReport .report-cover{display:flex;flex-direction:column;gap:20px;position:relative;
  padding:29px 33px 25px;border:1px solid #d8e8eb;
  border-top:8px solid var(--report-teal);border-radius:10px;
  background:linear-gradient(135deg,#fff 0%,#fff 66%,#ecfafc 100%);
  margin-bottom:27px;min-height:385px;overflow:hidden}
#finalReport .report-cover:after{content:"";position:absolute;right:-85px;bottom:-135px;
  width:300px;height:300px;border:30px solid #00aec30f;border-radius:50%;pointer-events:none}
#finalReport .report-cover-top{display:flex;align-items:center;justify-content:space-between;gap:12px}
#finalReport .report-cover-logo{display:block;width:235px;max-width:54%;height:auto}
#finalReport .report-document-type{font-size:10px;letter-spacing:1.3px;
  color:var(--brand-deep);font-weight:900;text-align:right}
#finalReport .report-cover-main{flex:1;position:relative;z-index:1;padding-top:18px}
#finalReport .report-cover-kicker{font-size:10px;letter-spacing:2px;font-weight:800;
  color:var(--brand-dark);margin-bottom:16px}
#finalReport .report-cover h1{font-size:35px;line-height:1.16;letter-spacing:-1.4px;
  font-weight:800;margin:0 0 13px;color:#153642}
#finalReport .report-cover h1 span{color:var(--brand-deep)}
#finalReport .report-cover-lead{max-width:520px;font-size:12px;color:#55727e}
#finalReport .report-cover-metadata{display:grid;grid-template-columns:1fr 1fr;gap:12px 25px;
  margin:24px 0 0;padding-top:16px;border-top:2px solid #dd853783}
#finalReport .report-cover-metadata>div{min-width:0;break-inside:avoid}
#finalReport .report-cover-metadata small{display:block;color:#7f9299;
  font-size:9px;letter-spacing:1.2px;font-weight:800}
#finalReport .report-cover-metadata strong{display:block;color:#163b48;font-size:13px;
  margin-top:5px;overflow-wrap:anywhere}
#finalReport .report-cover-bottom{display:flex;justify-content:space-between;gap:8px;
  border-top:1px solid #dbe9ed;padding-top:13px;
  color:#607985;font-size:10px;font-weight:600;position:relative;z-index:1;
  flex-wrap:wrap}
#finalReport .report-head{border-bottom:3px solid var(--brand-primary);
  padding-bottom:16px;margin-bottom:19px;align-items:center}
#finalReport .report-head h1{font-size:25px;color:#143946}
#finalReport .report-head .eyebrow{color:var(--brand-deep)}
#finalReport .report-brand{min-width:150px;display:flex;flex-direction:column;
  align-items:flex-end;gap:5px;white-space:normal}
#finalReport .report-logo{width:157px;max-width:100%;display:block;height:auto}
#finalReport .report-brand span{font-size:10px;color:#728f99;margin-top:0}
#finalReport .report-section{border-bottom-color:#dbe7ea}
#finalReport .report-section h2{color:#153b48}
#finalReport .report-section .eyebrow{color:var(--brand-deep)}
#finalReport .report-kpis>div{background:#f0fafb;border:1px solid #d3ecf1;
  border-top:3px solid var(--brand-primary);border-radius:9px}
#finalReport .report-kpis>div:nth-child(3){border-top-color:var(--brand-orange);
 background:#fff8ef;border-color:#f6e1c8}
#finalReport .report-kpis strong{color:#0b5c6d}
#finalReport .report-kpis>div:nth-child(3) strong{color:#9b5924}
#finalReport .report-kpis span{color:#547581}
#finalReport .report-confidence{background:#f1fafb;border-left-color:var(--brand-primary);
 border-radius:4px;color:#2b5260}
#finalReport .report-condition{margin-top:14px;padding:12px 15px;
 border-left:4px solid var(--brand-primary);background:#f2fafb;
 display:flex;flex-direction:column;gap:5px;border-radius:5px}
#finalReport .report-condition .condition-label{font-size:9px;font-weight:800;
 color:#4b747d;letter-spacing:1.25px}
#finalReport .report-condition strong{font-size:14px;color:#173d47}
#finalReport .report-condition-atencao{border-left-color:var(--brand-orange);background:#fff8ef}
#finalReport .report-condition-critico{border-left-color:#b95745;background:#fff1ef}
#finalReport .report-condition-sem-dados{border-left-color:#8799a4;background:#f3f5f6}
#finalReport .report-map-board{border:1px solid #c9dee3;border-radius:5px}
#finalReport .report-map-key{border:1px solid #dce8eb;border-radius:7px;
 background:#fbfdfd;padding:9px 12px}
#finalReport .report-map-key .legend-bar{width:145px;height:12px}
#finalReport .report-map-key-label{display:flex;flex-direction:column;gap:4px}
#finalReport .report-map-key b{font-size:10px;color:#315665}
#finalReport .report-map-key small{font-size:9px;color:#788f98}
#finalReport .table-wrap{border:1px solid #dbe7eb;border-radius:6px}
#finalReport table{width:100%;border-collapse:collapse}
#finalReport th{background:#e7f7f9;color:#0b5a69;
 border-bottom:2px solid #8bced6;white-space:normal}
#finalReport td{color:#334e5a;white-space:normal;word-break:break-word;overflow-wrap:anywhere}
#finalReport tbody tr:nth-child(even){background:#f8fbfc}
#finalReport tbody tr:hover td{background:#eef9fb}
#finalReport .report-actions li::marker{color:var(--brand-orange);font-weight:800}
#finalReport .report-footer{border-top:2px solid var(--brand-primary);gap:18px}
#finalReport .report-footer-brand{display:flex;align-items:center;gap:10px}
#finalReport .report-footer-brand img{display:block;width:100px;height:auto;max-height:45px}
#finalReport .report-footer-brand span{color:#617c85}
#finalReport .report-footer>span{color:#69838a;text-align:right}
@media(max-width:700px){
 .sidebar-logo{width:145px}
 .sidebar .brand{margin-bottom:13px;padding-bottom:8px}
 #finalReport .report-cover{padding:22px 18px;min-height:350px}
 #finalReport .report-cover-logo{width:160px}
 #finalReport .report-cover h1{font-size:29px}
 #finalReport .report-cover-metadata{grid-template-columns:1fr 1fr;gap:13px}
 #finalReport .report-cover-bottom{flex-direction:column}
 #finalReport .report-map-key{flex-wrap:wrap}
}
/* Real print/PDF: cover is its own page; tables repeat headers and map retains colors. */
@page{
 size:A4;
 margin:15mm 12mm 18mm;
 @top-right{content:"PENSE REDE  •  WI-FI SITE SURVEY";font:700 7.5pt Manrope,sans-serif;color:#268b98}
 @bottom-left{content:"Pense Rede Informática  |  Relatório técnico";font:600 7.5pt Manrope,sans-serif;color:#637f88}
 @bottom-right{content:"Página " counter(page) " / " counter(pages);font:600 7.5pt Manrope,sans-serif;color:#637f88}
}
@media print{
 html,body{margin:0!important;padding:0!important;background:white!important;
   color:#15313c!important;print-color-adjust:exact!important;-webkit-print-color-adjust:exact!important}
 #finalReport{font:11pt Manrope,'DM Sans',Arial,sans-serif!important;padding:0!important;
   border:0!important;margin:0!important;width:100%!important;max-width:100%!important;
   box-shadow:none!important;overflow:visible!important}
 #finalReport .report-cover{display:flex!important;min-height:245mm!important;
   height:auto!important;break-after:page!important;page-break-after:always!important;
   border:0!important;border-top:6mm solid #00aec3!important;border-radius:0!important;
   margin:0!important;padding:16mm 8mm 11mm!important;box-shadow:none!important}
 #finalReport .report-cover-top{align-items:start!important}
 #finalReport .report-cover-logo{width:65mm!important;max-width:75%!important}
 #finalReport .report-cover-main{padding-top:34mm!important}
 #finalReport .report-cover h1{font-size:34pt!important}
 #finalReport .report-cover-metadata{padding-top:10mm!important;margin-top:18mm!important}
 #finalReport .report-cover-metadata strong{font-size:11pt!important}
 #finalReport .report-head{break-inside:avoid!important;page-break-inside:avoid!important}
 #finalReport .report-head h1{font-size:20pt!important}
 #finalReport .report-logo{width:40mm!important}
 #finalReport .report-section{break-inside:auto!important;page-break-inside:auto!important}
 #finalReport .report-kpis, #finalReport .report-kpis>div,
 #finalReport .report-confidence,#finalReport .report-condition,
 #finalReport .report-map-section,#finalReport .report-map-key,
 #finalReport .report-footer{break-inside:avoid!important;page-break-inside:avoid!important}
 #finalReport .report-map-board{height:auto!important;max-height:123mm!important;
    break-inside:avoid!important;page-break-inside:avoid!important}
 #finalReport .table-wrap{overflow:visible!important;max-height:none!important;
   border-radius:0!important}
 #finalReport table{table-layout:fixed!important;white-space:normal!important;font-size:8pt!important}
 #finalReport th,#finalReport td{padding:7px 6px!important;font-size:8pt!important}
 #finalReport thead{display:table-header-group!important}
 #finalReport tr{break-inside:avoid!important;page-break-inside:avoid!important}
 #finalReport h2,#finalReport h3{break-after:avoid!important;page-break-after:avoid!important}
 #finalReport .report-section p,#finalReport .report-caption{orphans:3;widows:3}
 #finalReport .report-footer{margin-top:15px!important}
 #finalReport .report-footer-brand img{width:30mm!important}
}
