/* Student portal + admin */
[hidden]{display:none !important}
.portal{background:var(--paper)}
.p-main{padding:2.5rem 0 4rem;min-height:70vh}
.p-head-actions{display:flex;gap:1rem;align-items:center}
.p-link{background:none;border:0;color:inherit;font:inherit;font-size:.95rem;cursor:pointer;text-decoration:underline;text-underline-offset:3px;padding:0}
.site-head .p-link{color:var(--paper);opacity:.9}
.p-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:1.6rem}
.p-narrow{max-width:30rem;margin:2rem auto}
.p-card h1{font-size:1.9rem;margin-bottom:.6rem}
.p-card h2{font-size:1.4rem;margin-bottom:.8rem}
.p-sub{font-family:var(--sans);font-size:1rem;font-weight:600;margin:1.2rem 0 .6rem}
.p-muted{color:var(--muted);font-size:.95rem}
.p-small{font-size:.85rem;color:var(--muted);margin-top:.6rem}
.p-form{display:flex;flex-direction:column;gap:.55rem;margin-top:1rem}
.p-form label{font-weight:600;font-size:.95rem;margin-top:.4rem}
.p-form input,.p-form select,.p-form textarea,.p-filters input,.p-filters select{font:inherit;font-size:1rem;padding:.65rem .8rem;border:1px solid #c9ccd6;border-radius:10px;background:#fff;color:var(--ink);width:100%}
.p-form textarea{resize:vertical}
.p-form .btn{margin-top:.6rem}
.p-check{display:flex;gap:.5rem;align-items:center;font-weight:400 !important}
.p-check input{width:auto}
.p-msg{margin-top:1rem;padding:.8rem 1rem;border-radius:10px;background:#EEF0F4;font-size:.95rem}
.p-msg-ok{background:#E8F5EC;color:#0f5132}
.p-msg-err{background:#FDECEA;color:#8a1c12}
.p-welcome{margin-bottom:1.5rem}
.p-welcome h1{font-size:clamp(2rem,4vw,2.6rem)}
.p-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:1.2rem}
.p-join{background:var(--pond);color:var(--paper);border-color:var(--pond)}
.p-join .p-muted{color:#D5DCEB}
.p-big{display:block;text-align:center;font-size:1.1rem;padding:1rem;margin:1rem 0}
.p-note{background:rgba(255,255,255,.1);border-radius:10px;padding:.7rem .9rem;margin-top:.6rem}
.p-warn{background:#FBEBD3;color:#5c3b00;border-radius:10px;padding:.8rem 1rem}
.p-day{font-weight:600;margin-top:.2rem}
.p-time{font-family:var(--serif);font-size:1.35rem;color:var(--pond)}
.p-pay{display:flex;flex-direction:column;gap:.5rem}
.p-pay .btn{text-align:center;font-size:.95rem;padding:.6rem 1rem}
.p-posts{margin-top:2.5rem}
.p-posts h2{font-size:1.6rem;margin:1.5rem 0 .8rem}
.p-post{background:#fff;border:1px solid var(--line);border-radius:14px;padding:1rem 1.2rem;margin-bottom:.7rem}
.p-post summary{cursor:pointer;font-weight:600;font-size:1.05rem}
.p-date{color:var(--muted);font-weight:400;font-size:.85rem;margin-right:.4rem}
.p-body{margin-top:.8rem}
.p-body p{margin-bottom:.8rem;max-width:65ch}
/* admin */
.p-tabs{display:flex;gap:.4rem;margin-bottom:1.6rem;border-bottom:1px solid var(--line);overflow-x:auto}
.p-tab{background:none;border:0;font:inherit;font-weight:600;padding:.7rem 1rem;color:var(--muted);cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap}
.p-tab.is-on{color:var(--pond);border-bottom-color:var(--turmeric)}
.p-tabpane h1{font-size:1.8rem}
.p-row-between{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.p-filters{display:grid;grid-template-columns:2fr 1fr 1fr;gap:.6rem;margin-bottom:1rem}
.p-list{display:flex;flex-direction:column;gap:.5rem}
.p-item{display:flex;justify-content:space-between;align-items:center;gap:1rem;text-align:left;background:#fff;border:1px solid var(--line);border-radius:12px;padding:.85rem 1rem;font:inherit;color:inherit;cursor:pointer;width:100%}
.p-item:hover{border-color:var(--pond-2)}
.p-right{display:flex;flex-direction:column;align-items:flex-end;gap:.3rem;flex:none}
.p-tag{font-size:.8rem;background:#EEF0F4;border-radius:999px;padding:.1rem .6rem}
.p-status{font-size:.8rem;font-weight:600;border-radius:999px;padding:.1rem .6rem}
.p-on{background:#E8F5EC;color:#0f5132}
.p-warn.p-status,.p-status.p-warn{background:#FBEBD3;color:#5c3b00;padding:.1rem .6rem}
.p-off{background:#FDECEA;color:#8a1c12}
.p-dlg{margin:auto;border:0;border-radius:18px;padding:1.6rem;width:min(34rem,94vw);max-height:92vh}
.p-dlg::backdrop{background:rgba(18,28,53,.55)}
.p-dlg-sm{width:min(26rem,94vw)}
.p-dlg h2{font-size:1.5rem}
.p-inline{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.p-inline input{flex:1;min-width:10rem}
.p-chip{background:#EEF0F4;border:0;border-radius:999px;padding:.45rem .8rem;font:inherit;font-size:.85rem;cursor:pointer}
.btn-ghost-dark{border:2px solid var(--line);background:#fff;color:var(--ink)}
.p-danger{color:#b3261e}
.p-btn-danger{background:#b3261e;color:#fff}
/* payments system */
.p-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:.8rem;margin-bottom:2rem}
.p-stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:1rem 1.1rem;text-align:left;font:inherit;color:inherit;display:flex;flex-direction:column;gap:.2rem}
button.p-stat{cursor:pointer}
button.p-stat:hover{border-color:var(--pond-2)}
.p-stat b{font-family:var(--serif);font-size:1.9rem;font-weight:400;color:var(--pond);line-height:1.1}
.p-stat span{font-size:.9rem;color:var(--muted)}
.p-stat-on{border-left:5px solid #2e8b57}
.p-stat-warn{border-left:5px solid #e0a020}
.p-stat-off{border-left:5px solid #c0392b}
.p-cols{display:grid;grid-template-columns:1fr 1fr;gap:1.6rem}
.p-cols h2{font-size:1.4rem;margin-bottom:.5rem}
.p-cols .p-muted{margin-bottom:.6rem}
.p-item-static{cursor:default}
.p-item-static:hover{border-color:var(--line)}
.p-item-sm{padding:.6rem .9rem;font-size:.95rem}
.p-actions{display:flex;gap:.35rem;flex-wrap:wrap;justify-content:flex-end}
.p-chips{flex-direction:column;align-items:flex-end;flex:0 1 auto;max-width:55%}
.p-chips .p-status{text-align:right}
.p-chip-gold{background:var(--turmeric);color:var(--ink);font-weight:600}
.p-dlg-lg{width:min(42rem,96vw)}
.p-x{background:none;border:0;font-size:1.8rem;line-height:1;cursor:pointer;color:var(--muted);padding:0 .2rem}
.p-hr{border:0;border-top:1px solid var(--line);margin:1.4rem 0 1rem}
.p-h3{font-family:var(--sans);font-size:1.05rem;font-weight:600;margin:.8rem 0 .5rem}
.p-cur{width:auto !important;flex:none}
.p-grow{flex:1;display:flex;flex-direction:column;gap:.3rem;min-width:9rem}
.p-prices{display:grid;grid-template-columns:repeat(4,1fr);gap:.4rem}
.p-month{font:inherit;padding:.5rem .7rem;border:1px solid #c9ccd6;border-radius:10px}
.p-total{font-size:1.05rem;margin-bottom:.8rem}
.p-small-link{font-size:.85rem}
.p-courses{display:flex;flex-direction:column;gap:.8rem}
.p-course{background:#fff;border:1px solid var(--line);border-radius:14px;padding:1rem 1.2rem}
.p-course-top{display:flex;justify-content:space-between;align-items:flex-start;gap:.8rem;flex-wrap:wrap}
.p-course h3{font-family:var(--serif);font-size:1.25rem;font-weight:400}
.p-renew{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.7rem}
.p-renew .btn{font-size:.9rem;padding:.5rem .9rem}
@media (max-width:900px){
  .p-stats{grid-template-columns:1fr 1fr}
  .p-cols{grid-template-columns:1fr}
  .p-prices{grid-template-columns:1fr 1fr}
  .p-chips{align-items:flex-start;max-width:100%;flex-direction:row;flex-wrap:wrap}
  .p-actions{justify-content:flex-start}
  .p-right{flex-wrap:wrap}
}
@media (max-width:900px){
  .p-grid{grid-template-columns:1fr}
  .p-filters{grid-template-columns:1fr 1fr}
  .p-filters input{grid-column:1 / -1}
  .p-item{flex-direction:column;align-items:flex-start}
  .p-right{flex-direction:row;align-items:center}
}
.p-grid-2{grid-template-columns:1fr 1.4fr}
.p-full{flex-basis:100%;margin-top:.2rem}
.p-course details summary.p-sub{cursor:pointer;margin:.8rem 0 0}
@media (max-width:900px){.p-grid-2{grid-template-columns:1fr}}
