/* Shared additions; page layouts remain in the extracted prototype stylesheets. */
.api-notice{position:relative;z-index:20;padding:12px 18px;background:#fff0f0;color:#a61d32;border-bottom:1px solid #f0bec7;overflow-wrap:anywhere;white-space:pre-wrap}
.preview-notice{position:relative;z-index:10;padding:10px 15px;background:#fff0c2;color:#744600;border-bottom:1px solid #edcd74;text-align:center;font-weight:700}
.login-panel{max-width:420px;margin:12vh auto;padding:25px;background:white;border:1px solid #dce4ef;border-radius:17px}
.login-panel h1{font-size:27px;margin-bottom:12px}.login-panel label{display:grid;gap:5px;margin:15px 0}.login-panel input{width:100%;padding:10px;border:1px solid #dce4ef;border-radius:9px}.login-panel button{width:100%}
.report-form{display:grid;gap:10px;margin-top:14px;border-top:1px solid #e4ebf4;padding-top:12px}.report-form label{display:grid;gap:5px}.report-form textarea,.report-form select{width:100%;padding:8px;border:1px solid #dce4ef;border-radius:9px;background:#fff;font:inherit}.report-form textarea{resize:vertical}
.default-marker{color:#087759;font-size:12px;font-weight:700}.source-edit:first-child{border-color:#9bc5ed}.version-edit:first-child>summary::after{content:' · 默认版本';color:#087759}.source-edit:first-child .nested-actions::before{content:'首选来源';color:#087759;font-size:12px}.release-log p,.detail-intro p{white-space:pre-wrap}
body.admin-locked .sidebar,body.admin-locked .topbar{display:none}body.admin-locked .shell{margin-left:0}
.modal-foot{flex-wrap:wrap}.modal-foot .error:not(:empty){flex-basis:100%}
@media(max-width:480px){.login-panel{margin:7vh auto}.modal-foot{gap:6px;padding-inline:10px}.modal-foot .btn{padding-inline:9px;font-size:12px}}

.public-pagination,.ssr-pagination{display:flex;align-items:center;justify-content:center;gap:16px;padding:24px 8px;flex-wrap:wrap}.public-pagination button{padding:8px 16px;cursor:pointer}.public-pagination button:disabled{cursor:default;opacity:.45}.public-pagination~.ssr-pagination{display:none}

.ssr-pagination[hidden]{display:none}

.app-icon{position:relative;overflow:hidden;flex-shrink:0}.app-icon-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#fff;border-radius:inherit}.icon-upload-preview{display:grid;place-items:center;position:relative;width:72px;height:72px;overflow:hidden;border-radius:16px;background:#eaf1ff;color:#2462c5;font-size:24px;font-weight:700}.icon-upload{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding:16px 0}.icon-upload p{margin:6px 0;color:#64748b}
