:root{font-family:Segoe UI,Arial,sans-serif;color:#15364d;background:#edf3f7}*{box-sizing:border-box}body{margin:0}header{display:flex;align-items:center;gap:22px;padding:18px 5%;background:#102e48;color:white}header img{width:170px;height:auto;background:white;padding:10px;border-radius:9px}header small{display:block;margin-top:7px;color:#b7d5e7}main{max-width:1100px;margin:24px auto;padding:0 18px}section{background:white;border:1px solid #d5e0e8;border-radius:16px;padding:24px}#login{max-width:480px;margin:40px auto}h1{margin-top:0}p{line-height:1.5}label{display:block;margin:18px 0}input{display:block;padding:12px;border:1px solid #adc0ce;border-radius:8px;width:100%;font-size:16px;margin-top:6px}button{background:#126fa1;border:0;color:white;padding:13px 18px;border-radius:8px;font-size:15px;cursor:pointer}button:disabled{opacity:.5;cursor:wait}.secondary{background:#e5edf3;color:#15364d}.bar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;margin-bottom:12px}#message{color:#a53220;white-space:pre-line}canvas{display:block;width:100%;height:auto;background:#102e48;border-radius:8px;touch-action:none;outline:none}canvas:focus{box-shadow:0 0 0 3px #39a7d4}#status{font-weight:600}#requests>div{padding:12px;background:#fff4cd;border-radius:8px;margin:12px 0}#requests button{margin-left:10px}#notice,.help{font-size:14px;color:#536d80}#keys{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}#keys input{flex:1;min-width:160px;margin:0}[hidden]{display:none!important}@media(max-width:540px){header{padding:14px;gap:12px}header img{width:118px}header strong{font-size:15px}header small{font-size:11px}section{padding:14px}main{padding:0 10px;margin:15px auto}.bar button{flex:1}#identity{width:100%}}

/* Compact operator layout: preserve the canvas aspect ratio and pointer mapping. */
header{padding:8px 20px;gap:14px}header img{width:124px;padding:5px;border-radius:6px}header small{margin-top:3px;font-size:12px}
main{max-width:1600px;margin:10px auto;padding:0 14px}#session{padding:12px 16px;border-radius:10px}
#session .bar{justify-content:flex-start;gap:10px;margin-bottom:6px}#identity{flex:1;overflow-wrap:anywhere;font-size:14px}#logout{margin-left:auto}
button{padding:9px 14px;font-size:14px;min-height:40px}#status{margin:6px 0;font-size:15px}#notice{margin:6px 0;font-size:12px}#message:empty{display:none}
#requests>div{padding:8px 10px;margin:6px 0}#requests button{margin-left:8px}#keys{margin-top:8px}#keys input{padding:8px}.help{margin:8px 0 0;font-size:12px}
#screen{width:auto;height:auto;max-width:100%;margin:0 auto;border-radius:5px}
@media(min-width:800px) and (min-height:600px){#screen{max-height:calc(100dvh - 300px)}}
@media(max-width:540px){header{padding:8px 12px}header img{width:100px}header small{font-size:10px}main{margin:8px auto;padding:0 8px}#session{padding:10px}#identity{flex-basis:100%;font-size:13px}#session .bar button{flex:1}#requests button{display:block;margin:8px 0 0;width:100%}#screen{width:100%;max-height:none}#keys{gap:6px}}

/* Two viewing modes; no letterboxing inside the clickable canvas. */
#app-version{font-size:11px;font-weight:700;color:#536d80;white-space:nowrap;padding:4px 6px;border-radius:5px;background:#e5edf3}#viewbar{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}#compactstatus{font-size:12px;flex:1}body:not(.ihm-focus) #compactstatus{display:none}
#screen{max-height:none;width:100%;height:auto}
body.ihm-focus>header{display:none}body.ihm-focus main{max-width:none;margin:0;padding:0}body.ihm-focus #session{border:0;border-radius:0;padding:6px;background:#edf3f7}
body.ihm-focus:not(.ihm-menu-open) #session>.bar,body.ihm-focus:not(.ihm-menu-open) #status,body.ihm-focus:not(.ihm-menu-open) #notice,body.ihm-focus:not(.ihm-menu-open) #keys,body.ihm-focus:not(.ihm-menu-open) #session>.help{display:none!important}
body.ihm-focus #screen{width:auto;height:auto;max-width:100%;max-height:calc(100dvh - 68px);margin:auto}
body.ihm-menu-open #screen{max-height:none;width:100%;height:auto}
body.ihm-focus #requests:not(:empty){margin-bottom:6px}
@media(max-width:700px) and (orientation:portrait){body.ihm-focus #screen{width:100%;height:auto;max-height:none}}

/* Landscape focus: controls and status sit alongside the image. */
@media(orientation:landscape){
 body.ihm-focus:not(.ihm-menu-open) #session{min-height:100dvh;padding:6px 6px 6px 142px;display:flex;flex-direction:column;justify-content:center}
 body.ihm-focus:not(.ihm-menu-open) #viewbar{position:fixed;left:6px;top:6px;bottom:6px;width:124px;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;flex-wrap:nowrap;margin:0;gap:7px;padding-bottom:env(safe-area-inset-bottom)}
 body.ihm-focus:not(.ihm-menu-open) #viewbar button{flex:none;padding:9px 7px}
 body.ihm-focus:not(.ihm-menu-open) #compactstatus{flex:none;font-size:12px;line-height:1.4;overflow-wrap:anywhere}
 body.ihm-focus:not(.ihm-menu-open) #screen{width:auto;height:auto;max-width:100%;max-height:calc(100dvh - 12px);flex:none}
 body.ihm-focus:not(.ihm-menu-open) #requests:empty{display:none}
}

/* Mobile read-only table and cycle charts are served by this client's own server. */
#viewhistory{background:#0b6f9d}
#mobile-data{margin:10px auto 16px;max-width:1400px;padding:14px;background:#fff;border:1px solid #d5e0e8;border-radius:12px;color:#15364d}
body.mobile-history-open #requests,body.mobile-history-open #take,body.mobile-history-open #request,body.mobile-history-open #equipment-warning{display:none!important}
.mobile-data-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.mobile-data-tabs{display:flex;gap:6px}
.mobile-data-toolbar label{margin:0;min-width:160px;flex:1;font-size:13px}
.mobile-data-toolbar select{display:block;width:100%;margin-top:4px;padding:9px;border:1px solid #adc0ce;border-radius:7px;background:white;font-size:16px}
.mobile-data-tabs .selected{background:#102e48}
#mobile-data-status{margin:8px 0;color:#536d80;font-size:14px}
.mobile-table-scroll{max-width:100%;overflow:auto;border:1px solid #d5e0e8;border-radius:8px;-webkit-overflow-scrolling:touch}
#mobile-table{border-collapse:collapse;min-width:980px;width:100%;font-size:13px}
#mobile-table th,#mobile-table td{padding:9px 10px;border-bottom:1px solid #e2e9ee;text-align:left;white-space:nowrap}
#mobile-table th{position:sticky;top:0;background:#e8f0f6;color:#15364d}
#mobile-table tbody tr:nth-child(even){background:#f5f8fa}
#mobile-graphs-view{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,390px),1fr));gap:10px}
#mobile-cycle-summary{grid-column:1/-1;padding:10px;background:#eef4f8;border-radius:8px;line-height:1.5}
.mobile-graph-group{min-width:0;padding:10px;border:1px solid #dce5ec;border-radius:9px}
.mobile-graph-group h2{margin:2px 0 6px;font-size:17px}
.mobile-chart{width:100%;height:175px;display:block;margin:6px 0;background:#fff;border:1px solid #edf1f4;border-radius:5px}
@media(max-width:600px){
 #mobile-data{margin:6px 0 10px;padding:10px;border-radius:8px}
 .mobile-data-toolbar{display:grid;grid-template-columns:1fr 1fr;gap:7px}
 .mobile-data-tabs{grid-column:1/-1}
 .mobile-data-tabs button{flex:1}
 .mobile-data-toolbar label{grid-column:1/-1}
 .mobile-data-toolbar>button{width:100%;padding:10px 6px;font-size:13px}
 #mobile-table{min-width:940px;font-size:12px}
 #mobile-table th,#mobile-table td{padding:8px}
 #mobile-graphs-view{grid-template-columns:1fr}
 .mobile-chart{height:165px}
}

/* App shell with a retractable settings drawer. */
#settingsdrawer{position:fixed;z-index:20;left:0;top:0;bottom:0;width:min(370px,94vw);overflow-y:auto;background:#fff;box-shadow:6px 0 28px #102e4840;padding:18px;color:#15364d}
#settingsdrawer h2{margin:0 0 12px}#settingsdrawer>.bar{display:flex;flex-direction:column;align-items:stretch;margin-top:14px}#settingsdrawer button{margin:5px 0;width:100%;min-height:44px}#settingsdrawer #identity{width:100%;overflow-wrap:anywhere}#settingsdrawer #keys{display:flex;flex-wrap:wrap}#settingsdrawer #keys button{width:auto;flex:1}#settingsdrawer #keys input{min-width:0;width:100%;flex-basis:100%}#settingsdrawer #logout{margin-left:0}
body.ihm-focus #session{min-height:100dvh;padding:6px!important;display:flex;flex-direction:column;justify-content:center}
body.ihm-focus #viewbar{position:static!important;width:auto!important;flex-direction:row!important;align-items:center!important;flex-wrap:wrap!important;overflow:visible!important;flex:none;margin:0 0 6px!important;padding:0!important}
body.ihm-focus #screen{width:auto!important;height:auto!important;max-width:100%;max-height:calc(100dvh - 72px)!important;flex:none;margin:auto}
body.ihm-focus #compactstatus{font-size:12px;flex:1}#message:not(:empty){position:relative;z-index:25;background:#fff4cd;padding:8px;margin:0}

@media(orientation:portrait){body.ihm-focus #screen{width:100%!important;max-height:none!important}body.ihm-focus #session{justify-content:flex-start}}

#equipment-warning{color:#a40000;background:#fff0f0;border:2px solid #b00020;border-radius:6px;padding:8px;margin:6px 0;font-size:13px;font-weight:700;line-height:1.4;flex-basis:100%;overflow-wrap:break-word}#equipment-warning[hidden]{display:none!important}

/* Keep the warning inside the sidebar instead of wrapping into a new column. */
body.ihm-focus #viewbar{flex-wrap:nowrap!important}
#equipment-warning{box-sizing:border-box;min-width:0;max-width:100%;flex:0 0 auto;align-self:stretch}
@media(orientation:landscape){body.ihm-focus #viewbar{overflow-y:auto!important;overflow-x:hidden!important}body.ihm-focus #equipment-warning{width:100%;font-size:12px;padding:6px;line-height:1.3}}
@media(orientation:portrait){body.ihm-focus #viewbar{flex-wrap:wrap!important}body.ihm-focus #equipment-warning{flex-basis:100%}}

/* Matching primary actions in the access sidebar. */
#viewbar #viewmenu,#viewbar #logout{background:#126fa1;color:#fff;width:120px;min-height:44px;flex-shrink:0;padding:9px 7px;border:0;border-radius:8px;font-size:14px}

#transfer-box{background:#fff4cd;color:#643c00;border:2px solid #bb7600;border-radius:8px;padding:6px;max-width:100%;font-size:12px;flex:none}#transfer-box button{width:100%;margin:4px 0;white-space:normal}#viewbar #take,#viewbar #request{flex:none;white-space:normal}

#transfer-timer{font-size:56px;font-weight:800;line-height:1.1;text-align:center;font-variant-numeric:tabular-nums;color:#a40000;margin:8px 0}#transfer-timer::after{content:"segundos";display:block;font-size:12px;font-weight:600;color:#643c00}

/* Transfer decisions must remain visible on short landscape screens. */
#transfer-box{position:fixed;z-index:100;left:50%;top:50%;transform:translate(-50%,-50%);width:min(360px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow-y:auto;box-sizing:border-box;padding:12px 16px;box-shadow:0 8px 32px #0006;text-align:center}
#transfer-box p{margin:0 0 6px;overflow-wrap:anywhere;font-size:14px;line-height:1.3}
#transfer-box button{min-height:44px;margin:3px 0}
#transfer-timer{margin:4px 0;font-size:56px}

#users-panel{padding:10px;margin-top:10px}#users-panel select{width:100%;padding:10px;margin:6px 0}#users-panel input[type=checkbox]{width:auto}#users-panel label{font-size:13px}

.plan-quota{background:#edf5fa;border:1px solid #adc0ce;border-radius:8px;padding:10px;margin-bottom:12px}.plan-quota p{font-size:13px;line-height:1.4;margin:5px 0}.plan-quota p:first-child{font-weight:700}

/* The approved equipment view is now the only user-facing layout. */
#viewmode,#fullscreen{display:none!important}


/* 2.18 - safer and clearer control handoff */
#transfer-state{display:block;font-size:16px;letter-spacing:.04em;color:#7d3f00;margin-bottom:5px}
#transfer-owner{font-size:12px;font-weight:700;color:#15364d;margin:2px 0 4px;overflow-wrap:anywhere}
#transfer-progress{height:10px;background:#ead9b4;border-radius:999px;overflow:hidden;margin:6px 0 10px}
#transfer-progress span{display:block;height:100%;width:100%;background:#a40000;transition:width .25s linear}
#transfer-timer.urgent{animation:eletronnPulse 1s ease-in-out infinite}
@keyframes eletronnPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
body.view-only #screen{filter:saturate(.78)}
body.view-only #compactstatus{font-weight:800;color:#7d3f00}

/* 2.36 - definitive first-access two-column layout */
#login{max-width:1040px;margin:18px auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;background:transparent;border:0;padding:0}
#setup-slot,#login-column{display:block;background:#fff;border:1px solid #d5e0e8;border-radius:14px;padding:18px;min-width:0;min-height:100%}
#setup-slot[hidden]{display:none!important}
#setup-slot[hidden]+#login-column{grid-column:1 / -1;max-width:480px;width:100%;justify-self:center}
#initial-setup{border:0;border-radius:0;padding:0;background:transparent}
#initial-setup h2,#login-column h1{margin:0 0 8px;font-size:22px;line-height:1.2}
#login p{margin:6px 0 10px}
#login label,#initial-setup label{margin:9px 0}
#login input,#initial-setup input{padding:10px;margin-top:4px}
#login button,#initial-setup button{min-height:40px}
#activation-code-row{display:flex;gap:8px;align-items:end}
#activation-code-row label{flex:1;margin:9px 0}
#activation-code-row button{flex:0 0 auto;margin-bottom:0;white-space:nowrap}
#activation-code{font-size:24px;font-weight:800;letter-spacing:.18em;text-align:center;font-variant-numeric:tabular-nums;background:#eef6fb;color:#0d3857}
#activation-code[readonly]{cursor:text}
#message{max-width:1040px;margin:8px auto;padding-left:4px;padding-right:4px}
@media(max-width:760px){#login{grid-template-columns:1fr;gap:12px;margin:10px auto}#setup-slot,#login-column{padding:14px;min-height:0}#setup-slot[hidden]+#login-column{grid-column:auto}#activation-code-row{align-items:stretch;flex-direction:column}#activation-code-row button{width:100%}}

/* 2.39 - activation code visible above; operator types it in the master form */
#activation-display{max-width:1040px;margin:14px auto 0;background:#fff8dc;border:1px solid #e0b64b;border-radius:12px;padding:12px 16px;box-sizing:border-box}
.activation-caption{font-size:13px;font-weight:700;color:#624500;margin-bottom:6px}
.activation-display-row{display:flex;align-items:center;gap:10px}
#activation-visible{flex:1;display:block;background:#fff;border:1px solid #d1b35a;border-radius:8px;padding:8px 14px;text-align:center;font-size:28px;font-weight:900;letter-spacing:.24em;color:#143852;font-variant-numeric:tabular-nums}
.activation-display-row button{flex:0 0 auto;min-height:42px}
#activation-code-entry{font-size:20px;font-weight:800;letter-spacing:.15em;text-align:center;font-variant-numeric:tabular-nums}
@media(max-width:760px){#activation-display{margin:10px 8px 0}.activation-display-row{flex-direction:column;align-items:stretch}.activation-display-row button{width:100%}}

/* V1.0 definitiva: status messages stay inside the settings drawer. */
#settingsdrawer #message:not(:empty){position:static;z-index:auto;background:#fff4cd;border:1px solid #f0d98b;border-radius:8px;padding:10px 12px;margin:0 0 10px;color:#8a3a12;white-space:pre-line;line-height:1.35}

/* Primeiro acesso: apenas o cadastro do master. */
#login.master-setup-only{grid-template-columns:minmax(0,1fr);max-width:540px}
#login.master-setup-only #setup-slot{grid-column:1 / -1}

#settingsdrawer textarea {box-sizing:border-box;width:100%;max-width:100%;resize:vertical;font:inherit;overflow-wrap:anywhere;}


/* REV17.4: iPhone landscape mirrors the Android focus layout; the full HMI fits beside a compact sidebar. */
@media(orientation:landscape){
 body.ihm-focus #session{min-height:100svh!important;padding-top:calc(env(safe-area-inset-top,0px) + 8px)!important;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 8px)!important;padding-left:calc(env(safe-area-inset-left,0px) + 138px)!important;padding-right:calc(env(safe-area-inset-right,0px) + 8px)!important;display:flex!important;flex-direction:column!important;justify-content:center!important}
 body.ihm-focus #viewbar{position:fixed!important;left:calc(env(safe-area-inset-left,0px) + 6px)!important;right:auto!important;top:calc(env(safe-area-inset-top,0px) + 8px)!important;bottom:calc(env(safe-area-inset-bottom,0px) + 8px)!important;width:124px!important;overflow-y:auto!important;overflow-x:hidden!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;flex-wrap:nowrap!important;margin:0!important;padding:0 0 4px!important;gap:7px!important}
 body.ihm-focus #viewbar button{flex:none!important}
 body.ihm-focus #compactstatus{flex:none!important}
 body.ihm-focus #screen{width:auto!important;height:auto!important;max-width:100%!important;max-height:calc(100svh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 32px)!important;margin:auto!important;flex:none!important}
}
/* REV18.29: mobile graphs match the desktop combined, color-coded chart. */
#mobile-smoothing{display:flex;align-items:center;gap:5px;flex-wrap:wrap;font-size:13px;color:#526a7c}
#mobile-smoothing button{padding:7px 10px;min-height:36px;font-size:13px}
#mobile-smoothing .selected{background:#102e48;color:#fff}
.mobile-chart{height:290px;touch-action:pan-y}
.mobile-legend{display:flex;gap:6px 14px;flex-wrap:wrap;padding:4px 2px 2px;font-size:12px}
.mobile-legend-item{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.mobile-legend-item i{width:14px;height:3px;border-radius:2px}
@media(max-width:600px){#mobile-smoothing{grid-column:1/-1;justify-content:flex-start}.mobile-chart{height:260px}.mobile-legend{font-size:11px;gap:5px 10px}}

/* REV18.30: fit every table field to a phone; native browser pinch zoom remains enabled. */
@media(max-width:600px){
 #mobile-table{display:block;width:100%;min-width:0;font-size:13px}
 #mobile-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
 #mobile-table tbody{display:block;width:100%}
 #mobile-table tbody tr{display:block;width:100%;margin:0 0 10px;border:1px solid #d5e0e8;border-radius:8px;background:#fff;overflow:hidden}
 #mobile-table tbody td{display:grid;grid-template-columns:minmax(0,42%) minmax(0,58%);gap:8px;width:100%;padding:7px 9px;white-space:normal;overflow-wrap:anywhere;text-align:left;border-bottom:1px solid #e8edf1}
 #mobile-table tbody td:last-child{border-bottom:0}
 #mobile-table tbody td::before{content:attr(data-label);font-weight:600;color:#536d80}
 #mobile-graphs-view{grid-template-columns:minmax(0,1fr);width:100%;min-width:0}
 .mobile-graph-group{width:100%;min-width:0;overflow-x:auto}
 .mobile-chart{width:100%;min-width:0;height:260px;touch-action:pan-x pan-y pinch-zoom}
}
/* Phone landscape: give the chart canvases most of the available viewport. */
@media (orientation:landscape) and (max-height:600px) and (max-width:950px){
 body.mobile-history-open{overflow-x:hidden}
 body.mobile-history-open main{width:100%;max-width:none;margin:0;padding:0 4px}
 body.mobile-history-open #session{width:100%;min-width:0;padding:4px;border:0;border-radius:0}
 #mobile-data{width:100%;max-width:none;margin:0;padding:5px;border:0;border-radius:0}
 .mobile-data-toolbar{display:flex;align-items:center;flex-wrap:nowrap;gap:5px;margin:0 0 4px;overflow-x:auto;white-space:nowrap}
 .mobile-data-tabs{flex:0 0 auto;gap:4px}
 .mobile-data-tabs button,.mobile-data-toolbar>button,#mobile-smoothing button{min-height:32px;padding:5px 8px;font-size:12px}
 #mobile-smoothing{flex:0 0 auto;flex-wrap:nowrap;gap:4px;font-size:11px}
 #mobile-cycle-label{flex:1 1 110px;min-width:90px;max-width:28vw;font-size:11px}
 #mobile-cycle-label select{padding:5px;margin-top:2px;font-size:13px}
 #mobile-refresh,#mobile-back{flex:0 0 auto;width:auto}
 #mobile-data-status,#mobile-cycle-summary{display:none!important}
 #mobile-graphs-view{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:5px;width:100%;min-width:0}
 .mobile-graph-group{padding:4px;border-radius:5px}
 .mobile-graph-group h2{margin:0 0 2px;font-size:13px}
 .mobile-chart{height:calc(100dvh - 178px);min-height:170px;max-height:360px;margin:2px 0;width:100%;touch-action:pan-x pan-y pinch-zoom}
 .mobile-legend{justify-content:center;gap:2px 7px;padding:1px;font-size:10px}
 .mobile-legend-item{gap:3px}
 .mobile-legend-item i{width:10px}
}

/* REV18.86: em retrato, Configurações, Tabela e gráficos e Sair ficam na mesma linha. */
@media (max-width:600px) and (orientation:portrait){
 #viewbar{display:flex;flex-wrap:nowrap!important;align-items:stretch;gap:4px;overflow:visible!important}
 #viewbar #viewmenu,#viewbar #viewhistory,#viewbar #logout{box-sizing:border-box;min-width:0;max-width:none;width:auto;min-height:44px;flex-shrink:1;padding:7px 3px;font-size:12px;line-height:1.15;white-space:normal}
 #viewbar #viewmenu{order:1;flex:1.15 1 0}
 #viewbar #viewhistory{order:2;flex:1.4 1 0}
 #viewbar #logout{order:3;flex:.75 1 0;margin-left:0}
 #viewbar #equipment-warning{order:4;flex:0 0 100%;width:100%}
}

/* REV18.92 — adjustable mobile appearance, persisted by the server. */
#visual-editor{margin:14px 0 4px;padding:12px;border:1px solid #9db5c6;border-radius:10px;background:#f5f9fc}
#visual-editor legend{font-weight:800;color:#15364d}
#visual-editor p{font-size:13px;line-height:1.4}
#visual-editor select{display:block;width:100%;padding:9px;border:1px solid #adc0ce;border-radius:7px;background:white;font-size:16px}
#visual-editor .visual-range-label{display:block;margin:10px 0 14px;font-size:13px}
#visual-editor .visual-range-label span{display:inline-block;max-width:80%;font-weight:600}
#visual-editor .visual-range-label output{float:right;font-weight:800;color:#126fa1}
#visual-editor input[type=range]{display:block;width:100%;height:28px;margin:4px 0 0;padding:0}
#visual-editor .visual-editor-actions{display:grid;grid-template-columns:1fr;gap:6px}
#visual-editor .visual-editor-actions button{width:100%;margin:2px 0;white-space:normal}
#visual-editor>fieldset{margin:10px 0;padding:8px 10px;border:1px solid #c3d3df;border-radius:7px}
#visual-editor .visual-visibility-option{display:flex;align-items:center;gap:8px;margin:7px 0;font-size:14px}
#visual-editor .visual-visibility-option input{width:20px;height:20px;flex:0 0 20px}
#visual-custom-zone[hidden]{display:none}
@media(max-width:950px){#visual-custom-zone:not([hidden]){display:flex;flex:0 0 100%;order:30;align-items:flex-start;align-content:flex-start;flex-wrap:wrap;gap:6px;box-sizing:border-box;max-height:min(28vh,190px);overflow:auto;overscroll-behavior:contain;padding:7px;border:2px dashed #7f9bb0;border-radius:8px;background:#f4f8fb}#visual-custom-zone>strong{position:sticky;top:0;z-index:1;flex:0 0 100%;padding:2px 4px;background:#f4f8fb;color:#15364d}}
@media(max-width:600px) and (orientation:portrait){body.visual-zone-open #viewbar{flex-wrap:wrap!important}body.visual-zone-open #visual-custom-zone{flex:0 0 100%!important}}
@media(max-width:600px){
 .mobile-chart{height:var(--visual-graph-height,260px)}
 #mobile-graphs-view{gap:var(--visual-graph-gap,10px)}
 .mobile-graph-group h2{font-size:var(--visual-graph-title-font,16px)}
 #mobile-table{font-size:var(--visual-table-font,13px)}
 #mobile-table tbody tr{margin-bottom:var(--visual-table-gap,10px)}
 #mobile-table tbody td{padding:var(--visual-table-cell-padding,7px) 9px}
}
@media(max-width:760px) and (orientation:portrait){
 body.visual-layout-portrait.ihm-focus #screen{width:var(--visual-screen-scale,100%)!important;max-width:100%!important;margin-left:auto!important;margin-right:auto!important}
}
@media(max-width:950px) and (orientation:landscape){
 body.visual-layout-landscape.ihm-focus #screen{width:var(--visual-screen-scale,100%)!important;max-width:100%!important;margin-left:auto!important;margin-right:auto!important}
}
#mobile-table-view{width:var(--visual-table-width,100%);max-width:none;margin-inline:auto}
#mobile-graphs-view{width:var(--visual-graph-width,100%);max-width:none;margin-inline:auto}
#visual-resize-handle{position:fixed;z-index:10000;width:36px!important;height:36px!important;min-height:36px!important;padding:0!important;border:3px solid white!important;border-radius:50%!important;background:#0878d1!important;box-shadow:0 1px 7px #0008!important;touch-action:none!important;cursor:nwse-resize!important}
body.visual-direct-edit .visual-direct-selected{outline:3px dashed #0878d1!important;outline-offset:2px!important;touch-action:none!important;user-select:none!important;-webkit-user-select:none!important}
body.visual-direct-edit #screen.visual-direct-selected{cursor:crosshair!important}
@media(max-width:950px){#screen,#mobile-table-view,#mobile-graphs-view{transform:translate(var(--visual-offset-x,0),var(--visual-offset-y,0))}}


/* 1.010: controles em fluxo; o retrato fica em uma faixa superior e a paisagem mantém a lateral. */
@media(max-width:760px) and (orientation:portrait){
 body.ihm-focus:not(.ihm-menu-open) #viewbar{position:relative!important;inset:auto!important;width:100%!important;max-width:100%!important;display:flex!important;flex-direction:row!important;align-items:stretch!important;flex-wrap:nowrap!important;overflow:visible!important;margin:0 0 8px!important;padding:0!important;gap:4px!important}
 body.ihm-focus:not(.ihm-menu-open) #viewbar #viewmenu,body.ihm-focus:not(.ihm-menu-open) #viewbar #viewhistory,body.ihm-focus:not(.ihm-menu-open) #viewbar #logout{min-width:0!important;max-width:none!important;flex-shrink:1!important;white-space:normal!important}
}
@media(max-width:950px) and (orientation:landscape){
 body.ihm-focus:not(.ihm-menu-open) #session{min-height:100svh!important;padding:calc(env(safe-area-inset-top,0px) + 8px) calc(env(safe-area-inset-right,0px) + 8px) calc(env(safe-area-inset-bottom,0px) + 8px) calc(env(safe-area-inset-left,0px) + 138px)!important;display:flex!important;flex-direction:column!important;justify-content:center!important}
 body.ihm-focus:not(.ihm-menu-open) #viewbar{position:fixed!important;left:calc(env(safe-area-inset-left,0px) + 6px)!important;right:auto!important;top:calc(env(safe-area-inset-top,0px) + 8px)!important;bottom:calc(env(safe-area-inset-bottom,0px) + 8px)!important;width:124px!important;overflow-y:auto!important;overflow-x:hidden!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;flex-wrap:nowrap!important;margin:0!important;padding:0 0 4px!important;gap:7px!important}
 body.ihm-focus:not(.ihm-menu-open) #viewbar #viewmenu,body.ihm-focus:not(.ihm-menu-open) #viewbar #viewhistory,body.ihm-focus:not(.ihm-menu-open) #viewbar #logout{flex-shrink:0!important;max-width:100%!important;white-space:normal!important}
 body.ihm-focus:not(.ihm-menu-open) #screen{width:auto!important;height:auto!important;max-width:100%!important;max-height:calc(100svh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 24px)!important;margin:auto!important;flex:none!important}
}

/* 1.010: medidas numéricas e alinhamento do item selecionado. */
#visual-editor .visual-range-label{display:grid;grid-template-columns:minmax(0,1fr) minmax(88px,118px);align-items:center;gap:8px;margin:9px 0;font-size:13px}
#visual-editor .visual-range-label span{max-width:none}
#visual-editor .visual-range-label output{grid-column:2;grid-row:1;text-align:right;float:none;font-size:12px}
#visual-editor .visual-range-label input[type=number]{grid-column:2;grid-row:2;box-sizing:border-box;width:100%;min-height:40px;padding:7px 9px;border:1px solid #9bb3c4;border-radius:6px;background:#fff;font-size:16px}
#visual-editor .visual-align-controls{margin:12px 0;padding:10px;border:1px solid #c3d3df;border-radius:7px;background:#fff}
#visual-editor .visual-align-controls strong{display:block;margin-bottom:7px}
#visual-editor .visual-align-row{display:grid;grid-template-columns:1fr 1fr;gap:7px}
#visual-editor .visual-align-row select{min-width:0}
#visual-editor .visual-align-row button{grid-column:1/-1;width:100%;min-height:42px}

#mobile-table-view{max-height:var(--visual-table-height,520px);overflow:auto}

/* 1.012: seleção abre uma janela contextual de posição e tamanho. */
#visual-item-dialog{box-sizing:border-box;width:min(94vw,520px);max-width:94vw;max-height:86dvh;overflow:auto;margin:auto;padding:16px;border:1px solid #9db5c6;border-radius:12px;background:#f5f9fc;color:#15364d;box-shadow:0 14px 42px #0005}
#visual-item-dialog::backdrop{background:#102e48a8}
#visual-item-dialog h2{margin:0 0 8px;font-size:19px}
#visual-item-dialog p{font-size:13px;line-height:1.4}
#visual-item-dialog .visual-item-dialog-controls{max-height:62dvh;overflow-y:auto;padding:0 2px}
#visual-item-dialog>button{width:100%;margin-top:10px}
