:root { font-family: Inter, "Microsoft YaHei", sans-serif; color: #172033; background: #f7f9fc; }
* { box-sizing: border-box; }
body { margin: 0; }
.auth-body { min-height: 100vh; display: grid; place-items: center; padding: 28px; background: #eef2ff; }
.login-shell { width: min(100%, 980px); min-height: 560px; display: grid; grid-template-columns: 1.03fr .97fr; overflow: hidden; border-radius: 20px; box-shadow: 0 24px 64px rgba(33, 65, 145, .18); background: white; }
.login-visual { color: white; padding: 56px; display: flex; flex-direction: column; justify-content: space-between; background: radial-gradient(circle at 16% 18%, rgba(115, 198, 255, .55), transparent 26%), linear-gradient(140deg, #1765db, #4e46d9 68%, #7250df); }
.visual-mark { width: 52px; height: 52px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.45); border-radius: 15px; font-size: 25px; font-weight: 700; }
.login-visual span { opacity: .8; letter-spacing: .08em; text-transform: uppercase; }
.login-visual h1 { margin: 12px 0; font-size: 35px; line-height: 1.24; }
.login-visual p { margin: 0; max-width: 310px; line-height: 1.8; color: rgba(255,255,255,.82); }
.login-panel { padding: 74px 58px; display: flex; flex-direction: column; justify-content: center; }
.login-heading { margin-bottom: 28px; position: relative; }
.login-star { color: #2563eb; font-size: 24px; position: absolute; left: -20px; top: -6px; }
.login-heading h2 { margin: 0 0 10px; font-size: 26px; }
.login-heading p { margin: 0; color: #74809a; }
.login-form { display: grid; gap: 18px; }
.login-form label { display: grid; gap: 8px; font-size: 14px; font-weight: 600; color: #34405a; }
.login-form input { width: 100%; height: 44px; border: 1px solid #dce3f0; border-radius: 8px; padding: 0 13px; font: inherit; outline: none; }
.login-form input:focus { border-color: #3572e6; box-shadow: 0 0 0 3px rgba(53,114,230,.12); }
.login-form button { height: 46px; margin-top: 8px; color: white; border: 0; border-radius: 8px; background: #2563eb; font: inherit; font-weight: 700; cursor: pointer; }
.login-form button:hover { background: #1d4ed8; }
.notice { padding: 10px 12px; border-radius: 8px; font-size: 14px; }.notice.error { background: #fff0f0; color: #bd3030; }
@media (max-width: 760px) { .auth-body { padding: 0; }.login-shell { min-height: 100vh; border-radius: 0; grid-template-columns: 1fr; }.login-visual { display: none; }.login-panel { padding: 42px 30px; } }

.admin-body { min-height: 100vh; background: #f6f8fc; color: #172033; }
.admin-shell { min-height: 100vh; display: grid; grid-template-columns: 232px 1fr; }
.admin-side { padding: 28px 18px; color: white; background: linear-gradient(165deg, #1765db, #5544d9); }
.admin-side .brand-mark { width: 38px; height: 38px; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.5); border-radius: 11px; font-weight: 700; }
.admin-side h1 { margin: 18px 0 6px; font-size: 20px; }.admin-side p { margin: 0 0 30px; color: rgba(255,255,255,.72); font-size: 13px; }
.admin-side nav { display: grid; gap: 7px; }.admin-side nav a { padding: 11px 12px; border-radius: 8px; color: rgba(255,255,255,.82); text-decoration: none; }.admin-side nav a.active,.admin-side nav a:hover { color: #1953c8; background: white; font-weight: 700; }
.side-user { position: fixed; bottom: 26px; width: 195px; padding: 11px; border-top: 1px solid rgba(255,255,255,.25); font-size: 13px; color: rgba(255,255,255,.8); }
.admin-main { max-width: 1380px; width: 100%; margin: 0 auto; padding: 46px 52px; }.page-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; margin-bottom: 24px; }.eyebrow { margin: 0 0 7px; color: #2d67d8; font-size: 12px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }.page-head h2 { margin: 0; font-size: 28px; }.page-head p:not(.eyebrow) { margin: 8px 0 0; color: #74809a; }
.page-head>button,.dialog-actions button,.table-panel button { height: 38px; padding: 0 15px; border: 0; border-radius: 7px; color: white; background: #2563eb; font: inherit; font-weight: 700; cursor: pointer; }.page-head>button:hover,.dialog-actions button:hover,.table-panel button:hover { background: #1d4ed8; }.secondary { color: #40506a !important; background: #edf1f7 !important; }
.table-panel { overflow: auto; border: 1px solid #e1e6ef; border-radius: 12px; background: white; box-shadow: 0 4px 14px rgba(24,42,82,.03); }.table-panel table { width: 100%; border-collapse: collapse; min-width: 720px; }.table-panel th,.table-panel td { padding: 15px 16px; border-bottom: 1px solid #edf0f5; text-align: left; vertical-align: top; font-size: 14px; }.table-panel th { color: #6d7a91; background: #fafbfe; font-size: 12px; }.table-panel tr:last-child td { border-bottom: 0; }.table-panel small { display: block; margin-top: 4px; color: #8490a4; }.table-panel details summary { color: #2563eb; cursor: pointer; }.table-panel details form { margin-top: 12px; display: grid; gap: 8px; }
.grant-grid { display: grid; grid-template-columns: repeat(2,minmax(180px,1fr)); gap: 12px; }.grant-grid fieldset { max-height: 180px; overflow: auto; border: 1px solid #e1e6ef; border-radius: 7px; padding: 9px; }.grant-grid legend { padding: 0 4px; font-size: 12px; color: #68758d; }.inline { display: flex !important; align-items: center; gap: 7px; margin: 5px 0; font-size: 13px !important; font-weight: 500 !important; }.muted { color: #8894a8; font-size: 13px; }
dialog { width: min(680px, calc(100% - 30px)); border: 0; border-radius: 13px; padding: 0; box-shadow: 0 20px 70px rgba(19,35,70,.3); }dialog::backdrop { background: rgba(18,30,58,.42); }dialog form { display: grid; gap: 14px; padding: 26px; }dialog h3 { margin: 0 0 6px; font-size: 20px; }dialog label { display: grid; gap: 6px; color: #40506a; font-size: 13px; font-weight: 700; }dialog input,dialog select { height: 40px; border: 1px solid #dce3f0; border-radius: 7px; padding: 0 10px; font: inherit; }.dialog-actions { display: flex; justify-content: flex-end; gap: 9px; margin-top: 8px; }.check-result { min-height: 20px; margin: 0; font-size: 13px; }.check-result.ok { color: #15803d; }.check-result.bad { color: #c53a3a; }.notice.success { background: #effaf2; color: #19703a; }
@media (max-width: 800px) { .admin-shell { grid-template-columns: 1fr; }.admin-side { min-height: auto; }.admin-side nav { grid-template-columns: repeat(2,1fr); }.side-user { display: none; }.admin-main { padding: 28px 20px; }.page-head { display: grid; }.grant-grid { grid-template-columns: 1fr; } }
