/* S6 기능 격자 — 조각별 자리·꼴(LANDING-GRID.md §2 · ADR 0004). 원자는 land-grid.css.
   자리는 무대 기준 %·px — 창은 오른쪽·아래가 칸 끝에 잘리고, 카드는 떠서 아래가 잘린다. 색은 v5 토큰 + 팀 색(--team, 데이터 값)뿐 */

/* 공통 */
.gf-win { display: flex; flex-direction: column; top: var(--s-4); left: 31%; right: calc(-1 * var(--s-6)); bottom: calc(-1 * var(--s-6)); }
.gf-head { display: flex; align-items: baseline; gap: var(--s-2); flex: none; padding: var(--s-2) var(--s-3); border-bottom: 1px solid var(--line); white-space: nowrap; }
.gf-dark .gf-head { border-bottom-color: var(--d-line); }
.gf-card { top: var(--s-3); }

/* 1 라운지 */
.gf--lounge .gf-hash { color: var(--ink-4); font-weight: 500; margin-right: -4px; } .gf--lounge .gf-head .gf-k { margin-left: var(--s-1); }
.gf-msg { display: flex; gap: var(--s-2); flex: 1 1 auto; min-height: 0; padding: var(--s-3) var(--s-6) 0 var(--s-3); overflow: hidden; }
.gf-msg-b { min-width: 0; } .gf-who { display: flex; align-items: baseline; gap: var(--s-2); white-space: nowrap; }
.gf-tx { color: var(--ink-2); white-space: nowrap; }
.gf-dock { flex: none; padding: var(--s-2) calc(var(--s-6) + var(--s-2)) calc(var(--s-6) + var(--s-3)) var(--s-3); }
.gf-cc {
  display: flex; align-items: center; gap: var(--s-2); margin-bottom: var(--s-2); padding: var(--s-2) var(--s-3);
  border-radius: var(--r-sm); background: var(--paper); box-shadow: 0 0 0 1px var(--line), var(--e-2);
}
.gf-cc-ic { display: grid; place-items: center; flex: none; width: var(--h-sm); height: var(--h-sm); border-radius: var(--r-sm); background: var(--canvas-2); color: var(--ink-2); }
.gf-cc-tx { display: flex; flex-direction: column; flex: 1 1 auto; min-width: 0; overflow: hidden; line-height: 1.35; white-space: nowrap; }
.gf-cc-tx b { font-size: var(--t-footnote); }
.gf-cc-tx small { overflow: hidden; color: var(--ink-3); font-size: var(--t-micro); text-overflow: ellipsis; }
.gf-in {
  padding: var(--s-2) var(--s-3); border-radius: var(--r-sm); background: var(--canvas);
  box-shadow: inset 0 0 0 1px var(--line); white-space: nowrap; overflow: hidden;
}

