:root{--primary:#15594f;--secondary:#103f38;--accent:#e4c17a;--primary-fg:#fff;--body-fg:#193d36;--body-bg:#f4f5ef;--header-bg:#103f38;--header-color:#fff;--link-fg:#176254;--link-selected-fg:#174a41;--breadcrumbs-bg:#e7ede7;--breadcrumbs-fg:#52675f;--breadcrumbs-link-fg:#174a41;--darkened-bg:#edf0e9;--selected-bg:#edf1e8;--selected-row:#edf1e8;--border-color:#dfe5db;--hairline-color:#e6e9e2;--button-bg:#15594f;--button-hover-bg:#103f38;--default-button-bg:#15594f;--default-button-hover-bg:#103f38;--close-button-bg:#687b71;--delete-button-bg:#a04435;--delete-button-hover-bg:#823326;--object-tools-bg:#3e675a;--font-family-primary:'Microsoft YaHei','PingFang SC',sans-serif}
html[data-theme=dark]{--body-bg:#f4f5ef;--body-fg:#193d36;--darkened-bg:#edf0e9;--border-color:#dfe5db;--hairline-color:#e6e9e2;--link-fg:#176254;--object-tools-bg:#3e675a;--header-bg:#103f38;--primary:#15594f;--secondary:#103f38;--link-hover-color:#103f38}
body{font-family:var(--font-family-primary);font-size:14px}#header{height:auto;padding:20px 30px;gap:18px}#branding h1{margin:0}.brand{display:flex;align-items:center;gap:12px;color:#fff!important;font-size:24px;font-weight:600;letter-spacing:2px}.brand-icon{display:grid;place-items:center;border:1px solid #d4bc80;width:40px;height:44px;color:#e4c17a;font-family:serif;font-size:30px}.brand small{display:block;font-size:10px;letter-spacing:1px;color:#ccdcd3;margin-top:6px}#user-tools{font-size:12px;line-height:2}#user-tools a,#user-tools button{border:0!important;color:#fff!important}#content{padding:30px;min-width:0}.main{min-width:0}.main.shifted>#nav-sidebar{margin-left:0}.campus-nav{flex:0 0 208px;width:208px;box-sizing:border-box;background:#fffef9;border-right:1px solid #e0e5db;padding:28px 16px;position:sticky;top:0;height:calc(100vh - 85px);overflow:auto}.campus-nav a{display:block;padding:12px 10px;border-radius:7px;font-size:13px;font-weight:600}.campus-nav a:hover{background:#eaf0e7}.nav-caption{color:#89948a;font-size:11px;letter-spacing:2px;margin:9px 10px 12px}.nav-caption:not(:first-child){margin-top:27px}.campus-nav details{margin-top:24px;font-size:12px}.campus-nav details a{font-size:12px;padding:8px}.nav-foot{border-top:1px solid #e2e5dd;color:#8a968c;font-size:10px;line-height:2;margin:28px 10px 0;padding-top:20px}.toggle-nav-sidebar{display:none}.workbench{max-width:1440px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:0 0 28px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:bold;color:#a18a50;margin:0 0 10px}h1{font-size:27px;line-height:1.5;font-weight:600;color:#153f34;margin:0 0 8px}.page-heading p:not(.eyebrow){color:#78857a;margin:0;font-size:13px}.date-label{white-space:nowrap;font-size:12px;color:#778276}h2{font-size:16px;font-weight:600;color:#244c3e;margin:0 0 16px}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:22px}.metric{background:#fffef9;border:1px solid #e4e8dc;border-radius:12px;padding:22px;position:relative}.metric:first-child{background:#15594f;color:white}.metric span{display:block;font-size:12px;color:#78877b}.metric:first-child span,.metric:first-child small{color:#cedfd4}.metric strong{display:block;font-size:36px;line-height:1.5;font-weight:500;letter-spacing:-1px}.metric small{color:#8a9489;font-size:11px}.dashboard-columns{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:22px;margin-bottom:22px}.panel{background:#fffef9;border:1px solid #e2e7dc;border-radius:12px;padding:24px;min-width:0;margin-bottom:22px;box-shadow:0 3px 12px #213e3003}.dashboard-columns>.panel{margin-bottom:0}.panel-heading{display:flex;justify-content:space-between;align-items:start;gap:12px;margin-bottom:18px}.panel-heading h2{margin-bottom:4px}.panel-heading p{font-size:11px;color:#8a9589;margin:0}.panel-heading a{font-size:11px}.subtle{color:#7f8a7d;font-size:12px}.period-tabs{display:flex;background:#eef1e9;padding:3px;border-radius:7px;white-space:nowrap}.period-tabs a{padding:6px 10px;border-radius:5px;font-size:11px}.period-tabs a.active{background:#15594f;color:#fff}.trend-summary{font-size:12px;color:#798979}.trend-summary b{color:#325947}.chart-scroll{overflow-x:auto}.bar-chart{display:flex;align-items:end;justify-content:space-around;gap:8px;min-width:310px;height:190px;padding:5px 0 15px;border-bottom:1px solid #e5e8df}.bar-column{flex:1;text-align:center;font-size:10px;color:#8b9489;min-width:20px}.bar-track{height:135px;display:flex;align-items:end;justify-content:center;margin:8px 0}.bar-track>span{width:min(32px,75%);background:#51866c;border-radius:4px 4px 0 0;min-height:1px}.bar-value{font-size:11px;color:#2c5842}.chart-30{min-width:950px}.data-details{margin-top:15px}.data-details summary,details summary{cursor:pointer;color:#496850;font-size:12px;padding:8px 0}.data-details table{width:100%}.data-details th,.data-details td{font-size:12px}.footnote{color:#8a9387;font-size:11px;line-height:1.8;margin:16px 0 0}.todo-list a{display:flex;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid #edf0e8;color:#395646;font-size:13px}.todo-list a>span:first-child{flex:1}.todo-list b{background:#f0f2e9;padding:3px 9px;border-radius:6px;color:#889081;font-size:14px}.todo-list b.has-count{background:#fbefd1;color:#9b752e}.panel-tip{background:#f3f3e9;color:#7e8167;border-radius:7px;font-size:11px;line-height:1.9;padding:13px;margin-top:20px;overflow-wrap:anywhere}.rank-list{padding:0;list-style:none;margin:0;counter-reset:rank}.rank-list li{display:flex;gap:12px;align-items:center;border-bottom:1px solid #ecefe5;padding:14px 0;counter-increment:rank;font-size:12px}.rank-list li:before{content:counter(rank,decimal-leading-zero);color:#b7a05e;font-size:12px}.rank-list a{flex:1;overflow-wrap:anywhere}.rank-list b{color:#7f8b7a;font-size:11px;white-space:nowrap}.empty-note{color:#8a9486;font-size:12px;line-height:1.9;padding:14px 0}.activity-list>a,.log-row{display:flex;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid #ecefe5;font-size:12px}.activity-list b{display:block;font-size:12px;font-weight:500}.activity-list small{display:block;color:#8b9687;font-size:10px;margin-top:6px}.log-row time{font-size:10px;color:#929b8d;white-space:nowrap}.status-badge{display:inline-block;font-size:11px;padding:4px 9px;border-radius:5px;background:#edf0e7;color:#687b66;white-space:nowrap;align-self:start}.status-PENDING_REVIEW{background:#fbefcf;color:#997322}.status-PUBLISHED{background:#e4f0e4;color:#3a7351}.status-REJECTED,.status-PROCESS_FAILED,.status-TAKEN_DOWN{background:#f9e9e0;color:#a15d42}.filter-bar{display:flex;gap:16px;align-items:end;background:#fffef9;padding:20px;border:1px solid #e2e7dc;border-radius:10px;flex-wrap:wrap}.filter-bar label{font-size:12px;display:flex;flex-direction:column;gap:8px}.filter-bar input,.filter-bar select{padding:10px;border:1px solid #d9e0d2;border-radius:6px;background:#fff}.button,button,input[type=submit]{font-family:inherit;border:0;border-radius:6px;background:#15594f;color:white;padding:11px 17px;cursor:pointer;font-size:12px;line-height:1.5}.button.secondary{background:#e9eee3;color:#44603f;display:inline-block}.review-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:20px 0}.review-card{background:#fffef9;border:1px solid #e2e7dc;border-radius:12px;padding:22px;color:#2e4c38;display:block}.review-card:hover{border-color:#719a79;box-shadow:0 5px 16px #234f3410}.review-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.file-icon{border:1px solid #d3ddc9;padding:8px;color:#99a683;font-family:serif}.review-card h2{font-size:16px;margin-bottom:12px;line-height:1.6}.review-card p{font-size:11px;color:#8b9583}.review-card-bottom{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #ecede5;padding-top:16px;margin-top:20px;gap:8px;font-size:11px}.review-card-bottom small{display:block;color:#929a8a;margin-top:7px}.review-card-bottom b{font-size:11px;color:#376d49}.pagination{display:flex;justify-content:center;gap:25px;padding:20px;font-size:12px}.back-link{display:block;margin-bottom:22px;font-size:12px}.review-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr);gap:22px}.preview-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:20px}.preview-grid figure{margin:0;min-width:0}.preview-grid img{display:block;width:100%;border:1px solid #e1e5d9;box-sizing:border-box;max-height:400px;object-fit:contain;background:#efefe6}.preview-grid figcaption{font-size:10px;color:#8b9686;text-align:center;margin-top:8px}.empty-state{grid-column:1/-1;text-align:center;padding:40px 16px;color:#8b9686}.detail-grid{display:grid;grid-template-columns:110px minmax(0,1fr);gap:14px;font-size:12px;margin-top:25px}.detail-grid dt{color:#899580}.detail-grid dd{margin:0;overflow-wrap:anywhere}.pre-wrap{white-space:pre-wrap;font-size:13px;line-height:1.9}.decision-panel label{display:block;font-size:12px;color:#697e60;margin:20px 0 10px}.decision-panel textarea{width:100%;box-sizing:border-box;font:12px/1.8 inherit;padding:12px;border:1px solid #dce3d2;border-radius:6px;resize:vertical;background:#fffefb;color:#25462c}.decision-buttons{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}.danger{background:#a25e45}.error-note,.warning-note{background:#fbece0;padding:12px;font-size:12px;color:#9a6647;line-height:1.8;overflow-wrap:anywhere}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;background:#f0f2ea;padding:12px}.module{background:#fffef9}.module h2,.module caption,.inline-group h2{background:#2f6553}#changelist-filter{background:#fffef9!important}#changelist .results{overflow-x:auto}form .aligned p.help,form .aligned div.help{color:#7c8878}.breadcrumbs{padding:12px 30px!important}#content-related{display:none}.theme-toggle{display:none!important}
@media(min-width:1500px){.stats-grid{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media(max-width:1100px){.campus-nav{width:175px;flex-basis:175px;padding:22px 10px}#content{padding:24px 18px}.dashboard-columns{grid-template-columns:1fr}.review-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.review-layout{grid-template-columns:1fr}.page-heading{flex-wrap:wrap}.stats-grid{gap:10px}.metric{padding:18px}.metric strong{font-size:30px}}
@media(max-width:767px){#header{padding:16px;align-items:start}#user-tools{margin:0;text-align:left;width:auto}.brand{font-size:21px}.main{display:block}.campus-nav{position:static;width:100%;height:auto;display:flex;gap:4px;flex-wrap:wrap;padding:10px 12px;border-bottom:1px solid #dde3d6}.campus-nav>a{font-size:11px;padding:8px}.nav-caption,.nav-foot,.campus-nav details{display:none}#content{padding:22px 14px}.page-heading{margin-bottom:22px;gap:14px}h1{font-size:22px}.page-heading p:not(.eyebrow){font-size:12px;line-height:1.8}.date-label{font-size:10px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.metric{padding:16px 12px}.metric strong{font-size:29px}.metric small{font-size:9px;line-height:1.7;display:block}.metric span{font-size:11px}.panel{padding:18px 14px}.dashboard-columns{gap:16px;margin-bottom:16px}.panel-heading{gap:8px}.panel-heading h2,h2{font-size:15px}.period-tabs a{padding:6px 8px;font-size:10px}.review-grid{grid-template-columns:1fr}.review-card{padding:20px}.review-layout{display:block}.preview-grid{grid-template-columns:1fr}.preview-grid img{max-height:520px}.filter-bar{padding:16px;gap:12px}.filter-bar label{width:100%}.filter-bar input,.filter-bar select{box-sizing:border-box;width:100%}.decision-buttons button{flex:1;min-width:120px}.activity-list>a{align-items:start}.activity-list b{max-width:210px;line-height:1.7}.rank-list li{line-height:1.8}.detail-grid{grid-template-columns:90px minmax(0,1fr)}.breadcrumbs{padding:12px 14px!important}.submit-row{display:flex;flex-wrap:wrap;gap:8px}.aligned label{padding-bottom:8px}#changelist-filter{position:static!important;width:auto!important;margin:12px 0!important}#changelist.filtered .results,#changelist.filtered .paginator,#changelist.filtered #toolbar,#changelist.filtered .actions{margin-right:0!important;width:auto!important}}
/* Django uses an ID-qualified flex container; override it explicitly on phones. */
@media(max-width:767px){#container>.main{display:block}#container>.main>.content{width:100%;max-width:100%;min-width:0;box-sizing:border-box}.campus-nav{flex:none;width:100%;max-height:none;align-content:flex-start;justify-content:flex-start}.campus-nav>a{flex:0 0 auto;line-height:1.5}.stats-grid{width:100%;box-sizing:border-box}.chart-scroll{max-width:100%;width:100%;overscroll-behavior-x:contain}.bar-chart{min-width:310px}.chart-30{min-width:950px}.workbench{width:100%;min-width:0}}
.filter-bar select,.filter-bar input{height:auto;min-height:42px;line-height:1.5;box-sizing:border-box}.filter-bar select{padding:8px 30px 8px 10px}
.review-layout>*{min-width:0}.review-layout .pre-wrap{overflow-wrap:anywhere}
.review-group-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0 0 14px;max-width:960px}.review-group-tab{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 14px;padding:20px 24px;background:#fffef9;border:1px solid #dce3d4;border-top:3px solid #b8a16a;border-radius:8px;color:#365c47!important}.review-group-tab.active{background:#e8eee1;border-color:#6c8c61;box-shadow:inset 0 -2px #69875c}.review-group-tab>span{font-size:18px;font-weight:600;align-self:center}.review-group-tab>strong{font-size:29px;line-height:1.2;font-weight:500}.review-group-tab>small{grid-column:1/-1;font-size:12px;color:#74836a;line-height:1.7}.review-group-links{display:flex;flex-wrap:wrap;gap:12px 24px;margin:0 0 24px;font-size:12px;line-height:1.8}.review-group-links a[aria-current=page]{font-weight:700;border-bottom:2px solid #8c9f73}.review-group-links b{font-weight:600;margin-left:5px}.review-card h2{overflow-wrap:anywhere}
@media(max-width:767px){.review-group-tabs{gap:10px}.review-group-tab{padding:16px 12px;gap:8px}.review-group-tab>span{font-size:16px}.review-group-tab>strong{font-size:25px}.review-group-tab>small{font-size:11px}.review-group-links{gap:10px 17px;margin-bottom:20px}}

.legacy-image-note{font-size:11px!important;color:#8b7646!important;line-height:1.8;background:#f3efdf;border-left:2px solid #b8a16a;padding:7px 10px}
.owner-heading-actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.administrator-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(310px,1fr);gap:22px;align-items:start}.administrator-list{display:flex;flex-direction:column;gap:14px}.administrator-card{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;border:1px solid #e1e6d9;border-radius:8px;padding:18px}.administrator-identity{min-width:0}.administrator-identity h3{margin:0 0 6px;font-size:15px;overflow-wrap:anywhere}.administrator-identity p{font-size:12px;line-height:1.8;color:#74816e;margin:0;overflow-wrap:anywhere}.administrator-state{display:flex;flex-direction:column;gap:8px;align-items:flex-end}.administrator-state small{font-size:11px;color:#77836f}.administrator-readonly{grid-column:1/-1;color:#7f826b;font-size:11px;line-height:1.8;margin:0;padding-top:10px;border-top:1px solid #e8eadf}.administrator-revoke{grid-column:1/-1;margin:0;padding-top:8px}.administrator-revoke button.secondary{background:#edf0e7;color:#526943}.administrator-form form{display:flex;flex-direction:column;gap:16px;margin-top:20px}.administrator-form label{display:flex;flex-direction:column;gap:8px;font-size:12px;color:#526b47}.administrator-form input{box-sizing:border-box;width:100%;min-height:44px;max-width:100%;font:14px/1.6 inherit;color:#244b37;background:#fffefa;border:1px solid #d5decb;border-radius:5px;padding:9px 11px}.administrator-form input:focus-visible{outline:2px solid #a38b50;outline-offset:2px}.administrator-form button{align-self:flex-start}.administrator-form .errorlist{margin:0;padding-left:18px;font-size:12px;line-height:1.8;color:#a04d38;overflow-wrap:anywhere}.administrator-password-help{font-size:11px;color:#7b876f;line-height:1.8}.administrator-password-help ul{padding-left:18px;margin:0}.administrator-form .subtle{line-height:1.8}.administrator-workbench>*{min-width:0}
@media(max-width:1100px){.administrator-layout{grid-template-columns:1fr}.administrator-layout>.panel{margin-bottom:0}}@media(max-width:767px){.administrator-layout{gap:18px}.administrator-card{padding:15px;gap:10px}.administrator-state .status-badge{font-size:10px}.administrator-state small{font-size:10px}.administrator-form input{font-size:16px}.administrator-form button{width:100%;min-height:44px}.owner-heading-actions{gap:12px}.administrator-revoke button{min-height:44px;white-space:normal}.administrator-readonly{font-size:11px}}

.review-reason-tags{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.review-reason-tag{display:inline-block;max-width:100%;box-sizing:border-box;padding:4px 8px;border:1px solid #e4d3ac;border-radius:5px;background:#fbf2de;color:#87672e;font-size:11px;line-height:1.6;white-space:normal;overflow-wrap:anywhere}
