:root{--bg: #f5f7fb;--ink: #0b1220;--muted: #667085;--card: #ffffff;--line: #d9e1f2;--blue: #2f80ed;--blue2: #0f63d1;--nav: #0d1b2a;--danger: #d92d20}*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg)}button,input,select{font:inherit}a{color:inherit;text-decoration:none}.container{max-width:460px;margin:0 auto;min-height:100vh;background:var(--bg)}.topbar{position:sticky;top:0;z-index:10;background:var(--blue);color:#fff;padding:12px 14px;display:flex;align-items:center;justify-content:space-between}.topbar .left,.topbar .right{display:flex;align-items:center;gap:10px}.iconBtn{border:1px solid rgba(255,255,255,.25);background:transparent;color:#fff;padding:8px 10px;border-radius:10px}.pillRow{display:flex;gap:10px;padding:10px 14px;background:#0b1726;color:#fff;border-bottom:1px solid rgba(255,255,255,.08)}.pillRow .mapBtn{margin-left:auto}.pill{background:#ffffff1f;border:1px solid rgba(255,255,255,.18);border-radius:10px;padding:8px 10px;min-width:74px;text-align:center}.pill .k{font-size:11px;opacity:.85;letter-spacing:.3px}.pill .v{font-weight:700;margin-top:2px}.section{padding:14px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 6px 18px #0f172a0f;margin-bottom:14px}.cardHeader{background:var(--blue);color:#fff;padding:10px 12px;font-weight:700;display:flex;align-items:center;justify-content:space-between}.cardBody{padding:12px}.centerRow{display:flex;align-items:center;justify-content:space-between;gap:10px}.bigCount{text-align:center;flex:1}.bigCount .n{font-size:48px;font-weight:800;line-height:1}.bigCount .sub{margin-top:4px;font-size:13px;color:var(--muted);font-weight:600}.stepBtn{width:56px;height:56px;border-radius:12px;border:1px solid var(--line);background:#fff;font-size:30px;font-weight:800}.grid4{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);margin-top:12px}.grid4 .cell{border-right:1px solid var(--line);padding:10px 8px 12px;text-align:center;font-size:12px;color:var(--muted);font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}.grid4 .cell:last-child{border-right:none}.cell .label{min-height:16px;display:flex;align-items:center}.cell .val{display:flex;align-items:center;justify-content:center;width:42px;height:30px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink);font-weight:800}.cell .val.primary{background:#204ea8;color:#fff;border-color:#204ea8}.cellBtn{cursor:pointer;-webkit-user-select:none;user-select:none}.cellBtn:active{transform:translateY(1px)}.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}.historyActions{align-items:center;flex-wrap:nowrap}.historyHint{margin-left:auto;white-space:nowrap;cursor:default}.finishActions{flex-wrap:nowrap}.finishUploadBtn{margin-left:auto}.holeNavActions{justify-content:space-between;flex-wrap:nowrap}.holeNavBtn{border:2px solid #2f80ed;min-width:120px}.primaryBtn{background:var(--blue);border:1px solid var(--blue2);color:#fff;padding:10px 12px;border-radius:12px;font-weight:800}.beginBtn{transition:opacity .18s ease,filter .18s ease;animation:beginBtnFadeIn .32s ease-out}.beginBtn--inactive{opacity:.45;filter:saturate(.7)}@keyframes beginBtnFadeIn{0%{opacity:0}to{opacity:1}}.mapBtn{background:var(--blue);border:1px solid var(--blue2);color:#fff;padding:10px 14px;border-radius:12px;font-weight:800}.secondaryBtn{background:#fff;border:1px solid var(--line);color:var(--ink);padding:10px 12px;border-radius:12px;font-weight:800}.dangerBtn{background:#fff;border:1px solid rgba(217,45,32,.35);color:var(--danger);padding:10px 12px;border-radius:12px;font-weight:800}.list{display:flex;flex-direction:column;gap:10px}.listItem{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;align-items:center;justify-content:space-between}.listItem .title{font-weight:900}.mapBody{background:#0b1726}.holeMapImage{display:block;width:100%;height:auto;border-radius:10px;border:1px solid rgba(255,255,255,.15)}.listItem .meta{font-size:12px;color:var(--muted);margin-top:4px;font-weight:600}.small{font-size:12px;color:var(--muted);font-weight:600}.requiredLegend{margin-top:4px}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.field label{font-size:12px;color:var(--muted);font-weight:800;letter-spacing:.2px}.requiredMark{color:#b00020}.fieldHint{font-size:11px;color:var(--muted);font-weight:700}.field input,.field select{padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:#fff;font-weight:700}.hr{height:1px;background:var(--line);margin:14px 0}.uploadingSection{min-height:calc(100vh - 120px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px}.uploadingTitle{font-size:24px;font-weight:900}.uploadSpinner{width:72px;height:72px;border-radius:50%;border:8px solid #d9e1f2;border-top-color:var(--blue);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.adminLoginRoot{min-height:calc(100vh - 24px);display:flex;align-items:center;justify-content:center;padding:16px;background:radial-gradient(circle at 10% 15%,rgba(255,113,80,.24),transparent 35%),radial-gradient(circle at 90% 85%,rgba(70,120,255,.22),transparent 42%),linear-gradient(130deg,#0b111f,#141a2f 45%,#11172a);border-radius:22px}.adminLoginLogoRow{display:flex;align-items:center;gap:8px;color:#0f172a;font-weight:800;letter-spacing:.01em}.adminLogoDot{width:12px;height:12px;border-radius:999px;background:linear-gradient(135deg,#ff7a18,#ff3d71);box-shadow:0 0 0 4px #ff7a182e}.siteGate{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at 10% 15%,rgba(255,113,80,.24),transparent 35%),radial-gradient(circle at 90% 85%,rgba(70,120,255,.22),transparent 42%),linear-gradient(130deg,#0b111f,#141a2f 45%,#11172a);border-radius:22px}.adminLoginShell{width:min(1180px,100%);min-height:min(760px,calc(100vh - 56px));background:#fffffff5;border-radius:28px;overflow:hidden;display:grid;grid-template-columns:1.05fr 1fr;box-shadow:0 40px 100px #0006}.adminLoginVisual{position:relative;background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.1),transparent 48%),linear-gradient(165deg,#111217,#221818 44%,#2f1d20);color:#f8fafc}.adminLoginVisualInner{padding:48px;height:100%;display:flex;flex-direction:column;justify-content:space-between;gap:24px}.adminLoginKicker{font-size:12px;text-transform:uppercase;letter-spacing:.11em;color:#ffffffb3;font-weight:700}.adminLoginVisual h1{margin:0;font-size:54px;line-height:1.02;max-width:460px}.adminLoginVisual p{margin:12px 0 0;color:#f1f5f9d1;max-width:430px}.adminLoginMockDevice{width:min(360px,92%);border:1px solid rgba(255,255,255,.2);border-radius:24px;padding:14px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0f172a70}.adminLoginMockHeader{height:12px;width:92px;border-radius:999px;background:#ffffff40;margin-bottom:16px}.adminLoginMockBars{display:flex;align-items:flex-end;gap:8px;min-height:68px}.adminLoginMockBars span{flex:1;border-radius:999px 999px 8px 8px;background:linear-gradient(180deg,#ff8a00,#ff375f)}.adminLoginPanel{padding:56px clamp(28px,5vw,70px);display:flex;flex-direction:column;justify-content:center;background:#fff}@media (max-width: 900px){.adminLayout{grid-template-columns:1fr}.adminSidebar{position:static}}.adminLayout{display:grid;grid-template-columns:240px minmax(0,1fr);gap:12px;max-width:1280px;margin:0 auto}.adminSidebar{align-self:start;position:sticky;top:10px}.adminBrand{font-size:20px;font-weight:900;margin-bottom:4px}.adminNav{display:grid;gap:8px}.adminMain{min-width:0}.adminTopbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.adminPageTitle{font-size:20px;font-weight:900}.adminTopbarActions{display:flex;align-items:center;gap:10px}.adminEnvBadge{display:inline-flex;align-items:center;border:1px solid #cbd5e1;background:#f8fafc;color:#334155;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}@media (max-width: 900px){.adminLayout{grid-template-columns:1fr;gap:6px}.adminSidebar{position:static}}.adminLoginPanel h2{margin:20px 0 8px;font-size:50px;line-height:1;color:#0f172a}.adminLoginHint{margin:0 0 20px;color:#475569}.adminLoginForm{display:grid;gap:10px}.adminLoginForm label{font-size:12px;font-weight:700;color:#334155;text-transform:uppercase;letter-spacing:.08em}.adminLoginForm input{width:100%;border-radius:999px;border:1px solid #dbe2ea;background:#f8fafc;padding:14px 16px;font-size:15px;color:#0f172a}.adminLoginForm input:focus{outline:none;border-color:#ff6a3d;box-shadow:0 0 0 3px #ff6a3d33}.adminLoginError{margin-top:4px;font-size:13px;font-weight:700;color:#b42318}.adminLoginButton{margin-top:12px;border:none;border-radius:999px;padding:14px 18px;color:#fff;font-weight:800;font-size:15px;background:linear-gradient(120deg,#ff7a18,#ff3d71);box-shadow:0 16px 30px #ff3d714d;cursor:pointer}.adminLoginButton:disabled{opacity:.75;cursor:not-allowed}@media (max-width: 980px){.adminLoginShell{grid-template-columns:1fr}.adminLoginVisual{min-height:260px}.adminLoginVisual h1{font-size:40px}.adminLoginVisualInner{padding:30px}.adminLoginMockDevice{display:none}.adminLoginPanel h2{font-size:40px}}.adminAppRoot{min-height:100vh;width:100%}.adminAppFrame{min-height:100vh;width:100%;padding:12px;box-sizing:border-box}.adminDashRoot{min-height:calc(100vh - 24px);display:grid;grid-template-columns:260px minmax(0,1fr);gap:14px}.adminDashRail{background:#1c2532;border-radius:16px;color:#d8e1ec;padding:22px 14px;display:flex;flex-direction:column;gap:10px}.adminDashLogo{font-size:28px;font-weight:900;letter-spacing:.01em}.adminDashLogoSub{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:#8ca0b6;margin-bottom:10px}.adminDashNav{display:grid;gap:8px;margin-bottom:auto}.adminDashMain{min-width:0;background:#eef2f7;border-radius:16px;padding:16px}.adminDashTopbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;background:#fff;border:1px solid #dce4ee;border-radius:14px;padding:14px 16px}.adminDashHeading{font-size:24px;font-weight:900}.adminDashTopbarActions{display:flex;align-items:center;gap:10px}.adminDashStatGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.adminStatValue{margin-top:4px;font-size:30px;font-weight:900}.adminDashFilterBar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.adminDashRows{margin-top:12px;border:1px solid #dbe2ea;border-radius:12px;overflow:hidden;background:#fff}.adminDashRow{display:grid;grid-template-columns:minmax(220px,1fr) 120px 130px;gap:10px;align-items:center;padding:12px 14px;border-bottom:1px solid #ecf1f6}.adminDashRow:last-child{border-bottom:none}@media (max-width: 980px){.adminDashRoot{grid-template-columns:1fr}.adminDashMain{padding:12px}.adminDashStatGrid{grid-template-columns:1fr}.adminDashRow{grid-template-columns:1fr;gap:6px}}.adminAppFrame{padding:14px;background:#0f1115}.adminDashRoot{border:1px solid #1e232b;border-radius:0;background:#f4f7fb;padding:10px;gap:10px}.adminDashRail{background:#1a2434;border-radius:14px;padding:24px 12px}.adminDashLogo{font-size:38px;line-height:.95;color:#f8fbff}.adminDashNavBtn{width:100%;border:1px solid #d6deea;background:#fff;color:#1f2937;border-radius:11px;padding:9px 12px;font-weight:800;text-align:center}.adminDashNavBtn.active{background:#2f80ed;border-color:#2f80ed;color:#fff}.adminDashMain{border-radius:14px;padding:10px;background:#e7edf5}.adminDashTopbar,.adminDashStatCard,.adminDashPanel{background:#fff;border:1px solid #d7e0ec;border-radius:12px}.adminDashTopbar{padding:12px 14px}.adminDashHeading{font-size:40px;line-height:1}.adminDashTopbarActions .secondaryBtn,.adminDashTopbarActions .dangerBtn{border-radius:12px}.adminDashStatGrid{margin-top:10px;margin-bottom:10px}.adminDashStatCard{padding:10px 14px}.adminStatValue{margin-top:2px;font-size:42px;line-height:1;color:#0f172a}.adminDashPanel{padding:10px}.adminDashFiltersPanel{min-height:78px}.adminDashInput,.adminDashSelect{border:1px solid #b8c4d4;background:#fff;border-radius:0;padding:7px 9px;min-height:36px}.adminDashInput{min-width:200px}
