:root {
  --bg:#0d1110; --panel:#151b18; --panel2:#1a211d; --line:#2b342f;
  --text:#f7f9f6; --muted:#b3beb7; --lime:#d7ff55; --green:#2d6849;
  --danger:#ffb589; --shadow:0 16px 48px rgba(0,0,0,.25);
  --sans:"Pretendard Variable",Pretendard,SUIT,"Noto Sans KR","Apple SD Gothic Neo",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
*{box-sizing:border-box} html{scroll-behavior:smooth} body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:16px;font-weight:400;line-height:1.65;letter-spacing:-.012em;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;word-break:keep-all}
button,input,select{font:inherit} button,a{touch-action:manipulation} a{color:inherit}
.presence-page{min-height:100vh;overflow-x:hidden}.presence-header{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:28px;min-height:72px;padding:0 clamp(20px,4vw,64px);background:rgba(13,17,16,.92);border-bottom:1px solid var(--line);backdrop-filter:blur(18px)}
.presence-brand{display:flex;align-items:center;gap:10px;text-decoration:none}.presence-brand>span:last-child{display:grid}.presence-brand b{font-size:15px;font-weight:850}.presence-brand small{font-size:10px;color:#bbc5be;letter-spacing:.11em;text-transform:uppercase}.presence-mark{display:grid;place-items:center;width:38px;height:38px;background:var(--lime);color:#101710;border-radius:13px;font-weight:900}
.presence-nav{display:flex;align-items:center;gap:6px;margin-left:auto}.presence-nav a,.mobile-menu a{min-height:44px;padding:12px 14px;color:var(--muted);text-decoration:none;border-radius:10px}.presence-nav a.active,.presence-nav a:hover{color:var(--text);background:var(--panel2)}
.menu-button{display:none;margin-left:auto;min-width:64px;min-height:44px;color:var(--text);background:var(--panel2);border:1px solid var(--line);border-radius:10px}.mobile-menu{position:fixed;z-index:29;inset:72px 12px auto;display:grid;padding:10px;background:#151b18;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.mobile-menu[hidden]{display:none}
main{width:min(1500px,100%);margin:auto}.hero{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:72px;align-items:end;padding:clamp(64px,9vw,130px) clamp(20px,5vw,80px) 56px;background:radial-gradient(circle at 82% 18%,rgba(215,255,85,.13),transparent 28%)}
.eyebrow{margin:0;color:var(--lime);font-size:12px;font-weight:850;letter-spacing:.13em}.hero h1{margin:16px 0 24px;font-size:clamp(48px,7vw,88px);font-weight:850;line-height:1.02;letter-spacing:-.065em}.lead{max-width:760px;color:#c8d0cb;font-size:18px;line-height:1.8}.hero-actions{display:flex;gap:10px;margin-top:30px}.hero-actions a{display:grid;place-items:center;min-height:48px;padding:12px 18px;border-radius:12px;text-decoration:none;font-weight:850}.primary-action{background:var(--lime);color:#111a12}.secondary-action{border:1px solid #56635b}
.summary-card{display:grid;grid-template-columns:1fr 1fr;overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.summary-card div{display:grid;padding:26px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.summary-card strong{font-size:44px;color:var(--lime)}.summary-card span{font-size:12px;color:var(--muted)}
.safety-banner{display:flex;gap:16px;align-items:flex-start;margin:0 clamp(20px,5vw,80px);padding:18px 20px;background:#2a2119;border:1px solid #65452e;border-radius:14px;color:#ead7c8}.safety-banner p{margin:0}.safety-icon{display:grid;place-items:center;flex:0 0 30px;height:30px;background:var(--danger);color:#28170b;border-radius:50%;font-weight:900}
.controls{position:sticky;top:72px;z-index:20;display:grid;grid-template-columns:minmax(240px,1.5fr) auto auto auto auto;gap:12px;align-items:center;margin-top:36px;padding:16px clamp(20px,5vw,80px);background:rgba(13,17,16,.94);border-block:1px solid var(--line);backdrop-filter:blur(18px)}
.search-box,.select-box{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 14px;background:var(--panel);border:1px solid #3b4740;border-radius:12px}.search-box input{width:100%;min-width:0;color:var(--text);background:transparent;border:0;outline:0;font-size:16px}.select-box span{font-size:12px;color:var(--muted)}.select-box select{color:var(--text);background:transparent;border:0;outline:0;font-size:14px}.filter-row{display:flex;gap:8px}.filter-row button{min-height:44px;padding:9px 13px;color:#c0cac3;background:transparent;border:1px solid #3b4740;border-radius:999px;font-weight:700}.filter-row button.active{color:#101710;background:var(--lime);border-color:var(--lime)}#result-count{color:#c0cac3;font-size:13px;white-space:nowrap}
.view-toggle{display:flex;padding:3px;background:var(--panel);border:1px solid var(--line);border-radius:10px}.view-toggle button{min-height:38px;padding:7px 10px;color:var(--muted);background:transparent;border:0;border-radius:7px;font-size:11px;font-weight:800}.view-toggle button.active{color:#101710;background:var(--lime)}
.spots-section{padding:54px clamp(20px,5vw,80px) 90px}.section-heading{display:flex;justify-content:space-between;gap:32px;align-items:end;margin-bottom:28px}.section-heading h2,.checklist h2{margin:8px 0 0;font-size:clamp(34px,4vw,54px);letter-spacing:-.04em}.section-heading>p{max-width:420px;color:var(--muted);font-size:13px}
.spot-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.spot-card{overflow:hidden;background:var(--panel);border:1px solid #333e37;border-radius:18px;box-shadow:var(--shadow)}.spot-photo{position:relative;aspect-ratio:16/9;overflow:hidden;background:#202722}.spot-photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s}.spot-card:hover .spot-photo img{transform:scale(1.025)}.photo-shade{position:absolute;inset:auto 0 0;padding:48px 16px 14px;background:linear-gradient(transparent,rgba(0,0,0,.82));font-size:13px;font-weight:700}.spot-number{position:absolute;top:12px;left:12px;padding:6px 8px;background:var(--lime);color:#142015;border-radius:8px;font-size:12px;font-weight:900}.save-button{position:absolute;top:10px;right:10px;width:44px;height:44px;color:#fff;background:rgba(10,15,12,.78);border:1px solid rgba(255,255,255,.45);border-radius:50%;font-size:20px}.save-button.saved{color:var(--lime)}
.spot-body{padding:20px}.spot-meta{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:10px}.spot-meta span{padding:5px 8px;background:#202923;border-radius:6px;color:#c3cdc6;font-size:11px;font-weight:700}.spot-meta .low-risk{color:#d4ffa8;background:#294432}.spot-body h3{margin:0;font-size:21px;font-weight:850;line-height:1.35;letter-spacing:-.03em}.location{margin:9px 0 15px;color:#b7c2ba;font-size:13px;line-height:1.6}.setup-note{margin:0;padding:14px;background:#101512;border-left:3px solid var(--lime);border-radius:8px;color:#e1e7e3;font-size:14px;line-height:1.72}.risk-note{margin:13px 0 0;color:#dfb99b;font-size:12px;line-height:1.6}.card-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:17px}.card-actions a,.card-actions button{display:grid;place-items:center;min-height:46px;padding:8px;text-decoration:none;border:1px solid #4a594f;border-radius:10px;color:var(--text);background:transparent;font-size:13px;font-weight:800}.card-actions a:first-child{background:var(--green);border-color:var(--green)}.card-actions .review-open{grid-column:1/-1;background:#27322b;border-color:#59695e}.review-badge{display:inline-flex;margin-top:11px;padding:6px 9px;border-radius:999px;background:rgba(215,255,85,.12);color:var(--lime);font-size:12px;font-weight:700}
.spot-grid.text-view{grid-template-columns:1fr;gap:10px}.text-view .spot-card{display:grid;grid-template-columns:104px minmax(0,1fr);border-radius:12px}.text-view .spot-photo{height:100%;min-height:170px;aspect-ratio:auto}.text-view .photo-shade,.text-view .save-button{display:none}.text-view .spot-body{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(260px,1.3fr) minmax(250px,.8fr);gap:16px;align-items:center}.text-view .spot-meta{grid-column:1}.text-view .spot-body h3{grid-column:1}.text-view .location{grid-column:1;margin:0}.text-view .setup-note{grid-column:2;grid-row:1/4}.text-view .risk-note{display:none}.text-view .review-badge{grid-column:1}.text-view .card-actions{grid-column:3;grid-row:1/4;margin:0}
.review-dialog{width:min(720px,calc(100% - 28px));max-height:calc(100dvh - 28px);padding:0;color:var(--text);background:var(--panel);border:1px solid #46534b;border-radius:20px;box-shadow:0 28px 100px rgba(0,0,0,.6)}.review-dialog::backdrop{background:rgba(4,7,5,.78);backdrop-filter:blur(6px)}.review-dialog form{max-height:calc(100dvh - 30px);overflow:auto;padding:24px}.dialog-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.dialog-head h2{margin:5px 0 0;font-size:32px}.dialog-close{flex:0 0 44px;height:44px;color:var(--text);background:#222a25;border:1px solid var(--line);border-radius:50%;font-size:26px}.review-site{margin:16px 0 20px;color:var(--lime);font-weight:800}.review-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.review-fields label{display:grid;gap:7px}.review-fields label>span{font-size:13px;color:var(--muted);font-weight:700}.review-fields select,.review-fields textarea,.review-fields input[type=text],.review-fields input[type=file]{width:100%;min-height:48px;padding:11px 12px;color:var(--text);background:#0f1411;border:1px solid #3c4941;border-radius:10px;font-size:16px}.review-fields textarea{resize:vertical;line-height:1.65}.review-wide{grid-column:1/-1}.photo-field small{color:var(--muted);font-size:12px;line-height:1.55}.review-preview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px}.review-preview figure{position:relative;margin:0}.review-preview img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:10px}.review-preview button{position:absolute;top:6px;right:6px;width:36px;height:36px;border:0;border-radius:50%;color:#fff;background:rgba(0,0,0,.75)}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.dialog-actions button{min-height:46px;padding:10px 16px;border-radius:10px;font-weight:800}.danger-action{margin-right:auto;color:#ffb39d;background:transparent;border:1px solid #74483c}.dialog-actions .primary-action{border:0}.review-message{min-height:20px;margin:10px 0 0;color:var(--lime);font-size:13px}
.recent-result{display:block;margin-top:11px;padding:11px 12px;color:#f3f7d8;background:rgba(215,255,85,.08);border:1px solid rgba(215,255,85,.24);border-radius:9px;font-size:13px;font-weight:800;line-height:1.55}
.add-site-button{position:fixed;z-index:35;right:clamp(16px,3vw,34px);bottom:calc(20px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:9px;min-height:56px;padding:8px 18px 8px 10px;color:#101710;background:var(--lime);border:0;border-radius:999px;box-shadow:0 16px 50px rgba(0,0,0,.5);font-weight:900}.add-site-button span{display:grid;place-items:center;width:38px;height:38px;color:#fff;background:#1c3d2b;border-radius:50%;font-size:26px;line-height:1}.add-site-button b{font-size:14px}.site-form-guide{margin:16px 0 20px;color:#c7d0ca;line-height:1.7}.single-photo-preview{margin-top:14px}.single-photo-preview img{width:min(280px,100%);aspect-ratio:4/3;object-fit:cover;border-radius:12px;border:1px solid #46534b}.custom-badge{color:#fff1a8!important;background:#5b4a21!important}
.empty-state{padding:70px 20px;text-align:center;background:var(--panel);border:1px dashed #455149;border-radius:18px}.empty-state strong{font-size:22px}.empty-state p{color:var(--muted)}
.checklist{display:grid;grid-template-columns:1fr 1.4fr;gap:70px;padding:70px clamp(20px,5vw,80px);background:#121714;border-top:1px solid var(--line)}.checklist>div>p:last-child{max-width:520px;color:var(--muted)}.checklist ol{display:grid;gap:10px;margin:0;padding:0;list-style:none}.checklist li{display:grid;grid-template-columns:60px 1fr;gap:14px;padding:15px;background:var(--panel);border:1px solid var(--line);border-radius:12px}.checklist li b{color:var(--lime)}.checklist li span{color:#c1cbc4}
footer{display:flex;justify-content:space-between;gap:20px;padding:26px clamp(20px,5vw,80px);color:var(--muted);border-top:1px solid var(--line);font-size:12px}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--lime);outline-offset:3px}
@media(max-width:1100px){.hero{grid-template-columns:1fr;gap:36px}.summary-card{max-width:520px}.controls{grid-template-columns:1fr auto auto auto}.filter-row{grid-column:1/-1;grid-row:2;overflow-x:auto}.spot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.text-view .spot-body{grid-template-columns:minmax(210px,.8fr) 1fr}.text-view .card-actions{grid-column:1/-1;grid-row:auto}.checklist{grid-template-columns:1fr;gap:32px}}
@media(max-width:700px){.presence-header{min-height:64px;padding:0 16px}.presence-nav{display:none}.menu-button{display:block}.mobile-menu{top:64px}.hero{padding:56px 18px 40px}.hero h1{font-size:50px}.lead{font-size:16px}.hero-actions{display:grid}.summary-card div{padding:18px}.summary-card strong{font-size:34px}.safety-banner{margin:0 14px}.controls{top:64px;grid-template-columns:1fr auto;padding:12px 14px}.search-box{grid-column:1/-1}.select-box{min-width:0}.select-box span{display:none}.view-toggle{justify-self:end}#result-count{justify-self:end}.spots-section{padding:38px 14px 90px}.section-heading{display:block}.section-heading>p{margin-top:12px}.spot-grid{grid-template-columns:1fr}.text-view .spot-card{grid-template-columns:72px minmax(0,1fr)}.text-view .spot-photo{min-height:150px}.text-view .spot-body{display:block;padding:14px}.text-view .setup-note{margin-top:12px}.text-view .card-actions{margin-top:12px}.spot-body h3{font-size:21px}.review-dialog{width:calc(100% - 16px);max-height:calc(100dvh - 16px)}.review-dialog form{padding:18px}.review-fields{grid-template-columns:1fr}.review-wide{grid-column:auto}.review-preview{grid-template-columns:repeat(2,minmax(0,1fr))}.dialog-actions{position:sticky;bottom:-18px;padding:12px 0 18px;background:linear-gradient(transparent,var(--panel) 24%)}.add-site-button{right:14px;bottom:calc(14px + env(safe-area-inset-bottom,0px));min-height:54px;padding-right:15px}.checklist{padding:54px 16px}.checklist li{grid-template-columns:48px 1fr}.presence-header a,.menu-button,.filter-row button,.card-actions a,.card-actions button,.save-button{min-height:44px}footer{flex-direction:column}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* Shared Firebase state */
.sync-status{grid-column:1/-1;display:flex;align-items:center;gap:9px;min-height:44px;padding:10px 14px;border:1px solid rgba(215,255,85,.25);border-radius:14px;background:rgba(215,255,85,.07);font-size:13px;color:var(--muted)}
.sync-status b{color:var(--text);font-size:14px}.sync-dot{width:9px;height:9px;border-radius:50%;background:#f5bd45;box-shadow:0 0 0 4px rgba(245,189,69,.12);flex:0 0 auto}
.sync-status.is-live .sync-dot{background:#7ce38b;box-shadow:0 0 0 4px rgba(124,227,139,.12)}
.sync-status.is-offline .sync-dot{background:#ff8b7b;box-shadow:0 0 0 4px rgba(255,139,123,.12)}
@media(max-width:640px){.sync-status{align-items:flex-start;flex-wrap:wrap}.sync-status span:last-child{width:100%;padding-left:18px}}
.card-setup-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:13px}
.card-setup-photos img{width:100%;aspect-ratio:4/3;display:block;object-fit:cover;border:1px solid var(--line);border-radius:10px;background:#101511}
.score-history{display:grid;gap:2px;margin-top:10px;padding:9px 11px;border:1px solid rgba(215,255,85,.3);border-radius:10px;background:rgba(215,255,85,.07);color:#efffc4;text-decoration:none;font-size:12px}.score-history span{color:#bac5be}.score-history.is-empty{border-color:#33423a;background:#101713;color:#b7c2bc}
