@font-face{font-family:Geist;src:url('/geist.woff2') format('woff2');font-weight:100 900;font-display:swap}
:root{font:16px/1.45 Geist,system-ui,sans-serif;color:#1c2b36;background:#f2f6f9;font-synthesis:none;--line:#dbe5ed;--muted:#536a7b;--blue:#205eab;--yellow:#fdfd00}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.5;cursor:default}a{color:#155a9e}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #2799dc;outline-offset:3px}h1,h2,h3,p{margin:0}.shell{max-width:1100px;margin:0 auto;padding-inline:clamp(15px,4vw,36px)}
.topbar{background:#10151e;color:#fff;border-bottom:1px solid #334354}.bar{min-height:62px;display:flex;align-items:center;justify-content:space-between;gap:12px}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;color:#fff}.brand img{width:100px;height:auto}.brand span{border-left:1px solid #536575;padding-left:12px;font-weight:700;font-size:14px}.signout{background:#273543;border:0;color:white;border-radius:9px;min-height:48px;padding:0 14px}
#app{padding-block:22px 60px}.loading{padding:30px 0;color:var(--muted)}.hero{background:linear-gradient(120deg,#20579d,#297fc8);color:white;border-radius:17px;padding:19px 20px;display:flex;align-items:end;justify-content:space-between;gap:16px}.hero h1{font-weight:740;font-size:clamp(30px,5vw,43px);letter-spacing:-.055em;line-height:1.05}.hero p{font-size:13px;color:#e2f6ff;margin-top:6px}.hero strong{font-size:26px;font-variant-numeric:tabular-nums;white-space:nowrap}.hero strong span{font-size:12px;display:block;font-weight:500}
.notice{margin:12px 0 0;padding:12px 14px;border-left:3px solid #277fba;background:#e9f3fb;border-radius:6px;font-size:13px;color:#294a61}.toolbar{display:flex;gap:8px;margin:16px 0 10px}.search{display:flex;align-items:center;flex:1;min-width:0;background:white;border:1px solid #c8d9e4;border-radius:10px;padding:0 13px;gap:9px}.search svg{flex:none;color:#48758f}.search input{border:0;outline:0;width:100%;min-width:0;min-height:48px;font-size:16px;color:#203442}.search:focus-within{outline:3px solid #2799dc;outline-offset:2px}.search input::placeholder{color:#687c8a}
.results{color:var(--muted);font-size:13px;margin:8px 1px}.results strong{color:#243d4c}.list{display:grid;gap:7px}.row{width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) 20px;gap:11px;align-items:center;text-align:left;border:1px solid var(--line);background:#fff;border-radius:13px;padding:10px 13px;min-height:64px;color:#233744}.row:active{background:#eaf5fb}.avatar{width:42px;height:42px;border-radius:12px;background:#dceef8;color:#17548a;display:grid;place-items:center;font-weight:750}.row strong,.row small{display:block}.row strong{font-size:16px;overflow-wrap:anywhere}.row small{color:var(--muted);font-size:12px;margin-top:2px}.chevron{font-size:23px;color:#7792a3}.empty{padding:35px 20px;text-align:center;border:1px solid var(--line);border-radius:14px;background:#fff}.empty p{color:var(--muted);margin-top:6px;font-size:14px}.paging{display:flex;justify-content:space-between;gap:9px;margin-top:13px}.secondary,.back,.button{min-height:48px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #c6d7e0;border-radius:9px;background:white;color:#23465f;padding:0 15px;font-weight:650;text-decoration:none}.button{border:0;background:var(--yellow);color:#151a20;width:100%}
.detail-head{display:flex;align-items:center;gap:12px;margin:0 0 15px}.detail-head .back{min-width:48px;padding:0 14px}.detail-head p{color:var(--muted);font-size:13px}.profile-header{padding:19px;background:#fff;border:1px solid var(--line);border-radius:15px;display:flex;gap:14px;align-items:center}.profile-header .avatar{width:54px;height:54px;border-radius:15px;font-size:20px}.profile-header h1{font-size:clamp(25px,4vw,36px);line-height:1.08;letter-spacing:-.045em;overflow-wrap:anywhere}.profile-header p{color:var(--muted);font-size:13px;margin-top:5px}.sections{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:12px;margin-top:12px}.column{display:grid;align-content:start;gap:12px}.panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px}.panel h2{font-size:17px;letter-spacing:-.03em}.panel-intro{color:var(--muted);font-size:13px;margin:4px 0 10px}.kv{margin:8px 0 0}.kv>div{padding:8px 0;border-top:1px solid #e8eff4}.kv dt{font-size:12px;color:var(--muted);font-weight:600}.kv dd{margin:2px 0 0;font-size:15px;white-space:pre-wrap;overflow-wrap:anywhere}.kv dd a{display:inline-flex;min-height:48px;align-items:center}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}.metric{border-radius:9px;padding:9px;background:#eff6fa;min-width:0}.metric strong{font-size:21px;line-height:1.1;font-variant-numeric:tabular-nums}.metric span{font-size:11px;display:block;color:var(--muted);margin-top:2px}.badge{display:inline-flex;background:#fff6cb;color:#674700;padding:5px 8px;border-radius:7px;font-size:12px;font-weight:650;margin-top:7px}.review{color:#734719;background:#fff7e4;padding:10px;border-radius:9px;font-size:13px;margin-top:10px;white-space:pre-wrap}.source{padding:9px 0;border-top:1px solid #e8eff4}.source strong{display:block;font-size:14px}.source small{display:block;color:var(--muted);font-size:12px;margin-top:3px}.record{padding:10px 0;border-top:1px solid #e8eff4}.record strong{display:block;font-size:15px}.record small{display:block;color:var(--muted);font-size:13px;margin-top:3px}.record p{color:#314f62;font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;margin-top:4px}.match{display:flex;gap:8px;align-items:center;justify-content:space-between;width:100%;text-align:left;min-height:54px;border:1px solid #b9d8eb;border-radius:9px;background:#edf7fd;color:#164e7b;padding:8px 12px;margin-top:8px;font-weight:650}.match span{font-size:12px;font-weight:500;color:#506c7d;display:block}
.auth{max-width:460px;margin:10vh auto;background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px}.auth h1{font-size:29px;letter-spacing:-.04em}.auth p{font-size:15px;line-height:1.55;color:var(--muted);margin:9px 0 16px}.error{padding:12px;background:#fff1ef;border-left:3px solid #b2382d;margin:10px 0;color:#782b27}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(max-width:720px){.bar{min-height:54px}.brand img{width:90px}.brand span{font-size:13px}.shell{padding-inline:12px}#app{padding-block:14px 35px}.hero{padding:15px}.hero h1{font-size:31px}.hero strong{font-size:21px}.row{padding:9px 11px}.sections{grid-template-columns:1fr}.panel{padding:14px}.auth{margin:6vh auto}.profile-header{padding:15px}.metrics{gap:4px}.metric{padding:8px 6px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

.project-candidate{margin-top:10px;padding:12px;border:1px solid #dce8ef;border-radius:10px;background:#f6fafc}
.candidate-badge{display:inline-flex;align-items:center;min-height:28px;padding:4px 8px;border-radius:7px;background:#fff1c5;color:#5d4200;font-size:12px;font-weight:700}
.candidate-fields{margin:9px 0}
.candidate-fields>div{border-color:#dbe8f0}
.candidate-note{color:#425c6e;font-size:13px;line-height:1.4;overflow-wrap:anywhere}
.aerial-figure{margin:12px 0 0}
.aerial-image{display:block;width:100%;max-height:300px;object-fit:contain;background:#e4edf1;border-radius:9px;border:1px solid #d5e2e9}
.aerial-figure figcaption{margin-top:6px;color:#526978;font-size:12px;line-height:1.4}
.permits{margin-top:14px;padding-top:12px;border-top:1px solid #dbe8f0}
.permits-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.permits-heading h3{font-size:15px;color:#141414}
.permits-heading span{font-size:11px;font-weight:700;color:#4a5660}
.record .permit-context{margin:5px 0 0;font-size:12px;line-height:1.4;color:#536a7b}
.permit{margin-top:9px;padding:12px;border:1px solid #dbe5ed;border-radius:9px;background:#fff}
.permit-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.permit-top strong{min-width:0;overflow-wrap:anywhere;font-size:14px}
.permit-status{flex:none;border-radius:6px;background:#f4ff00;color:#141414;padding:4px 7px;font-size:11px;font-weight:700}
.record .permit-number{font-size:12px;color:#536a7b;margin-top:4px}
.permit-dates{display:flex;gap:24px;flex-wrap:wrap;margin:8px 0 0}
.permit-dates>div{padding:0;border:0}
.permit-dates dd{font-size:13px}
.record .permit-description,.record .permit-qualification{font-size:13px;line-height:1.45}
.record .permit-qualification{color:#536a7b}
.permit-source{display:inline-flex;align-items:center;gap:6px;min-height:48px;color:#0746c4;font-size:13px;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.permit-review{margin-top:14px;padding:12px;border:1px solid #dbe5ed;border-radius:9px;background:#fff}
.permit-review h3{font-size:14px;color:#141414}
.record .permit-review-summary{font-size:13px;line-height:1.45}
.record .permit-review-context{font-size:12px;line-height:1.4;color:#536a7b}
.project-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:12px 0}
.project-filters button{min-height:54px;padding:6px 7px;border:1px solid #c8d9e4;border-radius:8px;background:#fff;color:#141414;text-align:left;line-height:1.2}
.project-filters button[aria-pressed="true"]{border-color:#141414;background:#f4ff00}
.project-filters span,.project-filters strong{display:block;overflow-wrap:anywhere}
.project-filters span{font-size:11px;font-weight:650}.project-filters strong{margin-top:3px;font-size:15px}
.project-empty{padding:14px 0;color:var(--muted);font-size:14px}
.install-status{display:grid;gap:3px;margin:10px 0 4px;padding:9px 10px;border-radius:8px;border-left:3px solid #0b5cff;background:#f9f4ed}
.install-status strong{font-size:13px}.install-status span,.install-status small{font-size:12px;line-height:1.35;color:#514e49}
.install-status a{display:inline-flex;align-items:center;min-height:48px;font-size:13px;font-weight:650}
.install-status.installed{border-color:#0b5cff}.install-status.not_installed{border-color:#141414}
