/* Energy Sharing – Frontend CSS */
:root{
    --tes-green:#1a6b3c;--tes-green-d:#135230;--tes-green-l:#2e9e61;
    --tes-bg:#f0faf4;--tes-border:#c8ddd1;--tes-text:#1a1a1a;
    --tes-muted:#5a6a62;--tes-error:#c0392b;--tes-success:#27ae60;
    --tes-warn:#e67e22;--tes-r:8px;--tes-sh:0 2px 12px rgba(0,0,0,.08);
}
.tes-wrap{max-width:780px;margin:2rem auto;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;color:var(--tes-text);line-height:1.6}
/* Progress */
.tes-progress{display:flex;align-items:center;gap:.25rem;margin-bottom:2rem;flex-wrap:wrap}
.tes-progress-label{width:100%;font-size:.85rem;color:var(--tes-muted);margin-bottom:.5rem}
.tes-progress-step{flex:1;min-width:2rem;height:6px;background:var(--tes-border);border-radius:3px;transition:background .3s}
.tes-progress-step.done{background:var(--tes-success)}
.tes-progress-step.active{background:var(--tes-green-l)}
/* Form */
.tes-form{background:#fff;border:1px solid var(--tes-border);border-radius:var(--tes-r);box-shadow:var(--tes-sh);padding:2rem}
.tes-form h2{margin-top:0;color:var(--tes-green);font-size:1.4rem;border-bottom:2px solid var(--tes-bg);padding-bottom:.6rem;margin-bottom:1.5rem}
.tes-step{display:none}.tes-step.active{display:block}
/* Fields */
.tes-field{margin-bottom:1.25rem}
.tes-field label{display:block;font-weight:600;font-size:.9rem;margin-bottom:.35rem}
.tes-required{color:var(--tes-error);margin-left:2px}
.tes-field input[type=text],.tes-field input[type=email],.tes-field input[type=tel],.tes-field select,.tes-field textarea{width:100%;padding:.6rem .85rem;border:1px solid var(--tes-border);border-radius:5px;font-size:.95rem;box-sizing:border-box;background:#fff;color:var(--tes-text);transition:border-color .2s,box-shadow .2s}
.tes-field input:focus,.tes-field select:focus,.tes-field textarea:focus{outline:none;border-color:var(--tes-green-l);box-shadow:0 0 0 3px rgba(46,158,97,.15)}
.tes-field input.tes-invalid,.tes-field select.tes-invalid{border-color:var(--tes-error)}
.tes-field .tes-error-msg{color:var(--tes-error);font-size:.82rem;margin-top:.25rem;display:none}
.tes-field.has-error .tes-error-msg{display:block}
/* Checkboxes */
.tes-checkbox{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:1rem;padding:.85rem 1rem;background:var(--tes-bg);border:1px solid var(--tes-border);border-radius:5px}
.tes-checkbox input[type=checkbox]{margin-top:3px;accent-color:var(--tes-green-l);flex-shrink:0}
.tes-checkbox label{font-weight:400;font-size:.9rem;cursor:pointer}
/* Notice */
.tes-notice{padding:1rem 1.25rem;border-radius:5px;margin-bottom:1.25rem;font-size:.92rem;line-height:1.5}
.tes-notice.info{background:#e8f4fd;border-left:4px solid #3498db;color:#1a3a5c}
.tes-notice.warning{background:#fef9e7;border-left:4px solid var(--tes-warn);color:#7d5a00}
.tes-notice.success{background:#eafaf1;border-left:4px solid var(--tes-success);color:#1a4a2e}
.tes-notice.error{background:#fdecea;border-left:4px solid var(--tes-error);color:#5c1a1a}
/* Nav */
.tes-nav{display:flex;justify-content:space-between;margin-top:1.75rem;gap:1rem}
.tes-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.65rem 1.5rem;border-radius:5px;font-size:.95rem;font-weight:600;cursor:pointer;border:none;transition:background .2s,transform .1s;text-decoration:none;line-height:1}
.tes-btn:active{transform:scale(.98)}
.tes-btn-primary{background:var(--tes-green);color:#fff}
.tes-btn-primary:hover{background:var(--tes-green-d);color:#fff}
.tes-btn-secondary{background:var(--tes-bg);color:var(--tes-green);border:1px solid var(--tes-border)}
.tes-btn-secondary:hover{background:var(--tes-border)}
.tes-btn:disabled{opacity:.6;cursor:not-allowed}
/* Summary */
.tes-summary table{width:100%;border-collapse:collapse}
.tes-summary th,.tes-summary td{padding:.55rem .75rem;border-bottom:1px solid var(--tes-border);font-size:.9rem;text-align:left}
.tes-summary th{color:var(--tes-muted);font-weight:500;width:40%}
/* Portal */
.tes-portal-tabs{display:flex;gap:.25rem;border-bottom:2px solid var(--tes-border);margin-bottom:1.5rem;flex-wrap:wrap}
.tes-portal-tab{padding:.55rem 1.25rem;border-radius:5px 5px 0 0;cursor:pointer;font-weight:500;color:var(--tes-muted);border:1px solid transparent;border-bottom:none;text-decoration:none;font-size:.9rem}
.tes-portal-tab.active{background:#fff;color:var(--tes-green);border-color:var(--tes-border);margin-bottom:-2px}
.tes-portal-panel{display:none}
.tes-portal-panel.active{display:block}
.tes-data-card{background:var(--tes-bg);border:1px solid var(--tes-border);border-radius:var(--tes-r);padding:1.25rem;margin-bottom:1rem}
.tes-data-card h3{margin:0 0 .75rem;color:var(--tes-green);font-size:1rem}
.tes-kv{display:grid;grid-template-columns:1fr 1fr;gap:.4rem 1.5rem}
.tes-kv dt{color:var(--tes-muted);font-size:.85rem}
.tes-kv dd{font-weight:600;font-size:.95rem;margin:0}
.tes-status-badge{display:inline-block;padding:.2rem .75rem;border-radius:12px;font-size:.8rem;font-weight:600;background:var(--tes-border);color:var(--tes-text)}
.tes-status-badge.active{background:#d4edda;color:#155724}
.tes-status-badge.pending{background:#fff3cd;color:#856404}
.tes-status-badge.inactive,.tes-status-badge.rejected{background:#f8d7da;color:#721c24}
/* ── v2.0 additions ──────────────────────────────────────────── */
/* Field rows */
.tes-field-row{display:flex;gap:1rem;flex-wrap:wrap}
.tes-field-row .tes-field{flex:1;min-width:140px}
/* Radio group */
.tes-radio-group{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.4rem}
.tes-radio-label{display:flex;align-items:center;gap:.4rem;font-weight:400;font-size:.9rem;cursor:pointer;
    padding:.45rem .85rem;border:1px solid var(--tes-border);border-radius:5px;background:#fff;transition:all .2s}
.tes-radio-label:has(input:checked){background:var(--tes-green);color:#fff;border-color:var(--tes-green)}
/* Community selection */
.tes-community-option{display:flex;align-items:center;gap:.6rem;padding:.75rem 1rem;
    background:var(--tes-bg);border:1px solid var(--tes-border);border-radius:6px;
    margin-bottom:.5rem;cursor:pointer;transition:border-color .2s;font-weight:400}
.tes-community-option:has(input:checked){border-color:var(--tes-green);background:#eafaf1}
.tes-community-option input{accent-color:var(--tes-green);flex-shrink:0}
.tes-community-name{font-weight:600}
.tes-community-id{color:var(--tes-muted);font-size:.85rem}
/* Additional meter block */
.tes-additional-meter{background:var(--tes-bg);border:1px solid var(--tes-border);border-radius:6px;padding:1rem;margin-bottom:.75rem}
/* Admin stat cards */
.tes-stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:2rem}
.tes-stat-card{background:#fff;border:1px solid var(--tes-border);border-radius:var(--tes-r);padding:1.25rem;text-align:center}
.tes-stat-value{display:block;font-size:2rem;font-weight:700;color:var(--tes-green)}
.tes-stat-label{display:block;font-size:.85rem;color:var(--tes-muted);margin-top:.25rem}
.tes-stat-warn .tes-stat-value{color:var(--tes-warn)}

@media(max-width:600px){
    .tes-form{padding:1.25rem}
    .tes-nav{flex-direction:column}
    .tes-btn{justify-content:center}
    .tes-kv{grid-template-columns:1fr}
}
/* Step subtitle */
.tes-step-subtitle{color:var(--tes-muted);font-size:.95rem;margin:-1rem 0 1.5rem;line-height:1.5}
/* Field hint */
.tes-field-hint{color:var(--tes-muted);font-size:.82rem;margin-top:.25rem}
/* Tooltip icon */
.tes-tooltip-icon{
    display:inline-flex;align-items:center;justify-content:center;
    width:1.1em;height:1.1em;border-radius:50%;
    background:var(--tes-green-l);color:#fff;font-size:.75rem;font-style:normal;
    cursor:pointer;margin-left:.35rem;vertical-align:middle;
    position:relative;font-weight:700;flex-shrink:0;
}
.tes-tooltip-icon:focus{outline:2px solid var(--tes-green-l);outline-offset:2px}
/* Tooltip popup */
.tes-tooltip-icon::after{
    content:attr(data-tooltip);
    position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);
    background:#1a1a1a;color:#fff;font-size:.82rem;font-weight:400;
    padding:.6rem .85rem;border-radius:6px;line-height:1.5;
    width:280px;white-space:normal;text-align:left;
    opacity:0;pointer-events:none;transition:opacity .2s;
    z-index:100;box-shadow:0 4px 12px rgba(0,0,0,.2);
}
.tes-tooltip-icon::before{
    content:'';position:absolute;bottom:calc(100% + 2px);left:50%;
    transform:translateX(-50%);border:5px solid transparent;
    border-top-color:#1a1a1a;opacity:0;pointer-events:none;transition:opacity .2s;z-index:100;
}
.tes-tooltip-icon:hover::after,.tes-tooltip-icon:hover::before,
.tes-tooltip-icon:focus::after,.tes-tooltip-icon:focus::before{opacity:1}
@media(max-width:600px){
    .tes-tooltip-icon::after{left:0;transform:none;width:240px}
    .tes-tooltip-icon::before{left:12px;transform:none}
}
