:root{
    --pt-bg:#0d1117;
    --pt-bg-2:#111720;
    --pt-card:#1b2129;
    --pt-card-2:#202833;
    --pt-header:#242c36;
    --pt-border:#394452;
    --pt-border-soft:#2a333f;
    --pt-yellow:#ffb000;
    --pt-yellow-2:#ffd166;
    --pt-yellow-soft:rgba(255,176,0,.12);
    --pt-text:#f5f5f5;
    --pt-muted:#9da8b5;
    --pt-success:#32d583;
    --pt-danger:#ff5c5c;
    --pt-info:#4cc9f0;
    --pt-warning:#ffb000;
    --pt-sidebar:270px;
    --pt-radius:14px;
    --pt-shadow:0 10px 30px rgba(0,0,0,.22);
}
*{box-sizing:border-box}
html,body{min-height:100%}
body{margin:0;background:var(--pt-bg);color:var(--pt-text);font-family:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;font-size:14px}
a{text-decoration:none}
.app-layout{min-height:100vh;display:flex}
.sidebar{position:fixed;inset:0 auto 0 0;width:var(--pt-sidebar);background:#0a0f15;border-right:1px solid var(--pt-border-soft);display:flex;flex-direction:column;padding:22px 16px;z-index:1040;transition:.25s ease}
.sidebar-brand{display:flex;align-items:center;gap:12px;padding:3px 7px 24px;border-bottom:1px solid var(--pt-border-soft)}
.brand-icon{width:44px;height:44px;border-radius:10px;background:var(--pt-yellow);display:grid;place-items:center;color:#111;font-size:21px;box-shadow:0 8px 22px rgba(255,176,0,.18)}
.brand-name{font-size:20px;font-weight:800;letter-spacing:-.5px;color:#fff;line-height:1}
.brand-subtitle{text-transform:uppercase;color:var(--pt-yellow);font-size:10px;letter-spacing:2px;margin-top:5px;font-weight:700}
.sidebar-section-title{font-size:10px;color:#677280;letter-spacing:1.5px;font-weight:700;padding:25px 10px 8px}
.sidebar-nav{display:grid;gap:5px}
.nav-link-pt{display:flex;align-items:center;gap:11px;color:#b8c0ca;padding:11px 12px;border-radius:9px;border:1px solid transparent;transition:.18s}
.nav-link-pt i{font-size:17px;width:20px;text-align:center;color:#8f9aa7}
.nav-link-pt:hover{color:#fff;background:#141b24;border-color:#222c38}
.nav-link-pt.active{background:var(--pt-yellow-soft);border-color:rgba(255,176,0,.28);color:#fff;font-weight:600}
.nav-link-pt.active i{color:var(--pt-yellow)}
.sidebar-footer{margin-top:auto;border-top:1px solid var(--pt-border-soft);padding-top:16px}
.user-box{display:flex;gap:10px;align-items:center;padding:8px}
.user-avatar{width:36px;height:36px;border-radius:50%;background:var(--pt-header);color:var(--pt-yellow);display:grid;place-items:center;border:1px solid var(--pt-border)}
.user-info{min-width:0}.user-info b{display:block;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-info small{color:var(--pt-muted)}
.logout-link{display:flex;align-items:center;gap:8px;color:#8f9aa7;padding:9px;margin-top:5px}.logout-link:hover{color:var(--pt-danger)}
.main-area{margin-left:var(--pt-sidebar);width:calc(100% - var(--pt-sidebar));min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(circle at 100% 0%,rgba(255,176,0,.035),transparent 32%),var(--pt-bg)}
.topbar{min-height:92px;background:rgba(13,17,23,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--pt-border-soft);display:flex;align-items:center;justify-content:space-between;padding:16px 30px;position:sticky;top:0;z-index:1020}
.page-heading h1{font-size:24px;margin:2px 0 2px;font-weight:750;letter-spacing:-.4px}.page-heading p{margin:0;color:var(--pt-muted);font-size:13px}.eyebrow{font-size:10px;letter-spacing:1.7px;color:var(--pt-yellow);font-weight:800}
.system-status{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--pt-border-soft);background:#141a22;border-radius:999px;color:#c7d0da;font-size:12px}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--pt-success);box-shadow:0 0 0 4px rgba(50,213,131,.1)}
.page-content{padding:28px 30px 40px}.app-footer{margin-top:auto;border-top:1px solid var(--pt-border-soft);padding:16px 30px;color:#697481;font-size:12px}
.card-pt,.card{background:var(--pt-card);border:1px solid var(--pt-border);border-radius:var(--pt-radius);box-shadow:var(--pt-shadow);color:var(--pt-text);overflow:hidden}
.card-pt .card-header,.card .card-header{background:var(--pt-header);border-bottom:1px solid var(--pt-border);padding:16px 18px;color:#fff;font-weight:700}
.card-pt .card-body,.card .card-body{padding:18px}
.kpi{display:flex;align-items:center;gap:15px;padding:18px;min-height:108px}.kpi-icon{flex:0 0 48px;width:48px;height:48px;border-radius:12px;display:grid;place-items:center;background:var(--pt-yellow-soft);color:var(--pt-yellow);font-size:22px;border:1px solid rgba(255,176,0,.18)}
.kpi small,.kpi span.text-muted{color:var(--pt-muted)!important}.kpi h2,.kpi h3,.kpi h5{margin:4px 0 0;font-weight:800;color:#fff;letter-spacing:-.6px}.kpi .kpi-sub{font-size:11px;color:var(--pt-muted);margin-top:4px}
.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.metric-mini{background:#151b23;border:1px solid var(--pt-border-soft);border-radius:10px;padding:14px}.metric-mini span{display:block;color:var(--pt-muted);font-size:11px}.metric-mini b{font-size:20px;color:#fff}
.btn{border-radius:8px;font-weight:650;font-size:13px}.btn-pt{background:var(--pt-yellow);color:#111;border:1px solid var(--pt-yellow)}.btn-pt:hover,.btn-pt:focus{background:#ffc233;border-color:#ffc233;color:#111}.btn-outline-pt{border:1px solid var(--pt-yellow);color:var(--pt-yellow);background:transparent}.btn-outline-pt:hover{background:var(--pt-yellow);color:#111;border-color:var(--pt-yellow)}
.form-label{color:#c9d0d8;font-size:12px;font-weight:600;margin-bottom:7px}.form-control,.form-select{background:#11171e;border:1px solid var(--pt-border);color:#f4f6f8;border-radius:8px;min-height:42px}.form-control:focus,.form-select:focus{background:#11171e;color:#fff;border-color:var(--pt-yellow);box-shadow:0 0 0 .2rem rgba(255,176,0,.12)}.form-control::placeholder{color:#687482}.form-select option{background:#11171e;color:#fff}.form-text{color:#7f8b98}
.table{--bs-table-bg:transparent;--bs-table-color:#dce2e8;--bs-table-border-color:var(--pt-border-soft);margin-bottom:0}.table thead th{color:var(--pt-yellow-2);font-size:11px;text-transform:uppercase;letter-spacing:.55px;font-weight:700;border-bottom:1px solid var(--pt-border);padding:13px 14px;white-space:nowrap}.table tbody td{padding:14px;border-color:var(--pt-border-soft);vertical-align:middle}.table tbody tr:hover{background:rgba(255,255,255,.018)}
.badge-soft,.badge-success-soft,.badge-danger-soft,.badge-warning-soft,.badge-info-soft,.badge-secondary-soft{display:inline-flex;align-items:center;padding:6px 9px;border-radius:999px;font-size:11px;font-weight:700;border:1px solid}.badge-soft{color:#c5ced8;background:#1a222c;border-color:#35404c}.badge-success-soft{color:#72e8a8;background:rgba(50,213,131,.1);border-color:rgba(50,213,131,.25)}.badge-danger-soft{color:#ff8b8b;background:rgba(255,92,92,.1);border-color:rgba(255,92,92,.25)}.badge-warning-soft{color:#ffd166;background:rgba(255,176,0,.1);border-color:rgba(255,176,0,.25)}.badge-info-soft{color:#77d8f7;background:rgba(76,201,240,.1);border-color:rgba(76,201,240,.25)}.badge-secondary-soft{color:#aab3bd;background:#20262e;border-color:#394452}
.alert{border-radius:10px;border-width:1px}.alert-success{background:rgba(50,213,131,.08);border-color:rgba(50,213,131,.25);color:#8aefb9}.alert-danger{background:rgba(255,92,92,.08);border-color:rgba(255,92,92,.25);color:#ffabab}.alert-info{background:rgba(76,201,240,.08);border-color:rgba(76,201,240,.25);color:#9de5fa}
.json-box{margin:0;background:#0b1016;border:1px solid #303a46;border-radius:10px;padding:18px;color:#d4dae1;font-size:12px;line-height:1.65;max-height:420px;overflow:auto}.json-box .key{color:var(--pt-yellow-2)}
.channel-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.channel-card{background:#131a22;border:1px solid var(--pt-border-soft);border-radius:10px;padding:12px}.channel-card .channel-key{color:var(--pt-yellow);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.7px}.channel-card strong{display:block;margin-top:4px;color:#fff}.channel-card small{color:var(--pt-muted)}
.empty-state{text-align:center;padding:50px 20px;color:var(--pt-muted)}.empty-state i{font-size:42px;color:#4e5966;display:block;margin-bottom:12px}
.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(360px,520px) 1fr;background:var(--pt-bg)}.login-panel{display:flex;align-items:center;justify-content:center;padding:42px;background:#0b1016;border-right:1px solid var(--pt-border-soft)}.login-box{width:100%;max-width:390px}.login-brand{display:flex;align-items:center;gap:13px;margin-bottom:35px}.login-brand .brand-icon{width:48px;height:48px}.login-box h1{font-weight:800;letter-spacing:-.8px}.login-box .lead{font-size:14px;color:var(--pt-muted)}.login-visual{position:relative;overflow:hidden;display:flex;align-items:flex-end;padding:60px;background:radial-gradient(circle at 72% 22%,rgba(255,176,0,.14),transparent 18%),linear-gradient(135deg,#101720,#080c11)}.login-visual:before,.login-visual:after{content:"";position:absolute;border:1px solid rgba(255,176,0,.12);border-radius:50%}.login-visual:before{width:520px;height:520px;right:-130px;top:-80px}.login-visual:after{width:330px;height:330px;right:-20px;top:40px}.login-copy{position:relative;z-index:1;max-width:660px}.login-copy .big{font-size:44px;font-weight:850;line-height:1.03;letter-spacing:-1.8px}.login-copy .big span{color:var(--pt-yellow)}.login-copy p{color:#9ba7b4;max-width:570px;font-size:16px}.login-feature{display:flex;gap:10px;align-items:center;color:#cbd3db;margin-top:12px}.login-feature i{color:var(--pt-yellow)}
.modal-content{background:var(--pt-card);color:#fff;border:1px solid var(--pt-border);border-radius:14px}.modal-header,.modal-footer{border-color:var(--pt-border-soft)}.btn-close{filter:invert(1)}
.text-muted{color:var(--pt-muted)!important}.text-success{color:var(--pt-success)!important}.text-warning{color:var(--pt-warning)!important}.text-danger{color:var(--pt-danger)!important}
.sidebar-toggle{color:#fff;font-size:24px;padding:0;margin-right:12px}
@media(max-width:991.98px){.sidebar{transform:translateX(-100%)}.sidebar.show{transform:translateX(0)}.main-area{margin-left:0;width:100%}.page-content{padding:22px 16px}.topbar{padding:15px 16px}.topbar-actions{display:none}.login-page{grid-template-columns:1fr}.login-visual{display:none}}
@media(max-width:767.98px){.channel-grid,.metric-grid{grid-template-columns:1fr}.page-heading h1{font-size:20px}.kpi{min-height:auto}}
.structure-thumb{width:72px;height:52px;object-fit:cover;border-radius:10px;border:1px solid #394452;background:#111820}.placeholder-thumb{display:grid;place-items:center;color:#77808c;font-size:22px}.table .btn{white-space:nowrap}.modal-content img.preview-structure{max-height:220px;object-fit:cover;border-radius:12px}

/* Painel focado: sidebar recolhida por padrão, com botão para exibir/ocultar */
body.sidebar-collapsed .sidebar{transform:translateX(-100%)}
body.sidebar-collapsed .main-area{margin-left:0;width:100%}
body:not(.sidebar-collapsed) .sidebar{transform:translateX(0)}
.sidebar-toggle-focus{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:44px;border:1px solid var(--pt-border-soft);background:#111820;border-radius:10px;transition:.2s ease}
.sidebar-toggle-focus:hover{border-color:var(--pt-yellow);color:var(--pt-yellow)}
@media(max-width:991.98px){body:not(.sidebar-collapsed) .sidebar{transform:translateX(0)}body.sidebar-collapsed .sidebar{transform:translateX(-100%)}}

/* CMMS / manutenção do cliente */
.pt-tabs{border-bottom:1px solid var(--pt-border)}
.pt-tabs .nav-link{color:var(--pt-muted);border:0;border-bottom:2px solid transparent;background:transparent;padding:11px 15px;font-size:13px}
.pt-tabs .nav-link:hover{color:#fff}.pt-tabs .nav-link.active{color:var(--pt-yellow);background:transparent;border-bottom-color:var(--pt-yellow)}
.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.permission-item{display:flex;gap:8px;align-items:center;background:#121820;border:1px solid var(--pt-border-soft);padding:9px;border-radius:8px;font-size:11px;color:#cbd2da}
.module-tile{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#141b23;border:1px solid var(--pt-border-soft);border-radius:11px;padding:14px;height:100%}.module-tile b{display:block;color:#fff}.module-tile small{display:block;color:var(--pt-muted);font-size:11px;margin-top:3px}.compact-line{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--pt-border-soft)}.compact-line span{color:var(--pt-muted);font-size:12px}
.plan-card{height:100%;background:#141b23;border:1px solid var(--pt-border-soft);border-radius:12px;padding:15px}.plan-card.plan-danger{border-color:rgba(255,92,92,.48)}.plan-card h5{font-size:15px;margin:3px 0 4px}.plan-card small{color:var(--pt-muted);font-size:10px;text-transform:uppercase;letter-spacing:.6px}.plan-meta{color:var(--pt-muted);font-size:11px}.progress-pt{height:7px;background:#0e141b}.progress-pt .progress-bar{background:var(--pt-yellow)}.plan-danger .progress-bar{background:var(--pt-danger)}
.os-items{display:grid;gap:9px}.os-item{display:grid;grid-template-columns:minmax(220px,1.6fr) auto minmax(180px,1fr) auto;gap:8px;align-items:center;padding:10px;border:1px solid var(--pt-border-soft);background:#141a22;border-radius:9px}.os-item-text{font-size:12px}.os-result{display:flex;gap:4px}.result-btn{width:34px;height:34px;border-radius:7px;border:1px solid var(--pt-border);background:#11171e;color:#aab3bd;font-weight:800}.result-btn.active.c{background:rgba(50,213,131,.14);color:#72e8a8;border-color:rgba(50,213,131,.4)}.result-btn.active.n{background:rgba(255,92,92,.14);color:#ff8b8b;border-color:rgba(255,92,92,.4)}.result-btn.active.r{background:rgba(255,176,0,.14);color:#ffd166;border-color:rgba(255,176,0,.4)}.team-time{padding:11px 0;border-bottom:1px solid var(--pt-border-soft)}
.planning-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.planning-card{background:#141b23;border:1px solid var(--pt-border-soft);border-radius:10px;padding:12px}.planning-card h6{font-size:13px;margin:10px 0 3px}.planning-card small{font-size:10px;color:var(--pt-muted)}.planning-status-row{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin:11px 0}.planning-status-row span{background:#0f151c;color:#66717d;text-align:center;padding:5px 2px;font-size:9px;border-radius:5px}.planning-status-row span.done{color:#8aefb9;background:rgba(50,213,131,.08)}
.check-row{display:grid;grid-template-columns:minmax(260px,1.4fr) auto minmax(180px,1fr);gap:16px;align-items:center;padding:13px 0;border-bottom:1px solid var(--pt-border-soft)}.check-row.blocked{opacity:.72;background:rgba(255,92,92,.025)}.check-options{display:flex;gap:10px;font-size:11px;color:#c7d0d9}.check-options label{white-space:nowrap}
.timeline-list{position:relative}.timeline-row{display:grid;grid-template-columns:20px 76px minmax(0,1fr);gap:12px;margin-bottom:11px}.timeline-marker{width:12px;height:12px;border-radius:50%;background:var(--event-color);margin-top:17px;box-shadow:0 0 0 4px rgba(255,255,255,.03)}.timeline-time{color:var(--pt-muted);font-size:10px;padding-top:10px}.timeline-time b{display:block;color:#fff;font-size:13px}.timeline-card{background:var(--pt-card);border:1px solid var(--pt-border-soft);border-radius:10px;padding:12px 14px}.timeline-card h6{margin:8px 0 3px;font-size:13px}.timeline-card p{color:#aab3bd;font-size:11px;margin:0 0 6px}.timeline-card small{color:#6f7b87}
.activity-map{display:grid;grid-template-columns:90px repeat(var(--map-cols,6),minmax(60px,1fr));gap:5px;overflow-x:auto}.map-head{font-size:10px;color:var(--pt-muted);text-align:center;padding:5px}.map-date{font-size:10px;padding:7px;color:#fff}.map-date b{display:block}.map-date small{color:var(--pt-muted)}.map-cell{height:42px;border-radius:6px;border:1px solid var(--pt-border-soft);display:grid;place-items:center;font-weight:800;font-size:11px;background:rgba(255,176,0,calc(.04 + var(--heat)*.5));color:#fff}
.asset-monitor-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}.asset-monitor-card,.equipment-open-card{background:var(--pt-card);border:1px solid var(--pt-border);border-radius:12px;overflow:hidden}.asset-monitor-head,.equipment-open-head{display:flex;justify-content:space-between;gap:10px;padding:13px 14px;background:#171e27;border-bottom:1px solid var(--pt-border-soft)}.asset-monitor-head small,.equipment-open-head small{color:var(--pt-yellow);font-size:9px;letter-spacing:.6px}.asset-monitor-head h5,.equipment-open-head h5{font-size:14px;margin:2px 0}.asset-monitor-head span,.equipment-open-head span{font-size:10px;color:var(--pt-muted)}.alarm-pill{border:1px solid var(--pt-border);background:#11171e;color:#77828d;border-radius:999px;height:31px;padding:0 9px;font-size:11px}.alarm-pill.has-alarm{color:#ff8b8b;border-color:rgba(255,92,92,.45);background:rgba(255,92,92,.08)}.asset-readings{padding:9px 13px}.asset-reading{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--pt-border-soft);padding:7px 0}.asset-reading:last-child{border:0}.asset-reading span{font-size:10px;color:#d9e0e7}.asset-reading span small{display:block;color:#74808c;font-size:8px;text-transform:uppercase}.asset-reading b{font-size:12px}.asset-monitor-foot{display:flex;gap:12px;padding:9px 13px;border-top:1px solid var(--pt-border-soft);font-size:10px}.asset-monitor-foot a{color:var(--pt-yellow)}
.equipment-open-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.open-counts{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.open-counts span{font-size:9px;padding:4px 6px;border:1px solid var(--pt-border-soft);border-radius:999px;color:#aab4bf}.open-counts .danger{color:#ff8b8b;border-color:rgba(255,92,92,.35)}.open-list{padding:7px 13px}.open-list>a{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--pt-border-soft);color:#fff}.open-list>a span{font-size:10px}.open-list>a b{display:block;color:var(--pt-yellow);font-size:9px}.open-list em{font-style:normal;white-space:nowrap}
.qr-box{display:flex;justify-content:center;background:#fff;padding:10px;border-radius:8px;width:max-content;margin:0 auto 12px}
@media(max-width:1399px){.planning-grid,.asset-monitor-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1199px){.equipment-open-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.os-item{grid-template-columns:1fr auto}.os-item .form-control{grid-column:1/-1}.planning-grid,.asset-monitor-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:767px){.permission-grid,.planning-grid,.asset-monitor-grid,.equipment-open-grid{grid-template-columns:1fr}.os-item,.check-row{grid-template-columns:1fr}.timeline-row{grid-template-columns:14px 60px minmax(0,1fr)}.activity-map{font-size:10px}}
.sidebar{overflow-y:auto;scrollbar-width:thin;scrollbar-color:#394452 #0a0f15}.sidebar-footer{background:#0a0f15;padding-bottom:4px}.team-master-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(260px,1fr);gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--pt-border-soft)}.team-master-row small{display:block;color:var(--pt-muted);font-size:10px}.form-control-color{min-width:54px;padding:5px}
@media(max-width:767px){.team-master-row{grid-template-columns:1fr}}

/* Árvore de ativos */
.asset-tree{display:grid;gap:8px}.asset-tree-node{position:relative}.asset-tree-children{margin-left:28px;padding-left:18px;border-left:1px dashed #394452;display:grid;gap:8px;margin-top:8px}.asset-tree-node.tree-collapsed>.asset-tree-children{display:none}.asset-tree-card{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#141b23;border:1px solid var(--pt-border-soft);border-radius:11px;padding:10px 12px}.asset-tree-main{display:flex;align-items:center;gap:10px;min-width:0}.asset-tree-toggle,.asset-tree-spacer{flex:0 0 30px;width:30px;height:30px}.asset-tree-toggle{display:grid;place-items:center;border:1px solid var(--pt-border-soft);background:#0f151c;color:var(--pt-yellow);border-radius:7px}.asset-tree-spacer{display:block}.asset-tree-thumb{width:58px;height:46px;object-fit:cover;border-radius:8px;border:1px solid var(--pt-border);background:#0f151c}.asset-tree-info{min-width:0}.asset-tree-info strong{font-size:13px;color:#fff}.asset-trace{display:block;color:#8f9aa7;font-size:10px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:620px}.asset-tree-meta{display:flex;gap:12px;flex-wrap:wrap;margin-top:5px}.asset-tree-meta span{font-size:10px;color:#788491}.asset-tree-actions{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}.asset-tree-actions .btn{padding:6px 8px}.asset-tree-node>.asset-tree-card:before{content:"";position:absolute;left:-19px;width:18px;border-top:1px dashed #394452}.asset-tree>.asset-tree-node>.asset-tree-card:before{display:none}@media(max-width:767px){.asset-tree-children{margin-left:13px;padding-left:10px}.asset-tree-card{align-items:flex-start;flex-direction:column}.asset-tree-actions{width:100%;justify-content:flex-start}.asset-tree-thumb{width:50px;height:42px}.asset-trace{white-space:normal;max-width:none}}

/* V11.9 - montagem de equipes */
.team-list-panel{border:1px solid #394452;background:#151b22;border-radius:12px;padding:14px}
.team-select-card{display:block;text-decoration:none;color:inherit;border:1px solid #394452;background:#1b2129;border-radius:10px;padding:12px;transition:.18s ease}
.team-select-card:hover{border-color:#ffb000;color:inherit;transform:translateY(-1px)}
.team-select-card.active{border-color:#ffb000;box-shadow:inset 3px 0 0 #ffb000;background:#222a34}
.team-select-card small{font-size:12px}
.team-member-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #394452;background:#171d24;border-radius:9px;padding:9px 10px}
.team-member-row>div{min-width:0}
.team-member-row b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.team-member-row small{display:block;color:#9aa6b2;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* V11.13 - fontes das leituras e exportação global */
.asset-reading-detailed{align-items:flex-start}
.asset-reading-detailed .text-end{min-width:145px}
.reading-source{display:block;font-size:9.5px;line-height:1.35;margin-top:2px;font-weight:500}
.reading-source.auto{color:#8ea7b8}
.reading-source.manual{color:#ffca5c}
.manual-only{border-left:2px solid #ffb000;padding-left:8px}
.data-export-toolbar{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin:10px 0 14px}
.data-export-toolbar .btn{font-size:12px;padding:6px 10px}




/* PortTwin v14.7 - integridade estrutural das páginas industriais */
.pt-industrial-v14,
.pt-industrial-v14 > .tab-content,
.pt-industrial-v14 > .tab-content > .tab-pane{
    width:100%;
    max-width:none;
}
.pt-industrial-v14 > .tab-content > .tab-pane.active{
    display:block;
}

/* PortTwin v15.0 · Supervisorio */
.screen-preview{position:relative;min-height:620px;border:1px solid var(--pt-border);border-radius:14px;background:#0d131a;overflow:hidden;padding:18px}
.machine-svg{position:absolute;left:5%;right:5%;top:18%;width:90%;height:55%;opacity:.28;fill:none;stroke:#aeb8c5;stroke-width:7}
.machine-svg rect{fill:#141c25;stroke:#aeb8c5}.machine-svg circle{fill:#141c25}.machine-svg.spreader-svg{top:12%;height:64%}
.screen-widget-grid,.runtime-grid{position:absolute;inset:18px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:minmax(54px,1fr);gap:8px;pointer-events:none}
.screen-widget{position:relative;z-index:2;background:rgba(24,32,42,.92);border:1px solid #384553;border-radius:9px;padding:8px;min-width:0;pointer-events:auto}
.widget-title,.rw-title{font-size:11px;color:#aeb8c5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.widget-demo{font-size:15px;font-weight:800;color:var(--off);margin-top:4px}.command-demo{border-left:4px solid var(--off);padding-left:7px}
.screen-widget small{font-size:9px;color:#73808e}.widget-edit-btn{position:absolute;right:4px;top:4px;border:0;background:transparent;color:#8fa0b0;font-size:11px}
.sup-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.mosaic-area{display:grid;gap:12px;background:#080d12;border:1px solid var(--pt-border);border-radius:14px;padding:12px;min-height:650px}
.mosaic-area.preset-1{grid-template-columns:1fr}.mosaic-area.preset-2{grid-template-columns:repeat(2,1fr)}
.mosaic-area.preset-4{grid-template-columns:repeat(2,1fr)}.mosaic-area.preset-6{grid-template-columns:repeat(3,1fr)}
.mosaic-area.preset-8{grid-template-columns:repeat(4,1fr)}.mosaic-area.preset-9{grid-template-columns:repeat(3,1fr)}
.mosaic-area.preset-12{grid-template-columns:repeat(4,1fr)}
.mosaic-slot{position:relative;min-height:300px;border:1px solid #2c3743;border-radius:11px;background:#0d131a;overflow:hidden}
.mosaic-plus{position:absolute;right:8px;top:8px;width:34px;height:34px;border-radius:50%;border:1px solid var(--pt-yellow);background:#141a22;color:var(--pt-yellow);z-index:20;display:grid;place-items:center}
.empty-screen,.slot-loading{height:100%;min-height:300px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#66717f;gap:8px}
.empty-screen i{font-size:30px}.screen-runtime{position:absolute;inset:0;background:#0c1218}.sr-head{height:42px;padding:9px 48px 9px 12px;border-bottom:1px solid #28333e;display:flex;justify-content:space-between;align-items:center;font-size:12px}.sr-head span{font-size:9px;color:#32d583}
.machine-svg.runtime{top:15%;height:52%;opacity:.20}.runtime-grid{top:48px;bottom:8px;left:8px;right:8px;gap:5px;grid-auto-rows:minmax(35px,1fr)}
.runtime-widget{z-index:2;background:rgba(21,29,38,.91);border:1px solid #33404d;border-radius:7px;padding:5px 7px;min-width:0;overflow:hidden}
.runtime-widget .rw-value{font-size:13px;font-weight:800;margin-top:2px}.runtime-widget .rw-value.state{color:var(--state);border-left:4px solid var(--state);padding-left:5px}
.runtime-widget .rw-meta{font-size:8px;color:#687687;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.runtime-widget.stale{opacity:.55}
@media(max-width:1400px){.mosaic-area.preset-8,.mosaic-area.preset-12{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.mosaic-area,.mosaic-area.preset-2,.mosaic-area.preset-4,.mosaic-area.preset-6,.mosaic-area.preset-8,.mosaic-area.preset-9,.mosaic-area.preset-12{grid-template-columns:1fr}.screen-preview{min-height:540px}}

/* PortTwin v15.1 · Relacionamentos de Ativos */
.rel-card{height:100%;padding:16px;border:1px solid #33404d;border-radius:12px;background:#10171f}
.rel-card.active{box-shadow:inset 3px 0 0 #32d583}.rel-card.inactive{opacity:.72}
.rel-status{font-size:10px;font-weight:800;letter-spacing:.08em;color:#9aa7b5}.rel-status .dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#66717f;margin-right:6px}.rel-card.active .rel-status .dot{background:#32d583}
.rel-flow{display:grid;grid-template-columns:minmax(0,1fr) 70px minmax(0,1fr);gap:8px;align-items:stretch}
.rel-node{padding:12px;border:1px solid #2f3a46;border-radius:10px;background:#0b1117;display:flex;flex-direction:column;gap:3px;min-width:0}
.rel-node small{font-size:9px;color:#718091;font-weight:800}.rel-node b,.rel-node span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rel-node span{font-size:11px;color:#95a3b2}.rel-node strong{margin-top:4px;font-size:18px}.rel-node.target{border-color:#5e5122}
.rel-arrow{display:flex;flex-direction:column;align-items:center;justify-content:center;color:#ffb000}.rel-arrow i{font-size:28px}.rel-arrow small{font-size:9px}
@media(max-width:850px){.rel-flow{grid-template-columns:1fr}.rel-arrow{transform:rotate(90deg);height:38px}}

/* PortTwin v15.3 · Subdestinos 1→N */
.subdest-check{display:flex;gap:10px;align-items:flex-start;height:100%;padding:12px;border:1px solid #33404d;border-radius:10px;background:#0b1117;cursor:pointer}
.subdest-check:hover{border-color:#607080}.subdest-check input{margin-top:4px}.subdest-check.disabled{opacity:.55;cursor:not-allowed}

/* PortTwin v15.4 · Filtros e auditoria */
.audit-rel-table th{white-space:nowrap}
.audit-rel-table td{vertical-align:middle}
.audit-rel-table tbody tr:hover{background:rgba(255,255,255,.025)}
@media print{
  .sidebar,.topbar,.btn,.modal,.card-header small,.d-print-none{display:none!important}
  .content,.main-content{margin:0!important;padding:0!important}
  .card-pt{border:0!important;box-shadow:none!important}
  .audit-rel-table{font-size:10px}
}

/* PortTwin v15.5 · alarmes em recursos */
.alarm-resource-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px;max-height:300px;overflow:auto;padding:4px}
.alarm-resource-option{display:flex;gap:9px;padding:10px;border:1px solid #33404d;border-radius:9px;background:#0b1117;cursor:pointer}
.alarm-resource-option:hover{border-color:#607080}.alarm-resource-option input{margin-top:4px}

/* PortTwin v15.7 · Modo Comissionamento */
.commissioning-safety{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid rgba(50,213,131,.35);border-radius:12px;background:rgba(50,213,131,.06)}
.commissioning-safety>div:first-child{font-size:28px;color:#32d583}
.commissioning-safety>div:nth-child(2){display:flex;flex-direction:column;flex:1}.commissioning-safety span{font-size:.88rem;color:#9aa8b5}
.commissioning-json{min-height:260px;max-height:540px;overflow:auto;margin:0;padding:14px;border-radius:10px;background:#070b10;border:1px solid #27313b;color:#dce7f1;font-size:.82rem;white-space:pre-wrap}
.commissioning-table code{color:#8bd5ff}

/* PortTwin v15.7.1 · Injeção lógica de comissionamento */
.commissioning-inject{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px solid rgba(72,149,239,.38);border-radius:10px;background:rgba(72,149,239,.07);cursor:pointer}
.commissioning-inject input{margin-top:4px}.commissioning-inject span{display:flex;flex-direction:column}.commissioning-inject small{color:#9aa8b5}

/* PortTwin v15.8 · Supervisão de relacionamentos */
.rel-supervisao-modal .modal-body{background:rgba(5,9,14,.35)}
.rel-sup-kpi{padding:14px 16px;border:1px solid #2c3742;border-radius:12px;background:#0b1117;display:flex;flex-direction:column}
.rel-sup-kpi small{font-size:.7rem;letter-spacing:.08em;color:#8493a2}.rel-sup-kpi strong{font-size:1.8rem;line-height:1.1}.rel-sup-kpi span{font-size:.78rem;color:#8493a2}
.rel-sup-chain{border:1px solid #273440;border-radius:14px;background:#0b1117;overflow:hidden}.rel-sup-chain.connected{border-left:3px solid #32d583}
.rel-sup-main{display:grid;grid-template-columns:minmax(0,1fr) 80px minmax(0,1fr);gap:12px;align-items:center;padding:16px}
.rel-sup-node{display:flex;flex-direction:column;padding:12px;border:1px solid #2b3742;border-radius:10px;background:#080d12}.rel-sup-node small{font-size:.68rem;color:#7f8c99}.rel-sup-node span{font-size:.8rem;color:#99a7b5}.rel-sup-node strong{font-size:1.4rem;margin-top:5px}
.rel-sup-node.destination{border-color:rgba(50,213,131,.35)}.rel-sup-arrow{text-align:center;color:#32d583;display:flex;flex-direction:column}.rel-sup-arrow i{font-size:1.7rem}.rel-sup-arrow span{font-size:.7rem}
.rel-sup-children{padding:0 16px 16px}.rel-sup-children-label{font-size:.72rem;color:#82909d;margin-bottom:8px;letter-spacing:.06em}
.rel-sup-child{padding:10px;border:1px solid #2b3742;border-radius:10px;background:#080d12;display:flex;flex-direction:column;height:100%}.rel-sup-child.on{border-left:3px solid #32d583}.rel-sup-child.off{border-left:3px solid #6c757d;opacity:.72}.rel-sup-child small{color:#8997a5}.rel-sup-child strong{font-size:1.15rem;margin-top:5px}.rel-mini-status{font-size:.62rem;color:#8997a5}
.rel-sup-offline{padding:12px;border:1px solid #343d46;border-radius:10px;background:#0a0f14;opacity:.9}.rel-sup-offline small{color:#8794a0}
@media(max-width:767px){.rel-sup-main{grid-template-columns:1fr}.rel-sup-arrow{transform:rotate(90deg);margin:auto}}

/* PortTwin v15.8.1 · Supervisório por origem completo */
.rel-sup-origin-group{border:1px solid #2b3742;border-radius:14px;background:#090f15;overflow:hidden}
.rel-sup-origin-header{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 16px;border-bottom:1px solid #26313b;background:#0d141b}
.rel-sup-origin-header small{font-size:.68rem;letter-spacing:.08em;color:#7e8d9a}
.rel-sup-origin-body{padding:12px}
.rel-sup-row{display:grid;grid-template-columns:minmax(0,1fr) 95px minmax(0,1fr);gap:12px;align-items:center;padding:10px 0 10px calc(var(--nivel,0) * 18px);position:relative}
.rel-sup-row.off{opacity:.68}.rel-sup-row.off .rel-sup-node.destination{border-color:#46515b}
.rel-sup-branch{border-left:1px dashed #394550;margin-left:calc(18px + var(--nivel,0) * 18px);padding-left:12px}
.rel-sup-node.origin{border-color:rgba(72,149,239,.28)}
@media(max-width:767px){
 .rel-sup-row{grid-template-columns:1fr;padding-left:calc(var(--nivel,0) * 10px)}
 .rel-sup-branch{margin-left:calc(8px + var(--nivel,0) * 10px)}
}

/* PortTwin v15.8.2 · 1→N semântico */
.rel-sup-n-count{display:inline-flex!important;align-items:center;gap:5px;margin-top:7px;color:#63b3ed!important;font-size:.72rem!important}

/* PortTwin v15.8.3 · Raiz do relacionamento nos recursos */
.resource-root{display:flex;flex-direction:column;gap:3px;min-width:220px}
.resource-root .dot{width:8px;height:8px;border-radius:50%;background:#6c757d;display:inline-block;flex:0 0 auto}
.resource-root.connected .dot{background:#32d583;box-shadow:0 0 0 4px rgba(50,213,131,.10)}
.resource-root small{color:#8e9ba8;white-space:normal}

/* PortTwin v15.11.17 · Mosaicos livres e foco por duplo clique */
.mosaic-area{
  grid-template-columns:repeat(var(--pt-mosaic-cols,2),minmax(0,1fr));
}
.mosaic-area.mosaic-presentation{
  position:fixed;
  inset:0;
  z-index:1080;
  width:100vw;
  height:100vh;
  max-width:none;
  min-height:100vh;
  padding:12px;
  border:0;
  border-radius:0;
  grid-template-columns:repeat(var(--pt-mosaic-cols,2),minmax(0,1fr));
  grid-template-rows:repeat(var(--pt-mosaic-rows,2),minmax(0,1fr));
  overflow:hidden;
  background:#080d12;
}
.mosaic-area.mosaic-presentation .mosaic-slot{min-height:0;height:auto}
.mosaic-area.has-focused-slot{display:block!important}
.mosaic-area.has-focused-slot .mosaic-slot{display:none!important}
.mosaic-area.has-focused-slot .mosaic-slot.focused-slot{
  display:block!important;
  width:100%;
  height:100%;
  min-height:650px;
  border-radius:0;
}
.mosaic-area.mosaic-presentation.has-focused-slot .mosaic-slot.focused-slot{min-height:0;height:100%}
.mosaic-area.has-focused-slot .mosaic-slot.focused-slot .mosaic-plus{opacity:.18}
.mosaic-area.has-focused-slot .mosaic-slot.focused-slot:hover .mosaic-plus{opacity:1}
.mosaic-slot{cursor:zoom-in}
.mosaic-area.has-focused-slot .mosaic-slot.focused-slot{cursor:zoom-out}
@media(max-width:900px){
  .mosaic-area:not(.mosaic-presentation):not(.has-focused-slot){grid-template-columns:1fr!important}
}


/* PortTwin v15.11.18 · mosaico fiel à dimensão, clique 1x1 e retorno */
.mosaic-area{
  grid-template-columns:repeat(var(--pt-mosaic-cols,2),minmax(0,1fr))!important;
  grid-template-rows:repeat(var(--pt-mosaic-rows,2),minmax(260px,1fr));
  width:100%;
}
.mosaic-area .mosaic-slot{
  min-width:0;
  min-height:0;
  height:100%;
}
.mosaic-area:not(.mosaic-presentation):not(.has-focused-slot){
  min-height:max(650px, calc(var(--pt-mosaic-rows,2) * 300px));
}
.mosaic-area.mosaic-presentation{
  grid-template-columns:repeat(var(--pt-mosaic-cols,2),minmax(0,1fr))!important;
  grid-template-rows:repeat(var(--pt-mosaic-rows,2),minmax(0,1fr))!important;
}
.mosaic-slot.has-screen{cursor:pointer}
.mosaic-slot:not(.has-screen){cursor:default}
.mosaic-area.has-focused-slot{display:block!important}
.mosaic-area.has-focused-slot .mosaic-slot.focused-slot{
  position:relative;
  width:100%!important;
  height:100%!important;
  min-height:calc(100vh - 180px);
}
.mosaic-area.mosaic-presentation.has-focused-slot .mosaic-slot.focused-slot{
  min-height:0!important;
  height:100vh!important;
}
.pt-mosaic-back{
  position:absolute;
  z-index:30;
  top:12px;
  left:12px;
  box-shadow:0 4px 18px rgba(0,0,0,.35);
}
/* Não desmontar o desenho solicitado pelo usuário em telas menores. */
@media(max-width:900px){
  .mosaic-area:not(.mosaic-presentation):not(.has-focused-slot){
    grid-template-columns:repeat(var(--pt-mosaic-cols,2),minmax(0,1fr))!important;
    overflow-x:auto;
  }
}

.package-visual-holder{position:relative}
.mosaic-focus-hit{
  position:absolute;inset:0;z-index:15;border:0;background:transparent;padding:0;cursor:zoom-in;
}
.mosaic-area.has-focused-slot .focused-slot .mosaic-focus-hit{pointer-events:none;display:none}
