.portal-page{--p-primary:#2563eb;--p-primary-d:#1d4ed8;--p-bg:#f4f7fb;--p-border:#e3e8f0;--p-text:#1e293b;--p-muted:#64748b;background:radial-gradient(1200px 400px at 100% -5%,rgba(37,99,235,.06),transparent 60%),var(--p-bg);min-height:72vh;padding:36px 0 80px}.portal-auth,.portal-wrap{max-width:1060px;margin:0 auto;padding:0 20px}.portal-head{justify-content:space-between;gap:16px;flex-wrap:wrap;background:#fff;border:1px solid var(--p-border);border-radius:16px;padding:18px 22px;box-shadow:0 1px 2px rgba(15,23,42,.04)}.portal-head,.portal-head-id{display:flex;align-items:center}.portal-head-id{gap:14px;min-width:0}.portal-avatar{width:48px;height:48px;flex:none;border-radius:14px;display:grid;place-items:center;font-weight:800;font-size:1.1rem;color:#fff;background:linear-gradient(135deg,var(--p-primary),#22d3ee);box-shadow:0 6px 16px rgba(37,99,235,.28)}.portal-title{font-size:1.35rem;font-weight:800;margin:0;color:var(--p-text);line-height:1.2}.portal-sub{color:var(--p-muted);margin:3px 0 0;font-size:.92rem}.portal-nav{display:flex;gap:4px;flex-wrap:wrap;margin:18px 0 24px;padding:5px;background:#fff;border:1px solid var(--p-border);border-radius:14px;box-shadow:0 1px 2px rgba(15,23,42,.04)}.portal-nav-link{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:10px;color:var(--p-muted);text-decoration:none;font-weight:600;font-size:.94rem;transition:.15s}.portal-nav-link:hover{color:var(--p-primary);background:#f1f5fb}.portal-nav-link.active{color:#fff;background:var(--p-primary);box-shadow:0 4px 12px rgba(37,99,235,.28)}.portal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));grid-gap:16px;gap:16px}.portal-card{background:#fff;border:1px solid var(--p-border);border-radius:16px;padding:20px;box-shadow:0 1px 2px rgba(15,23,42,.04)}.portal-section-title{font-size:1.1rem;font-weight:800;margin:30px 0 14px;color:var(--p-text);display:flex;align-items:center;gap:8px}.portal-stat{display:flex;align-items:center;gap:16px;transition:.18s}.portal-stat:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(15,23,42,.08);border-color:#cfdcf2}.portal-stat .ico{width:52px;height:52px;flex:none;border-radius:14px;display:grid;place-items:center;font-size:1.4rem}.portal-stat .ico.blue{background:#e0edff;color:#2563eb}.portal-stat .ico.green{background:#dcfce7;color:#16a34a}.portal-stat .ico.amber{background:#fef3c7;color:#d97706}.portal-stat .num{font-size:1.75rem;font-weight:800;color:var(--p-text);line-height:1.1}.portal-stat .lbl{color:var(--p-muted);font-size:.88rem;margin-top:2px}.portal-table-wrap{background:#fff;border:1px solid var(--p-border);border-radius:14px;overflow:hidden}.portal-table{width:100%;border-collapse:collapse;font-size:.94rem}.portal-table th{text-align:left;padding:13px 16px;background:#f8fafc;color:var(--p-muted);font-weight:700;font-size:.82rem;text-transform:uppercase;letter-spacing:.02em}.portal-table td{padding:13px 16px;border-top:1px solid var(--p-border);color:var(--p-text)}.portal-table tbody tr:hover{background:#f8fafc}.portal-table .mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:600}.portal-link{color:var(--p-primary);text-decoration:none;font-weight:600}.portal-link:hover{text-decoration:underline}.st-badge{display:inline-block;padding:3px 11px;border-radius:999px;font-size:.8rem;font-weight:700}.st-pending{background:#fef3c7;color:#92400e}.st-processing{background:#dbeafe;color:#1e40af}.st-completed{background:#dcfce7;color:#166534}.st-cancelled{background:#fee2e2;color:#991b1b}.portal-empty{text-align:center;padding:56px 20px;color:var(--p-muted)}.portal-empty i{font-size:2.4rem;opacity:.4;display:block;margin-bottom:12px}.portal-alert{border-radius:12px;padding:13px 16px;margin:16px 0;font-size:.92rem;display:flex;gap:9px;align-items:flex-start}.portal-alert.warn{background:#fffbeb;border:1px solid #fde68a;color:#92400e}.portal-alert.ok{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.portal-alert.err{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.portal-btn{display:inline-flex;align-items:center;gap:7px;padding:10px 18px;border-radius:10px;border:1px solid var(--p-primary);background:var(--p-primary);color:#fff;font-weight:700;cursor:pointer;text-decoration:none;font-size:.95rem;transition:.15s}.portal-btn:hover{filter:brightness(1.05)}.portal-btn:disabled{opacity:.6;cursor:not-allowed}.portal-btn.ghost{background:#fff;color:var(--p-text);border-color:var(--p-border)}.portal-btn.block{width:100%;justify-content:center}.portal-stepper{display:flex;align-items:flex-start;gap:0;margin:4px 0 2px}.portal-step{flex:1 1;display:flex;flex-direction:column;align-items:center;text-align:center;position:relative;min-width:0}.portal-step .dot{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;z-index:1;background:#eef2f7;color:#94a3b8;border:2px solid #e3e8f0;font-size:.95rem;transition:.2s}.portal-step .slbl{font-size:.8rem;margin-top:8px;color:var(--p-muted);font-weight:600}.portal-step:after,.portal-step:before{content:"";position:absolute;top:16px;height:2px;background:#e3e8f0;z-index:0}.portal-step:before{left:0;width:50%}.portal-step:after{right:0;width:50%}.portal-step:first-child:before,.portal-step:last-child:after{display:none}.portal-step.done .dot{background:var(--p-primary);border-color:var(--p-primary);color:#fff}.portal-step.done .slbl{color:var(--p-text)}.portal-step.done:after,.portal-step.done:before{background:var(--p-primary)}.portal-step.current .dot{background:#fff;border-color:var(--p-primary);color:var(--p-primary);box-shadow:0 0 0 4px rgba(37,99,235,.14)}.portal-step.current .slbl{color:var(--p-primary)}.portal-step.cancelled .dot{background:#fee2e2;border-color:#fecaca;color:#dc2626}.portal-auth{max-width:440px;padding-top:8px}.portal-auth-card{background:#fff;border:1px solid var(--p-border);border-radius:18px;padding:34px 32px;box-shadow:0 12px 40px rgba(15,23,42,.08)}.portal-auth-brand{width:54px;height:54px;border-radius:15px;display:grid;place-items:center;margin:0 auto 16px;color:#fff;font-weight:800;font-size:1.5rem;background:linear-gradient(135deg,var(--p-primary),#22d3ee);box-shadow:0 8px 20px rgba(37,99,235,.3)}.portal-auth h1{font-size:1.45rem;font-weight:800;margin:0 0 6px;color:var(--p-text);text-align:center}.portal-auth .lead{color:var(--p-muted);margin:0 0 22px;text-align:center;font-size:.94rem}.portal-field{margin-bottom:15px}.portal-field label{display:block;font-weight:600;font-size:.9rem;margin-bottom:6px;color:var(--p-text)}.portal-input-wrap{position:relative}.portal-field input{width:100%;padding:11px 13px;border:1px solid var(--p-border);border-radius:10px;font-size:.97rem;outline:none;transition:.15s;background:#fff}.portal-field .has-toggle input{padding-right:44px}.portal-field input:focus{border-color:var(--p-primary);box-shadow:0 0 0 3px rgba(37,99,235,.12)}.portal-pw-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:var(--p-muted);cursor:pointer;padding:8px;border-radius:8px;line-height:1;font-size:1.05rem}.portal-pw-toggle:hover{color:var(--p-primary);background:#f1f5fb}.portal-auth-foot{margin-top:18px;text-align:center;color:var(--p-muted);font-size:.92rem}.portal-auth-foot a{color:var(--p-primary);font-weight:600;text-decoration:none}.portal-auth-foot a:hover{text-decoration:underline}.portal-detail-row{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--p-border)}.portal-detail-row:last-child{border-bottom:0}.portal-detail-row .k{color:var(--p-muted)}.portal-detail-row .v{font-weight:600;color:var(--p-text);text-align:right}.portal-content-html{line-height:1.7;color:var(--p-text)}.portal-content-html img{max-width:100%;height:auto}.portal-back{display:inline-flex;align-items:center;gap:6px;color:var(--p-muted);text-decoration:none;margin-bottom:16px;font-weight:600}.portal-back:hover{color:var(--p-primary)}.portal-loading{display:flex;align-items:center;justify-content:center;gap:10px;min-height:50vh;color:var(--p-muted)}.portal-spinner{width:20px;height:20px;border:2px solid var(--p-border);border-top-color:var(--p-primary);border-radius:50%;animation:portal-spin .7s linear infinite}@keyframes portal-spin{to{transform:rotate(1turn)}}@media (max-width:640px){.portal-page{padding:24px 0 64px}.portal-head{padding:16px}.portal-title{font-size:1.2rem}.portal-nav{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}.portal-nav-link{white-space:nowrap}.portal-table-wrap{overflow-x:auto}.portal-table{min-width:520px}.portal-stat .num{font-size:1.5rem}.portal-step .slbl{font-size:.72rem}}