:root{--bg:#f5f7fa;--surface:#ffffff;--ink:#17202a;--muted:#687386;--line:#dce2ea;--blue:#2457d6;--blue-soft:#eef4ff;--green:#087f5b;--green-soft:#eaf8f2;--red:#b42318;--red-soft:#fff1f0;--radius:7px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13px;line-height:1.45}button,input,select,textarea{font:inherit;letter-spacing:0}a{color:inherit}.app-shell{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100vh}.sidebar{position:-webkit-sticky;position:sticky;top:0;height:100vh;background:var(--surface);border-right:1px solid var(--line);padding:22px 14px 16px}.brand,.sidebar{display:flex;flex-direction:column}.brand{gap:8px;padding:0 8px 22px;text-decoration:none}.brand img{display:block;width:132px;height:auto}.brand span{color:var(--muted);font-size:11px}.sidebar nav{display:flex;flex-direction:column}.sidebar nav a{border-left:3px solid transparent;color:var(--muted);min-height:36px;padding:9px 12px;text-decoration:none}.sidebar nav a:hover{background:#f8fafc;border-left-color:var(--blue);color:var(--ink)}.sidebar-footer{margin-top:auto;border-top:1px solid var(--line);padding-top:12px}.sidebar-footer a,.sidebar-footer button{align-items:center;background:none;border:0;color:var(--muted);cursor:pointer;display:flex;gap:8px;min-height:34px;padding:8px 10px;text-decoration:none;width:100%}.app-shell>main{min-width:0;padding:28px clamp(22px,3.5vw,54px) 60px}.page-header{align-items:flex-start;display:flex;justify-content:space-between;margin-bottom:28px}h1,h2,p{margin-top:0}h1{font-size:24px;line-height:1.2;margin-bottom:6px}h2{font-size:16px;line-height:1.25;margin-bottom:4px}.page-header p,.section-heading p{color:var(--muted);margin-bottom:0}.rule-label{background:var(--blue-soft);border:1px solid #cddcff;border-radius:5px;color:#1f4fbf;font-size:12px;padding:7px 9px}.site-overview,.workspace-section{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:20px;overflow:hidden}.section-heading{align-items:center;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;min-height:70px;padding:16px 20px}.section-heading.compact{min-height:62px}.report-table-wrap,.site-table-wrap{overflow-x:auto}table{border-collapse:collapse;min-width:840px;width:100%}th{background:#fafbfc;color:var(--muted);font-size:11px;font-weight:650;padding:10px 14px;text-align:left;text-transform:uppercase}td{border-top:1px solid #edf0f4;padding:12px 14px;vertical-align:middle}td span,td strong{display:block}td small,td span{color:var(--muted);font-size:11px;margin-top:2px}code{background:#f2f4f7;padding:3px 5px}.status,code{border-radius:4px}.status{display:inline-block;font-size:11px;font-weight:650;padding:3px 6px}.status.ready{background:var(--green-soft);color:var(--green)}.status.missing{background:var(--red-soft);color:var(--red)}.empty-row{color:var(--muted);padding:28px;text-align:center}.report-form{display:grid;grid-gap:16px;gap:16px;grid-template-columns:minmax(220px,1.4fr) repeat(2,minmax(170px,.8fr));padding:20px}label{display:flex;flex-direction:column;gap:6px;min-width:0}label>span{color:#344054;font-size:12px;font-weight:650}label small{color:var(--muted);font-weight:400}input,select,textarea{background:#fff;border:1px solid #cfd6df;border-radius:5px;color:var(--ink);min-height:36px;padding:8px 10px;width:100%}textarea{resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(36,87,214,.12);outline:none}.wide-field{grid-column:1/-1}.input-with-icon{align-items:center;display:flex;position:relative}.input-with-icon svg{color:var(--muted);left:10px;pointer-events:none;position:absolute}.input-with-icon input{padding-left:34px}.form-actions{align-items:center;display:flex;gap:12px;grid-column:1/-1}.button{align-items:center;border:1px solid transparent;border-radius:5px;cursor:pointer;display:inline-flex;font-weight:650;gap:7px;justify-content:center;min-height:36px;padding:8px 12px;text-decoration:none}.button.primary{background:var(--blue);color:#fff}.button.secondary{background:#fff;border-color:#cfd6df;color:#344054}.button:disabled{cursor:not-allowed;opacity:.55}.inline-error{color:var(--red);font-size:12px}.notice{border-top:1px solid;padding:11px 20px}.notice.error{background:var(--red-soft);border-color:#fecaca;color:var(--red)}.notice.success{background:var(--green-soft);border-color:#b7ead7;color:var(--green)}.result-strip{align-items:stretch;background:#f8fbff;border-top:1px solid #d9e5ff;display:grid;grid-template-columns:repeat(4,minmax(120px,1fr)) auto;grid-gap:1px;gap:1px;padding:14px 20px}.result-strip>div{border-right:1px solid #d9e5ff;display:flex;flex-direction:column;padding-right:14px}.result-strip span{color:var(--muted);font-size:11px}.result-strip strong{font-size:16px;margin-top:3px}.download-actions{align-items:center;display:flex;gap:5px}.download-actions a{align-items:center;border:1px solid #d5dbe4;border-radius:4px;display:inline-flex;gap:4px;min-height:30px;padding:5px 7px;text-decoration:none}.download-actions a:hover{border-color:var(--blue);color:var(--blue)}.download-actions a span{color:inherit;font-size:11px;margin:0}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.login-page{align-items:center;display:flex;justify-content:center;min-height:100vh;padding:24px}.login-panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);width:min(390px,100%);padding:32px}.login-panel img{width:148px}.login-panel h1{margin:28px 0 6px}.login-panel>p{color:var(--muted)}.login-panel form{display:grid;grid-gap:15px;gap:15px;margin-top:24px}@media (max-width:820px){.app-shell{display:block}.sidebar{height:auto;position:static;padding:14px 16px}.brand{padding-bottom:12px}.brand img{width:118px}.sidebar nav{border-top:1px solid var(--line);flex-direction:row;overflow-x:auto;padding-top:8px}.sidebar nav a{border-bottom:2px solid transparent;border-left:0;flex:0 0 auto}.sidebar-footer{display:none}.app-shell>main{padding:22px 14px 44px}.page-header{display:block}.rule-label{display:inline-block;margin-top:10px}.section-heading{align-items:flex-start;gap:12px}.report-form{grid-template-columns:1fr}.form-actions,.wide-field{grid-column:1}.result-strip{grid-template-columns:repeat(2,1fr)}.result-strip .button{grid-column:1/-1}}