/* 2 이벤트로 열기 — 일정 상세 커버 · 행동 카드 */
.gf--meetups-cover { display: flex; flex-direction: column; top: var(--s-3); left: 5%; width: 40%; height: calc(var(--g-stage) - var(--s-7)); padding: var(--s-4); border-radius: var(--r-lg); color: var(--team-on, var(--paper)); background: radial-gradient(120% 90% at 100% 0%, color-mix(in srgb, var(--team-on, var(--paper)) 16%, transparent), transparent 60%), var(--team, var(--ink)); box-shadow: var(--e-2); }
.gf-lc-top { display: flex; align-items: center; gap: var(--s-2); font: 600 var(--t-footnote)/1.2 var(--font); white-space: nowrap; } .gf-lc-lg { width: var(--h-sm); height: var(--h-sm); border-radius: var(--r-sm); background: var(--paper); color: var(--ink); font: 700 var(--t-ui)/1 var(--font); }
.gf-lc-t { margin-top: auto; font: 700 var(--t-title-3)/1.12 var(--font); letter-spacing: -0.035em; } .gf-lc-d { margin-top: var(--s-1); font: 500 var(--t-footnote)/1.2 var(--font); }
.gf--meetups { top: var(--s-9); right: 4%; width: 56%; padding: var(--s-4); }
:is(.gf--meetups, .gf--site) { border-radius: var(--r-xl); } :is(.gf--meetups, .gf--site, .gf--site-page) { box-shadow: 0 0 0 1px var(--line), var(--e-3); }
.gf--meetups > .gf-sw { display: grid; } .gf-act { display: flex; flex-direction: column; }
.gf-act-h { display: flex; align-items: center; gap: 6px; font: 600 var(--t-body)/1.35 var(--font); }
.gf-act-s { margin: 2px 0 var(--s-3); color: var(--ink-2); font-size: var(--t-footnote); font-variant-numeric: tabular-nums; white-space: nowrap; } .gf-act-s b { color: var(--ink); }
.gf-ebtn { display: flex; align-items: center; justify-content: center; height: var(--h-md); border-radius: var(--r-pill); background: var(--team, var(--ink)); color: var(--team-on, var(--paper)); font: 600 var(--t-ui)/1 var(--font); white-space: nowrap; }
.gf-ebtn.is-quiet { background: var(--paper); color: var(--ink); box-shadow: inset 0 0 0 1px var(--line), var(--e-1); }
.gf-incal { display: flex; align-items: center; gap: 6px; margin-top: var(--s-3); font: 500 var(--t-footnote)/1.3 var(--font); white-space: nowrap; }
:is(.gf-act-h, .gf-incal, .gf-ag-m) svg { width: var(--ic-xs); height: var(--ic-xs); } :is(.gf-act-h, .gf-incal) svg { color: var(--team, var(--ink)); }

/* 3 출석 관리 */
:is(.gf--attendance, .gf--home) { left: 24%; }
.gf--attendance .gf-head b { color: var(--d-fg); }
.gf-ck { display: flex; gap: var(--s-4); padding: var(--s-2) var(--s-3); min-height: 0; }
.gf-ck-l { flex: none; width: 88px; }
.gf-qr { display: block; padding: var(--s-2); border-radius: var(--r-sm); background: var(--paper); color: var(--ink); }
.gf-qr .gf-qr-svg { display: block; width: 100%; height: auto; fill: currentColor; }
.gf-qrbar { display: block; height: 2px; margin: var(--s-2) 0; border-radius: var(--r-pill); background: var(--d-fg); transition-duration: calc(var(--dur-5) * 2.5); transition-timing-function: linear; }
.gf-ck-hint { color: var(--d-fg-3); font-size: var(--t-micro); line-height: 1.4; }
.gf-ck-r { display: flex; flex-direction: column; gap: 2px; min-width: 0; white-space: nowrap; }
.gf-ck-t { font-size: var(--t-footnote); font-weight: 600; } .gf-ck-w { color: var(--d-fg-3); font-size: var(--t-micro); }
.gf-ck-n { display: flex; align-items: baseline; gap: var(--s-1); margin: var(--s-1) 0; color: var(--d-fg-2); }
.gf-ck-n b { color: var(--d-fg); font-size: var(--t-title-3); line-height: 1; letter-spacing: -0.03em; }
.gf-feed { max-height: calc(var(--g-feed, 3) * 23.5px); margin-top: var(--s-1); overflow: hidden; }
.gf-feed li { display: flex; gap: var(--s-2); align-items: baseline; padding: 2px 0; border-top: 1px solid var(--d-line-2); }
.gf-feed li span { color: var(--d-fg-3); font-size: var(--t-micro); font-variant-numeric: tabular-nums; }

