:root{--blue:#1769aa;--blue-dark:#123b61;--blue-light:#eaf4fb;--ink:#17212b;--muted:#687583;--line:#dce4ea;--bg:#f4f7f9;--white:#fff;--success:#18794e;--warning:#9a6700;--danger:#b42318;--shadow:0 10px 30px rgba(20,52,77,.08)}
*{box-sizing:border-box}html{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",Arial,sans-serif;color:var(--ink);background:var(--bg)}body{margin:0}a{color:var(--blue);text-decoration:none}button,input,select{font:inherit}.muted{color:var(--muted)}
.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,var(--blue),#1d8bd1);color:#fff;font-size:20px;font-weight:800;box-shadow:0 6px 16px rgba(23,105,170,.2)}
.brand-logo{display:block;width:126px;height:58px;object-fit:contain;background:#fff}
.public-body{min-height:100vh}.public-header{background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.public-header__inner{max-width:760px;margin:auto;padding:14px 20px;display:flex;align-items:center;gap:12px}.public-header strong{display:block}.public-header small{display:block;color:var(--muted);font-size:12px;margin-top:2px}.public-main{max-width:760px;margin:0 auto;padding:22px 18px 50px}.public-footer{text-align:center;padding:26px 20px;color:var(--muted);font-size:13px}.public-footer p{margin:4px}
.hero-card,.detail-card,.device-strip,.report-section{background:#fff;border:1px solid var(--line);border-radius:18px;padding:24px;margin-bottom:18px;box-shadow:var(--shadow)}.hero-card{background:linear-gradient(145deg,#fff 30%,#edf7fd)}.hero-card h1{font-size:26px;line-height:1.3;margin:8px 0 12px;color:var(--blue-dark)}.eyebrow{font-size:12px;font-weight:800;letter-spacing:.12em;color:var(--blue)}.location-line{display:flex;gap:8px;color:#475767;line-height:1.5}.back-link{display:inline-block;margin-top:8px}.device-strip h2,.detail-card h2{font-size:17px;margin:0 0 14px}.chip-list{display:flex;flex-wrap:wrap;gap:8px}.chip-list a{padding:8px 12px;border-radius:999px;background:var(--blue-light);font-size:14px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:16px}.section-heading h2{margin:4px 0 0;font-size:22px}.count{color:var(--muted);font-size:13px}.report-card{border:1px solid var(--line);border-radius:14px;padding:18px;margin:12px 0}.report-card__top{display:flex;align-items:center;justify-content:space-between}.report-card__top time{color:var(--muted);font-size:13px}.tag{background:var(--blue-light);color:var(--blue);padding:4px 9px;border-radius:999px;font-size:12px;font-weight:700}.report-card h3{font-size:17px;margin:13px 0}.compact-meta{margin:0 0 14px}.compact-meta div,.detail-list div{display:grid;grid-template-columns:86px 1fr;gap:10px;padding:7px 0;border-bottom:1px dashed #edf0f2}.compact-meta dt,.detail-list dt{color:var(--muted);font-size:13px}.compact-meta dd,.detail-list dd{margin:0;word-break:break-word}.primary-link{display:flex;justify-content:space-between;font-weight:700}.primary-link span{font-size:20px}.verified-badge{display:inline-flex;color:var(--success);background:#e9f7ef;border-radius:999px;padding:6px 10px;font-size:13px;font-weight:700}.detail-list{margin:0}.detail-list div{grid-template-columns:100px 1fr;padding:12px 0}.pdf-button{display:block;text-align:center;padding:14px;margin-top:22px;background:var(--blue);color:#fff;border-radius:10px;font-weight:700}.security-note{text-align:center;color:var(--muted);font-size:12px}.empty-state{text-align:center;padding:42px 10px;color:var(--muted)}.empty-state strong{display:block;color:var(--ink);margin-bottom:8px}.pagination{display:flex;justify-content:center;align-items:center;gap:16px;margin-top:22px;font-size:14px}.pagination a{padding:7px 12px;border:1px solid var(--line);border-radius:8px}
.manage-body{display:flex;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:250px;background:#102b43;color:#dbe7f1;padding:24px 18px;display:flex;flex-direction:column;z-index:20}.sidebar-brand{display:flex;flex-direction:column;align-items:flex-start;gap:7px;color:#fff;font-weight:700;padding:0 6px 18px;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-brand .brand-logo{width:150px;height:70px}.sidebar-brand small{display:block;color:#9db2c3;font-weight:400;margin-top:3px}.sidebar nav{display:grid;gap:4px;margin-top:20px}.sidebar nav a{color:#ccdae5;padding:11px 12px;border-radius:9px}.sidebar nav a:hover{background:rgba(255,255,255,.08);color:#fff}.sidebar nav .nav-primary{background:#1d78b8;color:#fff;margin-top:8px}.logout-form{margin-top:auto}.logout-form button{width:100%;border:1px solid rgba(255,255,255,.16);background:transparent;color:#ccd8e2;border-radius:8px;padding:10px;cursor:pointer}.manage-shell{margin-left:250px;min-width:0;width:calc(100% - 250px)}.manage-topbar{height:64px;background:#fff;border-bottom:1px solid var(--line);display:flex;justify-content:flex-end;align-items:center;padding:0 30px;color:var(--muted)}.menu-toggle{display:none}.manage-main{max-width:1320px;margin:auto;padding:30px}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.page-header h1{margin:0;font-size:28px;color:var(--blue-dark)}.page-header p{margin:7px 0 0;color:var(--muted)}
.button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:9px 15px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-weight:650;cursor:pointer}.button-primary{background:var(--blue);border-color:var(--blue);color:#fff}.button-danger{background:var(--danger);border-color:var(--danger);color:#fff}.button-block{width:100%}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:22px}.stat-grid article{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px}.stat-grid span{display:block;color:var(--muted);font-size:14px}.stat-grid strong{font-size:30px;display:block;margin-top:8px;color:var(--blue-dark)}.panel,.form-panel,.review-aside,.warning-panel{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 4px 20px rgba(24,55,79,.04)}.panel-heading{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;border-bottom:1px solid var(--line)}.panel-heading h2{margin:0;font-size:17px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px 16px;border-bottom:1px solid var(--line);vertical-align:middle}th{background:#f8fafb;color:#52616f;font-size:13px;white-space:nowrap}td{font-size:14px}td small{color:var(--muted)}tr:last-child td{border-bottom:0}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;min-width:230px}.actions form{display:inline}.actions button{border:0;background:none;color:var(--blue);padding:0;cursor:pointer}.danger-link{color:var(--danger)}.empty-cell{text-align:center!important;padding:36px;color:var(--muted)}.status{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:700}.status-draft{color:var(--warning);background:#fff8df}.status-published{color:var(--success);background:#eaf8f0}.status-withdrawn{color:#5d6871;background:#edf1f4}.filter-bar{display:flex;gap:10px;margin-bottom:16px}.filter-bar .form-control{max-width:420px}.filter-bar .form-select{max-width:160px}.form-control,.form-select{width:100%;min-height:42px;border:1px solid #cbd6de;border-radius:8px;padding:9px 11px;background:#fff;color:var(--ink)}.form-control:focus,.form-select:focus{outline:3px solid rgba(23,105,170,.12);border-color:var(--blue)}.form-panel{max-width:820px;padding:24px}.field{margin-bottom:18px}.field label{display:block;font-size:14px;font-weight:700;margin-bottom:7px}.required{color:var(--danger)}.help-text,.error-text{display:block;margin-top:6px;font-size:12px}.help-text{color:var(--muted)}.error-text{color:var(--danger)}.field-error .form-control,.field-error .form-select{border-color:var(--danger)}.form-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:8px}.form-errors{background:#fff0ef;color:var(--danger);padding:12px;border-radius:8px;margin-bottom:14px}.info-callout,.warning-panel{padding:16px 18px;margin-bottom:18px}.info-callout{background:var(--blue-light);border-radius:9px;color:var(--blue-dark)}.info-callout p{margin:5px 0 0}.warning-panel{border-color:#f0d58a;background:#fffcf1}.warning-panel h2{font-size:17px;margin:0 0 10px;color:var(--warning)}.warning-panel ul{margin:0;padding-left:20px}.review-grid{display:grid;grid-template-columns:minmax(0,820px) 300px;gap:20px;align-items:start}.review-grid .form-panel{max-width:none}.review-aside{padding:20px;position:sticky;top:84px}.review-aside h2{font-size:16px;margin:0 0 10px}.review-aside h2:not(:first-child){margin-top:24px}.review-aside p{word-break:break-all;color:var(--muted);font-size:13px}.review-aside dl div{padding:7px 0;border-bottom:1px solid var(--line)}.review-aside dt{font-size:12px;color:var(--muted)}.review-aside dd{margin:3px 0 0}.alert{padding:12px 15px;border-radius:8px;margin-bottom:16px}.alert-success{background:#e8f7ee;color:var(--success)}.alert-error{background:#fff0ef;color:var(--danger)}.manage-pagination{display:flex;justify-content:center;gap:14px;align-items:center;margin:22px}.manage-pagination a{background:#fff;border:1px solid var(--line);padding:7px 12px;border-radius:7px}.confirm-card{max-width:520px;margin:80px auto;background:#fff;border-radius:14px;padding:36px;text-align:center;box-shadow:var(--shadow)}.danger-icon{display:grid;place-items:center;margin:auto;width:54px;height:54px;border-radius:50%;background:#fff0ef;color:var(--danger);font-size:28px;font-weight:800}.confirm-card h1{font-size:23px}.confirm-card p{color:var(--muted);line-height:1.6}.confirm-card form{display:flex;justify-content:center;gap:10px;margin-top:24px}
.login-body{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at top right,#dff2ff,transparent 35%),#f5f8fa}.login-card{width:min(420px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;padding:34px;box-shadow:var(--shadow)}.login-brand{display:flex;align-items:center;gap:12px}.login-brand strong,.login-brand small{display:block}.login-brand small{color:var(--muted);margin-top:3px}.login-card h1{margin:30px 0 6px;font-size:25px}.login-card>p{color:var(--muted);margin-top:0}.login-card .field{text-align:left}
@media(max-width:900px){.sidebar{transform:translateX(-100%);transition:.2s}.menu-open .sidebar{transform:none}.manage-shell{margin-left:0;width:100%}.manage-topbar{justify-content:space-between;padding:0 18px}.menu-toggle{display:block;border:0;background:none;font-size:22px}.manage-main{padding:20px}.stat-grid{grid-template-columns:repeat(2,1fr)}.review-grid{grid-template-columns:1fr}.review-aside{position:static}.page-header{align-items:flex-start;gap:16px}.page-header h1{font-size:24px}}
@media(max-width:560px){.public-main{padding:14px 12px 40px}.hero-card,.detail-card,.device-strip,.report-section{padding:18px;border-radius:14px}.hero-card h1{font-size:23px}.detail-list div{grid-template-columns:82px 1fr}.filter-bar{flex-direction:column}.filter-bar .form-control,.filter-bar .form-select{max-width:none}.stat-grid{grid-template-columns:1fr 1fr;gap:10px}.stat-grid article{padding:15px}.stat-grid strong{font-size:25px}.page-header{flex-direction:column}.manage-main{padding:16px}.actions{min-width:210px}.form-panel{padding:18px}}
