: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{width:54px;height:54px;display:grid;place-items:center;flex:0 0 auto;border-radius:14px;overflow:hidden;background:transparent;box-shadow:0 10px 20px #0000002e}.logo img{width:100%;height:100%;display:block;object-fit:contain}.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}.contact-us-toggle{position:fixed;right:22px;bottom:22px;z-index:2;border-radius:999px;border:1px solid rgba(255,255,255,.34);background:#000;color:#fff;box-shadow:0 12px 24px #00000038;transition:transform .16s ease,background .16s ease,box-shadow .16s ease,border-color .16s ease}.contact-us-toggle:hover{filter:none;transform:translateY(-3px);border-color:#a7f3d0e6;background:#13a37b;box-shadow:0 16px 30px #0c6b5257}.contact-us-toggle:focus-visible{outline:3px solid rgba(167,243,208,.9);outline-offset:3px}.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}.contact-page{min-height:100vh;background:#f4f4f4;color:#111827}.contact-back-button{position:fixed;top:22px;left:22px;z-index:3;display:inline-flex;align-items:center;gap:8px;border-radius:999px;background:#000000db;color:#fff}.contact-hero{min-height:46vh;display:grid;align-items:end;padding:86px 7vw 54px;background:linear-gradient(90deg,#000000d1,#00000075,#0000001f),url(/login-trigeneration.jpg) center/cover no-repeat;color:#fff}.contact-copy{max-width:760px}.contact-copy p{margin:0 0 10px;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:0;color:#a7f3d0}.contact-copy h1{margin:0;font-size:58px;line-height:1;letter-spacing:0}.contact-copy span{display:block;max-width:620px;margin-top:18px;color:#eef7f2;font-size:17px;line-height:1.6}.contact-content{width:min(1120px,calc(100% - 32px));margin:-34px auto 0;display:grid;grid-template-columns:minmax(320px,1fr) minmax(280px,.8fr);gap:18px;align-items:stretch;padding-bottom:34px}.contact-content-wide{grid-template-columns:1fr}.app-contact-content{width:100%;margin:0;padding-bottom:0}.contact-info-panel{border:1px solid #e3ebf2;border-radius:8px;background:#fff;box-shadow:0 16px 34px #1b364c1f}.contact-info-panel{padding:24px}.contact-info-panel h2{margin:0 0 18px;font-size:24px}.contact-group-panel h2{color:#1f7a2f;font-size:32px;text-align:center}.group-member-grid,.supervisor-grid{display:grid;gap:16px}.group-member-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.supervisor-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:18px}.group-card{min-height:238px;display:grid;justify-items:center;align-content:start;gap:10px;padding:18px 14px;border:2px solid #111111;border-radius:8px;background:#fff;text-align:center}.group-avatar{width:126px;aspect-ratio:1.45;display:grid;place-items:center;position:relative;overflow:hidden;border-radius:999px;background:linear-gradient(135deg,#0c6b5224,#ffffffe6),#eef7f2;color:#0c6b52;font-size:30px;font-weight:900}.group-avatar img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;z-index:1}.group-avatar span{position:relative;z-index:0}.supervisor-avatar{background:linear-gradient(135deg,#00000014,#ffffffe6),#f3f4f6;color:#111}.group-card h3{margin:4px 0 0;font-size:20px;line-height:1.2}.group-card p{margin:0;color:#111;font-size:15px}.group-card small{display:block;color:#26323f;font-size:14px;line-height:1.35}.group-card a{display:inline-flex;align-items:center;justify-content:center;gap:6px;max-width:100%;margin-top:4px;padding:8px 10px;border-radius:999px;background:#e8fff5;color:#0c6b52;font-size:12px;font-weight:750;text-decoration:none;overflow-wrap:anywhere}.supervisor-card{min-height:226px}.contact-list{display:grid;gap:12px}.contact-card{display:flex;align-items:center;gap:14px;min-height:82px;padding:14px;border:1px solid #e3ebf2;border-radius:8px;color:#12202c;text-decoration:none;background:#fbfdff;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.contact-card:hover{transform:translateY(-2px);border-color:#0c6b52;box-shadow:0 10px 22px #0c6b521f}.contact-card>span{width:44px;height:44px;display:grid;place-items:center;flex:0 0 auto;border-radius:50%;background:#e8fff5;color:#0c6b52}.contact-card strong,.contact-card small{display:block}.contact-card strong{font-size:16px}.contact-card small{margin-top:4px;color:#546879;overflow-wrap:anywhere}.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:sticky;top:0;z-index:20;width:100%;height:auto;padding:12px;overflow:hidden}.sidebar .brand{margin-bottom:10px;padding:0 4px 10px}.sidebar .logo{width:42px;height:42px;border-radius:10px;font-size:13px}.sidebar nav{display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;padding:2px 2px 8px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.sidebar nav a{flex:0 0 auto;white-space:nowrap;border-radius:999px;padding:9px 12px;scroll-snap-align:start}.sidebar nav a.active{box-shadow:inset 0 -3px #6af8d9}.sidebar nav a:hover{transform:none}.user-box{display:none}.main-content{padding:18px 12px}.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}.contact-us-toggle{right:14px;bottom:14px}.contact-back-button{top:14px;left:14px}.contact-hero{min-height:44vh;padding:86px 20px 44px}.contact-copy h1{font-size:42px}.contact-copy span{font-size:15px}.contact-content{grid-template-columns:1fr;width:calc(100% - 24px);margin-top:-24px}.contact-info-panel{padding:18px}.group-member-grid,.supervisor-grid{grid-template-columns:1fr}.contact-group-panel h2{font-size:28px}}.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)}}