/* 4 웹사이트 — /new 미리보기 창 · 1단계 */
.gf--site-page { display: flex; flex-direction: column; top: var(--s-3); left: 34%; right: calc(-1 * var(--s-9)); bottom: calc(-1 * var(--s-6)); border-radius: var(--r-lg); }
.gf-url { flex: none; margin: 6px var(--s-9) 6px var(--s-2); padding: 2px var(--s-3); border-radius: var(--r-pill); background: var(--canvas-2); color: var(--ink-3); font-size: var(--t-micro); white-space: nowrap; } .gf-url b { color: var(--ink); }
.gf-pb { display: flex; align-items: center; gap: var(--s-2); padding: var(--s-2) calc(var(--s-9) + var(--s-3)) var(--s-2) var(--s-3); border-top: 1px solid var(--line); white-space: nowrap; font-size: var(--t-micro); }
.gf-pb .gf-logo { width: 18px; height: 18px; border-radius: 5px; font-size: 10px; }
.gf-nav { display: flex; flex-wrap: wrap; flex: 1 1 0; min-width: 0; height: 1lh; overflow: hidden; gap: 0 var(--s-3); margin-left: var(--s-2); color: var(--ink-2); }
.gf-hero { display: flex; flex-direction: column; align-items: center; gap: var(--s-2); padding: var(--s-3) calc(var(--s-9) - var(--s-3)) 0 0; }
.gf-hero-m { display: grid; place-items: center; width: var(--h-lg); height: var(--h-lg); border-radius: var(--r-md); background: var(--ink); color: var(--paper); font: 700 var(--t-headline)/1 var(--font); box-shadow: var(--e-3); }
.gf-hero-t { margin-top: var(--s-1); font: 800 var(--t-title-2)/1.05 var(--font); letter-spacing: -0.05em; white-space: nowrap; } .gf-hero .gf-btn { height: 26px; padding: 0 var(--s-3); font-size: var(--t-micro); }
.gf--site { top: calc(var(--g-stage) - 160px); left: 6%; width: max(46%, 172px); padding: var(--s-4) var(--s-5) var(--s-5); }
.gf-dots { display: flex; gap: 4px; margin-bottom: var(--s-3); } .gf-dots span { width: 4px; height: 4px; border-radius: var(--r-pill); background: var(--line); } .gf-dots .is-on { width: 14px; background: var(--ink); }
.gf-q { margin: 2px 0 var(--s-3); font-size: var(--t-footnote); font-weight: 600; } .gf--site .gf-q { margin: 2px 0 var(--s-1); font-size: var(--t-body); font-weight: 700; letter-spacing: -0.02em; }
.gf-big { display: grid; font: 700 var(--t-title-2)/1.2 var(--font); letter-spacing: -0.04em; white-space: nowrap; } .gf-big .gf-caret { justify-self: start; }
.gf-addr { margin-top: var(--s-2); color: var(--ink-3); font-size: var(--t-caption); white-space: nowrap; } .gf-addr b { color: var(--ink); }

/* 5 투표 */
.gf--polls { left: 24%; width: 66%; padding: var(--s-3); }
.gf-who { display: flex; align-items: center; gap: var(--s-2); white-space: nowrap; }
.gf-who-n { display: flex; align-items: baseline; gap: var(--s-1); min-width: 0; }
.gf-chip { padding: 0 var(--s-2); border-radius: var(--r-pill); background: var(--canvas-2); color: var(--ink-3); font-size: var(--t-micro); line-height: 20px; }
.gf-ago { margin-left: auto; } .gf--polls .gf-q { margin: var(--s-3) 0 var(--s-2); }
.gf-opts { display: flex; flex-direction: column; gap: var(--s-1); }
.gf-opt { position: relative; display: flex; align-items: center; gap: var(--s-2); height: var(--h-sm); padding: 0 var(--s-3) 0 var(--s-2); border-radius: var(--r-sm); box-shadow: inset 0 0 0 1px var(--line); overflow: hidden; }
.gf-opt-bar { position: absolute; inset: 0; background: var(--wash-2); transform-origin: left; transform: scaleX(var(--v, 0)); }
.gf-opt.is-lead .gf-opt-bar { background: var(--wash-3); }
.gf-opt > :not(.gf-opt-bar) { position: relative; }
.gf-ind { display: grid; place-items: center; width: var(--ic-sm); height: var(--ic-sm); border-radius: 50%; box-shadow: inset 0 0 0 1px var(--line); }
.gf-opt.is-mine .gf-ind { background: var(--ink); color: var(--paper); box-shadow: none; }
.gf-ind svg { width: 10px; height: 10px; }
:is(.gf-lt, .gf-spot-q) { flex: 1 1 auto; }
.gf-opt.is-lead .gf-lt { font-weight: 600; }
.gf-num { display: flex; gap: var(--s-2); color: var(--ink-3); font-variant-numeric: tabular-nums; }
.gf-opt.is-lead .gf-num b { color: var(--ink); }
.gf-num b { font-weight: 600; } .gf-foot { margin-top: var(--s-2); color: var(--ink-4); font-size: var(--t-micro); }

