*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;color:#111827;background:var(--bg,#f3f4f6)}
a{color:inherit}
body.portal-body{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.portal-card,.admin-card{width:100%;max-width:720px;background:#fff;border-radius:18px;padding:28px;box-shadow:0 12px 36px rgba(17,24,39,.12)}
.portal-logo{max-width:220px;max-height:88px;display:block;margin:0 auto 16px auto}
h1{font-size:2rem;margin:8px 0 16px 0;color:var(--secondary,#111827)}
.muted{color:#6b7280}.small{font-size:.875rem}
.btn-primary,.btn-secondary,button{appearance:none;border:0;border-radius:12px;padding:14px 18px;cursor:pointer;font-weight:700;font-size:1rem}
.btn-primary{background:var(--primary,#1f6feb);color:#fff;width:100%}
.btn-secondary{background:#e5e7eb;color:#111827;text-decoration:none;display:inline-block}
.meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;padding:16px 0;margin:0}
.meta div{background:#f9fafb;border:1px solid #e5e7eb;border-radius:12px;padding:10px 12px}
.meta dt{font-size:.8rem;color:#6b7280}.meta dd{margin:4px 0 0 0;font-weight:700;word-break:break-all}
.notice{padding:12px 14px;border-radius:12px;margin:16px 0}
.notice.success{background:#ecfdf3;color:#166534}
.notice.error{background:#fef2f2;color:#991b1b}
.notice.info{background:#eff6ff;color:#1d4ed8}
.portal-html p:first-child{margin-top:0}.portal-html p:last-child{margin-bottom:0}
.footer-html{margin-top:18px;font-size:.9rem;color:#4b5563}
.admin-shell{display:flex;min-height:100vh;background:#f3f4f6}
.sidebar{width:240px;background:#111827;color:#fff;padding:24px;position:sticky;top:0;height:100vh}
.sidebar a{color:#d1d5db;text-decoration:none;display:block;padding:10px 12px;border-radius:10px;margin-bottom:6px}
.sidebar a.active,.sidebar a:hover{background:#1f2937;color:#fff}
.main{flex:1;padding:24px}
.card{background:#fff;border-radius:16px;padding:20px;box-shadow:0 10px 28px rgba(17,24,39,.08);margin-bottom:20px}
table{width:100%;border-collapse:collapse;font-size:.95rem}
th,td{padding:10px;border-bottom:1px solid #e5e7eb;vertical-align:top;text-align:left}
input[type=text],input[type=password],input[type=url],input[type=number],textarea,select{width:100%;padding:11px 12px;border:1px solid #d1d5db;border-radius:10px;background:#fff}
textarea{min-height:120px;resize:vertical}
.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.actions{display:flex;gap:10px;flex-wrap:wrap}
.topbar{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:20px}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:#f3f4f6}
code{background:#f3f4f6;padding:2px 6px;border-radius:8px}
@media (max-width: 900px){.admin-shell{display:block}.sidebar{width:auto;height:auto;position:relative}.grid,.grid-3{grid-template-columns:1fr}.main{padding:16px}}
