.portal-body{background:var(--light);margin:0}
.portal-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh;width:100%}
.portal-sidebar{background:#fff;border-right:1px solid var(--border);padding:24px 18px;display:flex;flex-direction:column;gap:18px;position:sticky;top:0;height:100vh;overflow-y:auto;z-index:20}
.portal-brand{display:block}
.portal-brand img{width:170px;height:auto}
.portal-user{font-size:14px;font-weight:700;color:var(--dark);line-height:1.45;padding-bottom:4px;border-bottom:1px solid var(--border)}
.portal-user strong{display:block;font-weight:800;color:var(--dark)}
.portal-user span{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-top:6px;word-break:break-all}
.portal-nav{display:grid;gap:6px;flex:1}
.portal-nav-label{font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin:12px 4px 4px}
.portal-nav a{display:flex;align-items:center;min-height:40px;padding:0 12px;border-radius:10px;color:#334155;font-weight:700;font-size:14px}
.portal-nav a:hover,.portal-nav a.active{background:var(--blue-soft);color:var(--blue)}
.portal-sidebar-foot{display:grid;gap:8px;padding-top:16px;border-top:1px solid var(--border)}
.portal-sidebar-foot a{font-size:13px;font-weight:700;color:var(--muted)}
.portal-sidebar-foot a:hover{color:var(--blue)}
.portal-main{min-width:0;background:var(--light)}
.portal-topbar{padding:24px 32px 0;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.portal-menu-btn{display:none;border:1px solid var(--border);background:#fff;border-radius:10px;min-width:44px;min-height:44px;font-size:22px;cursor:pointer;color:var(--dark)}
.portal-eyebrow{font-size:12px;font-weight:800;color:var(--blue);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px}
.portal-topbar h1{font-size:clamp(24px,3vw,32px);color:var(--dark);font-weight:900;letter-spacing:-.3px}
.portal-content{padding:24px 32px 40px}
.portal-alert{padding:14px 16px;border-radius:12px;font-weight:600;font-size:14px;margin-bottom:18px}
.portal-alert.success{background:#ecfdf5;border:1px solid #bbf7d0;color:#166534}
.portal-alert.error{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c}
.portal-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px}
.portal-stat{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}
.portal-stat span{display:block;font-size:12px;font-weight:700;color:var(--muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.3px}
.portal-stat strong{font-size:28px;color:var(--dark);font-weight:900}
.portal-card{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);margin-bottom:20px}
.portal-card h2{font-size:18px;color:var(--dark);margin-bottom:16px;font-weight:900}
.portal-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.portal-card-head h2{margin:0 0 4px}
.portal-card-desc{margin:0;font-size:14px;color:var(--muted)}
.portal-inline-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.portal-inline-form select{min-height:38px;border:1px solid var(--border);border-radius:8px;padding:6px 10px;font:inherit;font-size:13px;font-weight:600;background:#fff}
.portal-inline-form select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(7,85,232,.12)}
.portal-table-link{font-weight:800;color:var(--blue);white-space:nowrap}
.portal-table-link:hover{text-decoration:underline}
.portal-admin-table select{min-width:120px}
.portal-table-wrap{overflow-x:auto}
.portal-table{width:100%;border-collapse:collapse;font-size:14px;min-width:720px}
.portal-table th,.portal-table td{padding:12px 10px;text-align:left;border-bottom:1px solid var(--border);vertical-align:middle}
.portal-table th{font-size:12px;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);font-weight:800;white-space:nowrap}
.portal-table tr:hover td{background:#fafcff}
.badge{display:inline-flex;align-items:center;padding:4px 10px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}
.badge-green{background:#ecfdf5;color:#166534}
.badge-amber{background:#fffbeb;color:#b45309}
.badge-blue{background:#eff6ff;color:#1d4ed8}
.badge-red{background:#fef2f2;color:#b91c1c}
.badge-gray{background:#f1f5f9;color:#475569}
.portal-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.portal-empty{text-align:center;padding:40px 20px;color:var(--muted)}
.portal-search-box{display:grid;grid-template-columns:1fr 160px 140px;gap:12px;margin-bottom:20px}
.portal-search-result{border:1px solid var(--border);border-radius:var(--radius);padding:20px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:#fff;box-shadow:var(--shadow)}
.portal-search-result h3{font-size:22px;color:var(--dark);font-weight:900}
.portal-search-result p{color:var(--muted);font-size:14px;margin-top:4px}
.portal-auth-wrap{min-height:100vh;display:grid;place-items:center;padding:32px 16px;background:var(--light)}
.portal-auth-card{width:min(460px,100%);background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);padding:32px;box-shadow:var(--shadow-lg)}
.portal-auth-card h1{font-size:28px;color:var(--dark);margin:12px 0 8px;font-weight:900}
.portal-auth-card p{color:var(--muted);margin-bottom:24px;line-height:1.6}
.portal-auth-links{display:flex;justify-content:space-between;gap:12px;margin-top:16px;font-size:14px;font-weight:700}
.portal-auth-links a{color:var(--blue)}
.portal-form{display:grid;gap:14px}
.portal-form label{font-size:13px;font-weight:700;color:#334155}
.portal-form input,.portal-form select,.portal-form textarea{width:100%;border:1px solid var(--border);border-radius:10px;padding:12px 14px;font:inherit;background:#fff}
.portal-form input:focus,.portal-form select:focus,.portal-form textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(7,85,232,.12)}
.portal-inline{display:grid;grid-template-columns:1fr 1fr;gap:12px}
/* Advanced DNS */
.portal-dns-card{padding:0;overflow:hidden}
.portal-dns-card h2{font-size:20px;margin:0 0 6px}
.portal-dns-card h3{font-size:15px;font-weight:800;color:var(--dark);margin:0}
.portal-dns-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:24px 24px 0;flex-wrap:wrap}
.portal-dns-head-copy p{margin:0;font-size:14px;color:var(--muted);line-height:1.55;max-width:560px}
.portal-dns-head-copy strong{color:var(--dark);font-weight:700}
.portal-dns-ns-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:16px 24px 0;padding:12px 14px;background:#f8fafc;border:1px solid var(--border);border-radius:10px;font-size:13px}
.portal-dns-ns-label{font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;font-size:11px}
.portal-dns-ns-bar code{padding:4px 8px;background:#fff;border:1px solid #e2e8f0;border-radius:6px;font-size:12px;font-weight:700;color:#334155}
.portal-dns-add-panel{display:none;margin:20px 24px 0;padding:20px;background:linear-gradient(180deg,#f8fbff 0%,#f1f6ff 100%);border:1px solid #dbe5f4;border-radius:14px}
.portal-dns-add-panel.is-open{display:block}
.portal-dns-add-header{margin-bottom:16px}
.portal-dns-add-header p{margin:4px 0 0;font-size:13px;color:var(--muted)}
.portal-dns-add-form{display:grid;grid-template-columns:120px 1fr 1.6fr 120px 100px;gap:14px 12px;align-items:start}
.portal-dns-field{display:grid;gap:6px;align-content:start}
.portal-dns-field-wide{grid-column:span 1}
.portal-dns-field label{font-size:12px;font-weight:800;color:#475569;text-transform:uppercase;letter-spacing:.25px}
.portal-dns-field input,.portal-dns-field select{width:100%;min-height:44px;border:1px solid var(--border);border-radius:10px;padding:10px 12px;font:inherit;font-size:14px;font-weight:600;color:var(--dark);background:#fff}
.portal-dns-field input:focus,.portal-dns-field select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(7,85,232,.12)}
.portal-dns-hint{font-size:11px;color:var(--muted);line-height:1.35}
.portal-dns-form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px;padding-top:4px;border-top:1px solid rgba(7,85,232,.08);margin-top:4px}
.portal-dns-records{padding:24px;border-top:1px solid var(--border);margin-top:24px}
.portal-dns-records-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.portal-dns-count{font-size:12px;font-weight:800;color:var(--blue);background:var(--blue-soft);padding:5px 10px;border-radius:999px}
.portal-dns-table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:12px;background:#fff}
.portal-dns-table{width:100%;border-collapse:collapse;font-size:14px;min-width:680px}
.portal-dns-table th,.portal-dns-table td{padding:14px 16px;text-align:left;border-bottom:1px solid var(--border);vertical-align:middle}
.portal-dns-table th{font-size:11px;text-transform:uppercase;letter-spacing:.35px;color:var(--muted);font-weight:800;background:#fafcff}
.portal-dns-table tbody tr:last-child td{border-bottom:0}
.portal-dns-table tbody tr:hover td{background:#fafcff}
.dns-type-badge{display:inline-flex;align-items:center;min-width:44px;justify-content:center;padding:5px 10px;border-radius:8px;font-size:11px;font-weight:900;letter-spacing:.3px}
.dns-type-a{background:#eff6ff;color:#1d4ed8}
.dns-type-aaaa{background:#eef2ff;color:#4338ca}
.dns-type-cname{background:#f5f3ff;color:#6d28d9}
.dns-type-mx{background:#fff7ed;color:#c2410c}
.dns-type-txt{background:#ecfdf5;color:#047857}
.dns-type-ns{background:#f1f5f9;color:#475569}
.dns-host{font-weight:700;color:var(--dark)}
.dns-value{display:block;max-width:320px;padding:6px 10px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;font-size:12px;font-weight:600;color:#334155;word-break:break-all}
.dns-ttl,.dns-priority{font-size:13px;font-weight:600;color:#64748b}
.dns-delete-form{margin:0}
.dns-delete-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--border);border-radius:8px;background:#fff;color:#94a3b8;cursor:pointer;transition:color .15s,border-color .15s,background .15s}
.dns-delete-btn:hover{color:#dc2626;border-color:#fecaca;background:#fef2f2}
.portal-dns-empty{text-align:center;padding:48px 24px;background:#fafcff;border:1px dashed #dbe5f4;border-radius:14px}
.portal-dns-empty-icon{color:#94a3b8;margin-bottom:12px}
.portal-dns-empty h4{font-size:17px;font-weight:900;color:var(--dark);margin:0 0 8px}
.portal-dns-empty p{margin:0 auto 18px;max-width:420px;font-size:14px;color:var(--muted);line-height:1.55}
.portal-dns-locked{text-align:center;padding:56px 32px}
.portal-dns-locked-icon{width:56px;height:56px;margin:0 auto 16px;display:grid;place-items:center;font-size:24px;background:var(--blue-soft);border-radius:14px;color:var(--blue)}
.portal-dns-locked h2{font-size:20px;margin:0 0 8px}
.portal-dns-locked p{margin:0 auto 20px;max-width:400px;color:var(--muted);font-size:14px;line-height:1.55}
.portal-domain-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}
.portal-domain-meta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:14px;font-weight:600;color:var(--muted)}
.portal-tabs{display:flex;gap:6px;margin-bottom:20px;border-bottom:1px solid var(--border);padding-bottom:0;overflow-x:auto}
.portal-tabs a{display:inline-flex;align-items:center;min-height:42px;padding:0 16px;font-size:14px;font-weight:800;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap}
.portal-tabs a:hover,.portal-tabs a.active{color:var(--blue);border-bottom-color:var(--blue)}
.portal-radio-card{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--border);border-radius:12px;margin-bottom:12px;cursor:pointer}
.portal-radio-card input{margin-top:4px}
.portal-radio-card strong{display:block;color:var(--dark);margin-bottom:4px}
.portal-radio-card small{display:block;color:var(--muted);line-height:1.45}
.portal-ns-list{display:grid;gap:8px;margin:0 0 16px;padding:12px 14px;background:#f8fafc;border-radius:10px;border:1px solid var(--border)}
.portal-ns-list code{font-size:13px;font-weight:700;color:#334155}
.btn.danger{background:#dc2626;color:#fff;box-shadow:0 4px 14px rgba(220,38,38,.2)}
.btn.danger:hover{background:#b91c1c}
.portal-shell.sidebar-open .portal-sidebar{display:flex}
@media(max-width:900px){
  .portal-shell{grid-template-columns:1fr}
  .portal-menu-btn{display:inline-flex;align-items:center;justify-content:center}
  .portal-sidebar{display:none;position:fixed;left:0;top:0;width:min(280px,88vw);height:100vh;box-shadow:var(--shadow-lg)}
  .portal-shell.sidebar-open .portal-sidebar{display:flex}
  .portal-grid{grid-template-columns:repeat(2,1fr)}
  .portal-dns-add-form{grid-template-columns:1fr 1fr}
  .portal-dns-field-wide{grid-column:1/-1}
  .portal-dns-form-actions{grid-column:1/-1}
  .portal-search-box{grid-template-columns:1fr}
  .portal-content,.portal-topbar{padding-left:16px;padding-right:16px}
}
@media(max-width:640px){
  .portal-grid{grid-template-columns:1fr}
  .portal-inline,.portal-search-box,.portal-dns-add-form{grid-template-columns:1fr}
  .portal-dns-head{padding:20px 16px 0}
  .portal-dns-ns-bar,.portal-dns-add-panel{margin-left:16px;margin-right:16px}
  .portal-dns-records{padding:20px 16px}
}
