:root{--primary:#165a4a;--primary2:#0e4438;--accent:#f3b64b;--bg:#f4f7f6;--text:#1d2926;--muted:#66736f;--line:#d9e2df;--danger:#c83f49;--ok:#16865d;--warning:#b37400;--white:#fff;--shadow:0 14px 36px rgba(20,55,47,.10)}
*{box-sizing:border-box}body{margin:0;font-family:Pretendard,"Noto Sans KR",Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}.hidden{display:none!important}.container{width:min(1160px,calc(100% - 32px));margin:auto}.topbar{background:var(--white);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:76px}.brand{display:flex;align-items:center;gap:13px;font-weight:800}.brand img{width:46px;height:46px;object-fit:contain}.brand small{display:block;color:var(--muted);font-weight:600;margin-top:2px}.nav{display:flex;gap:8px;flex-wrap:wrap}.btn{border:0;border-radius:11px;padding:12px 18px;font-weight:750;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px;transition:.15s}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--primary);color:white}.btn-secondary{background:#e8f0ed;color:var(--primary2)}.btn-outline{background:white;color:var(--primary);border:1px solid var(--primary)}.btn-danger{background:var(--danger);color:white}.btn-warning{background:#fff3d9;color:#7d5200}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.hero{padding:68px 0 46px;background:linear-gradient(135deg,#e6f2ed,#fff8e9)}.eyebrow{color:var(--primary);font-weight:800;margin-bottom:10px}.hero h1{font-size:clamp(30px,5vw,54px);line-height:1.16;margin:0 0 18px;letter-spacing:-1.5px}.hero p{color:var(--muted);font-size:18px;margin:0 0 25px}.hero-actions{display:flex;gap:10px;flex-wrap:wrap}.grid-2{display:grid;grid-template-columns:1.25fr .75fr;gap:24px}.section{padding:42px 0}.card{background:white;border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:var(--shadow)}.card h2,.card h3{margin-top:0}.overview-list{display:grid;gap:15px}.overview-row{display:grid;grid-template-columns:78px 1fr;gap:15px;padding-bottom:14px;border-bottom:1px solid #edf1f0}.overview-row:last-child{border:0;padding-bottom:0}.overview-row b{color:var(--primary)}.steps{counter-reset:step;display:grid;gap:15px}.step{display:flex;gap:13px;align-items:flex-start}.step:before{counter-increment:step;content:counter(step);width:29px;height:29px;flex:0 0 29px;border-radius:50%;display:grid;place-items:center;background:var(--primary);color:white;font-weight:800}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.field{display:grid;gap:7px}.field.full{grid-column:1/-1}.field label{font-weight:750}.required:after{content:" *";color:var(--danger)}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:10px;padding:12px 13px;background:white;color:var(--text)}textarea{min-height:100px;resize:vertical}input:focus,select:focus,textarea:focus{outline:3px solid rgba(22,90,74,.12);border-color:var(--primary)}.checkbox{display:flex;gap:10px;align-items:flex-start;line-height:1.55}.checkbox input{width:19px;height:19px;margin-top:2px}.notice{border-radius:12px;padding:14px 16px;background:#eef7f3;color:#205f4f}.notice.warning{background:#fff5df;color:#785000}.notice.danger{background:#fdecef;color:#8c2830}.center-card{max-width:680px;margin:54px auto;text-align:center}.center-card .icon{width:74px;height:74px;border-radius:50%;display:grid;place-items:center;margin:0 auto 18px;background:#def3e9;color:var(--ok);font-size:36px;font-weight:900}.action-row{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:24px}.status{display:inline-flex;padding:6px 10px;border-radius:999px;font-size:13px;font-weight:800}.status-pending{background:#fff3d9;color:#865800}.status-approved{background:#def3e9;color:#126848}.status-waitlist{background:#e9eef8;color:#38598b}.status-checked{background:#e4e5fb;color:#4240a4}.status-rejected{background:#fdecef;color:#9a2e37}.qr-box{display:grid;place-items:center;padding:22px;background:#fff;border:1px solid var(--line);border-radius:16px;max-width:330px;margin:20px auto}.qr-box canvas,.qr-box img{max-width:100%}.admin-layout{display:grid;grid-template-columns:240px 1fr;min-height:100vh}.sidebar{background:#103d34;color:white;padding:24px 16px;position:sticky;top:0;height:100vh}.sidebar .brand{margin-bottom:28px}.side-menu{display:grid;gap:7px}.side-menu button{border:0;background:transparent;color:#dcebe6;text-align:left;padding:12px;border-radius:9px;cursor:pointer}.side-menu button.active,.side-menu button:hover{background:rgba(255,255,255,.12);color:white}.admin-main{padding:28px}.admin-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:20px}.metrics{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:22px}.metric{background:white;border:1px solid var(--line);border-radius:14px;padding:18px}.metric span{color:var(--muted);font-size:13px}.metric strong{display:block;font-size:27px;margin-top:4px}.toolbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:15px}.toolbar input,.toolbar select{width:auto;min-width:150px}.table-wrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:14px}table{width:100%;border-collapse:collapse;min-width:1050px}th,td{padding:12px 11px;border-bottom:1px solid #e8eeec;text-align:left;white-space:nowrap;font-size:14px}th{background:#f6f9f8;position:sticky;top:0;z-index:1}td.actions{display:flex;gap:5px}.mini{padding:7px 9px;border-radius:8px;font-size:12px}.scanner-page{min-height:100vh;background:#102a24;color:white;padding:28px}.scanner-shell{max-width:760px;margin:auto}.scanner-title{text-align:center}.scanner-title h1{font-size:clamp(24px,5vw,38px);margin-bottom:8px}.scanner-title p{color:#b9d2ca}.camera-box{background:#071b16;border:1px solid #31534b;border-radius:18px;padding:14px;margin-top:24px}.camera-controls{display:flex;gap:9px;justify-content:center;flex-wrap:wrap;margin:16px 0}.scan-result{background:white;color:var(--text);border-radius:18px;padding:25px;text-align:center;margin-top:18px}.scan-result h2{font-size:25px}.scan-success{color:var(--ok)}.scan-error{color:var(--danger)}.footer{padding:30px 0;color:var(--muted);text-align:center;font-size:13px}
@media(max-width:900px){.grid-2{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,1fr)}.admin-layout{display:block}.sidebar{position:relative;height:auto}.side-menu{grid-template-columns:repeat(3,1fr)}.admin-main{padding:18px}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}}
@media(max-width:600px){.container{width:min(100% - 20px,1160px)}.topbar-inner{align-items:flex-start;padding:12px 0;flex-direction:column}.hero{padding:42px 0 32px}.card{padding:19px}.metrics{grid-template-columns:1fr 1fr}.metric strong{font-size:22px}.side-menu{grid-template-columns:1fr 1fr}.scanner-page{padding:15px}.btn{width:100%}.hero-actions .btn,.toolbar .btn,.camera-controls .btn,.actions .btn{width:auto}}

