*,:after,:before{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0f0f13;--surface:#1a1a24;--border:#2a2a3a;--text:#e4e4ef;--muted:#8888a0;--accent:#53fc18;--accent-dim:#3cb812;--danger:#ef4444;--warning:#eab308;--success:#22c55e}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh}.page{width:100%;margin:0 auto;padding:2.5rem clamp(1rem,4vw,4rem)}.admin-page,.page{max-width:1600px}.legal-page{max-width:1500px}.collect-page{max-width:1100px}.legal-doc{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.5rem 1.75rem;margin-bottom:2rem}.legal-doc section{margin-bottom:1.75rem}.legal-doc section:last-child{margin-bottom:0}.legal-doc h2{font-size:1.05rem;margin-bottom:.6rem;color:var(--text)}.legal-doc h3{margin:1rem 0 .5rem}.legal-doc h3,.legal-doc p{font-size:.9rem;color:var(--muted)}.legal-doc p{margin-bottom:.6rem}.legal-doc ul{list-style:none;margin:.5rem 0 .75rem}.legal-doc li{font-size:.875rem;color:var(--muted);padding:.2rem 0 .2rem 1.1rem;position:relative}.legal-doc li:before{content:"•";position:absolute;left:0;color:var(--accent)}.legal-doc strong{color:var(--text);font-weight:600}.legal-doc code{font-size:.8rem;color:var(--accent)}.consent-form{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.5rem}.status-box{text-align:center;padding:3rem 1rem}.status-msg{font-size:1.1rem;color:var(--text);margin-bottom:.5rem}.status-hint{font-size:.85rem;color:var(--muted)}.spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;margin:0 auto 1.5rem;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.fp-details{display:flex;flex-direction:column;gap:1.25rem}.duplicate-notice{background:rgba(234,179,8,.1);border:1px solid var(--warning);border-radius:8px;padding:.875rem 1rem;font-size:.875rem;color:var(--warning)}.overview-grid{display:grid;grid-template-columns:1fr;grid-gap:.5rem;gap:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1rem 1.25rem}@media (min-width:640px){.overview-grid{grid-template-columns:1fr 1fr}}.kv-row{display:flex;flex-direction:column;gap:.15rem;padding:.4rem 0}.kv-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.kv-value{font-size:.78rem;word-break:break-all;color:var(--accent)}.fp-section{background:var(--surface);border:1px solid var(--border);border-radius:8px;overflow:hidden}.fp-section summary{padding:.75rem 1rem;cursor:pointer;font-size:.875rem;font-weight:500;-webkit-user-select:none;-moz-user-select:none;user-select:none}.fp-section summary:hover{color:var(--accent)}.fp-section pre{padding:0 1rem 1rem;font-size:.68rem;white-space:pre-wrap;word-break:break-all;color:var(--muted);max-height:400px;overflow:auto}header h1{font-size:1.75rem;font-weight:700;margin-bottom:.25rem;letter-spacing:-.02em}.subtitle{color:var(--muted);margin-bottom:2rem}.hero{position:relative;display:grid;grid-template-columns:1fr;grid-gap:1.5rem;gap:1.5rem;align-items:center;background:radial-gradient(120% 140% at 0 0,rgba(83,252,24,.12),transparent 55%),var(--surface);border:1px solid var(--border);border-radius:18px;padding:2.5rem clamp(1.5rem,4vw,3.5rem);margin-bottom:1.5rem;overflow:hidden}.hero h1{font-size:clamp(1.6rem,4vw,2.6rem);font-weight:800;margin-bottom:.85rem;letter-spacing:-.025em}.hero .subtitle{margin-bottom:0;font-size:clamp(.95rem,1.4vw,1.1rem);max-width:60ch}.hero-art{display:none;justify-self:center}.fp-disc{width:clamp(190px,19vw,270px);aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 50% 45%,rgba(83,252,24,.18),rgba(83,252,24,.05) 58%,transparent 72%),var(--bg);border:1px solid rgba(83,252,24,.3);box-shadow:0 0 50px rgba(83,252,24,.18),inset 0 0 32px rgba(83,252,24,.07)}.fp-img{width:52%;height:auto;filter:invert(1) drop-shadow(0 0 7px rgba(83,252,24,.55));opacity:.95}@media (min-width:820px){.hero{grid-template-columns:1fr auto;gap:2.5rem;padding:3rem 3.5rem}.hero-art{display:block}}.hero-badge{display:inline-block;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);background:rgba(83,252,24,.1);border:1px solid rgba(83,252,24,.25);border-radius:999px;padding:.3rem .7rem;margin-bottom:1rem}.summary-cards{display:grid;grid-template-columns:1fr 1fr;grid-gap:1rem;gap:1rem;margin-bottom:1.5rem}.summary-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.1rem 1.25rem}.summary-card h3{font-size:.85rem;margin-bottom:.6rem;display:flex;align-items:center;gap:.4rem}.summary-card h3:before{font-size:.95rem;line-height:1}.summary-card--yes{border-color:rgba(34,197,94,.35)}.summary-card--yes h3{color:var(--success)}.summary-card--yes h3:before{content:"✓"}.summary-card--no{border-color:rgba(239,68,68,.3)}.summary-card--no h3{color:var(--danger)}.summary-card--no h3:before{content:"✕"}.summary-card ul{list-style:none}.summary-card li{font-size:.82rem;color:var(--muted);padding:.22rem 0 .22rem 1rem;position:relative}.summary-card li:before{content:"–";position:absolute;left:0;color:var(--border)}.legal-doc h3{letter-spacing:.02em}@media (min-width:1000px){.legal-doc{column-count:2;column-gap:3rem;padding:2rem 2.5rem}.legal-doc section{page-break-inside:avoid;break-inside:avoid;-webkit-column-break-inside:avoid}}@media (min-width:1400px){.legal-doc{column-count:3;column-gap:3rem}}.legal-link{color:var(--accent);text-decoration:none;border-bottom:1px solid rgba(83,252,24,.3)}.legal-link:hover{border-bottom-color:var(--accent)}.disclaimer{background:rgba(234,179,8,.07);border-left:3px solid var(--warning);border-radius:0 8px 8px 0;padding:.75rem .9rem;margin-top:.5rem}.info{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem 1.5rem;margin-bottom:2rem}.info h2{font-size:1rem;margin-bottom:.75rem}.info ul{list-style:none;margin-bottom:1rem}.info li{padding:.25rem 0 .25rem 1.25rem;position:relative;color:var(--muted);font-size:.9rem}.info li:before{content:"→";position:absolute;left:0;color:var(--accent)}.hint{font-size:.85rem;color:var(--muted);border-top:1px solid var(--border);padding-top:.75rem}.collector{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.5rem}.consent-box{margin-bottom:1.25rem}.consent-label{display:flex;gap:.75rem;align-items:flex-start;font-size:.875rem;color:var(--muted);cursor:pointer}.consent-label input{margin-top:.25rem;accent-color:var(--accent)}.collect-btn{width:100%;padding:.875rem;background:var(--accent);color:#000;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:background .15s}.collect-btn:hover:not(:disabled){background:var(--accent-dim)}.collect-btn:disabled{opacity:.5;cursor:not-allowed}.error{color:var(--danger);margin-top:1rem;font-size:.875rem}.result{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border)}.score{display:flex;flex-direction:column;align-items:center;padding:1rem;border:2px solid;border-radius:12px;margin-bottom:1.25rem}.score-value{font-size:2.5rem;font-weight:800;line-height:1}.score-label{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-top:.25rem}.result-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:.75rem;gap:.75rem;margin-bottom:1rem}.result-item{display:flex;flex-direction:column;gap:.25rem}.result-item .label{font-size:.7rem;text-transform:uppercase;color:var(--muted);letter-spacing:.05em}.result-item code{font-size:.8rem;word-break:break-all;color:var(--accent)}.notes{list-style:none;margin-bottom:1rem}.notes li{font-size:.85rem;color:var(--muted);padding:.25rem 0 .25rem 1rem;position:relative}.notes li:before{content:"•";position:absolute;left:0}.success-msg{color:var(--success);font-weight:500;text-align:center}footer{margin-top:2rem;text-align:center}footer a{color:var(--muted);font-size:.85rem;text-decoration:none}footer a:hover{color:var(--accent)}.admin-login{max-width:400px;margin:5rem auto;display:flex;flex-direction:column;gap:.85rem;background:radial-gradient(120% 130% at 100% 0,rgba(83,252,24,.1),transparent 55%),var(--surface);border:1px solid var(--border);border-radius:16px;padding:2rem 1.75rem}.admin-login h2{font-size:1.4rem;letter-spacing:-.02em}.admin-login-hint{font-size:.85rem;color:var(--muted);margin-bottom:.4rem}.admin-login .hero-badge{align-self:flex-start;margin-bottom:.25rem}.admin-login input{padding:.8rem .9rem;background:var(--bg);border:1px solid var(--border);border-radius:9px;color:var(--text);font-size:1rem;transition:border-color .15s}.admin-login input:focus{outline:none;border-color:var(--accent)}.admin-login button{padding:.8rem;background:var(--accent);color:#000;border:none;border-radius:9px;font-weight:700;cursor:pointer;transition:background .15s}.admin-login button:hover:not(:disabled){background:var(--accent-dim)}.admin-login button:disabled{opacity:.5;cursor:not-allowed}.admin-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem 1.5rem;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1rem 1.25rem;margin-bottom:1.25rem}.admin-bar-head h2{font-size:1.5rem;font-weight:800;letter-spacing:-.025em;margin-top:.35rem}.admin-bar-controls{gap:.75rem;flex-wrap:wrap}.admin-bar-controls,.minscore{display:flex;align-items:center}.minscore{gap:.55rem;background:rgba(83,252,24,.08);border:1px solid rgba(83,252,24,.35);border-radius:10px;padding:.45rem .7rem}.minscore-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--accent)}.minscore input{width:56px;padding:.4rem .45rem;background:var(--bg);border:1px solid rgba(83,252,24,.3);border-radius:7px;color:var(--text);font-size:1rem;font-weight:700;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.minscore input:focus{outline:none;border-color:var(--accent)}.geo-toggle{display:flex;align-items:center;gap:.45rem;font-size:.85rem;color:var(--muted);cursor:pointer}.geo-toggle input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px}.export-group{display:inline-flex;gap:.5rem}.export-btn-wrap{position:relative}.export-btn{display:inline-flex;align-items:center;gap:.45rem;padding:.5rem .95rem;background:linear-gradient(180deg,var(--surface),var(--bg));border:1px solid var(--border);border-radius:10px;color:var(--text);font-size:.85rem;font-weight:600;cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s,color .15s}.export-btn-icon{font-size:1rem;line-height:1}.export-btn:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px);box-shadow:0 0 0 1px rgba(83,252,24,.3),0 8px 20px rgba(83,252,24,.14)}.export-btn:active{transform:translateY(0)}.export-tip{position:absolute;top:calc(100% + 12px);right:0;width:310px;background:radial-gradient(120% 130% at 100% 0,rgba(83,252,24,.08),transparent 55%),var(--bg);border:1px solid var(--border);border-radius:12px;padding:.9rem 1rem;box-shadow:0 16px 40px rgba(0,0,0,.55);text-align:left;opacity:0;visibility:hidden;transform:translateY(-4px) scale(.98);transform-origin:top right;transition:opacity .16s ease,transform .16s ease,visibility .16s;z-index:60;pointer-events:none}.export-btn-wrap:focus-within .export-tip,.export-btn-wrap:hover .export-tip{opacity:1;visibility:visible;transform:translateY(0) scale(1)}.export-tip:before{content:"";position:absolute;top:-6px;right:26px;width:12px;height:12px;background:var(--bg);border-left:1px solid var(--border);border-top:1px solid var(--border);transform:rotate(45deg)}.export-tip-title{font-size:.92rem;font-weight:700;color:var(--accent);margin-bottom:.4rem}.export-tip-desc{font-size:.8rem;color:var(--muted);line-height:1.5;margin-bottom:.55rem}.export-tip-use{font-size:.78rem;color:var(--text);line-height:1.45;margin-bottom:.6rem}.export-tip-use strong{color:var(--accent-dim)}.export-tip-file{display:block;font-size:.72rem;color:var(--accent);background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:.35rem .55rem;word-break:break-all}.btn-refresh{padding:.5rem .9rem;background:var(--bg);border:1px solid var(--border);border-radius:9px;color:var(--text);font-size:.82rem;cursor:pointer;transition:all .15s}.btn-refresh:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-refresh:disabled{opacity:.5;cursor:not-allowed}.geo-val{display:inline-flex;align-items:center;gap:.4rem}.flag{border-radius:2px;box-shadow:0 0 0 1px rgba(255,255,255,.08);flex-shrink:0}.stat-cards{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:1rem;gap:1rem;margin-bottom:1.5rem}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1.1rem 1.25rem;display:flex;flex-direction:column;gap:.3rem}.stat-card--accent{background:radial-gradient(120% 140% at 0 0,rgba(83,252,24,.12),transparent 60%),var(--surface);border-color:rgba(83,252,24,.3)}.stat-value{font-size:2rem;font-weight:800;line-height:1;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat-card--accent .stat-value{color:var(--accent)}.stat-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.admin-controls{display:flex;gap:.65rem;flex-wrap:wrap;margin-bottom:1.25rem;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:.75rem .9rem}.admin-controls label{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--muted)}.admin-controls label input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px}.admin-controls input[type=number]{width:64px;padding:.45rem;background:var(--bg);border:1px solid var(--border);border-radius:7px;color:var(--text)}.admin-controls button{padding:.5rem 1rem;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:.85rem;cursor:pointer;transition:all .15s}.admin-controls button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.admin-controls button:last-child{margin-left:auto}.admin-content{display:grid;grid-template-columns:1fr;grid-gap:1.5rem;gap:1.5rem;align-items:start}@media (min-width:1100px){.admin-content--split{grid-template-columns:minmax(0,1fr) 440px}}.table-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:.5rem 1rem 1rem;overflow-x:auto}.fp-table{width:100%;border-collapse:collapse;font-size:.8rem}.fp-table th{text-align:left;padding:.7rem .6rem;border-bottom:1px solid var(--border);color:var(--muted);font-weight:600;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;position:-webkit-sticky;position:sticky;top:0;background:var(--surface);z-index:1}.fp-table td{padding:.6rem;border-bottom:1px solid rgba(42,42,58,.5);cursor:pointer}.fp-table tbody tr{transition:background .1s}.fp-table tbody tr:hover td{background:rgba(83,252,24,.04)}.fp-table tr.selected td{background:rgba(83,252,24,.08)}.fp-table tbody tr td:last-child button{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:6px;width:24px;height:24px;line-height:1;cursor:pointer;transition:all .15s}.fp-table tbody tr td:last-child button:hover{border-color:var(--danger);color:var(--danger)}.badge{display:inline-block;padding:.15rem .5rem;border-radius:4px;font-weight:600;font-size:.75rem}.badge[data-score=high]{background:rgba(34,197,94,.15);color:var(--success)}.badge[data-score=mid]{background:rgba(234,179,8,.15);color:var(--warning)}.badge[data-score=low]{background:rgba(239,68,68,.15);color:var(--danger)}.fp-detail{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1rem;position:-webkit-sticky;position:sticky;top:1rem;max-height:80vh;overflow:auto}.row-num{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;text-align:right;width:1%}.geo-cell,.row-num{white-space:nowrap}.pagination{justify-content:space-between;flex-wrap:wrap;gap:.75rem;margin-top:1rem;padding-top:.75rem;border-top:1px solid var(--border);font-size:.82rem;color:var(--muted)}.pagination,.pg-controls{display:flex;align-items:center}.pg-controls{gap:.35rem}.pg-controls button{min-width:32px;padding:.35rem .55rem;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text);font-size:.85rem;cursor:pointer}.pg-controls button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.pg-controls button:disabled{opacity:.4;cursor:not-allowed}.pg-current{padding:0 .5rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pg-size{display:flex;align-items:center;gap:.4rem}.pg-size select{padding:.3rem .4rem;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--text)}.fp-detail-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.fp-detail h3{font-size:.9rem}.fp-detail-close{background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:6px;width:26px;height:26px;cursor:pointer;font-size:1rem;line-height:1}.fp-detail-close:hover{border-color:var(--accent);color:var(--accent)}.fp-detail pre{font-size:.65rem;white-space:pre-wrap;word-break:break-all;color:var(--muted)}code{font-family:Cascadia Code,Fira Code,monospace}@media (max-width:640px){.page{padding:1.25rem 1rem}.hero{padding:1.5rem 1.25rem;border-radius:14px}.hero .subtitle{font-size:.9rem}.summary-cards{grid-template-columns:1fr;gap:.75rem}.legal-doc{padding:1.25rem 1.1rem;border-radius:12px}.legal-doc section{margin-bottom:1.5rem}.legal-doc h2{font-size:1rem}.result-grid{grid-template-columns:1fr}.admin-header{flex-direction:column;align-items:flex-start}.stat-cards{grid-template-columns:1fr 1fr;gap:.6rem}.stat-value{font-size:1.6rem}.admin-controls button:last-child{margin-left:0}.pagination{justify-content:center}.export-group{flex-wrap:wrap}.export-tip{width:min(280px,78vw)}.stats{flex-wrap:wrap;gap:.75rem 1.25rem}.fp-detail{position:static;max-height:none}.fp-table{font-size:.72rem}.fp-table td,.fp-table th{padding:.4rem .35rem}.collector,.consent-form{padding:1.1rem}}@media (max-width:380px){.hero h1{font-size:1.4rem}.summary-card{padding:1rem}}@media (prefers-reduced-motion:reduce){.spinner{animation:none}.collect-btn{transition:none}}