/* 6 보드 */
.gf--board { left: 8%; }
.gf-cols { display: flex; gap: var(--s-2); padding: var(--s-2); }
.gf-col { display: flex; flex-direction: column; flex: none; gap: var(--s-1); width: 132px; padding: var(--s-2); border-radius: var(--r-sm); background: var(--canvas); }
.gf-col-h { display: flex; align-items: baseline; gap: var(--s-1); padding: 0 2px 2px; color: var(--ink-3); font-size: var(--t-micro); }
.gf-kc { padding: 6px var(--s-2); border-radius: var(--r-sm); background: var(--paper); box-shadow: 0 0 0 1px var(--line); }
.gf-kc > b { display: block; overflow: hidden; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.gf-kc.is-done > b { color: var(--ink-3); }
.gf-kc-m { display: flex; align-items: center; justify-content: space-between; gap: var(--s-1); margin-top: 2px; }
.gf-kc .gf-av { width: 18px; height: 18px; font-size: 9px; }
.gf--board .gf-ins[data-g-in] { transition-duration: var(--dur-4); } .gf--board .gf-ins[data-g-in].is-off { grid-template-rows: 1fr; translate: -140px 54px; }

/* 7 홈 */
.gf-ag { padding: 0 var(--s-3); }
.gf-dh { padding: var(--s-2) 0 2px; color: var(--ink-3); }
:is(.gf-col-h, .gf-dh) b { color: var(--ink); }
.gf-ag-row { display: flex; align-items: flex-start; gap: var(--s-2); padding: var(--s-1) 0 var(--s-2); white-space: nowrap; }
.gf-ag-tx { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gf-ag-tx > b { font-size: var(--t-footnote); }
.gf-ag-k, .gf-ag-m, .gf-ag-m > span { display: flex; align-items: center; gap: 6px; color: var(--ink-3); font-size: var(--t-micro); }
.gf-ag-m > span { gap: 3px; }
.gf .gf-lg16 { width: 16px; height: 16px; border-radius: 4px; background: var(--canvas); color: var(--ink); box-shadow: inset 0 0 0 1px var(--line); font-size: 9px; }
.gf-at { flex: none; width: 40px; font-size: var(--t-footnote); line-height: 20px; }
.gf-ag-row.is-td .gf-due { margin-left: auto; }

/* 8 검색 */
.gf--search { left: 10%; width: 80%; box-shadow: 0 0 0 1px var(--line), var(--e-3); } .gf--search .gf-spot-row:last-child { display: none; }
.gf-spot-in { display: flex; align-items: center; gap: var(--s-2); padding: var(--s-3); border-bottom: 1px solid var(--line); font-size: var(--t-footnote); }
.gf-spot-body { padding: 0 var(--s-2); }
.gf-spot-g { padding: var(--s-3) var(--s-2) var(--s-1); color: var(--ink-4); font: 600 var(--t-micro)/1 var(--font); letter-spacing: 0.06em; }
.gf-spot-row { display: flex; align-items: center; gap: var(--s-2); padding: 6px var(--s-2); border-radius: var(--r-sm); white-space: nowrap; }
.gf-spot-row.is-on { background: var(--wash-2); }
.gf-spot-ic { display: grid; place-items: center; flex: none; width: var(--h-xs); height: var(--h-xs); }
.gf-spot-tx { display: flex; flex-direction: column; min-width: 0; }
.gf-spot-tx b { font-size: var(--t-footnote); }
.gf-spot-tx small { overflow: hidden; color: var(--ink-3); font-size: var(--t-micro); text-overflow: ellipsis; }

/* 9 연결 */
.gf--connect { display: grid; grid-template-columns: minmax(0, 1fr); left: 12%; width: 76%; padding: var(--s-3); justify-items: center; }
.gf-cc-hd { display: flex; align-items: center; gap: var(--s-2); }
.gf-cc-tile { display: grid; place-items: center; width: var(--h-md); height: var(--h-md); border-radius: var(--r-md); background: var(--canvas-2); box-shadow: inset 0 0 0 1px var(--line); color: var(--ink-2); font: 600 8px/1 var(--font); }
.gf-cc-tile.is-maru { background: var(--paper); color: var(--ink); font: 700 11px/1 var(--font); letter-spacing: -0.04em; }
.gf-cc-link { position: relative; display: flex; align-items: center; gap: 4px; width: 18px; height: 3px; }
.gf-cc-link i { width: 3px; height: 3px; border-radius: 50%; background: var(--ink-4); }
.gf-cc-ln { position: absolute; left: -8px; right: -8px; top: 1px; height: 1px; background: var(--ink); }
.gf-cc-t { margin: var(--s-2) 0 0; font: 600 var(--t-ui)/1.3 var(--font); } .gf-cc-box { display: grid; width: 100%; margin-top: var(--s-2); border-radius: var(--r-sm); box-shadow: inset 0 0 0 1px var(--line); }
.gf-cc-box b { padding: var(--s-1) var(--s-3); font: 500 var(--t-micro)/1.5 var(--font); } .gf-cc-box b + b { box-shadow: inset 0 1px var(--line); }
.gf-cc-addr { display: flex; align-items: center; gap: var(--s-2); width: 100%; margin-top: var(--s-2); padding: var(--s-1) var(--s-1) var(--s-1) var(--s-3); border-radius: var(--r-sm); box-shadow: inset 0 0 0 1px var(--line); }
.gf-cc-addr code { flex: 1; min-width: 0; overflow: hidden; color: var(--ink-2); font: 400 var(--t-micro)/1.5 var(--font-mono); text-overflow: ellipsis; white-space: nowrap; }
.gf--connect .gf-btn { height: var(--h-xs); padding: 0 var(--s-3); font-size: var(--t-micro); }
/* 폭별 맞춤 — @container는 무대 폭 */
@container (max-width: 359px) { .gf--meetups-cover { width: 38%; padding: var(--s-3); } .gf-lc-t { font-size: var(--t-headline); } .gf--meetups { width: 60%; padding: var(--s-3); } .gf--site-page { left: 40%; } .gf-hero-t { font-size: var(--t-title-3); } } @container (max-width: 339px) { .gf-act-s { white-space: normal; } .gf-incal { display: none; } .gf--site-page { left: 50%; } }
@media (max-width: 1265px) { .gf--lounge { left: 22%; } }
@media (max-width: 999px) { .gf--home { left: 16%; } }
@media (max-width: 699px) { .gf--polls { top: var(--s-1); } .gf--meetups { top: var(--s-7); padding: var(--s-3); } .gf-ebtn { height: var(--h-sm); } .gf--site { top: var(--s-8); } .gf-hero-m { width: var(--h-md); height: var(--h-md); } .gf-pb { padding-block: var(--s-1); } .gf-hero { padding-top: var(--s-2); } .gf--search { top: 0; } :is(.gf-ck-hint, .gf--home .gf-head) { display: none; } .gf--attendance { --g-feed: 1; } }
