:root{font-family:system-ui,-apple-system,"PingFang SC",sans-serif;color:#213047;background:#f3f6fa;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{border:1px solid #d0d9e6;border-radius:7px;background:#fff;color:#294565;padding:9px 14px;cursor:pointer}button:hover{background:#edf3fc}button:disabled{opacity:.45;cursor:default}.primary{background:#2466dd;color:white;border-color:#2466dd}.primary:hover{background:#1854bd}.danger{color:#b63b43}.quiet{border:0;background:none}input,textarea,select{border:1px solid #cbd5e3;border-radius:6px;background:white;padding:10px;color:#213047;max-width:100%}input:focus,textarea:focus,select:focus{outline:2px solid #b6d0ff;outline-offset:1px}textarea{min-height:100px;resize:vertical}label{display:grid;gap:7px;font-weight:600}label input,label textarea,label select{font-weight:400}input[type=checkbox]{width:17px;height:17px;vertical-align:middle}.muted{color:#738196}.panel{background:white;border:1px solid #e0e7ef;border-radius:10px;padding:22px;margin-bottom:18px;box-shadow:0 2px 7px #1a335504}.login{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);display:grid;gap:18px}.login-card h1,.login-card p{margin:0}.brand{font-size:23px;font-weight:750;letter-spacing:.2px}.brand span{display:block;font-size:12px;color:#91a8c7;margin-top:5px;font-weight:400}#app{display:grid;grid-template-columns:212px minmax(0,1fr);min-height:100vh}#app[hidden],*[hidden]{display:none!important}aside{background:#172a45;color:white;padding:28px 18px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}nav{display:grid;gap:6px;margin-top:35px}nav button{text-align:left;border:0;background:none;color:#b7c7de;padding:13px 16px}nav button.active,nav button:hover{background:#2a4364;color:#fff}.sidebar-note{margin-top:auto;color:#8ca4c4;font-size:12px;line-height:1.9;padding:10px}.workspace{min-width:0}header{display:flex;justify-content:space-between;align-items:center;gap:16px;background:white;border-bottom:1px solid #e0e7ef;padding:16px 30px}header label{display:flex;align-items:center}header label select{min-width:155px}header>div{display:flex;align-items:center;gap:15px}main{padding:26px 30px;max-width:1550px;margin:auto}.page-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.eyebrow{font-size:11px;color:#8392a8;letter-spacing:1.3px;margin:0 0 7px}h1{font-size:25px;letter-spacing:.3px;margin:0}h2{font-size:17px;margin:0 0 16px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}.toolbar input{flex:1;min-width:170px}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap}th{font-size:12px;color:#758499;background:#f8fafc;font-weight:600}th,td{padding:12px 13px;border-bottom:1px solid #e9edf4}td .wrap{white-space:normal;max-width:340px;word-break:break-word}.empty{text-align:center;padding:36px;color:#8492a6}.tag{display:inline-block;border-radius:5px;font-size:12px;background:#eaf1fb;color:#37618d;padding:4px 7px}.tag.good{background:#e8f6ee;color:#318453}.tag.bad{background:#fcebec;color:#b6464e}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.stack{display:grid;gap:15px}.summary{display:flex;gap:28px;flex-wrap:wrap}.summary strong{display:block;font-size:25px;margin-bottom:5px}.hint{font-size:13px;line-height:1.7;color:#758499}.preview{border-left:4px solid #2466dd}pre{white-space:pre-wrap;word-break:break-word;background:#f7f9fc;padding:14px;border-radius:6px;max-height:340px;overflow:auto;margin:0}.actions{display:flex;gap:7px}.actions button{font-size:12px;padding:6px 9px}.footer-row{display:flex;justify-content:space-between;margin-top:15px;align-items:center}#toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%);background:#203550;color:white;box-shadow:0 8px 30px #0002;padding:13px 24px;border-radius:8px;max-width:90vw;z-index:9}#login-error{color:#be4650;font-size:13px}#items-picker{width:100%;min-height:160px}@media(max-width:820px){#app{grid-template-columns:1fr}aside{position:static;height:auto;padding:14px 20px}aside .brand span,.sidebar-note{display:none}nav{display:flex;overflow:auto;margin-top:12px;gap:3px}nav button{white-space:nowrap;padding:9px}header{padding:12px 18px;flex-wrap:wrap}main{padding:20px 16px}.grid{grid-template-columns:1fr}.panel{padding:17px}h1{font-size:22px}}
.grant-layout{display:grid;grid-template-columns:minmax(275px,340px) minmax(0,1fr);gap:18px;align-items:start}.recipients{min-width:0}.recipients .toolbar{margin-bottom:0}.recipients .toolbar input{min-width:120px}.recipient-row{display:flex;align-items:flex-start;gap:9px;padding:10px 5px;border-bottom:1px solid #edf1f7;cursor:pointer}.recipient-row>span{min-width:0;display:grid;gap:4px}.recipient-row small{font-size:11px;color:#78879b;font-weight:400;overflow-wrap:anywhere}.recipient-row strong{font-size:13px}.recipient-row input{flex:0 0 auto;margin-top:2px}#recipient-list{max-height:420px;overflow:auto}#recipient-summary button{margin-top:10px}.catalog-panel{min-width:0}.catalog-layout{display:grid;grid-template-columns:154px minmax(0,1fr);gap:15px}.category-list{display:flex;flex-direction:column;gap:3px;max-height:565px;overflow:auto;padding-right:6px}.category-list button{border:0;text-align:left;display:flex;justify-content:space-between;gap:5px;padding:9px 7px;font-size:12px}.category-list button.active{background:#e9f1ff;color:#205fca;font-weight:600}.category-list small{color:#8391a5;font-weight:400}.item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(106px,1fr));gap:9px;max-height:510px;overflow:auto;padding:12px 2px}.item-card{position:relative;min-width:0;display:flex;flex-direction:column;align-items:center;gap:5px;padding:12px 5px 8px;border-color:#e0e7f0;min-height:143px}.item-card:hover{border-color:#86aae7}.item-card.selected{border:2px solid #3574da;background:#eff5ff;padding:11px 4px 7px}.item-icon{width:48px;height:48px;object-fit:contain;flex:0 0 auto}.missing-icon{display:grid;place-items:center;color:#9aa5b4;border:1px dashed #d3dce6;border-radius:7px;font-size:10px}.item-name{font-size:12px;line-height:1.4;text-align:center;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;min-height:32px;max-width:100%;overflow-wrap:anywhere}.item-code{font-size:10px;color:#8492a6}.item-stars{font-size:9px;color:#d99b30;letter-spacing:-1px;min-height:12px}.restricted-tag{position:absolute;top:3px;right:3px;font-size:9px;background:#e9edf3;color:#7b8492;border-radius:3px;padding:2px 3px}.item-line{display:flex;align-items:center;gap:12px;min-width:0}.item-line small{display:block;color:#8190a5;font-size:11px;margin-top:4px}.item-line p{margin:5px 0 0}.item-detail{border-top:1px solid #e2e8f1;margin-top:16px;padding-top:16px}.item-description{font-size:13px;line-height:1.8;color:#62738c;margin:12px 0;white-space:pre-wrap}.restriction-reason{color:#a16b30;background:#fff8eb;border-radius:5px;padding:11px;font-size:12px}.item-detail .toolbar{margin:12px 0 0;align-items:flex-end}.item-detail label{font-size:12px;max-width:170px}.item-detail .item-icon{width:56px;height:56px}.preview .table-wrap{max-height:400px}@media(max-width:1080px){.grant-layout{grid-template-columns:1fr}.recipients{display:grid;grid-template-columns:1fr 1fr}.recipients h2,.recipients .toolbar,.recipients #recipient-controls,.recipients #recipient-list,.recipients #recipient-summary{grid-column:1/-1}#recipient-list{max-height:240px}.category-list{max-height:550px}}@media(max-width:600px){.recipients{display:flex;flex-direction:column}.catalog-layout{grid-template-columns:1fr}.category-list{flex-direction:row;max-height:110px;flex-wrap:wrap}.category-list button{gap:5px;padding:7px}.item-grid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr))}.item-card{min-height:140px}.catalog-panel{padding:14px}}

.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px}.metric{display:flex;flex-direction:column;gap:12px}.metric span{color:#64748b}.metric strong{font-size:22px}.grid>div{min-width:0}pre{max-width:100%;overflow:auto}.wrap{max-width:340px;overflow-wrap:anywhere}

@media(max-width:820px){#app{grid-template-columns:minmax(0,1fr)}aside,nav{min-width:0}}

#content[aria-busy="true"]{opacity:.72;cursor:progress}
