:root{--p-bg:#f4f7fb;--p-card:#fff;--p-text:#0a2344;--p-muted:#607089;--p-border:#dbe4ef;--p-accent:#6f42e8;--p-orange:#ff7429;--p-ok:#138a61;--p-warn:#9a6510;--p-danger:#b42318}.portal-shell{background:var(--p-bg);min-height:100vh;color:var(--p-text);padding:34px 0 70px}.portal-wrap{width:min(1180px,calc(100% - 32px));margin:0 auto}.portal-kicker{font-size:.78rem;letter-spacing:.12em;font-weight:800;color:#008d9a}.portal-top{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:22px}.portal-top h1{margin:.35rem 0}.portal-top p{margin:0;color:var(--p-muted)}.portal-top-actions{display:flex;gap:10px;align-items:center}.portal-login{display:grid;place-items:center;padding:42px 0}.portal-login>div{width:min(520px,100%);background:var(--p-card);border:1px solid var(--p-border);border-radius:22px;padding:28px}.portal-form{display:grid;gap:14px}.portal-form label{display:grid;gap:7px;font-weight:700}.portal-form input,.portal-form select,.portal-form textarea,.inline-form input,.inline-form select{width:100%;min-height:44px;border:1px solid #cdd9e7;border-radius:12px;padding:10px 12px;font:inherit;background:#fff;color:var(--p-text)}.portal-form textarea{min-height:100px;resize:vertical}.portal-wa{margin-top:12px}.portal-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.portal-tabs a{padding:10px 13px;border:1px solid var(--p-border);background:#fff;border-radius:999px;text-decoration:none;color:var(--p-text);font-weight:750}.portal-tabs a.active{background:var(--p-text);color:#fff;border-color:var(--p-text)}.portal-card{background:var(--p-card);border:1px solid var(--p-border);border-radius:20px;padding:22px;margin-bottom:18px}.portal-card h2{margin-top:0}.portal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.portal-highlight{border-color:#b9d9ff;background:#f8fbff}.portal-big-date{font-size:1.45rem;font-weight:850;margin:12px 0}.portal-row,.portal-payment,.admin-item{display:flex;justify-content:space-between;gap:18px;align-items:center;border-top:1px solid #e8eef5;padding:14px 0}.portal-row:first-of-type,.admin-item:first-of-type{border-top:0}.portal-row small,.portal-payment span,.admin-item span{display:block;color:var(--p-muted);margin-top:4px}.portal-payment{flex-wrap:wrap}.portal-status{font-weight:850;text-transform:uppercase;font-size:.75rem;padding:6px 9px;border-radius:999px;background:#eef2f7}.portal-status.paid{background:#e4f7ef;color:#087951}.portal-status.overdue{background:#fff1ef;color:#a1261c}.portal-pay-actions{display:flex;gap:14px;align-items:stretch;flex-wrap:wrap;padding:0 0 18px}.portal-bank{border:1px solid var(--p-border);border-radius:14px;padding:12px 14px;display:grid;gap:4px}.portal-bank code{font-size:.95rem}.portal-bank.muted{color:var(--p-muted)}.portal-materials{display:grid;gap:12px}.portal-materials article{display:flex;justify-content:space-between;align-items:center;gap:16px;border:1px solid var(--p-border);border-radius:14px;padding:14px}.portal-materials small{display:block;color:var(--p-muted);margin-top:4px}.portal-alert{padding:13px 15px;border-radius:14px;margin-bottom:14px;border:1px solid #b8d9c8;background:#edf9f2}.portal-alert.error{border-color:#efb7b1;background:#fff1ef;color:#8d1d14}.portal-alert.warning{border-color:#edd6a8;background:#fff8e8;color:#704d0d}.portal-alert.success{border-color:#b8d9c8;background:#edf9f2;color:#0b6b4b}.portal-check{display:flex!important;grid-template-columns:none!important;align-items:flex-start;gap:10px!important;font-weight:600!important}.portal-check input{width:18px!important;height:18px!important;min-height:18px!important;margin-top:2px}.portal-contract{line-height:1.7;border:1px solid var(--p-border);padding:16px;border-radius:14px;background:#fbfcfe}.portal-table-wrap{overflow:auto}.portal-table{width:100%;border-collapse:collapse;min-width:720px}.portal-table th,.portal-table td{padding:11px 10px;border-bottom:1px solid #e8eef5;text-align:left;vertical-align:top}.portal-table th{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--p-muted)}.inline-form{display:flex;gap:8px;align-items:center}.inline-form.wrap{flex-wrap:wrap}.inline-form input,.inline-form select{width:auto;min-width:120px}.admin-actions{display:flex;gap:8px;flex-wrap:wrap}.danger{border-color:#e7b3ad!important;color:var(--p-danger)!important}.admin .portal-card{overflow:hidden}@media(max-width:760px){.portal-wrap{width:min(100% - 20px,1180px)}.portal-top{flex-direction:column}.portal-top-actions{width:100%;flex-wrap:wrap}.portal-grid{grid-template-columns:1fr}.portal-materials article,.portal-row,.admin-item{align-items:flex-start;flex-direction:column}.portal-tabs{overflow-x:auto;flex-wrap:nowrap;padding-bottom:4px}.portal-tabs a{white-space:nowrap}.inline-form{align-items:stretch;flex-direction:column}.inline-form input,.inline-form select{width:100%}}

/* TRADUES Portal 2.3 · password visibility control */
.portal-password-field{display:flex;align-items:center;gap:8px;width:100%}
.portal-password-field>input{flex:1;min-width:0}
.portal-password-toggle{flex:0 0 44px;height:44px;border:1px solid var(--p-border);border-radius:12px;background:#fff;color:var(--p-text);font-size:1.05rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.portal-password-toggle:hover{background:#f5f8fc}
.portal-password-toggle:focus-visible{outline:3px solid rgba(79,70,229,.22);outline-offset:2px}

/* TRADUES Portal 2.3.1 · admin layout visibility fix
   Scope: visual/layout only. No PHP, DB or business logic changes. */
.admin .portal-card{
  overflow:visible;
  min-width:0;
}
.admin .portal-grid{
  grid-template-columns:minmax(320px,.85fr) minmax(0,1.35fr);
  align-items:start;
}
.admin .portal-grid>.portal-card{
  min-width:0;
}
.admin .admin-item{
  flex-wrap:wrap;
  align-items:flex-start;
  min-width:0;
}
.admin .admin-item>.inline-form{
  flex:1 1 100%;
  width:100%;
  flex-wrap:wrap;
  min-width:0;
}
.admin .admin-item>.inline-form input,
.admin .admin-item>.inline-form select{
  flex:1 1 140px;
  width:auto;
  min-width:0;
}
.admin .admin-item>.inline-form .btn{
  flex:0 1 auto;
  min-height:44px;
  white-space:normal;
}

@media(max-width:980px){
  .admin .portal-grid{
    grid-template-columns:1fr;
  }
}

@media(max-width:760px){
  .admin .admin-item>.inline-form{
    display:flex;
    flex-direction:column;
    align-items:stretch;
  }
  .admin .admin-item>.inline-form input,
  .admin .admin-item>.inline-form select,
  .admin .admin-item>.inline-form .btn{
    width:100%;
    flex:1 1 auto;
  }
}

/* TRADUES Portal v2.4 · Academy / contract extensions */
.section-heading-row{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;flex-wrap:wrap}.section-heading-row h2,.section-heading-row h3{margin:0}.section-heading-row p{margin:.3rem 0 0;color:var(--p-muted)}
.group-admin-card{align-items:flex-start}.admin-item-main{display:grid;gap:4px;min-width:0}.admin-actions.wrap{align-items:center}.group-detail-card{margin-top:18px}.portal-muted{color:var(--p-muted);font-size:.92rem}.compact-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.session-detail{display:grid;gap:14px}.attendance-row{padding:10px 0;border-bottom:1px solid var(--p-border)}
.contract-shell{max-width:1000px}.contract-data-form fieldset{border:1px solid var(--p-border);border-radius:14px;padding:14px;margin:0}.contract-data-form legend{font-weight:800;padding:0 6px}.contract-preview-note{border:1px solid #9bd9cf;background:#f0fffb;border-radius:14px;padding:14px;margin-bottom:18px}.portal-contract{line-height:1.65}.portal-contract h2{text-align:center;font-size:1.35rem}.portal-contract h3{margin:24px 0 8px;font-size:1.05rem}.portal-contract p{margin:8px 0}.portal-contract .contract-meta{text-align:center;color:var(--p-muted);font-size:.85rem}.contract-accept-form{margin-top:20px;border-top:1px solid var(--p-border);padding-top:18px}.btn-obligation{font-size:1rem;min-height:52px}.portal-table td small{display:block;color:var(--p-muted);margin-top:4px;white-space:pre-wrap}.portal-alert.warning{border-color:#edd6a8;background:#fff8e8;color:#704d0d}
@media(max-width:760px){.compact-grid{grid-template-columns:1fr}.section-heading-row{align-items:stretch}.group-detail-card .portal-grid{grid-template-columns:1fr}.contract-shell{padding:18px}.portal-contract{font-size:.95rem}}
.contract-order-summary{display:grid;gap:6px;border:2px solid #0a2344;border-radius:14px;padding:14px 16px;background:#f7fbff}.contract-order-summary>strong{font-size:1.05rem}.contract-order-summary span{display:block}.contract-order-summary span strong{font-size:1.05em}

/* =====================================================================
   TRADUES Portal R6 · modern client access + professional Academy Control
   2026-09-29
   ===================================================================== */
.portal-shell{
  --r6-navy:#08254b;
  --r6-blue:#2563eb;
  --r6-cyan:#0891b2;
  --r6-violet:#7c3aed;
  --r6-orange:#f97316;
  --r6-green:#059669;
  --r6-red:#dc2626;
  --r6-amber:#d97706;
  background:
    radial-gradient(circle at 8% 0%,rgba(37,99,235,.09),transparent 30%),
    radial-gradient(circle at 92% 8%,rgba(124,58,237,.08),transparent 28%),
    #f4f7fb;
}
.portal-shell .portal-wrap{width:min(1240px,calc(100% - 36px))}
.portal-shell .portal-card,
.portal-shell .portal-login>div,
.portal-auth-card{
  box-shadow:0 14px 38px rgba(8,37,75,.075);
}
.portal-shell .btn{border-radius:12px;font-weight:800;transition:transform .16s ease,box-shadow .16s ease,background .16s ease}
.portal-shell .btn:hover{transform:translateY(-1px)}
.portal-shell .btn-primary{background:linear-gradient(135deg,var(--r6-violet),var(--r6-orange));border-color:transparent;color:#fff;box-shadow:0 7px 18px rgba(124,58,237,.18)}
.portal-shell .btn-outline{background:#fff;border-color:#ccd9e8;color:var(--r6-navy)}
.portal-shell .btn-wa{background:linear-gradient(135deg,#16a34a,#059669);border-color:transparent;color:#fff}
.portal-shell .btn-danger-soft{background:#fff1f2;border:1px solid #fecdd3;color:#b91c1c}

/* Password-only public access */
.portal-auth-shell{display:grid;align-items:center;padding:52px 0}
.portal-auth-wrap{max-width:1040px}
.portal-auth-card{display:grid;grid-template-columns:minmax(300px,.9fr) minmax(380px,1.1fr);overflow:hidden;background:#fff;border:1px solid var(--p-border);border-radius:28px}
.portal-auth-brand{padding:42px;color:#fff;background:linear-gradient(145deg,#061d3c,#0b3569 64%,#0c5d72)}
.portal-auth-brand .portal-kicker{color:#55e3e6}
.portal-auth-brand h1{font-size:clamp(2rem,4vw,3.25rem);margin:.55rem 0 1rem;color:#fff}
.portal-auth-brand p{color:#d9e8fb;line-height:1.6}
.portal-auth-steps{display:grid;gap:10px;margin-top:28px}
.portal-auth-steps span{display:block;padding:11px 13px;border:1px solid rgba(255,255,255,.15);border-radius:13px;background:rgba(255,255,255,.07);font-weight:700;color:#edf7ff}
.portal-auth-form-panel{padding:42px;display:flex;flex-direction:column;justify-content:center}
.portal-auth-form-panel h2{font-size:1.7rem;margin:0 0 10px}
.portal-password-only-form input[type=password],.portal-password-only-form input[type=text]{min-height:54px;font-size:1.08rem}
.btn-login-main{min-height:52px;font-size:1.02rem}
.portal-login-links{display:flex;justify-content:center;margin:14px 0 4px}
.portal-login-links a,.portal-text-link{font-weight:750;color:#315f9d;text-decoration:none}
.portal-new-client{margin-top:22px;padding:18px;border:1px solid #dce8f4;border-radius:17px;background:#f7fbff}
.portal-new-client strong{font-size:1.05rem}
.portal-new-client p{color:var(--p-muted);line-height:1.55}
.portal-password-toggle{font-size:1.12rem;background:#f9fbfe}
.portal-password-toggle:hover{background:#eef5fc}

/* Color navigation */
.portal-tabs a{box-shadow:0 4px 12px rgba(8,37,75,.035)}
.admin-tabs .tab-today.active{background:#0f766e;border-color:#0f766e}
.admin-tabs .tab-groups.active{background:#1d4ed8;border-color:#1d4ed8}
.admin-tabs .tab-calendar.active{background:#7c3aed;border-color:#7c3aed}
.admin-tabs .tab-students.active{background:#0e7490;border-color:#0e7490}
.admin-tabs .tab-payments.active{background:#047857;border-color:#047857}
.admin-tabs .tab-materials.active{background:#c2410c;border-color:#c2410c}
.client-tabs a:nth-child(1).active{background:#0f766e;border-color:#0f766e}
.client-tabs a:nth-child(2).active{background:#7c3aed;border-color:#7c3aed}
.client-tabs a:nth-child(3).active{background:#047857;border-color:#047857}
.client-tabs a:nth-child(4).active{background:#c2410c;border-color:#c2410c}
.client-tabs a:nth-child(5).active{background:#1d4ed8;border-color:#1d4ed8}
.client-tabs a:nth-child(6).active{background:#0e7490;border-color:#0e7490}
.client-tabs a:nth-child(7).active{background:#334155;border-color:#334155}

/* Mode-separated teacher workspace */
.academy-mode-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:8px 0 18px}
.academy-mode-tabs a{text-decoration:none;text-align:center;padding:15px 14px;border-radius:16px;border:1px solid var(--p-border);background:#fff;color:var(--r6-navy);font-weight:850;box-shadow:0 8px 20px rgba(8,37,75,.045)}
.academy-mode-tabs .mode-presential.active{background:linear-gradient(135deg,#1d4ed8,#2563eb);color:#fff;border-color:transparent}
.academy-mode-tabs .mode-online.active{background:linear-gradient(135deg,#0891b2,#06b6d4);color:#fff;border-color:transparent}
.academy-mode-tabs .mode-individual.active{background:linear-gradient(135deg,#7c3aed,#a855f7);color:#fff;border-color:transparent}
.mode-create-card.mode-presential,.mode-list-card.mode-presential{border-top:4px solid #2563eb}
.mode-create-card.mode-online,.mode-list-card.mode-online{border-top:4px solid #06b6d4}
.mode-create-card.mode-individual,.mode-list-card.mode-individual{border-top:4px solid #8b5cf6}
.group-admin-card{border-radius:16px;padding:15px 0}

/* Teacher payment dashboard */
.payment-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:2px 0 18px}
.payment-summary-grid article{background:#fff;border:1px solid var(--p-border);border-radius:18px;padding:17px 18px;box-shadow:0 9px 24px rgba(8,37,75,.05)}
.payment-summary-grid span{display:block;color:var(--p-muted);font-weight:700}
.payment-summary-grid strong{display:block;font-size:2rem;margin-top:4px;color:var(--r6-amber)}
.payment-summary-grid article.paid strong{color:var(--r6-green)}
.payment-summary-grid article.overdue strong{color:var(--r6-red)}
.payment-pill{display:inline-flex!important;margin:0!important;padding:6px 9px;border-radius:999px;font-size:.76rem;font-weight:850;text-transform:uppercase;background:#fef3c7;color:#92400e}
.payment-pill.paid{background:#dcfce7;color:#166534}
.payment-pill.overdue{background:#fee2e2;color:#991b1b}
.payment-pill.waived,.payment-pill.refunded{background:#e2e8f0;color:#334155}
.payment-row-paid{background:#fbfffd}.payment-row-overdue{background:#fffafa}
.material-publisher{border-top:4px solid var(--r6-orange)}

/* Client onboarding, contract and payment experience */
.onboarding-card{border-top:4px solid var(--r6-cyan);background:linear-gradient(180deg,#fff,#f8fdff)}
.onboarding-card .portal-row>div{flex:1;padding:8px 4px}
.onboarding-card .portal-row strong{color:var(--r6-navy)}
.contract-schedule-preview{display:grid;gap:14px;margin:0 0 20px;padding:18px;border:1px solid #cfe1f5;border-radius:18px;background:linear-gradient(135deg,#f7fbff,#fbf9ff)}
.contract-schedule-preview>div:first-child{display:grid;gap:5px}
.schedule-mini-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.schedule-mini-list span{padding:10px;border-radius:12px;background:#fff;border:1px solid #dbe7f4;font-size:.9rem}
.schedule-confirm{padding:13px!important;border:1px solid #bfdbfe;border-radius:14px;background:#eff6ff}
.client-payment-card{border-top:4px solid var(--r6-green)}
.payment-method-heading{flex:1 1 100%;display:block;color:var(--r6-navy);margin-bottom:2px}
.portal-payment{border-radius:14px;padding:14px;margin-top:10px;background:#fbfcfe;border:1px solid #e4ebf4}
.portal-status.pending{background:#fff7d6;color:#8a5b00}
.portal-status.waived,.portal-status.refunded{background:#e8eef5;color:#415269}

/* More polished forms */
.portal-form input:focus,.portal-form select:focus,.portal-form textarea:focus,.inline-form input:focus,.inline-form select:focus{outline:3px solid rgba(37,99,235,.14);border-color:#7ba7eb;box-shadow:0 0 0 1px rgba(37,99,235,.05)}
.portal-form small{font-weight:550;color:var(--p-muted);line-height:1.45}
.portal-card h2{letter-spacing:-.015em}
.portal-top h1{letter-spacing:-.02em}

@media(max-width:900px){
  .portal-auth-card{grid-template-columns:1fr}
  .portal-auth-brand{padding:30px}.portal-auth-form-panel{padding:30px}
  .payment-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .schedule-mini-list{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:620px){
  .portal-auth-shell{padding:18px 0}.portal-auth-brand,.portal-auth-form-panel{padding:22px}
  .academy-mode-tabs{grid-template-columns:1fr}
  .payment-summary-grid{grid-template-columns:1fr}
  .schedule-mini-list{grid-template-columns:1fr}
}


/* =====================================================================
   TRADUES Portal R7 · client flow / payments / bilingual UX
   2026-09-29
   ===================================================================== */
.portal-contact-actions{display:grid;grid-template-columns:1.15fr .8fr 1fr;gap:9px;margin-top:14px}
.portal-contact-actions .btn{min-width:0;white-space:normal;text-align:center;display:flex;align-items:center;justify-content:center}
.portal-back-public{display:inline-flex;margin-top:16px;color:#315f9d;font-weight:800;text-decoration:none}
.portal-top-actions form{margin:0}
.client-installment{border:1px solid #dbe5f1;border-radius:20px;background:linear-gradient(180deg,#fff,#fbfdff);padding:18px;margin:16px 0;box-shadow:0 10px 26px rgba(8,37,75,.045)}
.client-installment.paid{border-color:#bde6d5;background:linear-gradient(180deg,#fff,#f6fffb)}
.client-installment.overdue{border-color:#fecaca;background:linear-gradient(180deg,#fff,#fff8f8)}
.client-installment-main{display:flex;justify-content:space-between;align-items:flex-start;gap:18px}
.client-installment-main>div:first-child{display:grid;gap:6px}.client-installment-main strong{font-size:1.08rem}
.client-installment-main small{color:var(--p-muted)}
.client-installment-amount{text-align:right;display:grid;gap:6px;justify-items:end}.client-installment-amount>strong{font-size:1.35rem;color:var(--r6-navy)}
.portal-eservice-box{margin-top:16px;border:1px solid #cfe0f2;border-radius:18px;background:linear-gradient(135deg,#f8fbff,#fbf9ff);padding:16px;display:grid;gap:14px}
.portal-eservice-copy{display:grid;gap:5px}.portal-eservice-copy strong{font-size:1.08rem}.portal-eservice-copy span{color:var(--p-muted);line-height:1.5}
.portal-eservice-methods{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;width:100%;min-width:0}
.portal-eservice-methods span{min-width:0;min-height:48px;border:1px solid #d5e0ed;border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center;text-align:center;padding:8px;font-weight:900;font-size:.86rem;line-height:1.15;overflow-wrap:anywhere;color:#0a2344}
.portal-eservice-methods .method-blik{color:#0b0b0b}.portal-eservice-methods .method-card{color:#173e86}.portal-eservice-methods .method-bank{color:#0b5b91}.portal-eservice-methods .method-p24{color:#b42318}
.btn-eservice-pay{width:100%;min-height:50px;display:flex;align-items:center;justify-content:center;text-align:center;white-space:normal}
.btn-eservice-pay[disabled]{opacity:.62;cursor:not-allowed;transform:none!important;box-shadow:none}
.client-bank{margin-top:12px;max-width:100%;overflow:hidden}.client-bank code{white-space:normal;overflow-wrap:anywhere}
.portal-card .section-heading-row>.btn{flex:0 0 auto}
.portal-auth-form-panel .portal-back-public{align-self:flex-start}
@media(max-width:820px){.portal-eservice-methods{grid-template-columns:repeat(3,minmax(0,1fr))}.portal-contact-actions{grid-template-columns:1fr}.client-installment-main{flex-direction:column}.client-installment-amount{text-align:left;justify-items:start}}
@media(max-width:520px){.portal-eservice-methods{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-eservice-methods span:last-child{grid-column:1/-1}.portal-shell .portal-card{padding:17px}.portal-top-actions{display:grid;grid-template-columns:1fr 1fr}.portal-top-actions>.btn:first-child{grid-column:1/-1}.portal-top-actions form,.portal-top-actions form .btn{width:100%}}
