: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;border-left:3px solid transparent}.sidebar nav a:hover{background:rgba(255,255,255,.08);color:#fff}.sidebar nav a.active{background:rgba(255,255,255,.14);border-left-color:#5dc0ff;color:#fff;font-weight:700}.sidebar nav .nav-primary{background:#1d78b8;color:#fff;margin-top:8px}.sidebar nav .nav-primary.active{background:#2794dc;border-left-color:#bde7ff;box-shadow:0 0 0 2px rgba(255,255,255,.1)}.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{min-width:230px;white-space:nowrap}.actions a,.actions form{display:inline-block;margin-right:9px}.actions a:last-child,.actions form:last-child{margin-right:0}.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}}
.report-info-heading{border-left:7px solid #556da8;padding-left:14px}.archive-year,.archive-month{border-bottom:1px solid var(--line)}.archive-year>summary,.archive-month>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;cursor:pointer;position:relative}.archive-year>summary::-webkit-details-marker,.archive-month>summary::-webkit-details-marker{display:none}.archive-year>summary{padding:20px 38px 20px 2px}.archive-year>summary strong{font-size:28px;font-weight:600}.archive-month>summary{padding:18px 38px 18px 24px}.archive-month>summary strong{font-size:21px;font-weight:500}.archive-year>summary span,.archive-month>summary span{color:var(--muted);font-size:12px;margin-left:auto;margin-right:12px}.archive-year>summary:after,.archive-month>summary:after{content:"";position:absolute;right:8px;width:11px;height:11px;border-right:3px solid #9aa2aa;border-bottom:3px solid #9aa2aa;transform:rotate(45deg);transition:transform .18s}.archive-year[open]>summary:after,.archive-month[open]>summary:after{transform:rotate(225deg)}.archive-year__body{padding-bottom:8px}.archive-month__body{padding:0 8px 8px 24px}.archive-month__body .report-card{background:#f9fbfc;margin-top:2px}
@media(max-width:560px){.report-info-heading{margin-bottom:4px}.archive-year>summary{padding-top:18px;padding-bottom:18px}.archive-month>summary{padding-left:18px}.archive-month__body{padding-left:8px}.archive-year>summary span,.archive-month>summary span{display:none}}
.stat-grid .stat-card{display:block;background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;color:var(--ink);transition:transform .18s,box-shadow .18s,border-color .18s}.stat-grid .stat-card:hover{transform:translateY(-2px);border-color:#acd2eb;box-shadow:var(--shadow)}.stat-grid .stat-card span{display:block;color:var(--muted);font-size:14px}.stat-grid .stat-card strong{font-size:30px;display:block;margin-top:8px;color:var(--blue-dark)}.stat-grid .stat-card small{display:flex;justify-content:space-between;margin-top:10px;color:var(--blue)}.stat-grid .stat-card b{font-size:17px}
.smart-select{position:relative}.smart-select__selected{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}.smart-select__chip{border:1px solid #b9d9ec;background:var(--blue-light);color:var(--blue-dark);border-radius:999px;padding:6px 10px;font-size:13px;cursor:pointer}.smart-select__menu{position:absolute;z-index:40;top:calc(100% + 5px);left:0;right:0;max-height:280px;overflow:auto;background:#fff;border:1px solid #b9c9d5;border-radius:10px;box-shadow:0 14px 32px rgba(19,49,72,.16);padding:6px}.smart-select__option{display:flex;width:100%;align-items:center;justify-content:space-between;text-align:left;border:0;background:#fff;padding:10px 11px;border-radius:7px;color:var(--ink);cursor:pointer}.smart-select__option:hover,.smart-select__option.selected{background:var(--blue-light);color:var(--blue-dark)}.smart-select__option b{color:var(--success)}.smart-select__empty{color:var(--muted);text-align:center;margin:14px 8px 8px}.smart-select__add{display:block;text-align:center;padding:10px;border-top:1px solid var(--line);font-weight:700}
.chart-section{margin-top:24px}.chart-section__heading{display:flex;align-items:flex-end;justify-content:space-between;margin:0 0 14px}.chart-section__heading h2{margin:4px 0 0;color:var(--blue-dark);font-size:24px}.chart-section__heading>span{color:var(--muted);font-size:13px}.chart-grid{display:grid;grid-template-columns:1.35fr .85fr;gap:16px}.chart-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:0 4px 20px rgba(24,55,79,.04)}.chart-title{display:flex;align-items:flex-start;justify-content:space-between}.chart-title h3{font-size:17px;margin:0}.chart-title p{font-size:12px;color:var(--muted);margin:5px 0 0}.chart-title>strong{font-size:30px;color:var(--blue-dark)}.bar-chart{height:210px;display:flex;align-items:flex-end;gap:14px;padding:24px 6px 0}.bar-item{height:100%;flex:1;display:grid;grid-template-rows:18px 1fr 22px;text-align:center;min-width:34px}.bar-value{font-size:12px;color:var(--muted)}.bar-track{height:100%;display:flex;align-items:flex-end;justify-content:center;border-bottom:1px solid var(--line)}.bar-track i{display:block;width:min(36px,70%);height:max(4px,var(--chart-size));background:linear-gradient(180deg,#3b9bd4,var(--blue));border-radius:7px 7px 2px 2px}.bar-item small{padding-top:6px;color:var(--muted)}.donut-wrap{display:flex;align-items:center;justify-content:center;gap:24px;min-height:210px}.donut{width:142px;height:142px;display:grid;place-items:center;position:relative}.donut-chart{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}.donut-chart circle{fill:none;stroke-width:7}.donut-base{stroke:#edf2f5}.donut-segment{stroke-linecap:butt}.donut-published{stroke:#18794e}.donut-draft{stroke:#d99a18}.donut-withdrawn{stroke:#8795a1}.donut span{position:relative;z-index:1;text-align:center}.donut strong,.donut small{display:block}.donut strong{font-size:28px;color:var(--blue-dark)}.donut small{color:var(--muted);font-size:11px}.chart-legend{list-style:none;padding:0;margin:0;display:grid;gap:12px;min-width:105px}.chart-legend li{display:grid;grid-template-columns:10px 1fr auto;align-items:center;gap:7px;font-size:13px}.chart-legend i{width:9px;height:9px;border-radius:50%}.legend-published{background:#18794e}.legend-draft{background:#d99a18}.legend-withdrawn{background:#8795a1}.rank-chart{display:grid;gap:13px;margin-top:20px}.rank-chart a{display:grid;grid-template-columns:minmax(120px,220px) 1fr 32px;gap:12px;align-items:center;color:var(--ink);font-size:13px}.rank-chart a>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rank-chart a>div{height:9px;background:#edf2f5;border-radius:99px;overflow:hidden}.rank-chart a i{display:block;height:100%;width:var(--chart-size);background:linear-gradient(90deg,var(--blue),#54acd9);border-radius:99px}.rank-chart a strong{text-align:right;color:var(--blue-dark)}.chart-empty{text-align:center;color:var(--muted);padding:40px}.chart-card-wide:last-child{grid-column:1/-1}
.chart-size-0{--chart-size:0%}.chart-size-5{--chart-size:5%}.chart-size-10{--chart-size:10%}.chart-size-15{--chart-size:15%}.chart-size-20{--chart-size:20%}.chart-size-25{--chart-size:25%}.chart-size-30{--chart-size:30%}.chart-size-35{--chart-size:35%}.chart-size-40{--chart-size:40%}.chart-size-45{--chart-size:45%}.chart-size-50{--chart-size:50%}.chart-size-55{--chart-size:55%}.chart-size-60{--chart-size:60%}.chart-size-65{--chart-size:65%}.chart-size-70{--chart-size:70%}.chart-size-75{--chart-size:75%}.chart-size-80{--chart-size:80%}.chart-size-85{--chart-size:85%}.chart-size-90{--chart-size:90%}.chart-size-95{--chart-size:95%}.chart-size-100{--chart-size:100%}
@media(max-width:900px){.chart-grid{grid-template-columns:1fr}.chart-card-wide:last-child{grid-column:auto}}
@media(max-width:560px){.stat-grid .stat-card{padding:15px}.stat-grid .stat-card strong{font-size:25px}.stat-grid .stat-card small{font-size:11px}.chart-section__heading>span{display:none}.chart-card{padding:16px}.bar-chart{gap:5px;padding-left:0;padding-right:0}.donut-wrap{gap:14px}.rank-chart a{grid-template-columns:minmax(90px,140px) 1fr 28px;gap:8px}}

.nav-secondary{margin-top:7px;text-align:center;border:1px solid rgba(255,255,255,.16)}.page-actions{display:flex;justify-content:flex-end;margin:-8px 0 16px}.batch-results{margin-top:20px}.plan-dashboard{margin-top:24px}.plan-summary{grid-template-columns:repeat(3,1fr)}.plan-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.plan-toolbar form{display:flex;align-items:center;gap:10px}.plan-toolbar label{white-space:nowrap;font-size:13px;color:var(--muted)}.plan-toolbar .form-select{min-width:120px}.plan-status{display:inline-block;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:700;white-space:nowrap}.plan-complete{color:var(--success);background:#eaf8f0}.plan-pending{color:var(--warning);background:#fff8df}.plan-overdue{color:var(--danger);background:#fff0ef}.text-danger{color:var(--danger)!important}
@media(max-width:560px){.plan-summary{grid-template-columns:repeat(3,1fr)}.plan-toolbar{align-items:stretch;flex-direction:column}.plan-toolbar form{justify-content:space-between}.page-actions{justify-content:stretch}.page-actions .button{width:100%}}

.pdf-reader-card{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow)}.pdf-reader-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px 22px}.pdf-reader-heading h1{font-size:22px;color:var(--blue-dark);margin:6px 0 3px}.pdf-reader-heading p{color:var(--muted);margin:0;font-size:13px}.pdf-reader-back{font-size:13px}.pdf-reader-download{white-space:nowrap;padding:9px 13px;border:1px solid var(--blue);border-radius:8px;font-weight:700}.pdf-toolbar{position:sticky;top:87px;z-index:8;display:flex;align-items:center;gap:10px;padding:10px 14px;background:#102b43;color:#fff;box-shadow:0 5px 12px rgba(12,37,57,.16)}.pdf-toolbar button{display:grid;place-items:center;width:36px;height:34px;border:1px solid rgba(255,255,255,.25);border-radius:7px;background:rgba(255,255,255,.1);color:#fff;font-size:21px;line-height:1;cursor:pointer}.pdf-toolbar button:disabled{opacity:.45}.pdf-toolbar>[data-pdf-zoom-label]{min-width:72px;text-align:center;font-size:12px}.pdf-page-count{margin-left:auto;font-size:12px;color:#d5e5f0}.pdf-viewer{min-height:55vh;padding:12px;background:#dce3e8;overflow:auto}.pdf-loading{min-height:50vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;color:var(--blue-dark)}.pdf-loading small{color:var(--muted)}.pdf-spinner{width:34px;height:34px;border:3px solid #b8cbd8;border-top-color:var(--blue);border-radius:50%;animation:pdf-spin .8s linear infinite}.pdf-pages{display:grid;justify-items:center;gap:14px}.pdf-page{position:relative;max-width:100%;background:#fff;box-shadow:0 4px 16px rgba(16,43,67,.18);overflow:auto}.pdf-page.is-placeholder{display:grid;place-items:center;background:linear-gradient(110deg,#fff 25%,#f3f6f8 45%,#fff 65%);background-size:200% 100%;animation:pdf-placeholder 1.4s linear infinite}.pdf-page-placeholder-label{color:#85929d;font-size:12px}.pdf-page canvas{display:block;max-width:none}.pdf-page-label{position:absolute;right:8px;bottom:8px;padding:4px 7px;border-radius:5px;background:rgba(16,43,67,.78);color:#fff;font-size:10px;pointer-events:none}.pdf-error{text-align:center;padding:58px 18px;background:#fff;border-radius:10px}.pdf-error strong{display:block;color:var(--danger);font-size:17px}.pdf-error p{color:var(--muted);line-height:1.6}.pdf-error a{display:inline-block;margin-top:8px;padding:10px 16px;border-radius:8px;background:var(--blue);color:#fff;font-weight:700}.pdf-reader-note{text-align:center;color:var(--muted);font-size:12px;margin:0;padding:14px 18px}@keyframes pdf-spin{to{transform:rotate(360deg)}}@keyframes pdf-placeholder{to{background-position:-200% 0}}
@media(max-width:560px){.pdf-reader-card{margin:-2px -2px 0;border-radius:12px}.pdf-reader-heading{padding:15px 14px}.pdf-reader-heading h1{font-size:19px}.pdf-reader-download{font-size:12px;padding:8px 9px}.pdf-toolbar{top:87px}.pdf-viewer{padding:7px}.pdf-pages{gap:9px}}

.query-hero{text-align:center;padding-top:32px;padding-bottom:32px}.query-hero h1{font-size:30px}.query-hero p{max-width:520px;margin:0 auto;line-height:1.7}.query-card{max-width:600px;margin-left:auto;margin-right:auto}.query-card h2{text-align:center;font-size:21px;margin-bottom:24px}.query-field{margin-bottom:20px}.query-field label{display:block;font-weight:700;margin-bottom:8px}.query-field .form-control{min-height:50px;font-size:16px}.query-field--error .form-control{border-color:var(--danger)}.query-submit{border:0;width:100%;font-size:17px;cursor:pointer}.query-submit:disabled{background:#9aabb7;cursor:not-allowed}.query-error{background:#fff0ef;border:1px solid #f5c4bf;color:var(--danger);border-radius:10px;padding:12px 14px;margin-bottom:18px}.query-error p{margin:0;line-height:1.6}.query-help{margin-top:24px;padding:16px 18px;background:#f6f9fb;border-radius:10px;color:var(--muted);font-size:13px;line-height:1.7}.query-help strong{display:block;color:var(--blue-dark);margin-bottom:4px}.query-help p{margin:3px 0}.query-entry-actions{gap:10px;flex-wrap:wrap}
.query-result-heading{padding:22px 12px 30px;text-align:center}.query-result-heading h2{font-size:25px;line-height:1.55;margin:0;color:var(--ink)}.query-result-list{margin:0;padding:22px 26px;background:#f4f6f9;border:1px solid var(--line);border-radius:15px}.query-result-list div{display:grid;grid-template-columns:105px 1fr;gap:16px;padding:17px 0;border-bottom:0}.query-result-list dt,.query-result-list dd{font-size:18px;font-weight:700;line-height:1.55}.query-result-list dd{margin:0;word-break:break-word}.query-again{display:block;width:max-content;margin:24px auto 0;padding:10px 24px;border:1px solid var(--blue);border-radius:9px;font-weight:700}
@media(max-width:560px){.query-hero{padding:26px 18px}.query-hero h1{font-size:26px}.query-card{padding:22px 18px}.query-result-heading{padding:12px 4px 24px}.query-result-heading h2{font-size:22px}.query-result-list{padding:18px}.query-result-list div{grid-template-columns:92px 1fr;gap:10px;padding:14px 0}.query-result-list dt,.query-result-list dd{font-size:16px}.query-entry-actions{display:grid;grid-template-columns:1fr}.query-entry-actions .button{width:100%}}

/* 2026-09 brand refresh: the supplied logo contains white lettering. */
.brand-logo{width:174px;height:48px;object-fit:contain;object-position:left center;background:transparent}
.public-header{background:#123d63;border-bottom-color:#0c3152;color:#fff}
.public-header__inner{gap:16px}
.public-header small{color:#d5e4ef}
.public-footer{padding:30px 20px;background:#f1f5f8;border-top:1px solid var(--line);color:#1b2630;font-size:15px}
.public-footer p:first-child{font-size:18px;font-weight:700}
.public-footer p:last-child{font-weight:600}
.sidebar{background:#123d63}
.sidebar-brand{gap:9px;border-bottom-color:rgba(255,255,255,.14)}
.sidebar-brand .brand-logo{width:190px;height:52px}
.login-brand{background:#123d63;border-radius:12px;padding:13px 16px;color:#fff}
.login-brand .brand-logo{width:200px;height:48px}
.login-brand small{color:#d5e4ef}
.login-card .login-contact{margin:24px 0 0;padding-top:18px;border-top:1px solid var(--line);color:var(--blue-dark);font-size:14px;line-height:1.7;text-align:center}
.plan-toolbar>span{color:var(--muted);font-size:13px}
.button-row{display:flex;gap:10px;flex-wrap:wrap}
.contract-explanation{max-width:none}
.contract-editor{display:grid;gap:18px}.contract-main-fields{max-width:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px}.contract-main-fields .form-errors,.contract-main-fields .form-actions{grid-column:1/-1}.contract-plan-panel .panel-heading p{margin:6px 0 0;color:var(--muted);font-size:13px}.contract-plan-panel .form-errors{margin:16px}.contract-plan-table input,.contract-plan-table select{min-width:150px}.contract-plan-table input[type="number"]{min-width:100px}.contract-plan-remove input[type="checkbox"]{display:none}.plan-remove-button{min-height:34px;padding:6px 11px;color:var(--danger)}.contract-editor-actions{display:flex;justify-content:flex-end;gap:10px;position:sticky;bottom:0;padding:14px;background:rgba(244,247,249,.94);backdrop-filter:blur(8px);border-top:1px solid var(--line);z-index:5}
.contract-overview-panel{max-width:none}.contract-requirements{margin-top:8px;padding-top:20px;border-top:1px solid var(--line)}.contract-requirements .panel-heading p{margin:6px 0 0;color:var(--muted);font-size:13px}.contract-requirement-table th:nth-child(3){min-width:310px}.reminder-date-list{display:grid;grid-template-columns:repeat(2,minmax(135px,1fr));gap:8px}.reminder-date-item{display:flex;align-items:center;gap:7px;margin:0}.reminder-date-item span{flex:0 0 auto;color:var(--muted);font-size:12px}.reminder-date-item .form-control{min-width:135px}.site-expand-button,.site-name-static{display:inline-flex;align-items:center;gap:8px;color:var(--text);font:inherit;text-align:left}.site-expand-button{padding:0;border:0;background:none;cursor:pointer}.site-expand-button>span,.site-name-static>i{display:inline-block;width:14px;color:var(--blue);font-size:24px;line-height:1;transition:transform .18s}.site-name-static>i{height:1px}.site-expand-button[aria-expanded="true"]>span{transform:rotate(90deg)}.site-detail-row td{background:#f7fafc;border-top:1px dashed var(--line)}.site-detail-row td:empty{border-top-color:transparent}.site-type-name{display:block;font-weight:700;color:var(--blue-dark)}.site-detail-row small{display:block;margin-top:4px;color:var(--muted)}.site-reminder-cell{min-width:220px}.site-reminder-cell .plan-status{display:block;width:max-content;margin:0 0 6px}
.reminder-period-tabs{display:flex;gap:8px;margin-bottom:18px}.reminder-period-tabs a{padding:9px 18px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--muted);font-weight:700}.reminder-period-tabs a.active{border-color:var(--blue);background:var(--blue);color:#fff}.reminder-summary{grid-template-columns:repeat(4,1fr);margin-bottom:18px}
.reminder-range-form{display:flex;align-items:flex-end;gap:12px;margin:-4px 0 18px;padding:16px 18px;border:1px solid var(--line);border-radius:12px;background:#fff}.reminder-range-form.is-active{border-color:#9ccbe7;box-shadow:0 0 0 3px rgba(31,126,184,.06)}.reminder-range-form label{display:grid;gap:6px;color:var(--muted);font-size:12px;font-weight:700}.reminder-range-form input{min-width:170px}.reminder-range-form>span{padding-bottom:10px;color:var(--muted)}
.reminder-range-caption{margin:-7px 0 17px;color:var(--muted);font-size:13px}
@media(max-width:760px){.contract-main-fields{grid-template-columns:1fr}.contract-plan-table input,.contract-plan-table select{min-width:135px}.reminder-date-list{grid-template-columns:1fr}}
@media(max-width:620px){.reminder-period-tabs{display:grid;grid-template-columns:repeat(3,1fr)}.reminder-period-tabs a{text-align:center;padding:9px 8px}.reminder-range-form{display:grid;grid-template-columns:1fr 18px 1fr;align-items:end}.reminder-range-form input{min-width:0}.reminder-range-form>span{text-align:center}.reminder-range-form .button{grid-column:1/-1;width:100%}}
.ledger-actions{margin:-8px 0 16px}.ledger-filter{align-items:flex-end;flex-wrap:wrap}.ledger-filter label{display:grid;gap:5px;color:var(--muted);font-size:12px;font-weight:700}.ledger-filter label .form-control{min-width:155px}.ledger-long-cell{min-width:260px;max-width:420px;white-space:normal;line-height:1.55}.ledger-upload-panel{max-width:760px}.ledger-summary{grid-template-columns:repeat(5,1fr)}.ledger-tabs{margin-top:18px}.ledger-status-new{color:var(--success);background:#eaf8f0}.ledger-status-duplicate{color:#5d6871;background:#edf1f4}.ledger-status-conflict{color:var(--warning);background:#fff8df}.ledger-status-error{color:var(--danger);background:#fff0ef}.ledger-confirm-actions{position:sticky;bottom:0;display:flex;justify-content:flex-end;gap:10px;padding:14px;margin-top:16px;background:rgba(244,247,249,.95);border-top:1px solid var(--line);z-index:5}
@media(max-width:760px){.ledger-summary{grid-template-columns:repeat(2,1fr)}.ledger-actions .button{flex:1 1 45%}.ledger-confirm-actions{position:static;display:grid}.ledger-confirm-actions .button{width:100%}}

.qr-dialog{display:none;position:fixed;inset:0;z-index:100;align-items:center;justify-content:center;padding:16px;background:rgba(12,37,57,.58)}.qr-dialog:target{display:flex}.qr-dialog__card{width:min(440px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:20px;background:#fff;border-radius:16px;box-shadow:0 22px 70px rgba(12,37,57,.25);text-align:center}.qr-dialog__head{display:flex;align-items:center;justify-content:space-between;gap:12px;text-align:left}.qr-dialog__head h2{margin:0;color:var(--blue-dark);font-size:20px}.qr-dialog__close{display:grid;place-items:center;width:32px;height:32px;border:0;background:#edf3f7;border-radius:8px;color:var(--muted);font-size:24px;line-height:1}.qr-dialog__name{margin:12px 0;color:var(--ink);font-weight:700;overflow-wrap:anywhere}.qr-dialog__image{display:block;width:min(300px,100%);height:auto;margin:8px auto;background:#fff}.qr-dialog__hint{color:var(--muted);font-size:13px;line-height:1.6}.qr-dialog__actions{display:flex;justify-content:center;gap:10px;margin-top:18px}
