:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#000;background:#fdfeff;--brand-blue: #000000;--brand-blue-deep: #000000;--brand-blue-soft: #222222}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{border:0;border-radius:10px;padding:10px 14px;background:#0c6b52;color:#fff;cursor:pointer;font-weight:650}button:hover{filter:brightness(1.05)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:#e7eef4;color:#183241;margin-top:10px}button.danger{background:#b42318;margin-left:6px}.link-button{background:transparent;color:#0c6b52;padding:6px}input,select{width:100%;border:1px solid #d7e1ea;border-radius:10px;padding:10px;margin-top:6px;background:#fff}label{display:block;font-weight:650;font-size:13px;color:#405363;margin-bottom:11px}.app-layout{display:flex;min-height:100vh;background:#f4f4f4}.sidebar{width:285px;background:#000;color:#fff;padding:22px 18px;position:sticky;top:0;height:100vh;overflow-y:auto;box-shadow:8px 0 24px #00000024}.brand{display:flex;gap:12px;align-items:center;margin-bottom:24px;padding:4px 6px 18px;border-bottom:1px solid rgba(255,255,255,.14)}.logo{background:#fff;color:#000;width:52px;height:52px;border-radius:16px;display:grid;place-items:center;font-weight:900;box-shadow:0 10px 20px #0000002e}.brand h2{margin:0;font-size:20px}.brand p{margin:2px 0 0;color:#9bb3c4;font-size:12px}nav{display:grid;gap:6px}nav a{color:#dcebf4;text-decoration:none;padding:10px 12px;border-radius:12px;border:1px solid transparent;transition:background .16s ease,border-color .16s ease,transform .16s ease}nav a.active{background:#222;border-color:#ffffff38;color:#fff;box-shadow:inset 3px 0 #6af8d9}nav a:hover{background:#4fd89f;color:#fff;transform:translate(2px)}.user-box{margin-top:24px;padding:14px;background:#111;border:1px solid #2b2b2b;border-radius:16px}.user-box p{margin:0;font-weight:800}.user-box small{color:#aabdc9}.main-content{flex:1;padding:30px;max-width:1440px}.page-header{margin-bottom:22px}.page-header h1{margin:0;font-size:30px}.page-header p{margin:6px 0 0;color:#5c6f7d}.panel{background:#fffffff5;border:1px solid #e3ebf2;border-radius:16px;padding:20px;box-shadow:0 12px 30px #1b364c12;margin-bottom:18px}.panel h3{margin-top:0}.grid{display:grid;gap:16px}.cards{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin-bottom:18px}.cards.small{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.metric-card{background:#fff;border:1px solid #e3ebf2;border-radius:18px;padding:18px;box-shadow:0 10px 26px #1b364c0f}.metric-card span{color:#657686;font-size:13px;display:block}.metric-card strong{display:block;margin-top:6px;font-size:24px;color:#0d2130}.metric-card small{color:#657686}.two-col{display:grid;grid-template-columns:minmax(320px,460px) 1fr;gap:18px;align-items:start}.button-row,.inline-form{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.inline-form input[type=file]{max-width:420px}.data-table{width:100%;border-collapse:collapse;font-size:14px}.data-table th,.data-table td{border-bottom:1px solid #edf2f7;text-align:left;padding:10px;vertical-align:top}.data-table th{background:#f8fbfd;color:#405363}.data-table td input{margin:0;min-width:100px}.data-table td.status-cell{font-weight:800}.data-table td.status-pass{background:#dcfae6;color:#067647}.data-table td.status-fail{background:#fee4e2;color:#b42318}.notice{padding:16px;background:#fff8e5;border:1px solid #ffe7a6;border-radius:14px}.success{padding:12px;background:#e8fff5;color:#075c45;border-radius:12px}.error{padding:12px;background:#ffecec;color:#9f1c1c;border-radius:12px}.muted{color:#667887}.chart-panel{height:auto}.auth-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(106deg,#000000 0 34%,transparent 34%),linear-gradient(106deg,transparent 0 62%,#eef3f7 62%),#fff}.auth-shell{width:min(1040px,100%);min-height:620px;display:grid;grid-template-columns:1.04fr .96fr;border-radius:16px;background:#000;box-shadow:0 20px 42px #0512246b;overflow:hidden}.auth-photo-panel{min-height:620px;display:grid;place-items:center;padding:44px;background:linear-gradient(#0000009e,#0000009e),url(/login-trigeneration.jpg) center/cover no-repeat}.auth-photo-copy{max-width:390px;color:#fff;text-align:center;text-shadow:0 2px 12px rgba(0,0,0,.28)}.auth-photo-copy h2{margin:0;font-size:28px;line-height:1.24}.auth-photo-copy p{margin:16px 0 0;font-weight:650}.auth-form-panel{display:grid;place-items:center;padding:42px}.auth-card{width:min(340px,100%);color:#fff}.auth-card h1{margin:0 0 8px;text-align:center;font-family:Georgia,Times New Roman,serif;font-size:30px}.auth-card p{margin:0 0 28px;color:#dbe8f5;text-align:center;font-size:13px}.auth-card label{color:#fff;font-weight:500;margin-bottom:18px}.auth-card input{border:0;border-bottom:1px solid rgba(255,255,255,.82);border-radius:0;color:#fff;background:transparent;padding:10px 0}.auth-card input:focus{outline:0;border-color:#fff}.auth-card .error{margin-bottom:14px}.auth-submit{width:100%;margin-top:18px;border-radius:999px;background:#fff;color:#000;box-shadow:0 10px 18px #0000002e}.admin-login-toggle{position:fixed;top:22px;right:22px;z-index:2;border-radius:999px;background:#000;color:#fff}.auth-card .link-button{width:100%;margin-top:12px;color:#fff}.auth-divider{display:flex;align-items:center;gap:12px;color:#dbe8f5;font-size:13px;margin:14px 0}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:#ffffff61}.google-login-button{display:flex;justify-content:center;min-height:44px}.eq-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.equations p{padding:10px 12px;background:#f7fafc;border-radius:10px}@media (max-width: 900px){.app-layout{display:block}.sidebar{position:relative;width:100%;height:auto}.two-col{grid-template-columns:1fr}.auth-page{padding:16px;background:#000}.auth-shell{grid-template-columns:1fr;min-height:auto}.auth-photo-panel{min-height:260px;padding:28px}.auth-form-panel{padding:30px 22px}.admin-login-toggle{top:14px;right:14px}}.wide-left{grid-template-columns:1.2fr 1fr}.data-table input{min-width:90px}.panel.chart-panel{min-height:360px}.metric-card:nth-child(1){border-top:4px solid #0b74b8}.metric-card:nth-child(2){border-top:4px solid #14a879}.metric-card:nth-child(3){border-top:4px solid #f79009}.metric-card:nth-child(4){border-top:4px solid #6941c6}.metric-card:nth-child(5){border-top:4px solid #b42318}.metric-card:nth-child(6){border-top:4px solid #0c6b52}.configuration-panel{display:grid;gap:16px}.configuration-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.configuration-header h3{margin:0}.configuration-header span{color:#657686;font-size:13px;font-weight:700}.configuration-component-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}.configuration-component{min-height:112px;display:grid;grid-template-rows:auto 1fr auto;gap:8px;padding:14px;border:1px solid #e3ebf2;border-radius:8px;background:#f8fbfd}.configuration-component strong{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#0c6b52;color:#fff;font-size:14px}.configuration-component span{color:#22313f;font-size:13px;font-weight:700;line-height:1.3}.configuration-component small{color:#657686;font-weight:650}.configuration-image{width:100%;max-height:720px;object-fit:contain;border:1px solid #d7e1ea;border-radius:8px;background:#fff}@media (max-width: 1100px){.wide-left{grid-template-columns:1fr}}.sidebar .brand h2{font-size:15px;line-height:1.25}.form-grid,.cluster-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.cluster-table input,.data-table input{width:100%;min-width:90px}.button-link{display:inline-block;padding:10px 14px;background:#0c6b52;color:#fff;border-radius:10px;text-decoration:none}.excel-upload-panel{min-height:300px}.excel-box{margin-top:18px;padding:18px;border:2px dashed #cbd5e1;border-radius:16px;background:#f8fafc;display:grid;gap:14px}.selected-file-box{padding:12px 14px;background:#fff;border:1px solid #dbe3eb;border-radius:12px;display:flex;justify-content:space-between;gap:12px;font-size:14px}.file-select-btn{display:inline-block;text-align:center;background:#0f5132;color:#fff;padding:10px 16px;border-radius:10px;cursor:pointer;font-weight:600}.file-select-btn:hover{background:#0b3d26}.mini-summary{margin-top:20px}.monthly-profile-header{justify-content:space-between;margin-bottom:12px}.monthly-profile-header h3{margin:0}.table-scroll{overflow-x:auto}.monthly-input-table th,.monthly-input-table td{min-width:140px}.monthly-input-table th:first-child,.monthly-input-table td:first-child{min-width:90px;font-weight:650}.month-factor-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:10px;margin-bottom:14px}.cluster-actions{min-width:170px}.dispatch-upload-label{color:#405363;font-size:12px;margin-top:10px;min-width:220px}.dispatch-upload-label input{font-size:12px;min-width:220px}.dispatch-chart-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px}.dispatch-chart{margin-bottom:0}.dispatch-loading{min-height:300px;display:grid;place-items:center;align-content:center;gap:14px;color:#667887}.loading-spinner{width:46px;height:46px;border:4px solid #dbe7ef;border-top-color:#0c6b52;border-radius:50%;animation:spin .9s linear infinite}.dispatch-loading p{margin:0;font-size:14px;font-weight:650}@keyframes spin{to{transform:rotate(360deg)}}
