:root{--green:#008a3f;--green2:#0aa64c;--green3:#eaf7ef;--green4:#d9f0e2;--orange:#f47b20;--orange2:#fff1e7;--ink:#0d2740;--muted:#6d7f8f;--line:#d9e3ea;--bg:#f3f7f8;--white:#fff;--danger:#e64a42;--shadow:0 8px 28px rgba(16,46,65,.08);--radius:14px}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg)}a{color:inherit}button,input,select,textarea{font:inherit}button{cursor:pointer}.muted{color:var(--muted)}.small{font-size:12px}.hidden{display:none!important}
/* LOGIN */
.login-page{min-height:100vh;background:url('../img/fondo_login.png') center/cover no-repeat fixed;position:relative;overflow:auto}.login-overlay{position:fixed;inset:0;background:linear-gradient(100deg,rgba(0,74,38,.72),rgba(0,64,34,.34) 38%,rgba(6,43,31,.30));backdrop-filter:saturate(.9)}.login-wrap{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px}.login-card-new{width:min(540px,95vw);background:rgba(255,255,255,.95);border:1px solid rgba(255,255,255,.7);border-radius:22px;padding:28px 34px 30px;box-shadow:0 25px 70px rgba(0,0,0,.24);backdrop-filter:blur(10px)}.login-brand-new{display:flex;align-items:center;gap:14px;padding-bottom:18px;border-bottom:1px solid var(--line)}.login-brand-new img{width:66px;height:66px;object-fit:contain}.login-brand-new strong{display:block;color:var(--green);font-size:26px;font-weight:950;letter-spacing:.6px}.login-brand-new span{display:block;color:var(--orange);font-size:16px;font-weight:900;letter-spacing:1.6px;margin-top:4px}.login-copy{padding:18px 0 6px}.login-copy h1{margin:0 0 6px;font-size:25px}.login-copy p{margin:0;color:var(--muted);line-height:1.5;font-size:14px}.login-form-new label{display:block;font-weight:850;margin:15px 0 7px}.field-icon{position:relative;display:flex;align-items:center}.field-icon>span{position:absolute;left:14px}.field-icon input{width:100%;height:48px;border:1px solid #cbd8e1;border-radius:10px;padding:0 95px 0 44px;background:#fff;outline:none}.field-icon input:focus{border-color:var(--green2);box-shadow:0 0 0 4px rgba(10,166,76,.10)}.field-icon button{position:absolute;right:8px;border:0;background:var(--green3);color:var(--green);font-weight:850;padding:8px 10px;border-radius:8px}.btn-main{width:100%;border:0;border-radius:10px;background:linear-gradient(135deg,var(--green),#0bb654);color:#fff;font-weight:900;font-size:17px;padding:14px 18px;margin-top:20px;box-shadow:0 10px 24px rgba(0,138,63,.23)}.login-foot{color:#fff;font-size:12px;font-weight:700;text-shadow:0 2px 5px #000;margin-top:12px}
/* ADMIN SHELL */
.admin-shell{min-height:100vh}.admin-sidebar{position:fixed;left:0;top:0;bottom:0;width:260px;background:#fff;border-right:1px solid var(--line);z-index:30;overflow-y:auto;transition:.22s}.admin-brand{height:78px;display:flex;align-items:center;gap:12px;padding:10px 18px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--green);font-size:18px;font-weight:950;line-height:1.05}.admin-brand img{width:48px;height:48px;object-fit:contain}.admin-service{padding:15px 18px 10px}.admin-service small{display:block;color:var(--muted);font-weight:850;font-size:10px;letter-spacing:1.4px}.admin-service strong{display:block;color:var(--ink);font-size:12px;line-height:1.35;margin-top:4px}.admin-nav{padding:6px 10px 20px}.admin-nav a{display:flex;align-items:center;gap:11px;padding:11px 12px;margin:4px 0;border-radius:10px;text-decoration:none;color:#126f3b;font-size:13px;font-weight:850}.admin-nav a>span{width:22px;text-align:center;filter:saturate(.8)}.admin-nav a:hover{background:#f0f8f3}.admin-nav a.active{background:var(--green);color:#fff;box-shadow:0 6px 14px rgba(0,138,63,.16)}.admin-nav .logout{color:#b83d37}.nav-sep{height:1px;background:var(--line);margin:10px 8px}.admin-main{margin-left:260px;min-height:100vh;transition:.22s}.admin-topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:14px;padding:0 24px;position:sticky;top:0;z-index:20}.icon-btn{border:0;background:transparent;color:var(--green);font-size:24px;font-weight:900}.topbar-title{justify-self:center;display:flex;align-items:baseline;gap:10px}.topbar-title b{font-size:17px;color:var(--green);letter-spacing:.4px}.topbar-title span{font-size:14px;color:var(--orange);font-weight:900;letter-spacing:.8px}.topbar-user{display:flex;align-items:center;gap:13px;font-size:12px;font-weight:800}.topbar-user span{color:var(--muted)}.topbar-user a{color:#0b62da;text-decoration:none}.admin-content{padding:22px;max-width:1580px;margin:auto}.page-heading{background:linear-gradient(135deg,#078f44,#0baa4d);border-radius:14px;color:#fff;padding:18px 22px;margin-bottom:16px;box-shadow:0 8px 20px rgba(0,138,63,.13)}.page-heading p{margin:0 0 3px;font-size:10px;font-weight:900;letter-spacing:1.5px;opacity:.8}.page-heading h1{margin:0;font-size:23px}.sidebar-collapsed .admin-sidebar{transform:translateX(-260px)}.sidebar-collapsed .admin-main{margin-left:0}
/* COMPONENTS */
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;margin:14px 0}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line)}.panel-head h2{margin:0;font-size:18px}.panel-head p{margin:3px 0 0;color:var(--muted);font-size:12px}.panel-body{padding:18px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.form-group label{display:block;font-size:12px;font-weight:900;margin:0 0 6px}.form-control,input[type=text],input[type=password],input[type=email],input[type=date],input[type=number],select,textarea{width:100%;border:1px solid #cbd8e1;border-radius:9px;background:#fff;color:var(--ink);padding:10px 12px;min-height:42px;outline:none}.form-control:focus,input:focus,select:focus,textarea:focus{border-color:var(--green2);box-shadow:0 0 0 3px rgba(10,166,76,.08)}textarea{min-height:82px;resize:vertical}.help{color:var(--muted);font-size:11px;margin-top:5px;line-height:1.35}.actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:14px}.btn{border:0;border-radius:9px;padding:9px 13px;text-decoration:none;font-weight:850;font-size:12px;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn-primary{background:var(--green2);color:#fff}.btn-soft{background:var(--green3);color:var(--green)}.btn-orange{background:var(--orange);color:#fff}.btn-danger{background:#ffe8e7;color:#bd3530}.btn-blue{background:#e9f2ff;color:#1961bd}.btn-dark{background:#163047;color:#fff}.btn:disabled{opacity:.55;cursor:not-allowed}.flash{border-radius:10px;padding:11px 13px;margin:10px 0;font-size:13px;font-weight:750}.flash.success{background:#e8f7ee;color:#126b38;border:1px solid #c4e9d1}.flash.error{background:#ffeded;color:#a8322d;border:1px solid #ffd0ce}.flash.warn{background:#fff7df;color:#886200;border:1px solid #f4e4a4}.table-wrap{overflow:auto}.table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px}.table th{background:#eef8f2;color:#067b37;font-weight:900;text-align:left;padding:10px 11px;border-bottom:1px solid #cfe1d7;white-space:nowrap}.table td{padding:10px 11px;border-bottom:1px solid #e4ebef;vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr:hover{background:#fbfdfc}.status{display:inline-flex;align-items:center;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:900}.status.on{background:#e3f6eb;color:#087536}.status.off{background:#f1f2f3;color:#687681}.color-dot{display:inline-block;width:14px;height:14px;border-radius:4px;vertical-align:middle;margin-right:6px;border:1px solid #0002}.check-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:9px}.check-card{border:1px solid var(--line);border-radius:10px;padding:10px 11px;display:flex;align-items:center;gap:9px;background:#fff}.check-card:hover{border-color:#a9d7bb;background:#fbfefc}.check-card input{width:17px;height:17px;accent-color:var(--green)}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.stat-card{background:#fff;border:1px solid var(--line);border-left:5px solid var(--green2);border-radius:12px;padding:14px 16px;box-shadow:var(--shadow)}.stat-card.orange{border-left-color:var(--orange)}.stat-card small{display:block;color:var(--muted);font-weight:850}.stat-card strong{display:block;font-size:27px;margin-top:5px}.pill{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border-radius:999px;background:var(--green3);color:var(--green);font-size:11px;font-weight:850}.pill.orange{background:var(--orange2);color:#b85a12}.empty{padding:25px;text-align:center;color:var(--muted)}.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}.section-note{background:#f8fbfc;border:1px dashed #cbdbe4;border-radius:10px;padding:11px 12px;color:var(--muted);font-size:12px;line-height:1.45}.inline-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.preview-box{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fbfdfd;min-height:90px}
/* VIEWER */
.viewer-page{height:100vh;overflow:hidden;background:#eaf0f3}.viewer-shell{height:100vh;display:grid;grid-template-rows:76px 1fr}.viewer-header{background:#fff;border-bottom:1px solid var(--line);display:grid;grid-template-columns:270px 1fr auto;align-items:center;gap:20px;padding:0 18px;z-index:1000}.viewer-brand{display:flex;align-items:center;gap:10px}.viewer-brand img{width:50px;height:50px;object-fit:contain}.viewer-brand b{display:block;color:var(--green);font-size:16px}.viewer-brand span{display:block;color:var(--orange);font-size:11px;font-weight:900;letter-spacing:.7px;margin-top:3px}.viewer-selectors{display:grid;grid-template-columns:repeat(3,minmax(170px,1fr));gap:10px;max-width:900px}.selector label{display:block;font-size:9px;font-weight:950;color:var(--muted);letter-spacing:.9px;margin-bottom:4px}.selector select{height:40px;margin:0;padding:7px 10px;font-size:12px}.viewer-user{text-align:right;font-size:11px;font-weight:800;color:var(--muted)}.viewer-user b{display:block;color:var(--ink);margin-bottom:4px}.viewer-user a{color:#d33c35;text-decoration:none}.viewer-main{min-height:0;display:grid;grid-template-columns:350px 1fr;position:relative}.viewer-sidebar{background:#fff;border-right:1px solid var(--line);overflow-y:auto;padding:14px;z-index:500}.viewer-panel{border:1px solid var(--line);border-radius:12px;margin-bottom:11px;overflow:hidden;background:#fff}.viewer-panel h3{margin:0;padding:11px 12px;background:#f6faf8;color:#086f37;font-size:13px;border-bottom:1px solid #e2ece6}.viewer-panel .inside{padding:12px}.report-name{font-weight:950;font-size:16px;color:var(--ink);margin-bottom:4px}.report-date{font-size:11px;color:var(--muted)}.report-buttons{display:flex;gap:7px;margin-top:10px}.report-buttons .btn{flex:1}.layer-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 0;border-bottom:1px solid #eef2f4;font-size:12px;font-weight:750}.layer-row:last-child{border-bottom:0}.switch{position:relative;width:38px;height:21px;flex:0 0 auto}.switch input{opacity:0;width:0;height:0}.switch i{position:absolute;inset:0;background:#cbd5dc;border-radius:999px;transition:.2s}.switch i:before{content:"";position:absolute;width:15px;height:15px;left:3px;top:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 3px #0003}.switch input:checked+i{background:var(--green2)}.switch input:checked+i:before{transform:translateX(17px)}.range{width:100%;accent-color:var(--green)}.crop-list{display:flex;flex-wrap:wrap;gap:7px}.crop-chip{border:1px solid #d9e5de;border-radius:999px;padding:6px 9px;font-size:11px;font-weight:850;background:#fbfefc}.crop-chip .color-dot{width:11px;height:11px;margin-right:4px}.summary-list{display:grid;gap:7px}.summary-item{display:grid;grid-template-columns:14px 1fr auto;align-items:center;gap:7px;font-size:11px}.summary-item b{font-size:11px}.summary-total{margin-top:9px;padding-top:9px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-weight:950;font-size:12px}.gee-info{font-size:11px;line-height:1.5;color:var(--muted)}.gee-info b{color:var(--ink)}.map-wrap{position:relative;min-width:0}.map{position:absolute;inset:0;background:#dfe9ed}.map-toolbar{position:absolute;top:14px;right:14px;z-index:650;background:#fff;border:1px solid var(--line);border-radius:10px;padding:6px;box-shadow:var(--shadow);display:flex;gap:5px}.map-toolbar select{width:auto;min-height:34px;margin:0;padding:5px 8px;font-size:11px}.map-legend{position:absolute;right:14px;bottom:24px;z-index:650;background:rgba(255,255,255,.95);border:1px solid var(--line);border-radius:10px;padding:10px;box-shadow:var(--shadow);min-width:150px;font-size:10px}.map-legend strong{display:block;margin-bottom:7px;font-size:11px}.legend-row{display:flex;align-items:center;gap:7px;margin:5px 0}.legend-swatch{width:13px;height:13px;border-radius:3px}.viewer-menu-btn{display:none}.loading-overlay{position:absolute;inset:0;background:rgba(255,255,255,.48);z-index:900;display:flex;align-items:center;justify-content:center;font-weight:900;color:var(--green);backdrop-filter:blur(2px)}.toast{position:absolute;left:50%;top:14px;transform:translateX(-50%);z-index:800;background:#183248;color:#fff;padding:9px 12px;border-radius:9px;font-size:11px;box-shadow:var(--shadow)}
.nav-group-title{padding:13px 12px 4px;color:#8a99a3;font-size:9px;font-weight:950;letter-spacing:1.25px}.nav-group-title:first-child{padding-top:4px}.color-field{display:flex;align-items:center;gap:8px}.color-field input[type=color]{width:44px;height:38px;padding:2px;border:1px solid #cbd8e1;border-radius:8px;background:#fff}.color-code{font-size:11px;font-weight:850;color:var(--muted)}.file-current{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:6px}.status.warn{background:#fff5d9;color:#8f6700}.table .mono{font-family:Consolas,monospace;font-size:10px;color:#4d5d68}.general-layer-loading{opacity:.55;pointer-events:none}.general-layer-error{color:#b23e38;font-size:10px;margin-top:4px}
@media(max-width:1050px){.topbar-title span{display:none}.viewer-header{grid-template-columns:210px 1fr auto}.viewer-main{grid-template-columns:310px 1fr}.viewer-selectors{grid-template-columns:repeat(3,minmax(130px,1fr))}.grid4,.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.admin-sidebar{transform:translateX(-260px)}.admin-main{margin-left:0}.sidebar-collapsed .admin-sidebar{transform:translateX(0)}.topbar-user span{display:none}.grid2,.grid3,.split{grid-template-columns:1fr}.admin-content{padding:14px}.viewer-shell{grid-template-rows:auto 1fr}.viewer-header{min-height:74px;grid-template-columns:1fr auto;padding:8px 12px}.viewer-brand{grid-column:1}.viewer-user{grid-column:2;grid-row:1}.viewer-selectors{grid-column:1/3;grid-row:2;grid-template-columns:1fr 1fr 1fr;width:100%;padding-bottom:4px}.viewer-main{grid-template-columns:1fr}.viewer-sidebar{position:absolute;left:0;top:0;bottom:0;width:min(340px,92vw);transform:translateX(-105%);transition:.22s;box-shadow:0 15px 35px #0002}.viewer-page.sidebar-open .viewer-sidebar{transform:none}.viewer-menu-btn{display:block;position:absolute;left:12px;top:12px;z-index:700;border:0;background:#fff;border-radius:9px;padding:8px 10px;box-shadow:var(--shadow);color:var(--green);font-weight:900}.map-wrap{min-height:0}.map-toolbar{top:12px;right:10px}.map-legend{right:10px;bottom:18px}.stat-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.login-card-new{padding:22px 18px}.login-brand-new strong{font-size:21px}.login-brand-new span{font-size:12px}.viewer-selectors{grid-template-columns:1fr}.viewer-user{font-size:9px}.grid4,.stat-grid{grid-template-columns:1fr}.page-heading h1{font-size:19px}}

/* ============================================================
   TERRASAT MONITORING - Identidad corporativa V50
   ============================================================ */
:root{
  --green:#2f6f2a;
  --green2:#3f8f36;
  --green3:#edf6eb;
  --green4:#dcebd8;
  --orange:#e88422;
  --orange2:#fff3e5;
  --ink:#17241c;
  --muted:#66746b;
  --line:#d9e2db;
  --bg:#f2f5f2;
  --white:#fff;
  --danger:#c94840;
  --shadow:0 12px 32px rgba(29,54,36,.09);
  --radius:14px;
}
body{background:var(--bg);color:var(--ink)}
.btn-primary{background:linear-gradient(135deg,#2f6f2a,#438f38);box-shadow:0 7px 16px rgba(47,111,42,.18)}
.btn-orange{background:#e88422}.btn-soft{background:#edf6eb;color:#285f25}.status.on{background:#e6f3e2;color:#245f21}
.form-control:focus,input:focus,select:focus,textarea:focus{border-color:#6fa968;box-shadow:0 0 0 3px rgba(63,143,54,.10)}
.table th{background:#edf4ed;color:#285f25;border-bottom-color:#d6e3d5}
.page-heading{background:linear-gradient(115deg,#1d3a28 0%,#2f6f2a 68%,#3c7f34 100%);box-shadow:0 12px 28px rgba(29,58,40,.15);position:relative;overflow:hidden}
.page-heading:after{content:"";position:absolute;right:-40px;top:-70px;width:180px;height:180px;border:32px solid rgba(255,255,255,.06);border-radius:50%}

/* Administración */
.admin-sidebar{width:272px;background:linear-gradient(180deg,#14251a 0%,#1b3021 100%);border-right:0;box-shadow:8px 0 28px rgba(17,36,24,.10)}
.admin-brand{height:86px;padding:12px 18px;background:#fff;border-bottom:4px solid var(--orange);justify-content:center}
.admin-brand img{width:214px;max-width:100%;height:56px;object-fit:contain}
.admin-nav a{color:#dbe6dd;border:1px solid transparent}.admin-nav a:hover{background:rgba(255,255,255,.07);color:#fff}.admin-nav a.active{background:#fff;color:#285f25;border-color:#fff;box-shadow:0 7px 18px rgba(0,0,0,.12)}
.admin-nav .logout{color:#ffb6a9}.nav-sep{background:rgba(255,255,255,.11)}.nav-group-title{color:#839989}
.admin-main{margin-left:272px}.admin-topbar{height:74px;border-bottom:1px solid #dce5de;box-shadow:0 2px 10px rgba(25,50,32,.03)}
.icon-btn{color:#285f25}.topbar-title{justify-self:center;display:flex;align-items:center;text-align:center}.topbar-title b{color:#244f24;font-size:15px;letter-spacing:.65px;line-height:1.15;text-transform:uppercase}.topbar-title span{display:none}

/* Visor corporativo con panel lateral derecho */
.viewer-page{background:#e7ece8}.viewer-shell{grid-template-rows:86px minmax(0,1fr)}
.viewer-header{background:rgba(255,255,255,.98);border-bottom:1px solid #d5dfd7;grid-template-columns:310px minmax(0,1fr) auto;gap:18px;padding:0 20px;box-shadow:0 5px 18px rgba(28,51,34,.07)}
.viewer-brand{gap:12px;min-width:0}.viewer-brand img{width:184px;height:58px;object-fit:contain;flex:0 0 auto}.viewer-brand-copy{border-left:1px solid #d7e0d8;padding-left:11px;min-width:0}.viewer-brand b{color:#254f23;font-size:10px;letter-spacing:.35px;line-height:1.25}.viewer-brand span{color:#9a5a19;font-size:8.5px;letter-spacing:.85px;margin-top:3px}
.viewer-selectors{max-width:980px;gap:11px}.selector label{color:#68786d;font-size:8.5px;letter-spacing:1.1px}.selector select{height:42px;border-radius:10px;border-color:#d1ddd3;background:#f9fbf9;color:#1d2a21;font-weight:700}
.viewer-user b{color:#1f3224;font-size:12px}.viewer-user a{display:inline-flex;margin-top:2px;padding:5px 9px;border-radius:999px;background:#f7ece9;color:#9d3e34;font-size:9px;letter-spacing:.4px}
.viewer-main{grid-template-columns:minmax(0,1fr) 370px;background:#dde5df}.map-wrap{grid-column:1;grid-row:1}.viewer-sidebar{grid-column:2;grid-row:1;background:#f5f7f5;border-left:1px solid #cfd9d1;border-right:0;padding:14px 13px;box-shadow:-8px 0 26px rgba(25,48,31,.06)}
.viewer-panel{border:1px solid #d9e2da;border-radius:13px;margin-bottom:12px;box-shadow:0 5px 16px rgba(31,55,36,.05)}
.viewer-panel h3{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 13px;background:linear-gradient(105deg,#193222,#264e2b);color:#fff;border-bottom:0;font-size:12px;letter-spacing:.2px}
.viewer-panel h3:before{content:"";width:4px;height:15px;border-radius:3px;background:var(--orange);flex:0 0 auto}.viewer-panel h3 .panel-count{margin-left:auto;min-width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:rgba(255,255,255,.13);color:#fff;font-size:10px}
.viewer-panel .inside{padding:12px 13px}.report-name{font-size:15px;color:#1c2c20}.report-date{font-size:10.5px}.report-observation{line-height:1.45;margin:7px 0 9px}
.layer-row{font-size:11.5px}.switch input:checked+i{background:#3f8f36}.range{accent-color:#3f8f36}
.map-toolbar{top:14px;right:14px;border-color:#d2dcd4;border-radius:11px}.map-toolbar select{background:#fff;border-color:#d3ded5;color:#203126;font-weight:750}
.map-legend{border-color:#d3ddd5}.loading-overlay{color:#285f25}.toast{background:#1b3022}

.report-documents{display:grid;gap:8px;max-height:250px;overflow:auto;padding-right:2px;scrollbar-width:thin;scrollbar-color:#9cb09f transparent}
.report-doc-card{display:grid;grid-template-columns:36px minmax(0,1fr);gap:8px 9px;align-items:center;border:1px solid #dde5de;border-radius:10px;background:#fff;padding:8px;transition:.18s}
.report-doc-card:hover{border-color:#b8cdb9;box-shadow:0 5px 14px rgba(34,64,40,.07)}
.report-doc-icon{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:#fff0e2;color:#b65e13;font-size:9px;font-weight:950;letter-spacing:.3px}
.report-doc-copy{min-width:0}.report-doc-copy b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#203126;font-size:11px}.report-doc-copy span{display:block;margin-top:3px;color:#77847a;font-size:9px}
.report-doc-actions{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:6px}.report-doc-actions a{display:flex;min-height:31px;align-items:center;justify-content:center;border-radius:7px;text-decoration:none;font-size:9.5px;font-weight:900}.doc-open{background:#2f6f2a;color:#fff}.doc-download{background:#edf5ec;color:#285f25;border:1px solid #d6e5d4}.document-empty{border:1px dashed #ccd9ce;border-radius:9px;padding:12px;background:#fafcfa;color:#718078;font-size:10.5px;line-height:1.4;text-align:center}


/* Terra Monitoring SAT V54 - ajustes visuales administrador */
.admin-brand{height:92px;padding:8px 14px;background:#fff;border-bottom:3px solid var(--orange);justify-content:center;overflow:hidden}
.admin-brand img{width:82px!important;height:76px!important;max-width:82px!important;object-fit:contain!important;display:block}
.topbar-title{justify-self:center!important;text-align:center!important}
.topbar-title b{color:var(--orange)!important;font-size:16px!important;font-weight:950!important;letter-spacing:.65px!important;line-height:1.15!important;text-transform:uppercase!important}

/* ============================================================
   Terra Monitoring SAT - Paleta corporativa V57
   Mejora de verdes: mayor contraste, frescura y coherencia con el logo
   ============================================================ */
:root{
  --green:#0d7a3b;
  --green2:#159447;
  --green3:#eaf6ee;
  --green4:#d7eddf;
  --ink:#183128;
  --muted:#6b7d72;
  --line:#d6e4da;
  --bg:#f4f8f5;
  --shadow:0 10px 28px rgba(16,72,43,.08);
}

body{background:#f4f8f5;color:var(--ink)}

/* Encabezado de sección: verde agrícola más vivo y corporativo */
.page-heading{
  background:linear-gradient(112deg,#145a32 0%,#1d743a 48%,#328c45 100%);
  box-shadow:0 10px 26px rgba(20,90,50,.16);
}
.page-heading:after{
  border-color:rgba(255,255,255,.075);
}

/* Menú lateral: verde profundo, sin verse negro */
.admin-sidebar{
  background:linear-gradient(180deg,#0f4b2d 0%,#145d34 52%,#17683a 100%);
  box-shadow:8px 0 26px rgba(12,69,39,.12);
}
.admin-nav a{
  color:#eef8f1;
}
.admin-nav a:hover{
  background:rgba(255,255,255,.11);
  color:#fff;
}
.admin-nav a.active{
  background:#fff;
  color:#0d6f37;
  border-color:#fff;
  box-shadow:0 7px 18px rgba(7,61,31,.16);
}
.admin-nav .logout{color:#ffd1c7}
.nav-sep{background:rgba(255,255,255,.18)}
.nav-group-title{color:#b8d6c1}

/* Botones y acciones */
.btn-primary,
.btn-main{
  background:linear-gradient(135deg,#0d7a3b,#1aa04b);
  box-shadow:0 7px 16px rgba(13,122,59,.20);
}
.btn-primary:hover,
.btn-main:hover{filter:brightness(1.04)}
.btn-soft{background:#eaf6ee;color:#0d6f37}

/* Tablas, estados y elementos de apoyo */
.table th{
  background:#eaf5ed;
  color:#126b35;
  border-bottom-color:#cfe3d5;
}
.table tbody tr:hover{background:#f8fcf9}
.status.on{
  background:#dff3e6;
  color:#0b6f35;
}
.pill{
  background:#e6f4eb;
  color:#0d7438;
}
.check-card:hover{
  border-color:#9bc9aa;
  background:#f8fcf9;
}
.check-card input{accent-color:#159447}

/* Formularios y controles */
.form-control:focus,
input:focus,
select:focus,
textarea:focus{
  border-color:#63ad79;
  box-shadow:0 0 0 3px rgba(21,148,71,.10);
}
.icon-btn{color:#11723a}

/* Visor */
.viewer-panel h3{
  background:linear-gradient(105deg,#145a32,#1d743a);
}
.switch input:checked+i{background:#159447}
.range{accent-color:#0d7a3b}
.loading-overlay{color:#0d7a3b}
.doc-open{background:#0d7a3b}
.doc-download{background:#eaf6ee;color:#0d6f37;border-color:#d1e5d7}


/* ============================================================
   Terra Monitoring SAT - Ajuste visual V58
   Verde más luminoso/profesional + logo horizontal en sidebar
   ============================================================ */
:root{
  --green:#11894d;
  --green2:#19a85b;
  --green3:#eaf8f0;
  --green4:#d8f0e2;
  --ink:#17362a;
  --muted:#6b7f73;
  --line:#d7e6dc;
  --bg:#f5f9f6;
  --shadow:0 10px 26px rgba(17,137,77,.09);
}

body{background:#f5f9f6;color:var(--ink)}

/* Logo horizontal: se usa el archivo existente assets/img/logo_horizontal.png */
.admin-brand{
  height:96px;
  padding:12px 16px;
  background:#fff;
  border-bottom:3px solid var(--orange);
  justify-content:center;
  overflow:hidden;
}
.admin-brand img{
  width:205px!important;
  height:auto!important;
  max-width:100%!important;
  max-height:68px!important;
  object-fit:contain!important;
  display:block;
}

/* Sidebar: verde esmeralda corporativo, más vivo y menos oscuro */
.admin-sidebar{
  background:linear-gradient(180deg,#0f7f48 0%,#129452 48%,#16a35b 100%);
  box-shadow:8px 0 24px rgba(15,127,72,.14);
}
.admin-nav a{color:#f5fff8}
.admin-nav a:hover{
  background:rgba(255,255,255,.14);
  color:#fff;
}
.admin-nav a.active{
  background:#fff;
  color:#0f7f48;
  border-color:#fff;
  box-shadow:0 6px 16px rgba(8,95,52,.16);
}
.admin-nav .logout{color:#ffe0d7}
.nav-sep{background:rgba(255,255,255,.22)}
.nav-group-title{color:#d4efe0}

/* Encabezado verde debajo del título: más luminoso y limpio */
.page-heading{
  background:linear-gradient(110deg,#11894d 0%,#1aa258 55%,#33b66a 100%);
  box-shadow:0 10px 24px rgba(17,137,77,.16);
}
.page-heading:after{
  border-color:rgba(255,255,255,.10);
}

/* Botones y elementos de estado alineados con la nueva paleta */
.btn-primary,
.btn-main{
  background:linear-gradient(135deg,#11894d,#1bad5e);
  box-shadow:0 7px 15px rgba(17,137,77,.20);
}
.btn-soft{background:#eaf8f0;color:#0f7f48}
.status.on{background:#def4e6;color:#0e7d45}
.pill{background:#e7f6ed;color:#0f8248}
.table th{
  background:#edf8f1;
  color:#0f7743;
  border-bottom-color:#d3e8da;
}
.form-control:focus,
input:focus,
select:focus,
textarea:focus{
  border-color:#65bd84;
  box-shadow:0 0 0 3px rgba(25,168,91,.10);
}
.icon-btn{color:#11894d}

/* Visor y componentes secundarios */
.viewer-panel h3{
  background:linear-gradient(105deg,#11894d,#1aa258);
}
.switch input:checked+i{background:#19a85b}
.range{accent-color:#11894d}
.loading-overlay{color:#11894d}
.doc-open{background:#11894d}
.doc-download{background:#eaf8f0;color:#0f7f48;border-color:#d2e8da}


/* ============================================================
   Terra Monitoring SAT - Visor V60
   ============================================================ */
.viewer-header{grid-template-columns:300px minmax(0,1fr) auto;gap:16px}
.viewer-brand img{width:180px;height:56px}.viewer-brand-copy{padding-left:10px}.viewer-brand-copy b{font-size:10px;line-height:1.25;color:#1e5d36}.viewer-brand-copy span{display:none!important}
.viewer-client-card{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:250px;max-width:330px}.viewer-client-identity{display:flex;align-items:center;gap:9px;min-width:0}.viewer-client-avatar{width:40px;height:40px;flex:0 0 40px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#1a9b50,#49b61f);color:#fff;font-size:17px;font-weight:950}.viewer-client-identity>div{min-width:0}.viewer-client-identity b{display:block;max-width:125px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#1c2f24;font-size:12px}.viewer-client-identity span:not(.viewer-client-avatar){display:block;color:#738076;font-size:10px;margin-top:2px}.viewer-client-divider{width:1px;height:34px;background:#d9e5dc}.viewer-client-logo{width:82px;height:42px;display:flex;align-items:center;justify-content:center}.viewer-client-logo img{max-width:82px;max-height:42px;object-fit:contain}.viewer-client-logo span{font-size:9px;color:#9aa79d}.viewer-exit{width:34px;height:34px;flex:0 0 34px;display:flex;align-items:center;justify-content:center;border-radius:7px;background:#11934f;color:#fff;text-decoration:none;transition:.18s}.viewer-exit:hover{background:#0c7b42;transform:translateY(-1px)}.viewer-exit svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* Leaflet layer control replaces the old select and uses the standard stacked-layers icon. */
.leaflet-control-layers{border:1px solid #cfddd4!important;border-radius:11px!important;box-shadow:0 8px 24px rgba(19,91,51,.14)!important}.leaflet-control-layers-toggle{width:42px!important;height:42px!important;background-size:22px 22px!important}.leaflet-control-layers-expanded{padding:10px 12px!important;color:#17362a;font-size:12px;font-weight:750}.leaflet-control-layers-base label{margin:6px 0}.leaflet-control-layers-selector{accent-color:#159a50}

/* Sidebar panels are accordions. Only Documents starts opened. */
.viewer-panel{overflow:hidden}.viewer-panel-toggle{width:100%;min-height:47px;border:0;margin:0;padding:11px 12px;display:grid;grid-template-columns:18px minmax(0,1fr) auto auto;align-items:center;gap:8px;text-align:left;background:linear-gradient(105deg,#12924e,#20a85b);color:#fff;font-size:12px;font-weight:900;cursor:pointer}.viewer-panel-toggle:hover{background:linear-gradient(105deg,#0f8646,#1b9e54)}.viewer-panel-toggle .panel-count{min-width:23px;height:23px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:rgba(255,255,255,.16);color:#fff;font-size:10px}.viewer-panel-chevron{font-size:17px;line-height:1;transition:transform .2s}.viewer-panel.is-open .viewer-panel-chevron{transform:rotate(180deg)}.viewer-panel-collapsible:not(.is-open)>.inside{display:none}.viewer-panel-stack{position:relative;width:15px;height:13px;display:block}.viewer-panel-stack:before,.viewer-panel-stack:after{content:"";position:absolute;left:1px;width:12px;height:7px;border:1.5px solid #fff;border-radius:2px;transform:rotate(45deg) skew(-8deg,-8deg)}.viewer-panel-stack:before{top:0}.viewer-panel-stack:after{top:4px;opacity:.72}.viewer-panel h3{display:none}
.viewer-sidebar{scrollbar-color:#8db6a0 #edf4ef;scrollbar-width:thin}

@media(max-width:1180px){.viewer-header{grid-template-columns:235px minmax(0,1fr) auto}.viewer-brand img{width:145px}.viewer-client-card{min-width:205px}.viewer-client-logo{display:none}.viewer-client-divider{display:none}.viewer-selectors{gap:7px}}
@media(max-width:800px){.viewer-header{grid-template-columns:1fr auto}.viewer-brand{grid-column:1}.viewer-brand-copy{display:none}.viewer-brand img{width:155px;height:48px}.viewer-client-card{grid-column:2;grid-row:1;min-width:0}.viewer-client-avatar{width:34px;height:34px;flex-basis:34px}.viewer-client-identity b{max-width:95px;font-size:10px}.viewer-client-identity span:not(.viewer-client-avatar){font-size:9px}.viewer-exit{width:32px;height:32px;flex-basis:32px}.viewer-selectors{grid-column:1/3;grid-row:2}.leaflet-control-layers{margin-top:58px!important}}
@media(max-width:560px){.viewer-client-identity>div{display:none}.viewer-client-card{gap:6px}.viewer-brand img{width:135px}.viewer-panel-toggle{min-height:45px}.report-documents{max-height:220px}}


/* ============================================================
   V61 - Identidad del cliente en visor
   ============================================================ */
.viewer-client-card{display:flex;align-items:center;justify-content:flex-end;gap:11px;min-width:220px;max-width:360px}
.viewer-client-identity{display:flex;align-items:center;min-width:0}
.viewer-client-identity>div{min-width:0}
.viewer-client-identity b{display:block;max-width:155px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#173524;font-size:12px;font-weight:900}
.viewer-client-identity span{display:block;color:#74837a;font-size:9.5px;margin-top:2px}
.viewer-client-logo{width:auto;min-width:54px;max-width:110px;height:46px;display:flex;align-items:center;justify-content:center;padding:2px 7px;border-radius:8px;background:#fff}
.viewer-client-logo img{max-width:96px;max-height:42px;object-fit:contain;display:block}
.viewer-client-divider{width:1px;height:34px;background:#d9e5dc;flex:0 0 1px}
@media(max-width:1180px){.viewer-client-card{min-width:170px}.viewer-client-logo{max-width:82px}.viewer-client-logo img{max-width:72px}.viewer-client-identity b{max-width:105px}}
@media(max-width:800px){.viewer-client-logo{max-width:70px;height:38px}.viewer-client-logo img{max-width:62px;max-height:34px}.viewer-client-identity b{max-width:90px}}
@media(max-width:560px){.viewer-client-identity>div{display:block}.viewer-client-identity b{max-width:78px;font-size:9.5px}.viewer-client-identity span{display:none}.viewer-client-logo{display:none}.viewer-client-divider{display:none}}


/* ============================================================
   V62 - Formularios corporativos / textos en mayúscula
   ============================================================ */
.report-title-row{display:grid;grid-template-columns:minmax(0,2.25fr) minmax(240px,1fr);gap:14px;align-items:end}
.report-title-row input[name="titulo"]{min-width:0;font-size:15px;font-weight:700}

/* Campos de contenido administrativo: mayúsculas visuales y coherentes.
   Los campos técnicos, búsquedas, usuario/email y valores numéricos se excluyen
   en responsive.js para no alterar claves GeoJSON ni credenciales. */
.admin-body input:not([type])[name]:not([name="usuario"]):not([name="codigo_campo"]):not([name="campo_cultivo"]):not([name="campo_hectareas"]),
.admin-body input[type="text"][name]:not([name^="hectareas_informe"]),
.admin-body textarea[name]{text-transform:uppercase}

@media(max-width:800px){
  .report-title-row{grid-template-columns:1fr}
}


/* V63 - Campo Título de Informes Generales más ancho */
.report-title-row{grid-template-columns:minmax(0,4fr) minmax(210px,1fr)!important;gap:16px!important}
.report-title-field{min-width:0;width:100%}
.report-title-input{display:block;width:100%!important;min-width:0;max-width:none;box-sizing:border-box;font-size:15px;font-weight:700}
.report-status-field{min-width:210px}
@media(max-width:900px){.report-title-row{grid-template-columns:1fr!important}.report-status-field{min-width:0}}


/* Viewer visual refinements V64 */
.viewer-panel-toggle{display:flex;align-items:center;gap:10px}
.viewer-panel-icon,.layer-icon,.crop-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.viewer-panel-icon{width:24px;height:24px;border-radius:8px;background:rgba(255,255,255,.15);font-size:14px;line-height:1}
.layer-label{display:inline-flex;align-items:center;gap:10px;font-weight:700;color:#20352a}
.layer-icon{width:24px;height:24px;border-radius:999px;background:#eef7f1;color:#0d7a3b;font-size:13px;box-shadow:inset 0 0 0 1px #d4e9da}
.range-label strong{font-size:12px;color:#0b7a3b;font-weight:900}
.mosaic-slot-title{display:flex;align-items:center;gap:8px}
.summary-item{display:flex;align-items:center;justify-content:space-between;gap:10px}
.summary-crop{display:flex;align-items:center;gap:8px;min-width:0}
.summary-crop span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crop-icon{width:24px;height:24px;border-radius:999px;background:#fff4e8;color:#cc6f00;font-size:13px;box-shadow:inset 0 0 0 1px #f5d4ad}
#generalLayersList .layer-row span,#summaryList .summary-item span{font-size:13px}


/* Viewer accordion headers V66: sin iconos en cabecera; flecha siempre al extremo derecho */
.viewer-panel-toggle{display:flex!important;align-items:center!important;gap:10px!important;width:100%}
.viewer-panel-toggle .viewer-panel-title{flex:1 1 auto;min-width:0;text-align:left}
.viewer-panel-toggle .panel-count{flex:0 0 auto;margin-left:auto}
.viewer-panel-toggle .panel-count + .viewer-panel-chevron{margin-left:0}
.viewer-panel-toggle .viewer-panel-chevron{flex:0 0 auto;margin-left:auto!important;text-align:center}
.viewer-panel-toggle .viewer-panel-stack,.viewer-panel-toggle .viewer-panel-icon{display:none!important}
