/* core.css — 전 영역 공용 기반: 디자인 토큰 · 리셋 · 타이포 · 공통 버튼·폼 · 헤더/푸터 셸 · a11y
 * 근거: AGENTS.md §2.1 §4 · PLAN §5.1 §6 M01 · docs/decisions/20260907-css-area-split.md
 * 규칙: front/admin 전용 선택자를 여기 넣지 않는다 — bin/audit.sh [10] 과 tests/css_area_split.php 가 차단한다.
 * 이관: 2026-09-07 main.css 를 영역별로 기계적 이동(규칙 원문 보존, 재작성·정렬 금지).
 */
:root { color-scheme: light; --forest:#193c2b; --cream:#f7f1e4; --gold:#e7a93f; --ink:#18231d; --muted:#5c625c; --line:#e6dfd2; --green:#245b3d; --neon:#00e676; --shadow:0 12px 36px rgba(39,52,44,.08); }
* { box-sizing: border-box; }
html { font-size: 16px; }
body { margin:0; color:var(--ink); background:#fffdf8; font-family:"Paperlogy",-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif; line-height:1.6; word-break:keep-all; }
a { color:inherit; }
button,input,select,textarea { min-height:44px; font-family:inherit; }
.touch-link { display:inline-flex; min-height:44px; align-items:center; }
:focus-visible { outline:3px solid #2f6fed; outline-offset:3px; }
.skip-link { position:absolute; left:12px; top:-60px; z-index:20; padding:12px 16px; background:#fff; }
.skip-link:focus { top:8px; }
.site-header { position:sticky; top:0; z-index:10; display:flex; align-items:center; justify-content:space-between; min-height:64px; padding:10px 20px; background:rgba(255,253,248,.96); border-bottom:1px solid #e9e1d2; }
.brand { display:flex; min-height:44px; align-items:center; gap:9px; font-size:19px; font-weight:800; text-decoration:none; letter-spacing:-.04em; }
.brand small { padding:3px 8px; border-radius:999px; background:rgba(255,255,255,.13); font-size:11px; font-weight:800; letter-spacing:.02em; }
.header-cta { display:inline-flex; min-height:44px; align-items:center; justify-content:center; border-radius:999px; background:var(--forest); color:#fff; font-weight:700; text-decoration:none; }
.header-cta { padding:0 17px; font-size:15px; }
.header-actions { display:flex; align-items:center; gap:8px; }
.header-logout { margin:0; }
.header-logout button { min-height:44px; border:1px solid #d8ddd7; border-radius:999px; padding:0 14px; background:#fff; color:#475569; font:inherit; font-size:15px; font-weight:800; }
main,.site-footer { width:100%; max-width:760px; margin:0 auto; }
.hero { position:relative; overflow:hidden; min-height:540px; padding:76px 24px 54px; color:#fff; background:linear-gradient(145deg,rgba(20,55,39,.98),rgba(31,80,56,.88)),radial-gradient(circle at 80% 20%,#d69b35 0,transparent 42%); }
.hero::before,.hero::after { position:absolute; content:""; border:1px solid rgba(255,255,255,.14); border-radius:50%; pointer-events:none; }
.hero::before { right:-104px; top:-32px; width:290px; height:290px; }
.hero::after { right:42px; top:105px; width:80px; height:80px; background:rgba(231,169,63,.16); }
.eyebrow { margin:0 0 10px; color:var(--gold); font-size:14px; font-weight:800; letter-spacing:.08em; }
.hero h1 { position:relative; z-index:1; margin:0; font-size:clamp(38px,11vw,60px); line-height:1.13; letter-spacing:-.06em; }
.hero-copy { max-width:32rem; margin:24px 0; font-size:17px; color:#f0eee7; }
.dday { display:inline-flex; gap:10px; margin:0 0 30px; padding:8px 14px; border:1px solid rgba(255,255,255,.4); border-radius:999px; font-size:18px; font-weight:800; }
.dday span { font-size:14px; font-weight:500; }
.site-footer { padding:28px 20px calc(28px + env(safe-area-inset-bottom)); background:#10261c; color:#d7ded9; font-size:14px; }
.site-footer p { margin:0; }
.footer-nav { display:flex; gap:20px; margin-top:14px; }
.footer-nav a { min-height:44px; display:inline-flex; align-items:center; color:#fff; font-weight:700; }
.disabled-button { display:flex; width:100%; max-width:none; min-height:52px; align-items:center; justify-content:center; border-radius:999px; font-weight:800; }
.disabled-button { background:#dde0da; color:#747970; }
.booking-head .eyebrow { margin-bottom:5px; }
.join-page { max-width:760px; margin:0 auto; padding:34px 20px 110px; }
.join-head { margin-bottom:24px; }
.join-head h1 { margin:5px 0 10px; font-size:clamp(2rem,8vw,3.5rem); line-height:1.05; }
.join-head>p:last-child { color:var(--muted); }
.join-next { display:flex; min-height:48px; align-items:center; justify-content:center; margin-top:18px; border-radius:14px; background:var(--forest); color:#fff; font-weight:900; text-decoration:none; }
.join-form { display:grid; gap:18px; padding:22px; border-radius:22px; background:#fff; box-shadow:0 8px 28px rgba(47,50,45,.07); }
.join-form>label,.join-form fieldset { display:grid; gap:7px; margin:0; color:#38463d; font-weight:800; }
.join-form small { color:#727872; font-weight:500; }
.join-form input,.join-form select,.join-form textarea { width:100%; min-height:48px; border:1px solid #d3d7d1; border-radius:12px; padding:11px 13px; background:#fbfbf8; color:var(--ink); font:inherit; }
.join-form textarea { min-height:110px; resize:vertical; }
.join-form fieldset { border:1px solid var(--line); border-radius:14px; padding:14px; }
.join-form .join-check { display:flex; min-height:44px; align-items:center; gap:9px; font-weight:700; }
.join-form .join-check input { width:22px; min-height:22px; flex:0 0 22px; padding:0; }.join-phone input,.join-phone button{min-height:48px}.join-phone button{border:0;border-radius:10px;background:#193c2b;color:#fff;font-weight:700}.join-error{padding:14px;border-radius:12px}.join-error{background:#fff0ed;color:#8a2418}.join-phone{display:grid;grid-template-columns:1fr auto;gap:8px}.join-auth-status{margin:0;padding:10px;border-radius:10px;background:#edf1ed}.join-auth-status.is-error{background:#fff0ed;color:#8a2418}.join-auth-status.is-ok{background:#e1f1e4;color:#174d28}
.join-next { margin-top:0; }
#funwalk-progress-form { margin:14px 0; }
#funwalk-progress-form button { min-height:44px; padding:0 16px; border:1px solid #52715a; border-radius:12px; background:#fff; color:#285039; font:inherit; font-weight:900; }
@media print { .site-header,.site-footer { display:none!important; }}
.booking-fields-preview { display:flex; flex-wrap:wrap; gap:8px; }
.booking-fields-preview span { padding:7px 10px; border-radius:999px; background:#f0eee8; color:#5e625c; font-size:13px; }
.booking-fields-preview b { color:#9a442f; }
.admin-programs__guide { margin:16px; padding:15px; border:1px solid #ded5c4; border-radius:14px; background:#fff9ee; color:#655d50; font-size:14px; }
.admin-program-list { margin:0 16px; overflow:hidden; border:1px solid #d8ddd7; border-radius:12px; background:#fff; box-shadow:0 5px 18px rgba(31,55,40,.05); }
.admin-program-list__head,.admin-program-row>summary { display:grid; grid-template-columns:minmax(0,1fr) 90px 64px; align-items:center; gap:10px; }
.admin-program-list__head { padding:10px 16px; background:#f1f3ef; color:#707a72; font-size:11px; font-weight:900; letter-spacing:.04em; }
.admin-program-row { border-top:1px solid var(--line); }
.admin-program-row>summary { position:relative; min-height:64px; padding:10px 16px; cursor:pointer; list-style:none; transition:background .15s ease; }
.admin-program-row>summary::-webkit-details-marker { display:none; }
.admin-program-row>summary:hover { background:#f7faf7; }
.admin-program-row>summary>span:first-child { display:flex; min-width:0; align-items:center; gap:10px; }
.admin-program-row>summary>span:first-child b { display:grid; width:34px; height:34px; flex:0 0 auto; place-items:center; border-radius:8px; background:#e9f0ea; color:#315a3f; font-size:12px; }
.admin-program-row>summary strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.admin-program-row>summary>span:nth-child(2) { color:#68736b; text-align:center; font-size:13px; }
.admin-program-row>summary>span:nth-child(2) b { color:#244f36; font-size:16px; }
.admin-program-row>summary small { justify-self:center; min-width:48px; padding:5px 8px; border-radius:999px; text-align:center; font-size:11px; font-weight:900; }
.admin-program-row[open]>summary { background:#eef5ef; color:var(--forest); box-shadow:inset 4px 0 #376b49; }
.admin-program-row__body { padding:18px 14px 22px; border-top:1px solid #dce4dd; background:#f5f7f4; }
.admin-session-calendar__days>button.is-selected { outline:3px solid #2563eb; outline-offset:1px; }

@media (min-width:600px) {
  .admin-program-list { grid-template-columns:repeat(2,minmax(0,1fr)); }}
@media (min-width:761px) {
  body { background:#ede9df; }
  main,.site-header,.site-footer { box-shadow:0 0 45px rgba(40,45,40,.08); }
  .site-header { width:100%; max-width:760px; margin:0 auto; }
  .hero { border-radius:0 0 28px 28px; }}

@media (prefers-reduced-motion:reduce) {
  *,*::before,*::after { scroll-behavior:auto!important; transition-duration:.01ms!important; animation-duration:.01ms!important; animation-iteration-count:1!important; }}
.admin-login__panel .eyebrow { color:#2563eb; font-size:11px; letter-spacing:.14em; }

/* M01 Figma PC MAIN 재구성: 공개 화면 전용 반응형 셸 */
.site-header__inner{display:flex;width:100%;align-items:center;justify-content:space-between;gap:14px}
.site-header--public{display:block;padding:8px 16px;background:rgba(255,255,255,.97);border-bottom:1px solid #e6e6e2}
.site-header--public .site-header__inner{flex-wrap:wrap}
.site-header--public .brand{color:#101513;font-size:17px}
.brand-logo{display:block;width:116px;height:auto;max-height:44px;object-fit:contain}
.brand-mark{position:relative;display:block;width:28px;height:32px;flex:0 0 28px;transform:rotate(-12deg)}
.brand-mark:before{position:absolute;left:3px;top:1px;width:5px;height:29px;border-radius:99px;background:#111;content:""}
.brand-mark:after{position:absolute;left:5px;top:13px;width:17px;height:5px;border-radius:99px;background:#111;transform:rotate(41deg);content:""}
.brand-mark i{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--neon)}
.brand-mark i:nth-child(1){right:2px;top:2px}.brand-mark i:nth-child(2){right:-1px;top:11px}.brand-mark i:nth-child(3){right:3px;top:20px}
.primary-nav{order:3;display:flex;width:100%;gap:4px;overflow-x:auto;padding:3px 0 1px;scrollbar-width:none}
.primary-nav::-webkit-scrollbar{display:none}
.primary-nav a{display:inline-flex;min-height:44px;flex:0 0 auto;align-items:center;padding:0 12px;border-radius:8px;color:#202522;font-size:14px;font-weight:800;text-decoration:none;white-space:nowrap}
.primary-nav a:hover{background:#f0f2ef}
.primary-nav .primary-nav__funwalk{padding:0 14px;background:var(--neon);color:#082116}
.header-my{display:none;min-height:44px;align-items:center;padding:0 8px;color:#3d4540;font-size:14px;font-weight:800;text-decoration:none}
.site-header--public .header-cta{border-radius:8px;background:#171a18;font-size:13px}
.hero__copy{position:relative;z-index:2}
.hero__actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.hero__art{position:absolute;right:-70px;top:70px;width:270px;height:270px;border:1px solid rgba(255,255,255,.18);border-radius:50%;color:rgba(255,255,255,.1);font-size:34px;font-weight:900;letter-spacing:.08em;transform:rotate(18deg)}
.hero__art span{position:absolute;left:20px;top:104px}
.hero__art i{position:absolute;border-radius:50%;background:var(--neon)}
.hero__art i:nth-of-type(1){right:35px;top:26px;width:54px;height:54px}.hero__art i:nth-of-type(2){left:18px;bottom:38px;width:90px;height:90px;opacity:.25}.hero__art i:nth-of-type(3){right:0;bottom:30px;width:22px;height:22px}
.footer-brand{display:inline-flex;min-height:44px;align-items:center;color:#fff;font-size:18px;font-weight:900;text-decoration:none}
.site-footer .footer-nav{flex-wrap:wrap}
.site-footer .touch-link{min-width:44px;justify-content:center}
@media (min-width:1024px){
  .site-header--public{min-height:78px;padding:0 28px}
  .site-header--public .site-header__inner{max-width:1200px;min-height:78px;margin:0 auto;flex-wrap:nowrap}
  .site-header--public .brand{font-size:18px;white-space:nowrap}
  .brand-logo{width:128px}
  .primary-nav{order:initial;width:auto;justify-content:center;overflow:visible;padding:0}
  .primary-nav a{padding:0 13px;font-size:14px}
  .header-my{display:inline-flex}
  .hero__art{position:relative;right:auto;top:auto;justify-self:end;width:300px;height:300px}
  .join-page{max-width:1200px}}

/* M03 인증·동반자 입력 */
#booking-form input:not([type=checkbox]):not([type=hidden]),#booking-form textarea{box-sizing:border-box;max-width:100%;width:100%;min-height:48px;padding:12px;border:1px solid #727b75;border-radius:8px;font:inherit}
#booking-form button{min-height:48px;font:inherit;cursor:pointer}
#booking-form button:disabled{cursor:default;opacity:.6}
#booking-guest-fields fieldset{min-width:0;display:grid;gap:8px;margin:12px 0;border:1px solid #b9c2bc;border-radius:8px}
#booking-form [hidden]{display:none}
#booking-result{overflow-wrap:anywhere;font-size:18px;line-height:1.6}
#booking-my-link{display:flex;align-items:center;min-height:48px}
#my-ticket{margin:24px 0;padding:16px;border:1px solid #727b75;border-radius:12px;overflow-wrap:anywhere}
#my-ticket img{display:block;max-width:100%;height:auto;background:#fff;margin:16px auto}
#my-ticket a{display:flex;align-items:center;min-height:48px}
#my-ticket[hidden],#my-ticket [hidden]{display:none}
.today-date-tab.is-selected{border-color:#131714;background:#131714;color:#fff;box-shadow:0 6px 16px rgba(12,20,15,.15)}
.today-date-tab.is-selected small{color:var(--neon)}
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }

/* Shared public/operations schedule date picker. */
.schedule-picker{box-sizing:border-box;width:100%;max-width:440px;margin:16px 0;padding:12px;border:1px solid #d7e0da;border-radius:16px;background:#fff;color:#193c2b;font-size:16px}
.schedule-picker .schedule-picker__nav{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.schedule-picker button{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;min-height:44px;width:100%;margin:0;padding:4px 0;border:1px solid transparent;border-radius:8px;background:#edf4ef;color:#193c2b;font:inherit;cursor:pointer;line-height:1.2}
.schedule-picker .schedule-picker__nav button{width:44px;flex:none;font-size:24px}
.schedule-picker .schedule-picker__week,.schedule-picker .schedule-picker__grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;text-align:center}
.schedule-picker .schedule-picker__week{margin-bottom:6px;font-size:12px;color:#526359}
.schedule-picker button small{font-size:11px;line-height:1.2}
.schedule-picker button:disabled{background:#f7f8f7;color:#78847d;cursor:default;opacity:1}
.schedule-picker button[aria-pressed="true"]{background:#193c2b;color:#fff;border-color:#193c2b}
.schedule-picker button.is-drop-target{border-color:#ba6d1d;box-shadow:inset 0 0 0 2px #ba6d1d}
.schedule-picker button:focus-visible{outline:3px solid #ba6d1d;outline-offset:1px}
.schedule-picker .schedule-picker__summary{margin:12px 0 0;font-size:14px;line-height:1.5;color:#40554a}
[data-schedule-list]>[hidden]{display:none!important}
.schedule-picker [hidden], [data-performance-date][hidden]{display:none!important}
