:root{--color-bg:#f8f9fa;--color-surface:#fff;--color-border:#d1d5db;--color-border-subtle:#e5e7eb;--color-text:#111827;--color-text-muted:#6b7280;--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-focus:#2563eb;--color-danger:#b91c1c;--color-success:#15803d;--color-success-hover:#166534;--color-chip-bg:#eff6ff;--color-chip-text:#1e40af;--color-deprecated:#92400e;--color-deprecated-bg:#fef3c7;--radius:8px;--shadow:0 1px 3px #00000014;--step--1:clamp(.875rem, calc(.826923rem + .015024vw), 1rem);--step-0:clamp(1rem, calc(.951923rem + .015024vw), 1.125rem);--step-1:clamp(1.125rem, calc(1.07692rem + .015024vw), 1.25rem);--step-2:clamp(1.375rem, calc(1.27885rem + .030048vw), 1.625rem);--step-3:clamp(1.75rem, calc(1.60577rem + .045072vw), 2.125rem);--space-3xs:clamp(.25rem, calc(.201923rem + .015024vw), .375rem);--space-2xs:clamp(.5rem, calc(.403846rem + .030048vw), .75rem);--space-xs-fluid:clamp(.75rem, calc(.653846rem + .030048vw), 1rem);--space-s:clamp(1rem, calc(.807692rem + .060096vw), 1.5rem);--space-m:clamp(1.5rem, calc(1.30769rem + .060096vw), 2rem);--space-l:clamp(2rem, calc(1.61539rem + .120192vw), 3rem);--space-xl-fluid:clamp(3rem, calc(2.61539rem + .120192vw), 4rem);--space-2xl:clamp(4rem, calc(3.23077rem + .240385vw), 6rem);--space-xs:var(--space-3xs);--space-sm:var(--space-2xs);--space-md:var(--space-s);--space-lg:var(--space-m);--space-xl:var(--space-l);--grid-max:72rem;--grid-gutter:var(--space-s);--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, monospace;--max-width:var(--grid-max);--page-top-inset:var(--space-md);--score-panel-width:16rem}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;font-size:100%}body{font-family:var(--font-sans);font-size:var(--step-0);color:var(--color-text);background:var(--color-bg);margin:0;line-height:1.5}button:not(:disabled){cursor:pointer}button:disabled{cursor:not-allowed}.site-footer{max-width:var(--max-width);margin:var(--space-xl) auto 0;padding:var(--space-lg) var(--grid-gutter) var(--space-xl);text-align:center}.site-footer-text{font-size:var(--step--1);color:var(--color-text-muted);margin:0;line-height:1.5}.site-footer a{color:var(--color-primary);font-weight:500;text-decoration:none}.site-footer a:hover{color:var(--color-primary-hover);text-underline-offset:2px;text-decoration:underline}.site-footer a:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.app{max-width:var(--max-width);padding:var(--page-top-inset) var(--grid-gutter) var(--space-xl);margin:0 auto}.app-header{margin-bottom:var(--space-xl)}.app-header h1{margin:0 0 var(--space-sm);font-size:var(--step-3);letter-spacing:-.02em;font-weight:700}.app-subtitle{color:var(--color-text-muted);max-width:42rem;margin:0}.app-layout{gap:var(--space-xl);flex-direction:column;display:flex}.url-importer{padding:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow)}.url-importer h2{margin:0 0 var(--space-sm);font-size:var(--step-1)}.url-importer-description{margin:0 0 var(--space-md);color:var(--color-text-muted);max-width:42rem}.url-importer-form label{margin-bottom:var(--space-xs);font-size:var(--step--1);font-weight:500;display:block}.url-importer-row{gap:var(--space-sm);flex-wrap:wrap;display:flex}.url-importer-input{flex:18rem;min-width:min(18rem,100%)}.url-importer-submit{flex:none}.url-importer-actions{gap:var(--space-sm);flex-wrap:wrap;flex:none;display:flex}.url-importer-validation{margin-top:var(--space-md);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface)}.url-importer-validation-heading{margin:0 0 var(--space-sm);font-size:var(--step-0)}.url-importer-validation-summary{margin:0 0 var(--space-sm);color:var(--color-text-muted);font-size:.875rem}.url-importer-validation-issues{margin:0 0 var(--space-md);padding-left:var(--space-md);font-size:.875rem}.url-importer-validation-issues li{margin-bottom:var(--space-xs)}.url-importer-validation-issues [data-severity=error]{color:var(--color-danger)}.url-importer-validation-issues [data-severity=warning]{color:var(--color-deprecated)}.url-importer-validation-message{font-weight:500;display:block}.url-importer-validation-suggestion{margin-top:var(--space-3xs);color:var(--color-text-muted);font-weight:400;display:block}.url-importer-corrected-label{margin:0 0 var(--space-xs);font-size:var(--step--1);color:var(--color-text-muted);font-weight:500}.url-importer-corrected{margin:0 0 var(--space-sm)}.url-importer-copy-corrected{margin-top:var(--space-xs)}.url-importer-input{width:100%;min-height:2.75rem;padding:var(--space-sm) var(--space-md);font:inherit;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text)}.url-importer-status{margin-top:var(--space-sm);color:var(--color-text-muted);font-size:.875rem}.url-importer-status[data-tone=success]{color:var(--color-success)}.url-importer-status[data-tone=error]{color:var(--color-danger)}.url-importer-no-csp{margin:0 0 var(--space-xs)}.url-importer-learn-link{color:var(--color-primary);font-weight:500}.url-importer-learn-link:hover{color:var(--color-primary-hover)}.category-fieldset{margin:0 0 var(--space-lg);padding:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow)}.category-fieldset legend{padding:0 var(--space-sm);font-size:1.125rem;font-weight:600}.directive-list{gap:var(--space-md);flex-direction:column;display:flex}.directive-section{padding:var(--space-md);border:1px solid var(--color-border-subtle);border-radius:var(--radius);background:var(--color-bg);scroll-margin-top:var(--page-top-inset);scroll-margin-bottom:var(--space-lg);flex-direction:column;display:flex}#policy-header-mode{scroll-margin-top:var(--page-top-inset);scroll-margin-bottom:var(--space-lg)}.directive-header{justify-content:space-between;align-items:center;gap:var(--space-sm);display:flex}.enable-label{align-items:center;gap:var(--space-sm);cursor:pointer;flex:1;min-width:0;min-height:2.75rem;display:flex}.directive-info-link{width:2.75rem;height:2.75rem;color:var(--color-text-muted);border-radius:var(--radius);flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;transition:color .15s,background-color .15s;display:inline-flex}.directive-info-link:hover{color:var(--color-primary);background:var(--color-chip-bg)}.directive-info-link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.directive-info-link svg{display:block}.enable-checkbox{width:1.125rem;height:1.125rem;accent-color:var(--color-primary)}.directive-name{font-family:var(--font-mono);font-size:.9375rem;font-weight:600}.directive-controls{margin-top:var(--space-md);gap:var(--space-md);flex-direction:column;flex:1;display:flex}.source-list-editor{gap:var(--space-md);flex-direction:column;flex:1;display:flex}.source-list-content{gap:var(--space-sm);flex-direction:column;flex:1;display:flex}.source-list-actions{padding-top:var(--space-md);border-top:1px solid var(--color-border-subtle);margin-top:auto}.source-list-actions label{margin-bottom:var(--space-sm);font-size:.875rem;font-weight:500;display:block}.source-list-actions-row{gap:var(--space-sm);flex-wrap:wrap;align-items:stretch;display:flex}.source-list-buttons{gap:var(--space-sm);flex-wrap:wrap;display:flex}.source-list-buttons>*{flex:10rem}.source-list-btn{white-space:nowrap;width:100%}@media (width>=772px){.source-list-buttons{flex-wrap:nowrap}.source-list-buttons>*{flex:1 1 0}}.directive-help{color:var(--color-text-muted);margin:0;font-size:.875rem}.deprecated-badge{color:var(--color-deprecated);background:var(--color-deprecated-bg);border-radius:4px;padding:.125rem .375rem;font-size:.75rem;font-weight:600;display:inline-block}.keyword-select,.server-select,.source-input,select{min-height:2.75rem;padding:var(--space-sm) var(--space-md);font:inherit;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);color:var(--color-text)}.keyword-select{width:100%;min-width:0}.source-input{box-sizing:border-box;width:100%;min-width:0}.url-importer-input,.source-input:not(textarea){height:2.75rem}.values-list{gap:var(--space-sm);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.values-list:empty{display:none}.value-item{align-items:center;gap:var(--space-xs);display:flex}.value-chip{padding:var(--space-xs) var(--space-sm);font-family:var(--font-mono);color:var(--color-chip-text);background:var(--color-chip-bg);border-radius:4px;font-size:.8125rem;display:inline-block}.custom-source-row{align-items:center;gap:var(--space-sm);flex-wrap:nowrap;display:flex}.custom-source-row+.custom-source-row{margin-top:var(--space-sm)}.custom-source-row .source-input{flex:1;min-width:0}.custom-source-actions{gap:var(--space-xs);flex-shrink:0;display:flex}.sandbox-fieldset{padding:var(--space-md);border:1px solid var(--color-border-subtle);border-radius:var(--radius);margin:0}.sandbox-fieldset legend{font-size:.875rem;font-weight:600}.sandbox-grid{gap:var(--space-sm);grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));display:grid}.sandbox-flag-label{align-items:center;gap:var(--space-xs);font-family:var(--font-mono);cursor:pointer;min-height:2.75rem;font-size:.8125rem;display:flex}.sandbox-flag-name{flex:1;min-width:0}.flag-info-wrap{flex-shrink:0;align-self:center;position:relative}.flag-info-btn{width:1.5rem;height:1.5rem;color:var(--color-text-muted);cursor:help;background:0 0;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;padding:0;display:inline-flex}.flag-info-btn:hover,.flag-info-btn:focus-visible{color:var(--color-primary);background:var(--color-chip-bg);border-color:var(--color-border-subtle)}.flag-info-tooltip{z-index:300;top:50%;right:auto;left:calc(100% + var(--space-xs));width:max-content;max-width:18rem;padding:var(--space-sm);font-family:var(--font-sans);color:var(--color-text);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);box-shadow:var(--shadow);font-size:.75rem;line-height:1.4;position:absolute;transform:translateY(-50%)}.flag-info-tooltip[hidden]{display:none}.btn{min-width:2.75rem;min-height:2.75rem;padding:var(--space-sm) var(--space-md);font:inherit;border-radius:var(--radius);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;font-size:.9375rem;font-weight:500;transition:background-color .15s,border-color .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{color:#fff;background:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{color:var(--color-text);background:var(--color-surface);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-bg)}.btn-icon{padding:var(--space-sm);color:var(--color-text-muted);border-color:var(--color-border);background:0 0;font-size:1.25rem;line-height:1}.btn-icon:hover:not(:disabled){color:var(--color-danger);border-color:var(--color-danger)}.btn-confirm{color:#fff;background:var(--color-success);border-color:var(--color-success)}.btn-confirm:hover:not(:disabled){background:var(--color-success-hover);border-color:var(--color-success-hover)}.remove-source-btn{color:var(--color-danger);border-color:var(--color-danger)}.remove-source-btn:hover:not(:disabled){color:#fff;background:var(--color-danger);border-color:var(--color-danger)}.toast-container{top:var(--page-top-inset);z-index:1000;width:min(24rem, calc(100vw - 2 * var(--grid-gutter)));pointer-events:none;flex-direction:column;align-items:center;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast{width:100%;padding:var(--space-sm) var(--space-md);border-radius:var(--radius);font-size:var(--step--1);text-align:center;color:#fff;box-shadow:var(--shadow), 0 4px 12px #0000001f;opacity:0;font-weight:500;line-height:1.4;transform:translateY(-1rem)}.toast.is-visible{animation:.3s forwards toast-enter}.toast.is-hiding{animation:.3s forwards toast-exit}.toast--success{background:var(--color-success)}.toast--error{background:var(--color-danger)}@keyframes toast-enter{0%{opacity:0;transform:translateY(-1rem)}to{opacity:1;transform:translateY(0)}}@keyframes toast-exit{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-.75rem)}}.policy-output{margin:var(--space-xl) 0;padding:var(--space-lg);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow);scroll-margin-top:var(--page-top-inset)}.policy-output h2{margin:0 0 var(--space-md);outline:none;font-size:1.125rem}.policy-warning{margin:0 0 var(--space-md);padding:var(--space-md);border:1px solid var(--color-deprecated-bg);border-left:4px solid var(--color-deprecated);border-radius:var(--radius);background:var(--color-deprecated-bg)}.policy-warning p{color:var(--color-deprecated);margin:0;font-size:.8125rem;line-height:1.5}.policy-warning a{color:#78350f;text-underline-offset:2px;font-weight:600;text-decoration:underline}.policy-warning a:hover{color:#92400e}.policy-warning a:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.output-group{margin-bottom:var(--space-md)}.output-group label,.output-group .field-caption,.nonce-result .field-caption{margin-bottom:var(--space-xs);font-size:.875rem;font-weight:500;display:block}.policy-preview{padding:var(--space-md);font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;background:var(--color-bg);border:1px solid var(--color-border-subtle);border-radius:var(--radius);margin:0;font-size:.8125rem;line-height:1.6;overflow-x:auto}.server-preview{max-height:8rem;overflow-y:auto}.server-help{margin:var(--space-xs) 0 var(--space-sm);color:var(--color-text-muted);font-size:.8125rem}.mode-fieldset{margin:0 0 var(--space-md);padding:var(--space-md);border:1px solid var(--color-border-subtle);border-radius:var(--radius)}.mode-fieldset legend{font-size:.875rem;font-weight:600}.mode-label{align-items:center;gap:var(--space-sm);min-height:2.75rem;margin-right:var(--space-lg);cursor:pointer;display:flex}.output-actions{gap:var(--space-sm);flex-wrap:wrap;display:flex}.nonce-helper{margin-top:var(--space-sm);padding:var(--space-md);border:1px solid var(--color-border-subtle);border-radius:var(--radius);background:var(--color-surface)}.nonce-helper summary{cursor:pointer;color:var(--color-primary);font-weight:600}.nonce-helper-intro{margin:var(--space-sm) 0 var(--space-md);color:var(--color-text-muted);font-size:.8125rem}.nonce-mode-fieldset{margin:0 0 var(--space-md);border:0;padding:0}.nonce-mode-fieldset legend{margin-bottom:var(--space-xs);font-size:.875rem;font-weight:600}.nonce-mode-label{align-items:center;gap:var(--space-sm);min-height:2.75rem;margin-right:var(--space-lg);cursor:pointer;display:flex}.nonce-mode-panel{gap:var(--space-xs);margin-bottom:var(--space-md);flex-direction:column;display:flex}.nonce-mode-panel label{font-size:.875rem;font-weight:500}.nonce-inline-input{width:100%;height:auto;min-height:8rem;padding:var(--space-sm) var(--space-md);font-family:var(--font-mono);border:1px solid var(--color-border);border-radius:var(--radius);resize:vertical;font-size:.8125rem;line-height:1.5}.nonce-generate-btn{width:100%}.nonce-helper-status{margin:var(--space-sm) 0 0;color:var(--color-text-muted);font-size:.8125rem}.nonce-result{margin-top:var(--space-md)}.nonce-snippet{max-height:12rem;overflow:auto}.nonce-result-actions{gap:var(--space-sm);margin-top:var(--space-sm);flex-wrap:wrap;display:flex}.security-score-panel{width:100%;margin:0 0 var(--space-xl);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow);position:static}.security-score-panel:before{content:"Security score";margin-bottom:var(--space-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-muted);font-size:.75rem;font-weight:600;display:block}.security-score-value{margin:0;font-size:2rem;font-weight:700;line-height:1.1}.security-score-grade{margin:var(--space-xs) 0;font-size:.9375rem;font-weight:600}.security-score-summary{margin:0 0 var(--space-sm);color:var(--color-text-muted);font-size:.8125rem;line-height:1.4}.security-score-details{font-size:.8125rem}.security-score-details summary{cursor:pointer;color:var(--color-primary);font-weight:500;text-decoration:none}.security-score-details summary:hover{text-underline-offset:2px;text-decoration:underline}.security-score-factors{margin:var(--space-sm) 0 0;padding-left:1.1rem}.security-score-factors li{margin-bottom:var(--space-xs);color:var(--color-text-muted)}.factor-positive{color:var(--color-success)}.factor-negative{color:var(--color-danger)}.score-poor .security-score-value,.score-poor .security-score-grade{color:#b91c1c}.score-fair .security-score-value,.score-fair .security-score-grade{color:#c2410c}.score-good .security-score-value,.score-good .security-score-grade{color:#a16207}.score-strong .security-score-value,.score-strong .security-score-grade{color:#1d4ed8}.score-excellent .security-score-value,.score-excellent .security-score-grade{color:var(--color-success)}.security-score-recommendations{margin-top:var(--space-sm)}.security-score-recommendations-intro{margin:var(--space-sm) 0;color:var(--color-text-muted);font-size:.75rem;line-height:1.4}.security-score-recommendations-list{margin:0;padding:0;list-style:none}.security-score-recommendation-btn{width:100%;margin-bottom:var(--space-xs);padding:var(--space-sm);font:inherit;text-align:left;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border-subtle);border-radius:var(--radius);cursor:pointer;font-size:.75rem;line-height:1.4;transition:border-color .15s,background-color .15s,transform .15s}.security-score-recommendation-btn:hover{border-color:var(--color-primary);background:var(--color-chip-bg)}.security-score-recommendation-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.security-score-nav{gap:var(--space-sm);margin-top:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--color-border-subtle);flex-direction:column;display:flex}.security-score-nav-btn{width:100%;padding:var(--space-sm);font:inherit;text-align:left;color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border-subtle);border-radius:var(--radius);cursor:pointer;font-size:.75rem;line-height:1.4;transition:border-color .15s,background-color .15s,transform .15s}.security-score-nav-btn:hover{border-color:var(--color-primary);background:var(--color-chip-bg)}.security-score-nav-btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.security-score-back-to-top-wrap{opacity:0;visibility:hidden;max-height:0;transition:max-height .22s,opacity .2s,visibility .2s,transform .2s;overflow:hidden;transform:translateY(.25rem)}.security-score-back-to-top-wrap.is-visible{opacity:1;visibility:visible;max-height:3.5rem;transform:translateY(0)}.security-score-back-to-top-wrap .security-score-back-to-top{width:100%}.directive-section.recommendation-highlight,#policy-header-mode.recommendation-highlight,.policy-output.recommendation-highlight{animation:1.4s ease-out recommendation-target-pulse}@keyframes recommendation-target-pulse{0%{outline-offset:2px;outline:2px solid #2563ebcc;box-shadow:0 0 #2563eb73}70%{outline-offset:4px;outline:2px solid #2563eb59;box-shadow:0 0 0 14px #2563eb00}to{outline-offset:2px;outline:2px solid #0000;box-shadow:0 0 #2563eb00}}@media (prefers-reduced-motion:reduce){.directive-section.recommendation-highlight,#policy-header-mode.recommendation-highlight,.policy-output.recommendation-highlight{outline:2px solid var(--color-focus);outline-offset:2px;animation:none}.security-score-recommendation-btn,.security-score-nav-btn,.security-score-back-to-top,.security-score-back-to-top-wrap{transition:none}}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width>=772px){:root{--page-top-inset:var(--space-lg)}.app{padding-left:var(--space-xl);padding-right:calc(var(--score-panel-width) + var(--page-top-inset) + var(--space-xl))}.security-score-panel{top:var(--page-top-inset);right:max(var(--space-lg), calc((100vw - var(--max-width)) / 2 + var(--space-lg)));z-index:200;width:min(var(--score-panel-width), calc(100vw - 2rem));margin:0;position:fixed}}
