:root{--color-primary: #000000;--color-primary-active: #1a1a1a;--color-text-link: #0d74ce;--color-text-link-secondary: #476cff;--color-canvas: #ffffff;--color-canvas-soft: #fafafa;--color-surface-card: #ffffff;--color-surface-strong: #f0f0f3;--color-surface-dark: #171717;--color-surface-dark-elevated: #1a1a1a;--color-gradient-sky-light: #cfe7ff;--color-gradient-sky-mid: #a8c8e8;--color-hairline: #f0f0f3;--color-hairline-soft: #f5f5f7;--color-hairline-strong: #dcdee0;--color-ink: #171717;--color-body: #60646c;--color-muted: #999999;--color-on-primary: #ffffff;--color-on-dark: #ffffff;--color-on-dark-soft: #b0b4ba;--color-semantic-success: #16a34a;--color-semantic-error: #eb8e90;--font-sans: "Kanit", -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--text-display-lg: 36px;--text-display-md: 28px;--text-display-sm: 22px;--text-title-md: 18px;--text-title-sm: 16px;--text-body-md: 16px;--text-body-sm: 14px;--text-caption: 13px;--text-caption-uppercase: 11px;--text-button: 14px;--text-nav-link: 14px;--spacing-xxs: 4px;--spacing-xs: 8px;--spacing-sm: 12px;--spacing-base: 16px;--spacing-md: 20px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-xxl: 48px;--rounded-xs: 4px;--rounded-sm: 6px;--rounded-md: 8px;--rounded-lg: 12px;--rounded-xl: 16px;--rounded-pill: 9999px;--nav-height: 64px;--sidebar-width: 260px;--shadow-soft: 0 4px 12px rgba(0, 0, 0, .04)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);font-size:var(--text-body-md);font-weight:400;line-height:1.5;color:var(--color-body);background:var(--color-canvas-soft);-webkit-font-smoothing:antialiased}a{color:var(--color-text-link);text-decoration:none}a:hover{text-decoration:underline}.admin-layout{display:flex;min-height:100vh}.admin-sidebar{width:var(--sidebar-width);background:var(--color-canvas);border-right:1px solid var(--color-hairline);flex-shrink:0;overflow-y:auto;position:fixed;top:0;left:0;bottom:0;z-index:100;display:flex;flex-direction:column}.admin-sidebar-header{padding:var(--spacing-lg);border-bottom:1px solid var(--color-hairline);display:flex;align-items:center;gap:var(--spacing-sm);min-height:var(--nav-height)}.admin-logo-img{width:40px;height:40px;flex-shrink:0;object-fit:contain;border-radius:50%}.admin-sidebar-header h2{font-size:var(--text-body-sm);font-weight:600;color:var(--color-ink);line-height:1.3}.admin-sidebar-header small{font-size:var(--text-caption);color:var(--color-muted)}.admin-sidebar nav{flex:1;padding:var(--spacing-sm) 0;overflow-y:auto}.admin-nav-group{padding:var(--spacing-base) var(--spacing-lg) var(--spacing-xxs);font-size:var(--text-caption-uppercase);font-weight:600;letter-spacing:.88px;text-transform:uppercase;color:var(--color-muted)}.admin-nav-link{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-lg);margin:0 var(--spacing-xs);color:var(--color-body);font-size:var(--text-nav-link);font-weight:500;border-radius:var(--rounded-sm);transition:background .15s ease}.admin-nav-link:hover{background:var(--color-surface-strong);color:var(--color-ink);text-decoration:none}.admin-nav-link.active{background:var(--color-surface-strong);color:var(--color-ink);font-weight:600}.admin-sidebar-footer{padding:var(--spacing-base) var(--spacing-lg);border-top:1px solid var(--color-hairline)}.admin-sidebar-footer a{font-size:var(--text-body-sm);color:var(--color-body)}.admin-main{flex:1;margin-left:var(--sidebar-width);display:flex;flex-direction:column;min-width:0}.admin-topbar{background:var(--color-canvas);border-bottom:1px solid var(--color-hairline);padding:0 var(--spacing-lg);height:var(--nav-height);display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:50}.admin-topbar-title{font-size:var(--text-body-sm);color:var(--color-muted)}.admin-content{padding:var(--spacing-xl);flex:1}.page-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:var(--spacing-xl);gap:var(--spacing-base);flex-wrap:wrap}.page-header-text h1{font-size:var(--text-display-md);font-weight:600;line-height:1.2;letter-spacing:-.84px;color:var(--color-ink)}.page-header-text p{font-size:var(--text-body-sm);color:var(--color-body);margin-top:var(--spacing-xxs)}.section-label{font-size:var(--text-caption-uppercase);font-weight:600;letter-spacing:.88px;text-transform:uppercase;color:var(--color-muted);margin-bottom:var(--spacing-xs)}.card{background:var(--color-surface-card);border:1px solid var(--color-hairline-strong);border-radius:var(--rounded-lg);padding:var(--spacing-lg)}.card-dark{background:var(--color-surface-dark);border-color:var(--color-surface-dark);color:var(--color-on-dark)}.card-title{font-size:var(--text-title-md);font-weight:600;color:var(--color-ink);margin-bottom:var(--spacing-base)}.card-dark .card-title{color:var(--color-on-dark)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--spacing-base);margin-bottom:var(--spacing-xl)}.stat-card{background:var(--color-surface-card);border:1px solid var(--color-hairline-strong);border-radius:var(--rounded-lg);padding:var(--spacing-lg);text-align:center;transition:box-shadow .15s ease}.stat-card:hover{box-shadow:var(--shadow-soft)}.stat-card strong{display:block;font-size:var(--text-display-md);font-weight:600;letter-spacing:-.84px;color:var(--color-ink);line-height:1.2}.stat-card span{font-size:var(--text-body-sm);color:var(--color-body);margin-top:var(--spacing-xxs);display:block}.stat-card-dark{background:var(--color-surface-dark);border-color:var(--color-surface-dark)}.stat-card-dark strong{color:var(--color-on-dark)}.stat-card-dark span{color:var(--color-on-dark-soft)}.table-wrap{overflow-x:auto}table.data-table{width:100%;border-collapse:collapse;font-size:var(--text-body-sm)}table.data-table th,table.data-table td{padding:var(--spacing-sm) var(--spacing-base);text-align:left;border-bottom:1px solid var(--color-hairline)}table.data-table th{background:var(--color-canvas-soft);font-weight:600;font-size:var(--text-caption-uppercase);letter-spacing:.88px;text-transform:uppercase;color:var(--color-muted)}table.data-table tr:hover td{background:var(--color-canvas-soft)}table.data-table td{color:var(--color-body)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-xs);height:40px;padding:10px 18px;border:none;border-radius:var(--rounded-md);font-family:var(--font-sans);font-size:var(--text-button);font-weight:500;line-height:1;cursor:pointer;transition:background .15s ease;text-decoration:none;white-space:nowrap}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover{background:var(--color-primary-active);text-decoration:none}.btn-secondary,.btn-outline{background:var(--color-surface-card);color:var(--color-ink);border:1px solid var(--color-hairline-strong)}.btn-secondary:hover,.btn-outline:hover{background:var(--color-canvas-soft);text-decoration:none}.btn-danger{background:var(--color-semantic-error);color:var(--color-ink)}.btn-sm{height:32px;padding:6px 12px;font-size:var(--text-caption)}.btn:disabled{opacity:.45;cursor:not-allowed}.form-group{margin-bottom:var(--spacing-base)}.form-group label{display:block;font-size:var(--text-body-sm);font-weight:500;color:var(--color-ink);margin-bottom:var(--spacing-xxs)}.form-control{width:100%;height:44px;padding:12px 16px;border:1px solid var(--color-hairline-strong);border-radius:var(--rounded-md);font-family:var(--font-sans);font-size:var(--text-body-sm);color:var(--color-ink);background:var(--color-surface-card);transition:border-color .15s ease}.form-control:focus{outline:none;border-width:2px;border-color:var(--color-ink);padding:11px 15px}textarea.form-control{height:auto;min-height:200px;resize:vertical;font-family:var(--font-mono);font-size:var(--text-caption);line-height:1.5}select.form-control{cursor:pointer}.form-hint{font-size:var(--text-caption);color:var(--color-muted);margin-top:var(--spacing-xxs)}.form-actions{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-hairline)}.alert{padding:var(--spacing-sm) var(--spacing-base);border-radius:var(--rounded-md);margin-bottom:var(--spacing-base);font-size:var(--text-body-sm)}.alert-error{background:#fef2f2;color:#991b1b;border:1px solid var(--color-semantic-error)}.alert-success{background:#f0fdf4;color:#166534;border:1px solid var(--color-semantic-success)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-canvas);position:relative;overflow:hidden}.login-page:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 80% 60% at 50% 0%,var(--color-gradient-sky-light) 0%,var(--color-gradient-sky-mid) 40%,transparent 70%);pointer-events:none}.login-card{position:relative;background:var(--color-surface-card);border:1px solid var(--color-hairline-strong);border-radius:var(--rounded-lg);padding:var(--spacing-xxl);width:100%;max-width:420px;box-shadow:var(--shadow-soft)}.login-card-header{text-align:center;margin-bottom:var(--spacing-xl)}.login-logo-img{width:88px;height:88px;object-fit:contain;border-radius:50%;display:block;margin:0 auto var(--spacing-base)}.login-card h1{font-size:var(--text-display-sm);font-weight:600;letter-spacing:-.5px;color:var(--color-ink);margin-bottom:var(--spacing-xxs)}.login-card>.login-card-header p,.login-card-header p{color:var(--color-body);font-size:var(--text-body-sm)}.quick-links{list-style:none;display:flex;flex-direction:column;gap:var(--spacing-xs)}.quick-links li a{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-xs) 0;font-size:var(--text-body-sm);color:var(--color-text-link)}.quick-links li a:hover{text-decoration:underline}.pagination{display:flex;justify-content:center;align-items:center;gap:var(--spacing-sm);margin-top:var(--spacing-lg)}.pagination-info{font-size:var(--text-body-sm);color:var(--color-body)}.loading-state,.empty-state{padding:var(--spacing-xxl);text-align:center;color:var(--color-muted);font-size:var(--text-body-sm)}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-lg)}@media(max-width:900px){.grid-2{grid-template-columns:1fr}}.detail-list{margin:0;display:grid;gap:var(--spacing-sm)}.detail-list dt{font-size:var(--text-caption);font-weight:600;color:var(--color-muted);margin:0}.detail-list dd{margin:0 0 var(--spacing-sm);color:var(--color-ink)}@media(max-width:768px){.admin-sidebar{width:100%;position:relative;border-right:none;border-bottom:1px solid var(--color-hairline)}.admin-main{margin-left:0}.admin-content{padding:var(--spacing-base)}}
