:root{--bg:#0d0f12;--panel:#161a20;--line:#262c35;--txt:#eef1f5;--mut:#8b94a3;--org:#ff6a00;--yel:#ffd000;--grn:#22c55e;--red:#ef4444;--blu:#3b82f6}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(1200px 600px at 80% -10%,#2a1600 0,transparent 60%),var(--bg);color:var(--txt);font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
a{color:var(--org)}h1,h2,h3{line-height:1.15;letter-spacing:-.02em}h1{font-size:clamp(28px,4vw,40px)}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 24px;border-bottom:1px solid var(--line);background:rgba(13,15,18,.85);backdrop-filter:blur(8px);position:sticky;top:0;z-index:5;flex-wrap:wrap}
.brand{color:var(--txt);text-decoration:none;font-weight:900;font-size:22px;letter-spacing:-.03em}.brand b{color:var(--org)}.logo{color:var(--org)}
nav{display:flex;align-items:center;gap:14px;flex-wrap:wrap}nav a{color:var(--mut);text-decoration:none;font-weight:600}nav a.on,nav a:hover{color:var(--txt)}
nav .icon{position:relative;font-size:18px}nav .icon i{position:absolute;top:-6px;right:-10px;background:var(--org);color:#000;font-style:normal;font-size:11px;font-weight:800;border-radius:9px;padding:0 5px}
.wrap{max-width:1180px;margin:0 auto;padding:24px}
.btn{display:inline-block;background:var(--org);color:#000;border:0;border-radius:10px;padding:12px 20px;font-weight:800;text-decoration:none;cursor:pointer;font-size:15px}
.btn:hover{filter:brightness(1.1)}.btn.ghost{background:transparent;color:var(--txt);border:1px solid var(--line)}.btn.sm{padding:6px 12px;font-size:13px}.btn.full{width:100%;margin-top:12px}.btn[disabled]{opacity:.4;cursor:not-allowed}
.link{background:none;border:0;color:var(--mut);cursor:pointer;font:inherit;padding:0}.link:hover{color:var(--txt)}.inline{display:inline}
.hero{text-align:center;padding:70px 0 40px}.kicker{color:var(--org);font-weight:800;text-transform:uppercase;letter-spacing:.15em;font-size:13px}
.hero h1{font-size:clamp(40px,8vw,88px);font-weight:900;margin:10px 0}.hero h1 span{color:var(--org)}.lead{color:var(--mut);max-width:640px;margin:0 auto;font-size:18px}
.cta{display:flex;gap:12px;justify-content:center;margin:28px 0}.phone{font-size:28px;font-weight:900;color:var(--yel)}
.band{text-align:center;border:1px solid var(--line);border-radius:14px;padding:18px;color:var(--mut);margin:30px 0}.band b{color:var(--txt)}
.tiles{display:grid;gap:18px;margin:24px 0}.tiles.three{grid-template-columns:repeat(3,1fr)}.tiles.two{grid-template-columns:repeat(2,1fr)}
.tile{display:block;position:relative;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:26px;text-decoration:none;color:var(--txt);overflow:hidden;transition:transform .15s,border-color .15s}
a.tile:hover{transform:translateY(-3px);border-color:var(--org)}.tile h2{font-size:30px;font-weight:900;margin:6px 0}.tile p{color:var(--mut);margin:0}
.tile.q{background:linear-gradient(135deg,#2a1300,#161a20 60%)}.tile.b{background:linear-gradient(135deg,#0b1f33,#161a20 60%)}.tile.w{background:linear-gradient(135deg,#2a0b0b,#161a20 60%)}
.big .tile{min-height:240px;display:flex;flex-direction:column;justify-content:flex-end}.big .tile h2{font-size:clamp(34px,4vw,48px)}.num{position:absolute;top:18px;right:22px;font-size:54px;font-weight:900;color:rgba(255,255,255,.06)}
.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:22px;margin:16px 0}.narrow{max-width:440px;margin:40px auto}
.form label,.row label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--mut);font-weight:600;margin-bottom:12px}
input,select{background:#0d1014;color:var(--txt);border:1px solid var(--line);border-radius:10px;padding:11px 12px;font:inherit}input:focus,select:focus{outline:2px solid var(--org);border-color:transparent}
.row{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.row label{margin:0}.between{justify-content:space-between;align-items:center}.grow{flex:1;min-width:200px}.right{text-align:right}
.muted{color:var(--mut)}.small{font-size:13px}
.flash{padding:12px 16px;border-radius:10px;margin:12px 0;font-weight:600}.flash.ok{background:#0f2b19;border:1px solid #1e6b3a;color:#9ff0bb}.flash.err{background:#2b1010;border:1px solid #7a2222;color:#ffb4b4}
.pill{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:3px 9px;border-radius:99px;background:#232a33;color:var(--mut);vertical-align:middle}.pill.paid{background:#0f2b19;color:#7ee2a1}.pill.in_cart{background:#2b2100;color:var(--yel)}
.tbl{width:100%;border-collapse:collapse;background:var(--panel);border-radius:12px;overflow:hidden;margin:10px 0;font-size:14px}.tbl th,.tbl td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.tbl th{color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.actions form{margin:2px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.sat img{width:100%;border-radius:10px;display:block}.placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--mut);text-align:center;min-height:220px}.placeholder svg{width:100%;max-width:420px;border-radius:10px}.placeholder.tall{min-height:380px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}.stats div{background:#0d1014;border:1px solid var(--line);border-radius:12px;padding:12px;text-align:center}.stats b{display:block;font-size:26px;font-weight:900;color:var(--org)}.stats span{color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.06em}
.stats.five b{color:var(--yel);font-size:22px}
.price{display:flex;flex-direction:column;margin-top:16px}.price b{font-size:42px;font-weight:900}.price span{color:var(--mut)}.price small{color:var(--mut)}
.fakecard{display:flex;justify-content:space-between;background:linear-gradient(135deg,#333,#111);border:1px solid var(--line);border-radius:12px;padding:16px;margin-top:12px;font-family:monospace}
.calhead{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.calhead h2{margin:0;min-width:200px;text-align:center}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin:14px 0}.dow{color:var(--mut);font-size:12px;text-transform:uppercase;text-align:center;font-weight:700}
.cell{background:var(--panel);border:1px solid var(--line);border-radius:10px;min-height:108px;padding:8px;cursor:pointer;display:flex;flex-direction:column;gap:2px}.cell:hover{border-color:var(--org)}.cell.sel{outline:2px solid var(--org)}
.cell.empty{background:transparent;border:0;cursor:default}.cell.past{opacity:.35;cursor:default}.cell.bad{background:linear-gradient(180deg,#2b1010,var(--panel));border-color:#5a1d1d}
.cell .d{font-weight:800}.wx{display:flex;align-items:center;gap:6px}.ico{font-size:24px}.hi{font-weight:800}.meta{font-size:11px;color:var(--mut)}
.job{font-size:11px;font-weight:800;background:var(--org);color:#000;border-radius:6px;padding:2px 6px;margin-top:auto}.job.st-Posted,.job.st-Bidding{background:var(--yel)}.job.st-Awarded,.job.st-InProgress{background:var(--blu);color:#fff}.job.st-Completed,.job.st-Paid{background:var(--grn)}
.lock{text-align:center}
.live{font-size:12px;font-weight:900;padding:4px 10px;border-radius:6px;background:#2a2f37;color:var(--mut);vertical-align:middle}.live.on{background:var(--red);color:#fff;animation:pulse 1.5s infinite}@keyframes pulse{50%{opacity:.6}}
.tile.cam .live{position:absolute;top:16px;right:16px}
.player video{width:100%;border-radius:10px;background:#000;max-height:540px}
.steps{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.steps span{padding:6px 12px;border-radius:99px;background:var(--panel);border:1px solid var(--line);color:var(--mut);font-size:13px;font-weight:700}.steps span.on{background:var(--org);color:#000;border-color:var(--org)}
.notes{list-style:none;padding:0}.notes li{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin:8px 0}.notes li small{display:block;color:var(--mut)}.notes li.unread{border-left:4px solid var(--org)}.notes.compact li{padding:8px 10px;font-size:13px}
.welcome{margin-bottom:0}
.foot{text-align:center;color:var(--mut);padding:30px;border-top:1px solid var(--line);margin-top:40px}.foot b{color:var(--txt)}
@media (max-width:820px){.tiles.three,.tiles.two,.grid2{grid-template-columns:1fr}.cal{gap:3px}.cell{min-height:74px;padding:4px}.ico{font-size:16px}.meta{display:none}.topbar{padding:10px 14px}.wrap{padding:16px}.tbl{display:block;overflow-x:auto}}
.mapgrid{grid-template-columns:1.35fr 1fr}#roofmap{height:460px;border-radius:12px;background:#111}
.maptools{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}.maptools .btn.on{background:var(--org);color:#000;border-color:var(--org)}
.opts{margin-top:10px}.opts label{flex:1;min-width:120px}
.live{display:flex;flex-wrap:wrap;gap:14px;margin-top:12px;padding:10px 12px;background:#0d1014;border:1px solid var(--line);border-radius:10px;font-size:14px;color:var(--mut)}.live b{color:var(--yel)}
.vtx{background:#fff;border:3px solid var(--org);border-radius:50%;box-shadow:0 0 0 2px #000}.vtx.first{background:var(--org)}
.edge-lbl{background:rgba(0,0,0,.75);color:#ffd000;font:700 11px system-ui;padding:1px 5px;border-radius:4px;white-space:nowrap;transform:translate(-50%,-50%);width:auto!important;height:auto!important}
.gsat{width:100%;border-radius:8px;margin-top:6px}.leaflet-container{font:inherit}
@media (max-width:820px){.mapgrid{grid-template-columns:1fr}#roofmap{height:360px}}
/* Google sign-in button (Google identity branding: white, #747775 border, Roboto 14px/500, 40px tall) */
.gsi-btn{display:flex;align-items:center;justify-content:center;gap:12px;height:40px;width:100%;background:#fff;border:1px solid #747775;border-radius:20px;color:#1f1f1f;font:500 14px/20px Roboto,Arial,sans-serif;letter-spacing:.25px;text-decoration:none;margin:8px 0 4px;transition:background .2s,box-shadow .2s}
.gsi-btn:hover{background:#f7f8f8;box-shadow:0 1px 2px rgba(60,64,67,.3),0 1px 3px 1px rgba(60,64,67,.15)}.gsi-icon{display:flex}
.or{display:flex;align-items:center;gap:10px;color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.08em;margin:16px 0}.or::before,.or::after{content:"";flex:1;height:1px;background:var(--line)}.center{text-align:center}
select.sm{padding:5px 8px;font-size:13px}