.scanner-setup{margin:18px 0;text-align:left}.scanner-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.scanner-stats>div{background:#f3f7f6;border-radius:12px;padding:12px;text-align:center}.scanner-stats span{display:block;font-size:12px;color:var(--muted)}.scanner-stats strong{display:block;font-size:22px;margin-top:4px}.small-note{text-align:center;color:var(--muted);font-size:13px}.scan-result{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:50;min-width:min(88vw,420px);box-shadow:0 18px 60px rgba(0,0,0,.28)}@media(max-width:640px){.scanner-stats{grid-template-columns:1fr 1fr}.scanner-stats>div:last-child{grid-column:1/-1}}

/* 확인 버튼형 QR 인증 모달: 카메라 스트림은 뒤에서 계속 유지 */
.modal-open{overflow:hidden}
.scan-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:18px;background:rgba(2,14,11,.68);backdrop-filter:blur(3px)}
.scan-overlay.hidden{display:none!important}
.scan-overlay .scan-result{position:relative;left:auto;top:auto;transform:none;margin:0;width:min(92vw,440px);min-width:0;padding:30px 24px 24px;border:3px solid transparent;box-shadow:0 24px 80px rgba(0,0,0,.45)}
.scan-result-icon{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;margin:0 auto 16px;color:white;font-size:44px;font-weight:900;line-height:1}
.scan-overlay .scan-result h2{margin:0 0 12px;font-size:clamp(23px,5vw,30px);line-height:1.35}
.scan-overlay .scan-result p{margin:0 0 22px;color:var(--muted);font-size:16px;line-height:1.6;white-space:pre-line}
.scan-confirm{width:100%;min-height:54px;font-size:18px}
.result-success{border-color:#48b88c}.result-success .scan-result-icon{background:var(--ok)}.result-success h2{color:var(--ok)}
.result-duplicate{border-color:#eba83d}.result-duplicate .scan-result-icon{background:#d98a0b}.result-duplicate h2{color:#a86400}
.result-error{border-color:#e26f78}.result-error .scan-result-icon{background:var(--danger)}.result-error h2{color:var(--danger)}
@media(max-width:600px){.scan-overlay{padding:12px}.scan-overlay .scan-result{padding:25px 18px 18px}.scan-result-icon{width:64px;height:64px;font-size:38px}.scan-confirm{width:100%!important}}

/* 행사 내용에 입력한 줄바꿈을 화면에서도 그대로 표시 */
[data-content]{white-space:pre-line;word-break:keep-all;overflow-wrap:anywhere}

/* 참여 신청 확인: '행사 인지경로' 라벨이 한 줄로 표시되도록 너비 확보 */
.application-summary .overview-row{grid-template-columns:110px minmax(0,1fr)}
.application-summary .overview-row b{white-space:nowrap}
@media(max-width:600px){.application-summary .overview-row{grid-template-columns:105px minmax(0,1fr);gap:10px}}

/* 신청 폼 선택형 항목 */
.choice-row{display:flex;gap:10px;flex-wrap:wrap}
.choice{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:11px 14px;background:#fff;cursor:pointer;min-width:110px}
.choice input{width:18px;height:18px;margin:0;flex:0 0 18px}
.choice:has(input:checked){border-color:var(--primary);background:#eef7f3;color:var(--primary2);font-weight:750}
.field-help{color:var(--muted);line-height:1.5;margin-top:-2px}

/* 신청 확인 정보 라벨 폭: 긴 항목도 한 줄 유지 */
.application-summary .overview-row{grid-template-columns:150px minmax(0,1fr)}
.application-summary .overview-row b{white-space:nowrap}
@media(max-width:600px){
  .application-summary .overview-row{grid-template-columns:145px minmax(0,1fr);gap:8px;font-size:14px}
  .choice-row{display:grid;grid-template-columns:1fr 1fr}
  .choice{min-width:0}
}

/* QR 스캐너 카운트 가독성 강화 */
.scanner-stats>div{background:#eef4f2;color:#10231e;border:1px solid #c9d8d3}
.scanner-stats span{color:#40554e;font-weight:700}
.scanner-stats strong{color:#0b3d31;font-weight:800;text-shadow:none}
@media (prefers-color-scheme: dark){
  .scanner-stats>div{background:#17211e;color:#f5fbf8;border-color:#40534d}
  .scanner-stats span{color:#d7e4df}
  .scanner-stats strong{color:#ffffff}
}

/* 예약 오픈 안내 / 카운트다운 */
.reservation-gate{min-height:calc(100vh - 76px);padding:28px 0 42px;background:linear-gradient(145deg,#edf7f3,#fff9ed)}
.reservation-gate-inner{display:grid;grid-template-columns:minmax(280px,560px) minmax(300px,1fr);align-items:center;gap:38px;min-height:calc(100vh - 150px)}
.reservation-event-chooser{grid-column:1/-1;padding:15px 18px;box-shadow:none}
.reservation-poster-frame{width:100%;aspect-ratio:4/3;background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;display:grid;place-items:center;box-shadow:var(--shadow)}
.reservation-poster-frame img{width:100%;height:100%;object-fit:contain;background:#fff}
.reservation-poster-frame:has(img.hidden):after{content:'행사 포스터';color:var(--muted);font-weight:700}
.reservation-gate-copy h1{font-size:clamp(32px,5vw,58px);line-height:1.12;margin:0 0 18px}
.reservation-open-message{font-size:clamp(17px,2.3vw,22px);font-weight:750;line-height:1.65;color:#344843}
.countdown-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:28px 0 16px}
.countdown-grid>div{background:#103d34;color:#fff;border-radius:15px;padding:17px 8px;text-align:center;box-shadow:0 10px 24px rgba(16,61,52,.16)}
.countdown-grid strong{display:block;font-size:clamp(27px,4vw,42px);line-height:1;font-variant-numeric:tabular-nums}
.countdown-grid span{display:block;margin-top:8px;color:#d7ebe5;font-size:13px;font-weight:700}
.server-time-note{font-size:13px;color:var(--muted)}
.reservation-admin-box{border:1px solid #cfe0da;border-radius:14px;padding:18px;background:#f8fbfa}
.reservation-admin-box h3{margin:0 0 15px}.reservation-settings-grid{margin-top:15px}
.poster-admin-preview{width:min(520px,100%);aspect-ratio:4/3;border:1px dashed #aebfba;border-radius:14px;background:#fff;display:grid;place-items:center;overflow:hidden;color:var(--muted)}
.poster-admin-preview img{width:100%;height:100%;object-fit:contain;background:#fff}
@media(max-width:800px){.reservation-gate-inner{grid-template-columns:1fr;gap:22px;min-height:auto}.reservation-gate{padding-top:18px}.countdown-grid{gap:6px}.countdown-grid>div{padding:14px 5px}}
@media(max-width:480px){.countdown-grid strong{font-size:25px}.countdown-grid span{font-size:11px}.reservation-gate-copy{text-align:center}}
@media(prefers-color-scheme:dark){.countdown-grid>div{background:#0a2c25;color:#fff;border:1px solid #4f6d65}.countdown-grid span{color:#e3f1ed}}
