@charset "utf-8";
/* ==================================================
   파크골프 통합 웹앱 - 공통 디자인 시스템
   원칙 : 큰 글씨 / 큰 버튼(최소 52px) / 고대비 / 최소 조작
   ================================================== */

/* ---------- 글꼴 ---------- */
@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css");

/* ---------- 토큰 ---------- */
:root{
    /* 색상 : 공원 + 잔디 + 스포츠 */
    --g-900:#0C4A24;          /* 딥 그린 (헤더, 강조 텍스트) */
    --g-700:#146A34;
    --g-500:#1B8A45;          /* 메인 그린 */
    --g-100:#E3F1E7;          /* 연한 그린 배경 */
    --orange:#F07B1D;         /* 보조 컬러 (라운딩 강조) */
    --orange-100:#FDEBD9;

    --bg:#F4F6F2;             /* 앱 배경 */
    --card:#FFFFFF;
    --ink:#1C2620;            /* 본문 */
    --ink-2:#57685E;          /* 보조 텍스트 */
    --line:#E1E6DF;

    --under:#D9483B;          /* 파 미만(좋은 성적) */
    --over:#2B62C4;           /* 파 초과 */

    /* 타이포 : 일반 앱보다 한 단계 크게 */
    --fs-body:17px;
    --fs-small:15px;
    --fs-title:20px;
    --fs-big:26px;
    --fs-huge:40px;

    --radius:16px;
    --nav-h:76px;
    --shadow:0 2px 10px rgba(18,48,28,.08);
}

/* ---------- 리셋 ---------- */
*{ margin:0; padding:0; box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
    font-family:"Pretendard Variable",Pretendard,"Malgun Gothic","맑은 고딕",sans-serif;
    font-size:var(--fs-body);
    line-height:1.5;
    color:var(--ink);
    background:var(--bg);
    -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; vertical-align:top; }
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; cursor:pointer; border:0; background:none; }
input,select,textarea{ font-family:inherit; font-size:var(--fs-body); }

:focus-visible{ outline:3px solid var(--orange); outline-offset:2px; }
@media (prefers-reduced-motion:reduce){
    *{ animation:none!important; transition:none!important; }
}

/* ---------- 앱 레이아웃 (모바일 우선, PC 중앙 480px) ---------- */
.app{
    max-width:480px;
    min-height:100vh;
    margin:0 auto;
    background:var(--bg);
    padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom) + 16px);
}
@media (min-width:520px){
    .app{ box-shadow:0 0 0 1px var(--line), 0 0 30px rgba(0,0,0,.06); }
}
.wrap{ padding:0 16px; }

/* ---------- 상단 인사 영역 ---------- */
.topbar{
    background:linear-gradient(160deg, var(--g-700), var(--g-500));
    color:#fff;
    padding:22px 20px 54px;
    border-radius:0 0 26px 26px;
}
.topbar .hello{ font-size:22px; font-weight:700; }
.topbar .hello b{ font-weight:800; }
.topbar .loc{
    display:inline-flex; align-items:center; gap:6px;
    margin-top:8px;
    font-size:var(--fs-small);
    background:rgba(255,255,255,.18);
    padding:7px 14px; border-radius:999px;
}
.topbar .loc .dot{ font-size:14px; }

