.portal-body{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#2D1B3D,#7B4B94);padding:2rem 1rem;font-family:'Quicksand',sans-serif}
.portal-card{background:#fff;border-radius:20px;padding:2.5rem;max-width:420px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.portal-card.wide{max-width:720px}
.portal-logo{height:60px;display:block;margin:0 auto 1.25rem}
.portal-title{font-family:'Baloo 2',cursive;color:#7B4B94;text-align:center;font-size:1.6rem;margin-bottom:.4rem}
.portal-sub{text-align:center;color:#888;font-size:.9rem;margin-bottom:1.5rem}
.portal-field{margin-bottom:1rem}
.portal-field label{display:block;font-size:.82rem;font-weight:600;color:#555;margin-bottom:.35rem}
.portal-field input,.portal-field select,.portal-field textarea{width:100%;padding:.75rem 1rem;border:2px solid #F5D1E6;border-radius:12px;font-family:'Quicksand',sans-serif;font-size:.95rem;outline:none}
.portal-field input:focus,.portal-field select:focus,.portal-field textarea:focus{border-color:#9D6DB5}
.portal-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.portal-btn{width:100%;padding:.9rem;border:none;border-radius:99px;background:linear-gradient(135deg,#7B4B94,#E8A5D4);color:#fff;font-weight:700;font-size:1rem;font-family:'Baloo 2',cursive;cursor:pointer;transition:transform .15s,box-shadow .15s}
.portal-btn:hover{transform:translateY(-2px);box-shadow:0 8px 25px rgba(123,75,148,.35)}
.portal-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}
.portal-status{text-align:center;font-size:.88rem;margin-top:.75rem;min-height:1.2em}
.portal-status.error{color:#e74c3c}
.portal-status.success{color:#27ae60}
.portal-link{display:block;text-align:center;margin-top:1rem;color:#9D6DB5;font-size:.85rem;text-decoration:none}
.portal-link:hover{color:#7B4B94}
.portal-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1rem;margin:1.5rem 0}
.portal-stat{background:#F8F5FA;border-radius:14px;padding:1.1rem;text-align:center}
.portal-stat-num{font-family:'Baloo 2',cursive;font-size:1.6rem;color:#7B4B94}
.portal-stat-label{font-size:.75rem;color:#888;margin-top:.2rem}
.portal-bar{height:14px;border-radius:99px;background:#F5D1E6;overflow:hidden;margin-bottom:.4rem}
.portal-bar-fill{height:100%;background:linear-gradient(90deg,#7B4B94,#E8A5D4)}
.portal-link-box{display:flex;gap:.5rem;background:#F8F5FA;border-radius:12px;padding:.75rem 1rem;align-items:center;margin-bottom:1.5rem}
.portal-link-box input{flex:1;border:none;background:transparent;font-family:'Quicksand',sans-serif;font-size:.9rem;color:#555}
.portal-copy-btn{border:none;background:#7B4B94;color:#fff;border-radius:8px;padding:.5rem .9rem;font-size:.82rem;cursor:pointer;font-weight:600}
.portal-orders{border-top:2px solid #F5D1E6;padding-top:1rem}
.portal-order-row{display:flex;justify-content:space-between;padding:.5rem 0;font-size:.88rem;color:#555;border-bottom:1px solid #F5D1E6}
.portal-logout{text-align:center;margin-top:1.5rem}
.portal-nav{display:flex;flex-wrap:wrap;gap:.35rem;justify-content:center;margin-bottom:1.5rem;border-bottom:2px solid #F5D1E6;padding-bottom:1rem}
.portal-nav a{padding:.45rem .9rem;border-radius:99px;font-size:.82rem;font-weight:600;color:#9D6DB5;text-decoration:none;transition:background .15s,color .15s}
.portal-nav a:hover{background:#F8F5FA;color:#7B4B94}
.portal-nav a.active{background:linear-gradient(135deg,#7B4B94,#9D6DB5);color:#fff}
.portal-table{width:100%;border-collapse:collapse;font-size:.88rem;color:#555}
.portal-table th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:#9D6DB5;padding:.5rem .6rem;border-bottom:2px solid #F5D1E6}
.portal-table td{padding:.55rem .6rem;border-bottom:1px solid #F5D1E6}
.portal-table tr:last-child td{border-bottom:none}
.portal-table-wrap{overflow-x:auto}
.portal-tiers{display:grid;grid-template-columns:repeat(3,1fr);gap:.75rem;margin:1rem 0}
.portal-tier{background:#F8F5FA;border:2px solid transparent;border-radius:14px;padding:.9rem;text-align:center}
.portal-tier.current{border-color:#7B4B94;background:linear-gradient(135deg,rgba(123,75,148,.08),rgba(232,165,212,.12))}
.portal-tier-pct{font-family:'Baloo 2',cursive;font-size:1.4rem;color:#7B4B94}
.portal-tier-range{font-size:.72rem;color:#888;margin-top:.15rem}
.portal-badge{display:inline-block;padding:2px 10px;border-radius:99px;font-size:.72rem;font-weight:700}
.portal-badge.pending{background:#FFF3CD;color:#856404}
.portal-badge.approved,.portal-badge.active{background:#d4f5dd;color:#1e7a3a}
.portal-badge.denied,.portal-badge.paused{background:#fde2e0;color:#b03a2e}
.portal-badge.completed{background:#e2e8f5;color:#3a55b0}
.portal-qr-box{display:flex;flex-direction:column;align-items:center;gap:.75rem;background:#F8F5FA;border-radius:14px;padding:1.5rem;margin-bottom:1.5rem}
.portal-qr-box canvas,.portal-qr-box img{border-radius:8px;background:#fff;padding:8px}
.portal-btn-row{display:flex;gap:.6rem;flex-wrap:wrap;justify-content:center}
.portal-btn.secondary{background:#F8F5FA;color:#7B4B94;border:2px solid #E8A5D4;width:auto;padding:.6rem 1.2rem;font-size:.88rem}
.portal-copy-block{position:relative;background:#F8F5FA;border-radius:12px;padding:1rem 1rem 2.6rem;font-size:.86rem;color:#555;white-space:pre-wrap;margin-bottom:1rem;line-height:1.5}
.portal-copy-block button{position:absolute;bottom:.7rem;right:.8rem;border:none;background:#7B4B94;color:#fff;border-radius:8px;padding:.4rem .8rem;font-size:.78rem;cursor:pointer;font-weight:600}
@media(max-width:600px){.portal-grid-2,.portal-stats,.portal-tiers{grid-template-columns:1fr}}
