:root{--cp-bg:#f5f4ef;--cp-surface:#ffffffe0;--cp-surface-muted:#edf3f8db;--cp-border:#93a3b829;--cp-text:#273449;--cp-text-strong:#122033;--cp-text-muted:#617084;--cp-info:#2f6f92;--cp-success:#2f7d55;--cp-warning:#94641c;--cp-danger:#a33a2b;--cp-gated:#506580;--cp-radius-card:24px;--cp-radius-badge:999px;--cp-shadow-card:0 14px 32px #4f617814;--cp-space-xs:6px;--cp-space-sm:10px;--cp-space-md:14px;--cp-space-lg:18px;--cp-space-xl:28px;color:var(--cp-text);background:radial-gradient(circle at top left, #ecf8f4e6, transparent 28%), radial-gradient(circle at 85% 18%, #ffeee0c7, transparent 24%), linear-gradient(180deg, var(--cp-bg) 0%, #eef2f6 100%);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:PingFang SC,Microsoft YaHei,Segoe UI,sans-serif;font-weight:400;line-height:1.5}*{box-sizing:border-box}html,body,#root{min-height:100vh}body{min-width:1200px;margin:0}button,select,input,textarea{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:#6c7c90;font-size:12px;font-weight:700;display:inline-block}.admin-shell{background:linear-gradient(#ffffff5c,#eef4f880);grid-template-columns:300px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{padding:var(--cp-space-xl) var(--cp-space-lg);border-right:1px solid var(--cp-border);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#f9fbfce6}.sidebar__brand{margin-bottom:var(--cp-space-xl);padding:var(--cp-space-lg);border-radius:var(--cp-radius-card);background:linear-gradient(160deg, var(--cp-surface), #ebf2f8db);box-shadow:var(--cp-shadow-card);border:1px solid #8498ae24}.sidebar__brand h2{color:var(--cp-text-strong);margin:8px 0 10px;font-size:28px}.sidebar__brand p{color:var(--cp-text-muted);margin:0}.admin-sidebar-brand__mode{width:fit-content;margin-top:var(--cp-space-md);border-radius:var(--cp-radius-badge);color:var(--cp-info);background:#eef7fce6;border:1px solid #2f6f922e;padding:5px 10px;font-size:12px;font-weight:700;display:inline-flex}.sidebar__nav{gap:var(--cp-space-sm);flex-direction:column;display:flex}.sidebar__link{padding:var(--cp-space-md) var(--cp-space-lg);border:1px solid var(--cp-border);background:#ffffffb8;border-radius:18px;outline:none;transition:transform .18s,box-shadow .18s,border-color .18s,background .18s;display:block;position:relative}.sidebar__link strong,.sidebar__link span{display:block}.sidebar__link strong{color:var(--cp-text-strong);margin-bottom:4px}.sidebar__link span{color:var(--cp-text-muted);font-size:13px}.sidebar__link:hover,.sidebar__link:focus-visible,.sidebar__link--active{border-color:#2f6f9247;transform:translateY(-1px);box-shadow:0 10px 24px #5969811f}.sidebar__link--active{background:linear-gradient(135deg,#e2eef4f2,#fffffff2)}.sidebar__link--active:before{border-radius:var(--cp-radius-badge);background:var(--cp-info);content:"";width:4px;position:absolute;top:14px;bottom:14px;left:8px}.admin-shell__main{flex-direction:column;min-width:0;display:flex}.topbar{justify-content:space-between;align-items:flex-start;gap:var(--cp-space-xl);padding:var(--cp-space-xl) var(--cp-space-xl) var(--cp-space-md);border-bottom:1px solid #8498ae1a;display:flex}.topbar__title-group{min-width:240px}.topbar h1{color:var(--cp-text-strong);margin:8px 0 6px;font-size:30px}.topbar p{max-width:680px;color:var(--cp-text-muted);margin:0}.topbar__actions{align-items:center;gap:var(--cp-space-sm);flex-wrap:wrap;justify-content:flex-end;display:flex}.topbar__profile{border:1px solid var(--cp-border);background:#ffffffbd;border-radius:16px;flex-direction:column;justify-content:center;min-height:42px;padding:9px 13px;display:flex}.topbar__profile strong{color:var(--cp-text-strong)}.topbar__profile span{color:var(--cp-text-muted);font-size:13px}.api-health{border:1px solid var(--cp-border);background:#ffffffd9;border-radius:12px;flex-direction:column;justify-content:center;gap:4px;min-width:190px;min-height:42px;padding:9px 12px;display:flex}.api-health strong{color:var(--cp-text-strong);font-size:12px}.api-health span{color:var(--cp-text-muted);font-size:11px}.api-health--mock,.api-health--checking{background:#eef7fce6;border-color:#2f6f923d}.api-health--ok{background:#ecf8f0e6;border-color:#2f7d5557}.api-health--fail{background:#ffedeae6;border-color:#a33a2b5c}.content-area{padding:var(--cp-space-md) var(--cp-space-xl) var(--cp-space-xl)}.page-stack{gap:var(--cp-space-lg);flex-direction:column;display:flex}.page-intro{background:linear-gradient(135deg,#ffffffeb,#e9f2f7db);border-radius:28px;padding:26px 28px;box-shadow:0 18px 40px #5e6d8217}.page-intro h1{margin:8px 0 10px;font-size:34px}.page-intro p{color:#5c697d;max-width:820px;margin:0}.dashboard-page{gap:var(--cp-space-xl)}.dashboard-page-intro{background:linear-gradient(135deg,#fffffff0,#eff7f4db);border:1px solid #8498ae24}.dashboard-page-intro p,.dashboard-card .shell-card__header p{color:var(--cp-text-muted)}.dashboard-section{gap:var(--cp-space-md);flex-direction:column;display:flex}.dashboard-section__header{justify-content:space-between;align-items:flex-end;gap:var(--cp-space-md);flex-wrap:wrap;display:flex}.dashboard-section__header h2{color:var(--cp-text-strong);margin:0;font-size:22px}.dashboard-section__header p{color:var(--cp-text-muted);margin:0}.stat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.stat-card,.shell-card{border-radius:var(--cp-radius-card);background:var(--cp-surface);border:1px solid var(--cp-border);box-shadow:var(--cp-shadow-card)}.stat-card{padding:20px}.dashboard-card-grid{gap:var(--cp-space-md)}.dashboard-stat-card{background:linear-gradient(#fffffff0,#f3f8f7d1);border-color:#8498ae24;position:relative;overflow:hidden}.dashboard-stat-card:after{border-radius:var(--cp-radius-badge);content:"";background:#2f6f9214;width:42px;height:42px;position:absolute;bottom:16px;right:18px}.stat-card span{color:#6b7a8e;font-size:13px;display:block}.stat-card strong{color:#122033;margin:10px 0 8px;font-size:32px;display:block}.dashboard-stat-meta{color:var(--cp-text-muted);font-weight:700}.dashboard-stat-value{color:var(--cp-text-strong)}.dashboard-stat-helper{max-width:280px}.stat-card p{color:#5d6b7e;margin:0}.shell-card{padding:22px}.shell-card__header h3{margin:0 0 6px;font-size:22px}.shell-card__header p{color:#607084;margin:0}.shell-card__body{margin-top:18px}.dashboard-card{border-color:#8498ae24}.dashboard-card--role .info-block{padding:var(--cp-space-md);background:#f6f9fcb8;border-radius:18px}.dashboard-snapshot-panel .shell-card__body{gap:var(--cp-space-md);flex-direction:column;display:flex}.dashboard-snapshot-grid{padding:var(--cp-space-md);background:#ffffff7a;border:1px solid #8498ae24;border-radius:22px}.dashboard-snapshot-row{background:linear-gradient(#fafcfcf5,#f0f6f8d1)}.dashboard-summary-grid{gap:var(--cp-space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.dashboard-summary-section{gap:var(--cp-space-md);display:grid}.dashboard-summary-header{gap:var(--cp-space-xs);display:grid}.dashboard-summary-header h2{color:var(--cp-text);letter-spacing:0;margin:0;font-size:1rem}.dashboard-summary-header p{color:var(--cp-text-muted);margin:0}.dashboard-summary-card{background:linear-gradient(#ffffffdb,#f4f8f9b8);border-color:#8498ae29;min-height:100%;margin-top:0}.dashboard-summary-card>strong,.dashboard-state-note>strong{margin-bottom:var(--cp-space-xs);color:var(--cp-text-strong);display:block}.dashboard-summary-card div+div,.dashboard-state-note div+div{margin-top:var(--cp-space-xs)}.dashboard-summary-card--reward{background:linear-gradient(#f4fbf7f0,#ffffffbd);border-color:#2f7d5533}.dashboard-summary-card--audit{background:linear-gradient(#f0f7fcf0,#ffffffbd);border-color:#2f6f9233}.dashboard-pet-summary{background:linear-gradient(#fffaf3f2,#f4f8f7bd);border-color:#9474402e}.dashboard-state-note{background:#fff9ece6;border-color:#94744033}.admin-list-page{gap:var(--cp-space-xl)}.admin-list-page__intro{background:linear-gradient(135deg,#fffffff0,#eff7f4db);border:1px solid #8498ae24}.admin-list-page__intro p,.admin-list-card .shell-card__header p{color:var(--cp-text-muted)}.admin-list-card{background:linear-gradient(#ffffffe6,#f4f8f9bd);border-color:#8498ae24}.admin-list-card .shell-card__body{gap:var(--cp-space-md);flex-direction:column;display:flex}.admin-list-card--mock{background:linear-gradient(#ffffffeb,#f0f7fcc2)}.admin-list-card--real{background:linear-gradient(#fffffff0,#f4f9f6c7)}.admin-list-card--boundary{background:#ffffff94;border-color:#50658029}.admin-list-items{gap:var(--cp-space-md);flex-direction:column;display:flex}.admin-list-items .placeholder-list{gap:var(--cp-space-md)}.admin-list-items .placeholder-row,.admin-list-item{background:linear-gradient(#fffffff5,#f4f8f9d6);border-color:#8498ae29}.admin-list-snapshot,.admin-list-affiliations{padding:var(--cp-space-md);background:#ffffff7a;border:1px solid #8498ae24;border-radius:22px}.admin-list-state-note{background:linear-gradient(135deg,#f0f7fcf2,#ffffffc7);border-color:#2f6f9233}.admin-list-state-note>strong{margin-bottom:var(--cp-space-xs);color:var(--cp-text-strong);display:block}.admin-list-fallback-note{background:linear-gradient(135deg,#fff9ecf0,#ffffffc7);border-color:#94641c3d}.account-page,.shared-pet-page{gap:var(--cp-space-xl)}.account-state-note,.shared-pet-state-note{margin-top:0}.shared-pet-snapshot{background:linear-gradient(#fffaf3f2,#f4f8f7bd);border-color:#9474402e}.shared-pet-detail-card .placeholder-list{gap:var(--cp-space-md)}.state-note--loading,.state-note--empty,.state-note--error{border-radius:16px}.state-note--loading{color:var(--cp-info);background:#eef7fce6;border-color:#2f6f9233}.state-note--empty{color:var(--cp-warning);background:#fff9ece6;border-color:#94641c33}.state-note--error{color:var(--cp-danger);background:#fff1eeeb;border-color:#a33a2b3d}.placeholder-list{flex-direction:column;gap:12px;display:flex}.placeholder-row{background:linear-gradient(#f7f9fbe6,#eff4f8c7);border:1px solid #93a3b824;border-radius:18px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;padding:16px;display:grid}.placeholder-row span{color:#718095;text-transform:capitalize;font-size:12px;display:block}.placeholder-row strong{color:#1d2a3b;margin-top:4px;display:block}.info-block{flex-direction:column;gap:6px;display:flex}.info-block strong{font-size:20px}.info-block p,.info-block small,.muted-paragraph{color:#617084;margin:0}.role-badge{border-radius:var(--cp-radius-badge);color:#304255;background:#eef3f7;align-items:center;min-height:32px;padding:7px 12px;font-size:12px;font-weight:700;display:inline-flex}.role-badge--platform_admin{color:#8a4d00;background:#ffedd2f0}.role-badge--school_admin{color:#1e6a4f;background:#daf0e6f0}.role-badge--teacher{color:#245b95;background:#dde8f7f5}.role-switcher{color:var(--cp-text-muted);flex-direction:column;gap:6px;font-size:12px;display:flex}.role-switcher select,.ghost-button,.login-role-button{background:#ffffffe0;border:1px solid #7c91a82e}.role-switcher select{min-width:180px;color:var(--cp-text);border-radius:14px;padding:10px 12px}.ghost-button{color:var(--cp-gated);border-radius:14px;padding:11px 16px;font-weight:700}.real-mode-notice{border-color:#8498ae2e}.real-mode-notice--loading{padding:var(--cp-space-sm) var(--cp-space-md);color:var(--cp-info);background:#eef7fcdb;border:1px solid #2f6f922e;border-radius:14px}.real-mode-notice--error{color:var(--cp-danger)}.login-shell{place-items:center;min-height:100vh;padding:32px;display:grid}.auth-page{background:linear-gradient(135deg,#fff3,#eef4f86b)}.login-card{background:#ffffffe0;border-radius:32px;width:min(920px,100%);padding:32px;box-shadow:0 24px 56px #4d5f781f}.auth-card{background:linear-gradient(#fffffff0,#f4f8f9d1);border:1px solid #8498ae24}.login-card h1{margin:10px 0;font-size:40px}.login-card p{color:#617084;max-width:720px;margin:0}.login-role-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:28px;display:grid}.login-role-button{text-align:left;border-radius:22px;flex-direction:column;align-items:flex-start;gap:12px;min-height:200px;padding:18px;transition:transform .18s,box-shadow .18s;display:flex}.login-role-button:hover{transform:translateY(-2px);box-shadow:0 16px 36px #4c5e761f}.auth-role-button{transition:transform .18s,box-shadow .18s,border-color .18s,background .18s}.auth-role-button:focus-visible{outline-offset:3px;outline:3px solid #2f6f9238}.auth-role-button:disabled{cursor:wait;opacity:.72;transform:none}.login-role-button__header{justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex}.login-role-button span,.login-role-button small{color:#607084}.real-login-box{flex-direction:column;gap:12px;margin-top:24px;display:flex}.real-login-box h2{margin:0;font-size:22px}.real-login-box p{margin:0}.auth-real-login{padding:var(--cp-space-lg);background:#ffffff85;border:1px solid #8498ae24;border-radius:22px}.auth-state-note{margin-top:var(--cp-space-lg)}.inline-notice{background:var(--cp-surface-muted);color:var(--cp-gated);border:1px solid #94a3b833;border-radius:12px;margin-top:14px;padding:12px 14px}.inline-notice--error{color:#9b2f22;background:#ffeceae6;border-color:#d2564340}.reward-quota-page{gap:var(--cp-space-xl)}.reward-quota-page .page-intro{border:1px solid #8396ab29;position:relative;overflow:hidden}.reward-quota-page .page-intro:after{content:"";pointer-events:none;background:radial-gradient(circle,#7da6912e,#0000 68%);border-radius:999px;width:150px;height:150px;position:absolute;bottom:24px;right:30px}.reward-quota-page .page-intro p,.reward-quota-page .shell-card__header p{color:var(--cp-text-muted)}.reward-quota-section{margin-top:var(--cp-space-lg)}.reward-quota-grid .placeholder-list,.reward-quota-grid{gap:var(--cp-space-md)}.reward-quota-context-grid,.reward-quota-form-grid,.reward-quota-commit-panel,.reward-quota-recent-list{padding:var(--cp-space-md);background:#ffffff7a;border:1px solid #8498ae24;border-radius:22px}.reward-quota-card,.reward-quota-recent-item{background:linear-gradient(#fffffff2,#f6fafad1);border-color:#7d91a82e}.reward-quota-card--gated{background:linear-gradient(#f8fafcf5,#eef4f8d6);border-color:#50658038}.reward-quota-control-notice,.reward-quota-fallback-notice,.reward-quota-section--recent,.reward-quota-action-row--audit{background:linear-gradient(135deg,#f3f8f8f2,#fffaf3d1);border-color:#5065802e}.reward-quota-section--recent>strong,.reward-quota-control-notice>strong,.reward-quota-fallback-notice>strong{margin-bottom:var(--cp-space-xs);color:var(--cp-text-strong);display:block}.reward-quota-form-grid select,.reward-quota-form-grid input,.reward-quota-commit-panel input{width:100%;min-height:42px;color:var(--cp-text);background:#ffffffe0;border:1px solid #7c91a838;border-radius:13px;padding:9px 11px}.reward-quota-form-grid button,.reward-quota-commit-panel button{min-height:42px;color:var(--cp-info);background:#f0f7faf0;border:1px solid #2f6f9247;border-radius:13px;padding:9px 14px;font-weight:700}.reward-quota-form-grid button:disabled{color:var(--cp-text-muted);cursor:not-allowed;background:#eef3f7b8;border-color:#7c91a82e}.reward-quota-result-panel{background:#ffffffe6;border-width:1px;border-radius:18px}.reward-quota-result-panel>strong{margin-bottom:var(--cp-space-xs);color:var(--cp-text-strong);display:block}.reward-quota-result-panel--success{background:#eff9f4e6;border-color:#2f7d5547}.reward-quota-result-panel--info{background:#eef7fceb;border-color:#2f6f9242}.reward-quota-result-panel--warning{background:#fff8ebeb;border-color:#94641c42}.reward-quota-result-panel--error{background:#fff1eeeb;border-color:#a33a2b3d}.reward-quota-recent-list{margin-top:var(--cp-space-md)}.reward-quota-recent-item{grid-template-columns:minmax(180px,1.2fr) minmax(180px,1.2fr) repeat(auto-fit,minmax(145px,1fr))}.reward-quota-meta-row{padding:var(--cp-space-sm);background:#f6f9fcb8;border-radius:14px}.reward-quota-meta-row span+span,.reward-quota-meta-row strong+span{margin-top:var(--cp-space-xs);color:var(--cp-text-muted);text-transform:none}.reward-quota-action-row{align-items:flex-start;gap:var(--cp-space-sm);flex-wrap:wrap;display:flex}.reward-quota-action-row--audit{flex-direction:column;align-items:flex-start}.reward-quota-page .ghost-button{color:var(--cp-gated);background:#ffffffb8;border-color:#50658042;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.reward-quota-page .ghost-button:hover{color:var(--cp-info);background:#eff7fbeb;border-color:#2f6f9257}.audit-logs-page{gap:var(--cp-space-xl)}.audit-logs-page .page-intro{background:linear-gradient(135deg,#fffffff0,#f0f6f7db);border:1px solid #8396ab29}.audit-logs-page .page-intro p,.audit-logs-page .shell-card__header p{color:var(--cp-text-muted)}.audit-logs-section{margin-top:var(--cp-space-lg)}.audit-logs-card,.audit-logs-context-panel,.audit-logs-detail-panel{padding:var(--cp-space-md);background:#ffffff80;border:1px solid #8498ae24;border-radius:22px}.audit-logs-section--recent{background:linear-gradient(135deg,#f4f8f8f2,#fffbf4c7)}.audit-logs-recent-list{gap:var(--cp-space-md)}.audit-logs-recent-item,.audit-logs-detail-card,.audit-logs-context-card{background:linear-gradient(#fffffff2,#f7fafad1);border-color:#7d91a82e}.audit-logs-recent-item{grid-template-columns:minmax(210px,1.2fr) minmax(160px,.9fr) repeat(auto-fit,minmax(145px,1fr))}.audit-logs-recent-item--requested{border-color:#94641c47;box-shadow:inset 4px 0 #94641c6b}.audit-logs-detail-panel{gap:var(--cp-space-md);background:linear-gradient(#fafcfcf5,#f0f6f8d1)}.audit-logs-detail-header h4{color:var(--cp-text-strong);margin:0;font-size:20px}.audit-logs-detail-card{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.audit-logs-detail-card--reward{background:linear-gradient(#fffffff5,#f6faf7d6)}.audit-logs-meta-row{min-width:0;padding:var(--cp-space-sm);background:#f6f9fcbd;border-radius:14px}.audit-logs-meta-row--event{background:#eef7fce6}.audit-logs-meta-row--requested{background:#fff8ebeb;border:1px solid #94641c38}.audit-logs-meta-row span,.audit-logs-action-row span{color:var(--cp-text-muted);text-transform:none}.audit-logs-meta-row strong{color:var(--cp-text-strong);overflow-wrap:anywhere}.audit-logs-meta-row code,.audit-logs-selected-notice code{max-width:100%;margin-top:var(--cp-space-xs);color:var(--cp-gated);overflow-wrap:anywhere;background:#e8eef4db;border-radius:9px;padding:3px 7px;font-size:12px;display:inline-block}.audit-logs-action-row,.audit-logs-copy-row{align-items:flex-start;gap:var(--cp-space-sm);flex-wrap:wrap;display:flex}.audit-logs-action-row{padding:var(--cp-space-sm);background:#f6f9fcb8;border-radius:14px;flex-direction:column;justify-content:space-between}.audit-logs-page .ghost-button{color:var(--cp-gated);background:#ffffffb8;border-color:#5065803d;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.audit-logs-page .ghost-button:hover{color:var(--cp-info);background:#eff7fbeb;border-color:#2f6f9257}.audit-logs-copy-button{min-height:34px;padding:7px 11px}.audit-logs-copy-status{color:var(--cp-text-muted);align-self:center}.audit-logs-state-note{margin-top:var(--cp-space-md);background:linear-gradient(135deg,#f3f8f8f2,#fffaf3d1);border-color:#5065802e}.audit-logs-state-note>strong{margin-bottom:var(--cp-space-xs);color:var(--cp-text-strong);display:block}.audit-logs-selected-notice{justify-content:space-between;align-items:flex-start;gap:var(--cp-space-md);flex-wrap:wrap;display:flex}.audit-logs-state-note--loading{padding:var(--cp-space-md);background:#eef7fce6;border:1px solid #2f6f9233;border-radius:16px}.audit-logs-state-note--error{background:0 0;padding:0}.audit-logs-state-note--error .inline-notice{background:#fff1eeeb;border-color:#a33a2b3d}.audit-logs-safe-summary{background:#eef7fceb;border-color:#2f6f923d}.audit-logs-context-panel{background:#ffffff6b}.audit-logs-context-note{background:#f6f9fce6}.audit-logs-membership-list .placeholder-list{padding:var(--cp-space-md);background:#ffffff6b;border:1px solid #8498ae24;border-radius:22px}
