:root{--ink:#172d32;--muted:#60757a;--paper:#f3f5f2;--line:#d9e2df;--accent:#006e67;--soft:#e0eeea;--danger:#a23825}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:"PingFang SC","Microsoft YaHei",sans-serif;font-size:14px}header{height:80px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:24px;padding:0 5vw}.brand{font:700 32px Georgia,serif;letter-spacing:-2px}.dot{color:var(--accent)}.environment{margin-left:auto;font-size:12px;border:1px solid var(--line);border-radius:3px;padding:7px 12px}main{max-width:1440px;margin:auto;padding:44px 5vw}.intro{margin-bottom:32px}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--accent);font-weight:600}h1{font-size:36px;line-height:1.45;letter-spacing:-1px;margin:16px 0}h2{font-size:19px;margin:0 0 14px}.muted,.note{color:var(--muted);line-height:1.8}.login{max-width:640px;background:white;border:1px solid var(--line);padding:28px}.login p{color:var(--muted);line-height:1.8}.login label{display:block;margin:20px 0 9px;font-weight:600}.input-row{display:flex;gap:10px}input,select,button{font:inherit;border:1px solid var(--line);border-radius:3px;min-height:42px;padding:9px 13px}input{min-width:0;background:white;color:var(--ink)}.input-row input{flex:1}button{background:var(--accent);border-color:var(--accent);color:white;cursor:pointer;white-space:nowrap}button:disabled{opacity:.45;cursor:default}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.secondary{background:white;color:var(--ink);border-color:var(--line)}.text-button{background:transparent;color:var(--muted);border-color:transparent}.summary{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);background:#fff;margin:28px 0}.metric{padding:22px 24px;border-right:1px solid var(--line)}.metric:last-child{border:0}.metric span{display:block;color:var(--muted);font-size:12px}.metric strong{font:34px Georgia,serif;display:block;margin-top:8px}.toolbar,.toolbar form,.actions{display:flex;align-items:center;gap:10px}.toolbar{justify-content:space-between;margin:24px 0 14px}.toolbar input{width:260px}.table-wrap{overflow:auto;background:white;border:1px solid var(--line)}table{border-collapse:collapse;width:100%;text-align:left;min-width:960px}th{background:#e8eeeb;color:var(--muted);font-size:12px;font-weight:500;padding:13px 16px}td{padding:17px 16px;border-top:1px solid var(--line);font-size:12px}.mono{font-family:"SFMono-Regular",Consolas,monospace;font-size:12px}td:first-child{font-weight:600}.tag{display:inline-block;border-radius:3px;padding:4px 8px;background:#edf0ef;color:#546667}.tag.used{background:var(--soft);color:var(--accent)}.tag.pending,.tag.writing,.tag.reserved{background:#fff0d5;color:#855900}.tag.frozen{background:#fbe9e3;color:var(--danger)}#message{color:var(--muted);line-height:1.8;min-height:25px}#message.error{color:var(--danger)}.pagination{display:flex;justify-content:space-between;align-items:center;margin:18px 0;color:var(--muted)}.pagination button{margin-left:8px}.note{font-size:12px}footer{margin:24px 5vw;padding:25px 0;border-top:1px solid var(--line);color:var(--muted);font-size:11px;display:flex;justify-content:space-between}dialog{width:min(760px,90vw);max-height:85vh;border:1px solid var(--line);padding:26px;border-radius:5px;color:var(--ink)}dialog::backdrop{background:#10282d66}.dialog-header{display:flex;align-items:center;justify-content:space-between}.dialog-header h2{margin:0}#events{padding-left:23px}#events li{padding:16px 0;border-bottom:1px solid var(--line);line-height:1.8}#events small{display:block;color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden]{display:none!important}@media(max-width:800px){header{height:65px;gap:14px}main{padding-top:24px}h1{font-size:28px}.summary{grid-template-columns:repeat(2,1fr)}.metric{border-bottom:1px solid var(--line)}.toolbar{align-items:stretch;flex-direction:column}.toolbar form{flex-wrap:wrap}.toolbar input{flex:1;width:100%}.actions{justify-content:flex-end}.input-row{flex-direction:column}footer{gap:14px;flex-direction:column}}