/* ---------- 메뉴 카드 (2x2) ---------- */
.menu-grid{
    display:grid; grid-template-columns:1fr 1fr; gap:12px;
    margin:-36px 16px 20px;
}
.menu-card{
    display:flex; flex-direction:column; align-items:flex-start; gap:10px;
    min-height:112px;
    background:var(--card);
    border-radius:var(--radius);
    box-shadow:var(--shadow);
    padding:16px;
    font-size:18px; font-weight:700; color:var(--ink);
}
.menu-card:active{ transform:scale(.98); }
.menu-card .mi{
    width:46px; height:46px; border-radius:12px;
    display:flex; align-items:center; justify-content:center;
    font-size:26px;
    background:var(--g-100);
}
.menu-card.hot{ background:var(--g-500); color:#fff; }
.menu-card.hot .mi{ background:rgba(255,255,255,.22); }
.menu-card small{ font-size:13px; font-weight:500; color:var(--ink-2); }
.menu-card.hot small{ color:rgba(255,255,255,.85); }

/* ---------- 섹션 ---------- */
.sec{ margin:24px 16px 0; }
.sec-head{
    display:flex; align-items:baseline; justify-content:space-between;
    margin-bottom:10px;
}
.sec-head h2{ font-size:var(--fs-title); font-weight:800; }
.sec-head .more{ font-size:var(--fs-small); color:var(--ink-2); padding:6px 2px; }

/* ---------- 카드 공통 ---------- */
.card{
    background:var(--card);
    border-radius:var(--radius);
    box-shadow:var(--shadow);
    padding:18px;
}
.card + .card{ margin-top:12px; }

/* ---------- 오늘의 라운딩 ---------- */
.today-card{ border-left:6px solid var(--orange); }
.today-card .gc{ font-size:21px; font-weight:800; }
.today-card .meta{
    display:flex; flex-wrap:wrap; gap:6px 14px;
    margin:10px 0 14px;
    color:var(--ink-2); font-size:var(--fs-small);
}
.today-card .meta b{ color:var(--ink); font-weight:700; }
.today-card .time{
    font-size:30px; font-weight:800; color:var(--orange);
    font-variant-numeric:tabular-nums;
}

/* ---------- 주변 골프장 목록 ---------- */
.near-item{
    display:flex; align-items:center; gap:12px;
    padding:16px 4px;
    border-bottom:1px solid var(--line);
    min-height:60px;
}
.near-item:last-child{ border-bottom:0; }
.near-item .pin{
    width:42px; height:42px; border-radius:50%;
    background:var(--g-100); color:var(--g-700);
    display:flex; align-items:center; justify-content:center;
    font-size:20px; flex:none;
}
.near-item .nm{ flex:1; font-size:18px; font-weight:700; }
.near-item .nm small{ display:block; font-size:13px; font-weight:400; color:var(--ink-2); margin-top:2px; }
.near-item .dist{
    font-size:19px; font-weight:800; color:var(--g-700);
    font-variant-numeric:tabular-nums; white-space:nowrap;
}

/* ---------- 최근 라운딩 요약 ---------- */
.recent-card .gc{ font-size:19px; font-weight:800; }
.recent-card .dt{ font-size:var(--fs-small); color:var(--ink-2); margin-top:2px; }
.stat-row{
    display:grid; grid-template-columns:repeat(4,1fr);
    gap:8px; margin-top:16px; text-align:center;
}
.stat-row .st{ background:var(--bg); border-radius:12px; padding:12px 4px; }
.stat-row .st .v{
    font-size:26px; font-weight:800;
    font-variant-numeric:tabular-nums; line-height:1.2;
}
.stat-row .st .v.good{ color:var(--under); }
.stat-row .st .l{ font-size:13px; color:var(--ink-2); margin-top:3px; }

/* ---------- 버튼 ---------- */
.btn{
    display:flex; align-items:center; justify-content:center; gap:8px;
    width:100%; min-height:56px;
    border-radius:14px;
    font-size:19px; font-weight:800;
}
.btn:active{ transform:scale(.98); }
.btn-primary{ background:var(--g-500); color:#fff; }
.btn-orange{ background:var(--orange); color:#fff; }
.btn-line{ background:#fff; color:var(--g-700); border:2px solid var(--g-500); }
.btn-gray{ background:#EDEFEA; color:var(--ink); }
.btn-sm{ min-height:48px; font-size:17px; }
.btn-row{ display:flex; gap:10px; }
.btn-row .btn{ flex:1; }

/* ---------- 빈 상태 ---------- */
.empty{
    text-align:center; padding:30px 10px; color:var(--ink-2);
}
.empty .ico{ font-size:38px; margin-bottom:8px; }

/* ---------- 하단 네비게이션 ---------- */
.bottom-nav{
    position:fixed; left:0; right:0; bottom:0; z-index:100;
    max-width:480px; margin:0 auto;
    height:calc(var(--nav-h) + env(safe-area-inset-bottom));
    padding-bottom:env(safe-area-inset-bottom);
    background:#fff;
    border-top:1px solid var(--line);
    display:grid; grid-template-columns:repeat(5,1fr);
}
.bottom-nav a{
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
    font-size:14px; font-weight:600; color:var(--ink-2);
}
.bottom-nav a .ni{ font-size:24px; line-height:1; }
.bottom-nav a.on{ color:var(--g-700); font-weight:800; }

/* 가운데 라운딩 버튼 (강조) */
.bottom-nav a.nav-round{
    position:relative; color:var(--g-900); font-weight:800;
}
.bottom-nav a.nav-round .ni{
    width:58px; height:58px; margin-top:-30px;
    border-radius:50%;
    background:linear-gradient(160deg, var(--g-500), var(--g-700));
    color:#fff;
    display:flex; align-items:center; justify-content:center;
    font-size:28px;
    box-shadow:0 4px 12px rgba(20,106,52,.4);
    border:4px solid #fff;
}

/* ---------- 페이지 타이틀 바 (서브 페이지용) ---------- */
.pagebar{
    display:flex; align-items:center; gap:8px;
    background:#fff; border-bottom:1px solid var(--line);
    padding:12px 10px;
    position:sticky; top:0; z-index:50;
}
.pagebar .back{
    width:48px; height:48px; font-size:24px;
    display:flex; align-items:center; justify-content:center;
    color:var(--ink);
}
.pagebar h1{ font-size:var(--fs-title); font-weight:800; }

/* ---------- 유틸 ---------- */
.mt8{margin-top:8px;} .mt12{margin-top:12px;} .mt16{margin-top:16px;} .mt24{margin-top:24px;}
.tc{text-align:center;}
.txt-sub{ color:var(--ink-2); font-size:var(--fs-small); }
.num{ font-variant-numeric:tabular-nums; }

/* ==================================================
   2차 : MVP 전체 페이지 컴포넌트
   ================================================== */

/* ---------- 폼 ---------- */
.field{ margin-bottom:16px; }
.field label{ display:block; font-size:15px; font-weight:700; color:var(--ink-2); margin-bottom:6px; }
.input,.select{
    width:100%; min-height:54px;
    border:2px solid var(--line); border-radius:12px;
    padding:0 14px; font-size:18px; background:#fff; color:var(--ink);
}
.input:focus,.select:focus{ border-color:var(--g-500); outline:none; }

/* ---------- 칩(토글) ---------- */
.chips{ display:flex; flex-wrap:wrap; gap:8px; }
.chip{
    min-height:48px; padding:0 18px; border-radius:999px;
    border:2px solid var(--line); background:#fff;
    font-size:17px; font-weight:700; color:var(--ink-2);
    display:inline-flex; align-items:center; gap:6px;
}
.chip.on{ background:var(--g-500); border-color:var(--g-500); color:#fff; }

/* ---------- 검색바 ---------- */
.searchbar{ display:flex; gap:8px; margin:14px 16px; }
.searchbar .input{ flex:1; }
.searchbar .btn{ width:64px; flex:none; min-height:54px; font-size:22px; }

/* ---------- 선택 리스트(동반자 등) ---------- */
.pick-item{
    display:flex; align-items:center; gap:12px;
    padding:14px 4px; border-bottom:1px solid var(--line);
    font-size:18px; font-weight:700; min-height:60px;
}
.pick-item:last-child{ border-bottom:0; }
.pick-item input[type=checkbox]{ width:26px; height:26px; accent-color:var(--g-500); flex:none; }
.pick-item .who{ flex:1; }
.pick-item .sub{ font-size:14px; color:var(--ink-2); font-weight:400; }

/* ---------- 스코어 입력 ---------- */
.hole-head{
    background:linear-gradient(160deg,var(--g-700),var(--g-500)); color:#fff;
    text-align:center; padding:16px 16px 18px;
    border-radius:0 0 24px 24px;
    position:sticky; top:0; z-index:40;
}
.hole-head .hn{ font-size:44px; font-weight:800; line-height:1.1; font-variant-numeric:tabular-nums; }
.hole-head .hn small{ font-size:20px; font-weight:700; }
.hole-head .hi{ margin-top:2px; font-size:17px; opacity:.95; display:flex; justify-content:center; gap:16px; }
.hole-head .hi b{ font-weight:800; }
.hole-prog{ margin-top:10px; height:8px; background:rgba(255,255,255,.25); border-radius:99px; overflow:hidden; }
.hole-prog i{ display:block; height:100%; background:var(--orange); border-radius:99px; transition:width .2s; }

.sc-row{
    display:flex; align-items:center; gap:8px;
    background:#fff; border-radius:16px; box-shadow:var(--shadow);
    padding:12px 12px; margin:10px 16px 0;
}
.sc-row .pname{ flex:1; min-width:0; }
.sc-row .pname .nm{ font-size:19px; font-weight:800; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sc-row .pname .cum{ font-size:14px; color:var(--ink-2); font-variant-numeric:tabular-nums; }
.sc-btn{
    width:58px; height:58px; border-radius:14px;
    font-size:30px; font-weight:800; flex:none;
    display:flex; align-items:center; justify-content:center;
}
.sc-btn.minus{ background:#EDEFEA; color:var(--ink); }
.sc-btn.plus{ background:var(--g-100); color:var(--g-700); }
.sc-btn:active{ transform:scale(.94); }
.sc-val{
    width:60px; text-align:center;
    font-size:40px; font-weight:800; font-variant-numeric:tabular-nums; flex:none;
}
.sc-val.under{ color:var(--under); }
.sc-val.over{ color:var(--over); }

.sc-foot{
    position:fixed; left:0; right:0; bottom:0; z-index:100;
    max-width:480px; margin:0 auto;
    background:#fff; border-top:1px solid var(--line);
    padding:12px 16px calc(12px + env(safe-area-inset-bottom));
    display:flex; gap:10px;
}
.sc-foot .btn{ flex:1; }

/* ---------- 순위 ---------- */
.rank-list .rk{
    display:flex; align-items:center; gap:12px;
    padding:12px 4px; border-bottom:1px solid var(--line);
    font-size:18px; font-weight:700;
}
.rank-list .rk:last-child{ border-bottom:0; }
.rank-list .no{
    width:44px; height:44px; border-radius:50%;
    background:var(--bg); display:flex; align-items:center; justify-content:center;
    font-weight:800; flex:none; font-variant-numeric:tabular-nums;
}
.rank-list .rk.top .no{ background:var(--orange); color:#fff; }
.rank-list .who{ flex:1; }
.rank-list .tot{ font-size:22px; font-weight:800; font-variant-numeric:tabular-nums; }

/* ---------- 스코어카드 표 ---------- */
.sc-table-wrap{ overflow-x:auto; background:#fff; border-radius:16px; box-shadow:var(--shadow); }
.sc-table{ width:100%; border-collapse:collapse; font-size:16px; min-width:340px; }
.sc-table th,.sc-table td{
    padding:10px 8px; text-align:center;
    border-bottom:1px solid var(--line);
    font-variant-numeric:tabular-nums; white-space:nowrap;
}
.sc-table thead th{ background:var(--g-700); color:#fff; font-size:15px; }
.sc-table .sum td{ background:var(--g-100); font-weight:800; }
.sc-table .total td{ background:var(--g-700); color:#fff; font-weight:800; font-size:17px; }
.sc-table td.under{ color:var(--under); font-weight:800; }
.sc-table td.over{ color:var(--over); }

/* ---------- 결과 ---------- */
.win-card{
    text-align:center; color:#fff;
    background:linear-gradient(160deg,var(--g-700),var(--g-500));
    border-radius:var(--radius); padding:26px 18px;
}
.win-card .cup{ font-size:44px; }
.win-card .wn{ font-size:26px; font-weight:800; margin-top:6px; }
.win-card .wt{ font-size:18px; margin-top:2px; opacity:.95; }
.stat-grid5{ display:grid; grid-template-columns:repeat(5,1fr); gap:6px; margin-top:14px; text-align:center; }
.stat-grid5 .st{ background:var(--bg); border-radius:12px; padding:10px 2px; }
.stat-grid5 .v{ font-size:22px; font-weight:800; font-variant-numeric:tabular-nums; }
.stat-grid5 .l{ font-size:12px; color:var(--ink-2); margin-top:2px; }

/* ---------- 상세 정보 ---------- */
.info-list{ background:#fff; border-radius:16px; box-shadow:var(--shadow); padding:6px 18px; }
.info-list .row{ display:flex; gap:12px; padding:13px 0; border-bottom:1px solid var(--line); font-size:16px; }
.info-list .row:last-child{ border-bottom:0; }
.info-list .k{ width:86px; flex:none; color:var(--ink-2); font-weight:700; }
.info-list .v{ flex:1; font-weight:600; }

.gc-hero{
    background:linear-gradient(160deg,var(--g-700),var(--g-500)); color:#fff;
    padding:22px 20px 24px;
}
.gc-hero h1{ font-size:24px; font-weight:800; }
.gc-hero .sub{ margin-top:6px; font-size:15px; opacity:.95; }
.gc-hero .fav{ float:right; font-size:30px; color:#fff; padding:4px 8px; }

/* ---------- 지도 ---------- */
#map{ width:100%; height:calc(100vh - var(--nav-h) - 74px); }

/* ---------- 로그인 ---------- */
.login-wrap{ padding:48px 24px; }
.login-logo{ text-align:center; margin-bottom:34px; }
.login-logo .ic{ font-size:60px; }
.login-logo h1{ font-size:26px; font-weight:800; color:var(--g-900); margin-top:8px; }
.login-hint{
    margin-top:16px; text-align:center;
    font-size:14px; color:var(--ink-2);
    background:var(--g-100); border-radius:12px; padding:12px;
}

/* ---------- 메뉴 리스트(마이페이지) ---------- */
.menu-list a{
    display:flex; align-items:center; gap:12px;
    min-height:60px; padding:0 4px;
    border-bottom:1px solid var(--line);
    font-size:18px; font-weight:700;
}
.menu-list a:last-child{ border-bottom:0; }
.menu-list .ar{ margin-left:auto; color:var(--ink-2); }

/* ==================================================
   3차 : 모임 / 대회 컴포넌트
   ================================================== */

/* ---------- 세그먼트 (모임 | 대회) ---------- */
.seg{ display:flex; background:#EDEFEA; border-radius:14px; padding:4px; margin:14px 16px 0; }
.seg a{
    flex:1; min-height:46px;
    display:flex; align-items:center; justify-content:center;
    border-radius:11px; font-size:17px; font-weight:800; color:var(--ink-2);
}
.seg a.on{ background:#fff; color:var(--g-900); box-shadow:var(--shadow); }

/* ---------- 하위 탭 ---------- */
.tabs{ display:flex; gap:6px; overflow-x:auto; padding:14px 16px 0; -webkit-overflow-scrolling:touch; }
.tabs a{
    flex:none; min-height:44px; padding:0 16px;
    display:flex; align-items:center; border-radius:999px;
    background:#fff; border:2px solid var(--line);
    font-weight:700; font-size:16px; color:var(--ink-2); white-space:nowrap;
}
.tabs a.on{ background:var(--g-500); border-color:var(--g-500); color:#fff; }

/* ---------- 뱃지 ---------- */
.badge{
    display:inline-block; font-size:13px; font-weight:800;
    border-radius:8px; padding:3px 9px; vertical-align:2px;
}
.badge.notice{ background:var(--orange-100); color:var(--orange); }
.badge.green{ background:var(--g-100); color:var(--g-700); }
.badge.gray{ background:#EDEFEA; color:var(--ink-2); }
.badge.orange{ background:var(--orange); color:#fff; }

/* ---------- 게시글 목록 ---------- */
.post-item{ display:block; padding:14px 4px; border-bottom:1px solid var(--line); }
.post-item:last-child{ border-bottom:0; }
.post-item .tt{ font-size:17px; font-weight:700; line-height:1.4; }
.post-item .mt{ font-size:14px; color:var(--ink-2); margin-top:3px; }

/* ---------- 모집 정원 ---------- */
.cap{ display:flex; align-items:baseline; gap:6px; font-variant-numeric:tabular-nums; }
.cap b{ font-size:32px; font-weight:800; color:var(--g-700); }
.cap-bar{ height:10px; background:#EDEFEA; border-radius:99px; overflow:hidden; margin-top:8px; }
.cap-bar i{ display:block; height:100%; background:var(--g-500); border-radius:99px; }

textarea.input{ padding:12px 14px; min-height:130px; line-height:1.5; resize:vertical; }

/* ---------- 조 편성 ---------- */
.group-box{ background:var(--bg); border-radius:12px; padding:12px 14px; margin-top:10px; }
.group-box .gt{ font-size:16px; font-weight:800; color:var(--g-900); margin-bottom:6px; }
.group-box .gp{ font-size:16px; line-height:1.7; }

/* ---------- 리더보드 ---------- */
.lb-note{ text-align:center; font-size:14px; color:var(--ink-2); margin-top:10px; }

/* ==================================================
   4차 : 분석 / 날씨 / 알림 / 관리자
   ================================================== */

/* ---------- 실력 분석 차트 ---------- */
.chart-svg{ width:100%; height:auto; display:block; }
.trend-note{
    display:flex; align-items:center; justify-content:center; gap:10px;
    margin-top:12px; font-size:17px; font-weight:700;
}
.trend-note .up{ color:var(--over); }
.trend-note .down{ color:var(--under); }
.bar-row{ display:flex; align-items:center; gap:10px; padding:8px 0; }
.bar-row .bl{ width:64px; flex:none; font-size:15px; font-weight:700; color:var(--ink-2); }
.bar-row .bar{ flex:1; height:26px; background:var(--bg); border-radius:8px; overflow:hidden; }
.bar-row .bar i{ display:block; height:100%; background:var(--g-500); border-radius:8px; }
.bar-row .bv{ width:52px; flex:none; text-align:right; font-size:16px; font-weight:800; font-variant-numeric:tabular-nums; }

/* ---------- 날씨 ---------- */
.wx-cur{ display:flex; align-items:center; gap:16px; }
.wx-cur .ico{ font-size:44px; }
.wx-cur .t{ font-size:44px; font-weight:800; font-variant-numeric:tabular-nums; }
.wx-cur .d{ font-size:15px; color:var(--ink-2); line-height:1.5; }
.wx-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-top:14px; text-align:center; }
.wx-grid .st{ background:var(--bg); border-radius:12px; padding:10px 2px; }
.wx-grid .v{ font-size:18px; font-weight:800; font-variant-numeric:tabular-nums; }
.wx-grid .l{ font-size:12px; color:var(--ink-2); margin-top:2px; }
.wx-hours{ display:flex; gap:8px; overflow-x:auto; margin-top:14px; -webkit-overflow-scrolling:touch; }
.wx-h{ flex:none; width:66px; text-align:center; background:var(--bg); border-radius:12px; padding:10px 4px; }
.wx-h .hh{ font-size:13px; color:var(--ink-2); }
.wx-h .ht{ font-size:17px; font-weight:800; margin-top:2px; }
.wx-h .hr{ font-size:13px; color:var(--over); margin-top:2px; }
.wx-warn{
    margin-top:14px; padding:12px 14px; border-radius:12px;
    background:var(--orange-100); color:#B4530A;
    font-size:16px; font-weight:800;
}

/* ---------- 알림 ---------- */
.noti-item{
    display:flex; gap:12px; align-items:flex-start;
    padding:14px 4px; border-bottom:1px solid var(--line);
}
.noti-item:last-child{ border-bottom:0; }
.noti-item .ni{
    width:40px; height:40px; border-radius:50%; flex:none;
    background:var(--g-100); display:flex; align-items:center; justify-content:center; font-size:18px;
}
.noti-item .nt{ flex:1; font-size:16px; font-weight:700; line-height:1.5; }
.noti-item .nd{ font-size:13px; color:var(--ink-2); font-weight:400; margin-top:2px; }
.noti-item.read{ opacity:.55; }
.bell{
    float:right; position:relative; font-size:24px; color:#fff;
    padding:2px 6px; text-decoration:none;
}
.bell .cnt{
    position:absolute; top:-4px; right:-6px;
    min-width:20px; height:20px; border-radius:10px;
    background:var(--orange); color:#fff;
    font-size:12px; font-weight:800;
    display:flex; align-items:center; justify-content:center; padding:0 5px;
}

/* ---------- 관리자 ---------- */
.adm-tabs{ display:flex; gap:6px; overflow-x:auto; padding:12px 16px 0; }
.adm-tabs a{
    flex:none; min-height:42px; padding:0 14px;
    display:flex; align-items:center; border-radius:10px;
    background:#fff; border:2px solid var(--line);
    font-weight:700; font-size:15px; color:var(--ink-2); white-space:nowrap;
}
.adm-tabs a.on{ background:var(--g-900); border-color:var(--g-900); color:#fff; }
.adm-row{
    display:flex; align-items:center; gap:10px;
    padding:12px 4px; border-bottom:1px solid var(--line); font-size:16px;
}
.adm-row:last-child{ border-bottom:0; }
.adm-row .ttl{ flex:1; font-weight:700; min-width:0; }
.adm-row .ttl small{ display:block; font-weight:400; font-size:13px; color:var(--ink-2); margin-top:2px; }
.adm-row .btn{ width:auto; min-height:42px; padding:0 14px; font-size:15px; flex:none; }
.hole-edit{ display:grid; grid-template-columns:44px 1fr 1fr; gap:8px; align-items:center; margin-bottom:8px; }
.hole-edit .hn{ font-weight:800; text-align:center; font-size:16px; }
.hole-edit input{ min-height:48px; }

/* ==================================================
   5차 : 회원가입 / 즐겨찾기 / 측정도구 / 랭킹 / 프로필
   ================================================== */

/* ---------- 홈 즐겨찾기 가로 스크롤 ---------- */
.fav-scroll{ display:flex; gap:10px; overflow-x:auto; padding:0 16px; margin-top:20px; -webkit-overflow-scrolling:touch; }
.fav-card{
    flex:none; width:170px;
    background:#fff; border-radius:14px; box-shadow:var(--shadow);
    padding:14px;
}
.fav-card .fn{ font-size:16px; font-weight:800; line-height:1.4; min-height:44px; }
.fav-card .fd{ font-size:13px; color:var(--ink-2); margin-top:4px; }

/* ---------- 스코어 입력 도구 (거리측정/음성) ---------- */
.tool-row{ display:flex; gap:10px; margin:14px 16px 0; }
.tool-row .btn{ flex:1; }
.dist-big{
    text-align:center; font-size:56px; font-weight:800;
    font-variant-numeric:tabular-nums; color:var(--g-900); line-height:1.2;
}
.dist-big small{ font-size:22px; font-weight:700; color:var(--ink-2); }
.tool-status{ text-align:center; font-size:15px; color:var(--ink-2); margin-top:6px; min-height:22px; }
.voice-mic{
    width:84px; height:84px; border-radius:50%;
    background:var(--orange); color:#fff; font-size:38px;
    display:flex; align-items:center; justify-content:center;
    margin:6px auto; box-shadow:0 4px 14px rgba(240,123,29,.4);
}
.voice-mic.listen{ background:var(--under); animation:vpulse 1s infinite; }
@keyframes vpulse{ 0%,100%{ transform:scale(1);} 50%{ transform:scale(1.08);} }

/* ---------- 랭킹 ---------- */
.rank-list .rk.me{ background:var(--g-100); border-radius:12px; padding-left:10px; padding-right:10px; }

/* ---------- 프로필 ---------- */
.avatar{
    width:64px; height:64px; border-radius:50%; object-fit:cover;
    border:3px solid rgba(255,255,255,.6); background:var(--g-100);
}
.avatar-lg{ width:96px; height:96px; }
.avatar-ph{
    width:64px; height:64px; border-radius:50%;
    background:rgba(255,255,255,.25); color:#fff;
    display:flex; align-items:center; justify-content:center; font-size:30px;
}
.qr-box{ display:flex; justify-content:center; padding:14px; background:#fff; }
.qr-box img, .qr-box canvas{ border:8px solid #fff; }
