:root{
  --green:#2e8b57;
  --green-dark:#216641;
  --light-bg:#f5f8f6;
  --panel:#ffffff;
  --border:#d9e2dc;
  --text:#163322;
  --muted:#66756d;
  --danger:#c0392b;
  --warning:#b9770e;
  --ok:#1e8449;
}
*{box-sizing:border-box;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}
html,body,#app{margin:0;min-height:100%}
body{background:var(--light-bg);color:var(--text);padding-bottom:86px}
.hidden{display:none!important}
.header{display:flex;justify-content:center;align-items:center;position:relative;background:var(--green);color:#fff;padding:18px 14px;text-align:center}
.header-title{font-size:14px;line-height:1.2}
.header-sub{font-size:12px;opacity:.95;margin-top:4px}.header-sub.small{opacity:.85}
.header-right{position:absolute;right:12px;bottom:10px}
.icon-btn{position:relative;border:none;border-radius:999px;background:#fff;padding:8px;width:42px;height:42px;cursor:pointer}
.badge{position:absolute;top:-4px;right:-4px;background:#e74c3c;color:#fff;border-radius:999px;padding:2px 6px;font-size:10px}
.panel,.module-view{padding:14px}
.card,.content-shell{background:var(--panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 4px 18px rgba(0,0,0,.05);padding:14px}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.box{border:none;border-radius:14px;padding:12px;min-height:112px;display:flex;flex-direction:column;gap:10px;align-items:center;justify-content:center;cursor:pointer;font-weight:700;transition:transform .12s, box-shadow .12s}
.box:hover,.menu-card:hover,.nav-btn:hover,.primary-btn:hover,.secondary-btn:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(0,0,0,.08)}
.box .icon{width:58px;height:58px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:28px}
.box .label{text-align:center;font-size:12px;line-height:1.2}
.grid .box:nth-child(1){background:linear-gradient(180deg,#eafaf0,#dff6ea)}
.grid .box:nth-child(2){background:linear-gradient(180deg,#eef8ff,#e4f2ff)}
.grid .box:nth-child(3){background:linear-gradient(180deg,#fff7d6,#fff1b3)}
.grid .box:nth-child(4){background:linear-gradient(180deg,#f7f7fb,#f0f0f5)}
.grid .box:nth-child(5){background:linear-gradient(180deg,#e6f4ff,#d8ecff)}
.grid .box:nth-child(6){background:linear-gradient(180deg,#fff1f1,#ffdfe0)}
.grid .box:nth-child(7){background:linear-gradient(180deg,#efe8ff,#e3d8ff)}
.pastel-green{background:#cfeede}.pastel-blue{background:#d9ecff}.pastel-yellow{background:#fff2a8}.pastel-gray{background:#ececf2}.pastel-white{background:#fff}.pastel-celeste{background:#dff4fb}.pastel-access{background:#eadfff}
.auth-inline-status{margin-top:14px}

.modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;z-index:2000;padding:18px}
.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.46)}
.modal-dialog{position:relative;z-index:1;width:min(940px,100%);max-height:calc(100vh - 36px);overflow:auto}
.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:10px}
.icon-close-btn{border:none;background:#eef2ef;color:var(--green-dark);width:40px;height:40px;border-radius:999px;font-size:26px;line-height:1;cursor:pointer}
.auth-tabs{display:flex;gap:10px;margin-bottom:12px}
.auth-tab{border:none;border-radius:10px;padding:10px 14px;background:#edf4ef;color:var(--green-dark);font-weight:700;cursor:pointer}
.auth-tab.active{background:var(--green);color:#fff}
.auth-panels{display:grid;grid-template-columns:1fr}
body.modal-open{overflow:hidden}

.auth-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.auth-grid{display:grid;grid-template-columns:1fr;gap:14px;margin-top:10px}
.auth-form{display:grid;gap:10px}
.auth-form h3{margin:0 0 4px}
label{display:grid;gap:6px;font-size:13px;color:var(--text)}
input,select,textarea{width:100%;padding:10px 12px;border:1px solid #c9d6cf;border-radius:10px;background:#fff;font-size:14px}
textarea{min-height:110px;resize:vertical}
.primary-btn,.secondary-btn,.menu-card,.action-btn,.danger-btn{border:none;border-radius:10px;padding:10px 12px;cursor:pointer;font-weight:700}
.primary-btn{background:var(--green);color:#fff}.secondary-btn{background:#edf4ef;color:var(--green-dark)}
.danger-btn{background:#fdecec;color:var(--danger)}
.action-btn{background:#eef6ff;color:#195c9d}
.auth-help{margin-top:10px;color:var(--muted);font-size:12px}.pill{background:#edf7ef;color:var(--green-dark);padding:6px 10px;border-radius:999px;font-size:12px;font-weight:700}
.carousel-section{margin-top:14px;background:var(--green);padding:12px;border-radius:14px}
.carousel{position:relative;overflow:hidden}.carousel-track{display:flex;transition:transform .35s ease}.slide{min-width:100%;padding:8px}.slide-card{height:220px;border-radius:12px;background:rgba(255,255,255,.14);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;overflow:hidden}
.slide-image{width:100%;height:170px;object-fit:cover;display:block}
.slide-caption{width:100%;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;padding:6px}
.carousel-nav{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;border:none;border-radius:999px;background:#fff;cursor:pointer}.carousel-nav.left{left:4px}.carousel-nav.right{right:4px}
.indicators{display:flex;justify-content:center;gap:8px;padding-top:8px}.indicator{width:10px;height:10px;border-radius:999px;background:rgba(255,255,255,.5);border:none}.indicator.active{background:#fff;transform:scale(1.2)}
.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:10px;background:#fff;border-top:1px solid var(--border)}
.nav-btn{border:none;border-radius:12px;padding:12px 8px;background:#f3f5f4;cursor:pointer;font-weight:700}
.module-header-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}.module-title{margin:0}.module-subtitle{margin:4px 0 0;color:var(--muted)}
.menu-grid{display:grid;grid-template-columns:1fr;gap:12px}.menu-card{text-align:left;background:#f6faf7;color:var(--text);border:1px solid var(--border)}
.info-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:10px 0}
.info-box{background:#f8fbf9;border:1px solid var(--border);border-radius:12px;padding:10px}.info-box .small{font-size:12px;color:var(--muted)}
.form-grid{display:grid;grid-template-columns:1fr;gap:12px}.section-title{margin:14px 0 8px}.hint{font-size:12px;color:var(--muted)}
.actions-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:12px}
.matrix-table{border-collapse:collapse;min-width:920px;width:100%;font-size:12px;background:#fff}.matrix-table th,.matrix-table td{border:1px solid #dfe7e2;padding:8px;text-align:center}.matrix-table th:first-child,.matrix-table td:first-child{text-align:left;min-width:240px;font-weight:600}
.file-list{display:grid;gap:8px}.file-item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px;border:1px solid var(--border);border-radius:10px;background:#fbfcfb;flex-wrap:wrap}.file-actions{display:flex;gap:6px;flex-wrap:wrap}
.list-card{border:1px solid var(--border);border-radius:12px;padding:12px;background:#fff;display:grid;gap:10px}.list-header{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}.status-ok{color:var(--ok);font-weight:700}.status-warning{color:var(--warning);font-weight:700}.status-danger{color:var(--danger);font-weight:700}
.search-grid{display:grid;grid-template-columns:1fr;gap:10px}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:12px 0}.stat-card{background:#f7fbf8;border:1px solid var(--border);border-radius:12px;padding:12px}.stat-number{font-size:28px;font-weight:800}
.chart-row{display:grid;gap:10px}.bar{height:16px;border-radius:999px;background:#e6efe9;overflow:hidden}.bar > span{display:block;height:100%;background:var(--green)}
.toast{position:fixed;right:12px;top:12px;background:#193b28;color:#fff;padding:10px 14px;border-radius:10px;box-shadow:0 10px 25px rgba(0,0,0,.15);z-index:9999}
@media(min-width:860px){.grid{grid-template-columns:repeat(4,1fr)}.auth-grid,.form-grid,.search-grid,.menu-grid{grid-template-columns:1fr 1fr}.menu-grid.one-col{grid-template-columns:1fr}}
