:root{color-scheme:light;--ink:#243e36;--muted:#708476;--green:#13766d;--deep:#123f36;--line:#dce6da;--paper:#f7f8f2}
.admin-header-actions{display:flex;align-items:center;gap:20px;margin-left:auto}.admin-logout{min-height:40px;padding:8px 12px;border:1px solid #b9cbbb;border-radius:5px;background:transparent;color:#285c48;font-size:12px;white-space:nowrap}@media(max-width:600px){.admin-header-actions{gap:12px;flex-wrap:wrap;justify-content:flex-end}.admin-logout{font-size:11px;padding:6px 9px}.admin-header{gap:12px}.admin-header .brand-name{font-size:22px}}
*{box-sizing:border-box}html{scroll-padding-top:110px;scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Microsoft YaHei","PingFang SC",sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid #80b7a6;outline-offset:3px}[hidden]{display:none!important}.skip-link{position:fixed;top:-80px;left:16px;padding:12px;background:white;z-index:10}.skip-link:focus{top:10px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.admin-header{min-height:82px;padding:16px max(28px,calc((100vw - 1440px)/2));display:flex;align-items:center;gap:32px;border-bottom:1px solid var(--line);background:#fffefa;position:sticky;top:0;z-index:5}.brand{display:flex;align-items:center;gap:12px}.brand>span{width:44px;height:44px;border-radius:13px;background:var(--green);color:white;display:grid;place-items:center;font:27px "Songti SC",SimSun,serif}.brand strong{font:700 27px "Songti SC",SimSun,serif;letter-spacing:4px}.brand small{display:block;font:8px/1.3 sans-serif;letter-spacing:2.5px;color:#93a294;margin-top:4px}.header-label{font-size:12px;color:#6c8573;padding-left:28px;border-left:1px solid var(--line)}.back-link{margin-left:auto;color:var(--green);font-size:13px;white-space:nowrap}.admin-shell{max-width:1440px;margin:auto;display:grid;grid-template-columns:215px minmax(0,1fr);gap:52px;padding:40px 28px 20px}.admin-sidebar{position:sticky;top:128px;align-self:start;padding:12px 0}.eyebrow{font:700 10px/1.7 sans-serif;letter-spacing:2px;color:var(--green)}.admin-sidebar h1{font:30px/1.5 "Songti SC",SimSun,serif;letter-spacing:2px;margin:20px 0 12px}.admin-sidebar>p{font-size:12px;color:var(--muted);line-height:1.8}.admin-sidebar nav{display:grid;gap:9px;margin-top:30px}.admin-sidebar nav a{padding:13px 15px;border:1px solid var(--line);border-radius:7px;font-size:13px;background:#eef3e8;color:#40664c}.sidebar-note{border-top:1px solid var(--line);margin-top:35px;padding-top:25px}.sidebar-note strong{font-size:12px;color:#71896d}.sidebar-note p{font-size:12px;color:#7d8f78;line-height:1.9}.admin-main{min-width:0}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:10px 0 16px}.page-heading h2{font:34px/1.4 "Songti SC",SimSun,serif;letter-spacing:2px;margin:9px 0}.page-heading p{font-size:13px;line-height:1.9;color:var(--muted);margin:0}.admin-badge{font-size:11px;color:#5f805d;white-space:nowrap;border:1px solid #cdddc6;border-radius:30px;padding:8px 12px;background:#eef4e8}.notice{font-size:13px;line-height:1.9;color:var(--green);margin:14px 0;min-height:0}.notice:empty{display:none}.notice.error{color:#a24940}.identity-strip{border-radius:12px;background:var(--deep);padding:23px 28px;display:flex;justify-content:space-between;gap:20px;align-items:center;color:white;margin:23px 0}.identity-strip>div{display:grid;gap:9px}.identity-strip span{font-size:11px;letter-spacing:1px;color:#a7c3aa}.identity-strip strong{font:14px ui-monospace,monospace;font-weight:500}.identity-strip p{font-size:12px;color:#a8c5b2;line-height:1.9}.panel{border:1px solid var(--line);background:#fffefa;border-radius:13px;padding:27px 30px;margin:25px 0}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px}.section-heading>div{display:flex;align-items:center;gap:12px}.section-heading h3{font-size:18px;font-weight:600;letter-spacing:.5px;margin:0}.section-index{font:12px ui-monospace,monospace;color:#91a487}.quiet-label{font-size:11px;color:#82967a}.section-description{font-size:13px;color:var(--muted);line-height:1.9;margin:0 0 24px}.generate-form{display:grid;grid-template-columns:minmax(0,1fr) 110px 185px;gap:18px;align-items:start}.generate-form>div,.user-form>div,.grant-row>div{display:grid;gap:9px}label{font-size:13px;font-weight:600}input,select{height:45px;padding:0 12px;border:1px solid #cbdcc5;border-radius:7px;background:#fbfcf8;color:var(--ink);width:100%;min-width:0}input::placeholder{color:#9fae98}.generate-form small{font-size:11px;color:#829377}.button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:10px 17px;border-radius:7px;font-size:13px;font-weight:600;border:1px solid}.primary{background:var(--green);border-color:var(--green);color:white}.primary:hover:not(:disabled){background:#0d6159}.secondary{color:#407151;background:#f0f5e9;border-color:#cbdec9}.danger{color:#a0584d;background:#fff9f3;border-color:#e6cbbf}.generate-form>.button{margin-top:26px}.text-button{border:0;background:none;color:var(--green);padding:6px 0;font-size:12px;white-space:nowrap}.new-codes{padding:20px;background:#f0f5e8;border:1px solid #cedfc4;border-radius:9px;margin-top:22px}.new-codes h4,.list-heading h4{margin:0;font-size:14px}.new-codes p{font-size:12px;color:#698260;line-height:1.8}.new-codes textarea{width:100%;resize:vertical;border:1px solid #c5d7bb;border-radius:6px;padding:12px;background:#fffefa;font:13px/1.8 ui-monospace,monospace;color:var(--deep);margin:0 0 12px}.list-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:31px 0 13px}.table-wrap{width:100%;overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap;font-size:12px}th{background:#f6f8f0;color:#7a8c71;font-size:11px;font-weight:500;padding:13px 12px;border-top:1px solid #e2e9d9}td{padding:15px 12px;border-bottom:1px solid #e9eee1;color:#627b60}.code-hint{font-family:ui-monospace,monospace;color:#325b4a}.state{display:inline-block;padding:4px 7px;border-radius:4px;background:#f0f1e9;color:#8b9980;font-size:11px}.state.ready{background:#e9f2e1;color:#5a8152}.revoke-code{color:#a16b55}.small-note{font-size:12px;color:#7d9074;line-height:1.9;margin-bottom:0}.empty-note{color:#7d9276;font-size:13px;padding:15px 0}.user-form{display:grid;grid-template-columns:minmax(0,360px) 135px;gap:16px;align-items:end}.user-result{background:#f6f9ef;border:1px solid #d6e3cd;padding:22px;border-radius:9px;margin-top:22px}.selected-user{display:flex;gap:45px}.selected-user>div{display:grid;gap:9px}.selected-user span{font-size:11px;color:var(--muted)}.selected-user strong{font:14px ui-monospace,monospace;color:#325b4a}.user-result>p:not(.small-note){font-size:13px;color:#65805c;margin:20px 0;line-height:1.8}.grant-row{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.grant-row>div{flex:1;min-width:180px;max-width:270px}.grant-row>.button{white-space:nowrap}.demo-note{border-left:2px solid #bf9652;padding:9px 13px;background:#fbf6e8;color:#8a692e;font-size:12px;line-height:1.8}.denied h3{font-size:21px}.denied p{font-size:13px;color:var(--muted);line-height:1.9}.denied .button{margin-top:12px}footer{border-top:1px solid var(--line);padding:20px 0 0;display:flex;justify-content:space-between;font-size:10px;color:#9caa92}
@media(max-width:1100px){.admin-shell{grid-template-columns:175px minmax(0,1fr);gap:28px;padding:28px 23px}.admin-sidebar h1{font-size:26px}.panel{padding:24px}.generate-form{grid-template-columns:minmax(0,1fr) 100px}.generate-form>.button{grid-column:1/-1;justify-self:start;margin:0}.identity-strip{align-items:start;flex-direction:column;gap:0}.identity-strip p{margin-bottom:0}.grant-row{gap:10px}.grant-row>div{max-width:none;flex-basis:100%}}
@media(max-width:760px){html{scroll-padding-top:25px}.admin-header{position:static;padding:15px 18px;gap:15px}.brand strong{font-size:23px}.brand>span{height:39px;width:39px;font-size:24px}.header-label{display:none}.back-link{font-size:12px}.admin-shell{display:block;padding:22px 18px}.admin-sidebar{position:static;padding:0}.admin-sidebar h1,.admin-sidebar>p,.sidebar-note,.admin-sidebar>.eyebrow{display:none}.admin-sidebar nav{display:flex;gap:8px;margin:0 0 25px}.admin-sidebar nav a{font-size:12px;padding:10px 12px}.page-heading{align-items:start}.page-heading h2{font-size:28px}.page-heading p{font-size:12px}.admin-badge{padding:7px 9px;font-size:10px;margin-top:28px}.panel{padding:22px 19px;margin:20px 0}.section-heading{align-items:start;flex-wrap:wrap}.section-heading h3{font-size:16px}.quiet-label{margin-left:27px}.section-description{font-size:12px}.identity-strip{padding:21px}.generate-form{gap:13px;grid-template-columns:minmax(0,1fr) 85px}.generate-form>.button{width:100%}.new-codes{padding:16px}.new-codes>.section-heading{display:block}.new-codes .text-button{margin-top:10px}.user-form{grid-template-columns:1fr}.user-form>.button{justify-self:start}.selected-user{gap:20px;flex-wrap:wrap}.user-result{padding:18px}.grant-row .button{flex:1;min-width:130px}.small-note{font-size:11px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
/* Keep the admin actions close to their result and make the chosen duration explicit. */
.field-label{font-size:13px;font-weight:600}.type-choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.type-choice{min-height:80px;text-align:left;border:1px solid var(--line);border-radius:9px;background:#fbfcf8;color:var(--ink);padding:13px 14px;transition:border-color .16s,background .16s,box-shadow .16s}.type-choice strong{display:flex;align-items:center;justify-content:space-between;gap:9px;font-size:13px}.type-choice strong span{font:600 12px ui-monospace,monospace;color:var(--green);white-space:nowrap}.type-choice small{display:block;margin-top:9px;font-size:11px!important;line-height:1.6;color:var(--muted)}.type-choice[aria-pressed=true]{border-color:var(--green);background:#edf5ee;box-shadow:inset 0 0 0 1px var(--green)}.type-choice:hover:not(:disabled){border-color:#5b9a84}.generate-form{grid-template-columns:minmax(0,1fr) 100px;gap:16px 20px}.generate-form>.button{grid-column:1/-1;justify-self:start;margin-top:0;min-width:180px}.generate-form>div:nth-child(2){padding-top:0}.generate-form input{height:49px}.local-status{font-size:12px;min-height:0;margin:11px 0}.batch-label{font-weight:600;letter-spacing:.2px;color:var(--deep)!important}.copy-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.filter-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0 17px}.filter-row select{width:150px;height:39px;font-size:12px}.filter-row .notice{margin:0}.list-heading .small-note{margin-top:7px;font-size:11px}.state.redeemed{background:#edf2ed;color:#5c7061}.state.revoked{background:#f8eeea;color:#9b6655}.access-details{display:grid;grid-template-columns:1fr 1fr;gap:12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:15px 0 23px;padding:16px 0}.access-details div{display:grid;gap:8px}.access-details dt{font-size:11px;color:var(--muted)}.access-details dd{margin:0;font-size:13px;line-height:1.6}.grant-row>div{max-width:none;flex-basis:100%}.grant-row .type-choices{max-width:460px}.grant-row .type-choice{min-height:55px}.admin-confirm{width:min(520px,calc(100vw - 32px));padding:30px;border:1px solid var(--line);border-radius:16px;background:#fffefa;color:var(--ink);box-shadow:0 24px 90px #123f3630;max-height:calc(100dvh - 40px);overflow:auto}.admin-confirm::backdrop{background:#163c3466;backdrop-filter:blur(3px)}.admin-confirm h2{font:26px/1.5 "Songti SC",SimSun,serif;margin:14px 0}.admin-confirm>p{font-size:14px;line-height:1.95;color:#64776b;overflow-wrap:anywhere}.confirm-actions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:26px}.confirm-actions .button{min-height:46px}.admin-confirm[open]{animation:admin-confirm-in .16s ease-out}@keyframes admin-confirm-in{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1300px){.generate-form{grid-template-columns:minmax(0,1fr) 100px 170px;align-items:start}.generate-form>.button{grid-column:auto;margin-top:26px;min-width:0;height:80px}}
@media(max-width:760px){.type-choice{padding:12px 10px;min-height:82px}.type-choice strong{display:grid;gap:8px;font-size:12px}.type-choice small{font-size:10px!important}.generate-form{grid-template-columns:1fr 74px;gap:12px}.generate-form>.button{width:100%;justify-self:stretch}.filter-row{gap:10px}.filter-row .notice{flex-basis:100%}.list-heading{align-items:start}.table-wrap{overflow:visible}table,tbody{display:block;white-space:normal}thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}tbody{display:grid;gap:12px}tbody tr{display:grid;grid-template-columns:1fr 1fr;gap:0 12px;border:1px solid var(--line);border-radius:10px;background:#fbfcf7;padding:12px 14px}td{display:flex;flex-direction:column;gap:7px;border:0;padding:9px 0;min-width:0;overflow-wrap:anywhere;font-size:12px}td::before{content:attr(data-label);font-family:"Microsoft YaHei",sans-serif;font-size:10px;color:#7a8c71}td .state{align-self:start}td .text-button{align-self:start;min-height:30px;padding:0}td:nth-child(1){color:var(--deep);font-size:13px}.access-details{grid-template-columns:1fr;gap:15px}.grant-row .type-choice strong{display:flex}.admin-confirm{padding:24px}.admin-confirm h2{font-size:23px}.admin-confirm>p{font-size:13px}.confirm-actions{display:grid;grid-template-columns:1fr 1fr}.confirm-actions .button{font-size:12px;padding:10px}.copy-row{gap:5px}}
@media(prefers-reduced-motion:reduce){.type-choice{transition:none}.admin-confirm[open]{animation:none}}
