:root{color:#13221b;background:#f3f6f2;font-family:Inter,Microsoft YaHei,PingFang SC,system-ui,sans-serif;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}.page-shell{width:min(1420px,calc(100% - 40px));margin:0 auto;padding:52px 0}.login-card{width:min(460px,100%);margin:8vh auto 0;padding:42px;background:#fff;border:1px solid #dfe8df;border-radius:22px;box-shadow:0 24px 70px #2345311a}.brand-mark{display:grid;place-items:center;width:46px;height:46px;color:#fff;background:#176b42;border-radius:14px;font-size:24px;font-weight:800}.eyebrow{margin:20px 0 6px;color:#347355;font-size:12px;font-weight:800;letter-spacing:.14em}h1,h2{margin:0;letter-spacing:-.03em}h1{font-size:clamp(28px,4vw,40px)}h2{font-size:20px}.subtle{margin:8px 0 0;color:#6b786f;line-height:1.6}.stack-form{display:grid;gap:18px;margin-top:30px}label{display:grid;gap:8px;color:#405147;font-size:14px;font-weight:700}input{width:100%;padding:12px 14px;color:#13221b;background:#fafcf9;border:1px solid #cfdacf;border-radius:10px;outline:none}input:focus{border-color:#1f8050;box-shadow:0 0 0 3px #1f80501f}.primary-button,.secondary-button,.text-button{border:0;border-radius:10px;padding:12px 18px;font-weight:800}.primary-button{color:#fff;background:#176b42}.primary-button:hover{background:#105834}.secondary-button{color:#24563b;background:#e7f0e9}.text-button{color:#58675e;background:transparent}.form-error{min-height:22px;margin:14px 0 0;color:#b42318;font-size:14px}.dashboard{display:grid;gap:24px}.dashboard-header,.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.dashboard-header .eyebrow{margin-top:0}.header-actions,.dialog-actions{display:flex;gap:10px}.create-card,.list-card{background:#fff;border:1px solid #dde6dd;border-radius:18px;box-shadow:0 12px 35px #2345310e}.create-card{display:flex;align-items:end;justify-content:space-between;gap:30px;padding:26px}.create-form{display:grid;grid-template-columns:minmax(280px,410px) minmax(220px,360px) auto;align-items:end;gap:14px}.day-presets{display:flex;flex-wrap:wrap;gap:6px}.day-presets button{padding:5px 8px;color:#2d6548;background:#edf5ef;border:1px solid #cfe0d3;border-radius:6px;font-size:12px}.list-card{padding:26px}.operation-message{color:#347355;font-size:14px}.table-wrap{margin-top:22px;overflow-x:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}th,td{padding:15px 12px;border-bottom:1px solid #edf1ed;text-align:left;font-size:14px}th{color:#68766d;font-size:12px;letter-spacing:.04em;text-transform:uppercase}td code{color:#24563b;font-size:12px}.status-badge{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800}.status-active{color:#176b42;background:#e2f4e8}.status-inactive{color:#685a24;background:#f8f0cf}.status-revoked{color:#a32c24;background:#fde9e7}.status-expired{color:#5d6260;background:#ecefee}.actions-cell{display:flex;gap:7px}.table-action{padding:6px 8px;color:#176b42;background:transparent;border:1px solid #bdd3c3;border-radius:7px;font-size:12px;font-weight:700}.table-action.danger{color:#a32c24;border-color:#ecc6c2}.empty-state{padding:50px 20px;color:#758078;text-align:center}.key-dialog{width:min(520px,calc(100% - 32px));padding:32px;border:0;border-radius:18px;box-shadow:0 28px 90px #081c1147}.key-dialog::backdrop{background:#0c1f158c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.key-dialog .eyebrow{margin-top:0}.warning-text{color:#8a4b1b}.key-dialog code{display:block;margin:22px 0;padding:18px;overflow-wrap:anywhere;color:#123d29;background:#edf6ef;border-radius:10px;font-size:19px;font-weight:800;text-align:center}@media(max-width:900px){.page-shell{width:min(100% - 24px,700px);padding:24px 0}.create-card{align-items:stretch;flex-direction:column}.create-form{grid-template-columns:1fr}}@media(max-width:560px){.login-card{padding:28px 22px}.dashboard-header,.section-heading{align-items:flex-start;flex-direction:column}.header-actions{width:100%}.header-actions button{flex:1}.create-card,.list-card{padding:20px 16px}}
