:root{
  --bg:#f4f5f7;
  --panel:rgba(255,255,255,.78);
  --panel-solid:#ffffff;
  --line:rgba(17,24,39,.08);
  --text:#15171a;
  --muted:#787d86;
  --accent:#111827;
  --success:#24a269;
  --warning:#c58b12;
  --danger:#d95757;
  --radius-xl:28px;
  --radius-lg:20px;
  --radius-md:14px;
  --shadow:0 18px 48px rgba(18,24,40,.07);
  --blur:blur(22px) saturate(140%);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Pretendard","Noto Sans KR",sans-serif;color:var(--text);background:
radial-gradient(circle at 15% 10%,rgba(255,255,255,.95),transparent 35%),
linear-gradient(135deg,#f8f9fb 0%,#eef0f3 100%);}
body:before{
  content:"";position:fixed;inset:0;pointer-events:none;opacity:.35;
  background-image:linear-gradient(rgba(255,255,255,.55) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.55) 1px,transparent 1px);
  background-size:42px 42px;mask-image:linear-gradient(to bottom,black,transparent 70%);
}
button,input,select{font:inherit}
button{cursor:pointer}
.admin-shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh;padding:18px;gap:18px}
.sidebar{
  position:sticky;top:18px;height:calc(100vh - 36px);padding:20px 16px;display:flex;flex-direction:column;
  border:1px solid var(--line);border-radius:30px;background:rgba(255,255,255,.72);backdrop-filter:var(--blur);box-shadow:var(--shadow)
}
.brand{display:flex;align-items:center;gap:12px;padding:8px 8px 22px}
.brand-mark{width:42px;height:42px;border-radius:14px;background:#111;color:#fff;display:grid;place-items:center;font-weight:800}
.brand-title{font-size:14px;font-weight:800;letter-spacing:.08em}
.brand-sub,.sidebar-footer small{font-size:12px;color:var(--muted)}
.nav-list{display:flex;flex-direction:column;gap:6px}
.nav-item{display:flex;gap:12px;align-items:center;padding:13px 14px;border-radius:16px;color:#555a63;text-decoration:none}
.nav-item:hover,.nav-item.active{background:rgba(17,24,39,.07);color:#111}
.nav-item span{width:22px;text-align:center}.nav-item b{font-size:14px}
.sidebar-footer{margin-top:auto;border-top:1px solid var(--line);padding:16px 8px 4px;display:flex;align-items:center;gap:10px}
.sidebar-footer strong,.sidebar-footer small{display:block}
.avatar{width:38px;height:38px;border-radius:13px;background:#e9ebef;display:grid;place-items:center;font-size:12px;font-weight:700}
.admin-main{min-width:0}
.topbar{display:flex;justify-content:space-between;align-items:end;padding:18px 8px 20px}
.eyebrow{font-size:11px;letter-spacing:.16em;color:#8c929c;font-weight:800}
h1{margin:5px 0 0;font-size:28px;letter-spacing:-.04em}
h2,h3,p{margin-top:0}
.top-actions{display:flex;gap:8px}
.icon-btn,.soft-btn,.primary-btn,.round-arrow{
  border:1px solid var(--line);background:rgba(255,255,255,.78);backdrop-filter:var(--blur);
  border-radius:14px;min-height:42px;padding:0 15px;color:#25282d
}
.icon-btn{width:42px;padding:0}
.primary-btn{background:#15171a;color:white;border-color:#15171a}
.page-content{padding:0 8px 24px}
.hero-panel{
  position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;min-height:235px;
  padding:36px;border-radius:var(--radius-xl);background:rgba(255,255,255,.76);border:1px solid var(--line);
  box-shadow:var(--shadow);backdrop-filter:var(--blur)
}
.hero-panel h2{font-size:30px;margin:14px 0 8px;letter-spacing:-.04em}.hero-panel p{color:var(--muted);max-width:620px}
.hero-orb{position:absolute;width:230px;height:230px;border-radius:50%;right:-45px;top:-80px;background:radial-gradient(circle at 35% 35%,#fff,#e7e9ed 60%,#d8dbe0)}
.construction-badge{font-size:60px;z-index:1;margin-right:40px}
.pill{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.05em;padding:7px 10px;border-radius:999px;background:#f0f1f3}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:14px}
.metric-card{padding:22px;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.74);backdrop-filter:var(--blur)}
.metric-card span,.metric-card small{display:block;color:var(--muted);font-size:12px}.metric-card strong{display:block;font-size:28px;margin:8px 0}
.ghosted{opacity:.72}
.toolbar,.section-title{display:flex;align-items:center;justify-content:space-between;gap:20px}.toolbar p{color:var(--muted);font-size:13px}
.filter-bar{display:grid;grid-template-columns:1fr 180px auto;gap:10px;margin:18px 0}
.input{width:100%;border:1px solid var(--line);background:rgba(255,255,255,.8);border-radius:14px;padding:12px 14px;outline:none}
.data-card{overflow:hidden;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.78);backdrop-filter:var(--blur)}
.data-row{display:grid;grid-template-columns:2fr 1fr 1.4fr .8fr .8fr 40px;align-items:center;gap:12px;padding:16px 18px;border-top:1px solid var(--line);font-size:13px}
.data-row.header{border-top:0;color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase}
.data-row span:first-child small{display:block;color:var(--muted);margin-top:4px}
.status{display:inline-block;padding:6px 9px;border-radius:999px;font-size:11px;font-style:normal;font-weight:800}
.status.green{background:#e8f6ef;color:#16764c}.status.yellow{background:#fff4d9;color:#986a00}
.checkin-shell{max-width:980px;margin:0 auto;padding:34px 22px}
.checkin-header{display:flex;justify-content:space-between;align-items:end;margin-bottom:20px}
.live-dot{font-size:11px;font-weight:800;padding:8px 10px;border-radius:999px;background:#e8f6ef;color:#16764c}
.scanner-panel{
  min-height:360px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;
  border:1px solid var(--line);border-radius:32px;background:rgba(255,255,255,.78);box-shadow:var(--shadow);backdrop-filter:var(--blur);padding:30px
}
.scan-icon{font-size:52px}.scanner-panel h2{font-size:30px;margin:15px 0 8px}.scanner-panel p{color:var(--muted)}
.scanner-input{position:absolute;left:-9999px}
.scan-result{margin-top:20px;width:min(520px,100%);padding:16px;border-radius:16px;border:1px solid var(--line)}
.scan-result strong,.scan-result span{display:block}.scan-result span{margin-top:5px;font-size:12px}
.scan-result.muted{color:var(--muted);background:#f7f8fa}.scan-result.success{background:#eaf7f0;color:#16764c}
.recent-panel{margin-top:14px;padding:22px;border:1px solid var(--line);border-radius:24px;background:rgba(255,255,255,.72)}
.section-title span{font-size:11px;color:var(--muted)}
.recent-item{display:grid;grid-template-columns:120px 1fr auto;gap:12px;padding:14px 0;border-top:1px solid var(--line);align-items:center}
.recent-item span{font-size:13px;color:var(--muted)}
.mini-shell{max-width:680px;margin:0 auto;padding:32px 20px 60px}
.mini-header p{color:var(--muted)}.mini-tabs{display:flex;gap:8px;margin:24px 0 16px}
.mini-tabs button{flex:1;border:1px solid var(--line);border-radius:14px;padding:12px;background:rgba(255,255,255,.7)}
.mini-tabs .active{background:#15171a;color:white}
.event-list{display:flex;flex-direction:column;gap:12px}
.event-card{display:grid;grid-template-columns:78px 1fr 46px;gap:16px;align-items:center;padding:18px;border:1px solid var(--line);border-radius:24px;background:rgba(255,255,255,.78);backdrop-filter:var(--blur);box-shadow:0 12px 35px rgba(18,24,40,.05)}
.event-date{height:78px;border-radius:20px;background:#f0f1f3;display:grid;place-items:center;align-content:center}
.event-date strong{font-size:28px}.event-date span{font-size:10px;letter-spacing:.12em;color:var(--muted)}
.event-info h2{font-size:18px;margin:8px 0 6px}.event-info p,.event-info small{color:var(--muted);font-size:13px}.event-info small{font-size:11px}
.round-arrow{width:42px;height:42px;padding:0;border-radius:50%}
@media(max-width:900px){
  .admin-shell{grid-template-columns:82px 1fr;padding:10px;gap:10px}.sidebar{top:10px;height:calc(100vh - 20px);padding:14px 10px}
  .brand>div:not(.brand-mark),.nav-item b,.sidebar-footer>div:not(.avatar){display:none}.brand{justify-content:center}.nav-item{justify-content:center}
  .metric-grid{grid-template-columns:1fr 1fr}.data-row{grid-template-columns:1.7fr 1fr 1fr}.data-row span:nth-child(3),.data-row span:nth-child(4),.data-row span:nth-child(6){display:none}
}
@media(max-width:620px){
  .admin-shell{display:block;padding:0}.sidebar{display:none}.admin-main{padding:14px}
  .topbar{align-items:center}.top-actions .icon-btn{display:none}.metric-grid{grid-template-columns:1fr 1fr}
  .hero-panel{padding:24px;min-height:220px}.construction-badge{font-size:42px;margin-right:0}.hero-panel h2{font-size:24px}
  .filter-bar{grid-template-columns:1fr}.data-row{grid-template-columns:1.6fr 1fr}.data-row span:nth-child(n+3){display:none}
  .event-card{grid-template-columns:64px 1fr 42px;padding:14px}.event-date{height:64px}.mini-header h1{font-size:26px}
}

a{color:inherit}
.link-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.logout-link{margin-left:auto;font-size:11px;color:var(--muted);text-decoration:none}
.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}
.login-card{width:min(440px,100%);padding:30px;border:1px solid var(--line);border-radius:32px;background:rgba(255,255,255,.8);backdrop-filter:var(--blur);box-shadow:var(--shadow)}
.login-brand{padding:0 0 28px}.login-copy p{color:var(--muted)}
.form-stack,.form-card{display:flex;flex-direction:column;gap:16px}
.form-card,.section-card{padding:24px;border:1px solid var(--line);border-radius:24px;background:rgba(255,255,255,.78);backdrop-filter:var(--blur)}
.form-card label,.form-stack label{display:flex;flex-direction:column;gap:8px;font-size:13px;font-weight:700}
.full{width:100%}
.flash{margin-bottom:14px;padding:12px 14px;border-radius:14px;font-size:13px}
.flash.success{background:#e8f6ef;color:#16764c}.flash.error{background:#fdecec;color:#a73a3a}
.form-grid.two{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.textarea{min-height:110px;resize:vertical}
.date-wrap{display:flex;width:100%;min-width:0;border:1px solid var(--line);background:rgba(255,255,255,.8);border-radius:14px;padding:12px 14px}
.date-wrap input{display:block;width:100%;min-width:0;border:0;background:transparent;padding:0;outline:none}
.check-row{flex-direction:row!important;align-items:center;gap:10px!important;font-weight:500!important}
.form-actions,.detail-actions{display:flex;justify-content:flex-end;gap:10px}
.danger-btn{border:1px solid #f0caca;background:#fff0f0;color:#b23c3c;border-radius:14px;min-height:42px;padding:0 15px}
.row-link{text-decoration:none}.row-link:hover{background:rgba(17,24,39,.025)}
.status.gray{background:#eef0f2;color:#666c75}
.empty-state{padding:38px;text-align:center;color:var(--muted);font-size:13px}
.detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:16px}
.detail-head h2{font-size:28px;margin:12px 0 7px}.detail-head p{color:var(--muted)}
.info-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:14px}
.small-value{font-size:17px!important}
.toolbar.compact{margin-bottom:16px}
.session-form{display:grid;grid-template-columns:.8fr 1fr 1fr .8fr .8fr auto;gap:10px;align-items:center;padding-bottom:18px;border-bottom:1px solid var(--line)}
.session-row{display:grid;grid-template-columns:1fr 150px auto;gap:14px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}
.session-row:last-child{border-bottom:0}.session-row small{display:block;color:var(--muted);margin-top:5px}
.text-danger{border:0;background:transparent;color:#b23c3c}
@media(max-width:760px){
  .form-grid.two,.info-grid{grid-template-columns:1fr}
  .session-form{grid-template-columns:1fr 1fr}
  .session-form .input:first-child,.session-form button{grid-column:1/-1}
  .detail-head{flex-direction:column}
}

.mini-form{margin-top:20px}
.result-card{padding:30px;border:1px solid var(--line);border-radius:30px;background:rgba(255,255,255,.8);backdrop-filter:var(--blur);box-shadow:var(--shadow);text-align:center}
.result-icon{width:58px;height:58px;margin:0 auto 18px;border-radius:20px;display:grid;place-items:center;background:#e8f6ef;color:#16764c;font-size:28px;font-weight:800}
.muted-icon{background:#f0f1f3;color:#666}
.summary-box{display:flex;flex-direction:column;gap:6px;text-align:left;margin:22px 0;padding:16px;border-radius:18px;background:#f5f6f8}
.summary-box span{font-size:13px;color:var(--muted)}
.filter-inline{display:flex;gap:10px}
.participant-list{display:flex;flex-direction:column;gap:12px}
.participant-card{padding:20px;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.78);backdrop-filter:var(--blur)}
.participant-main{display:grid;grid-template-columns:1fr 1.4fr;gap:18px}
.participant-main h3{margin:10px 0 6px}.participant-main p,.participant-event span,.participant-event small{display:block;color:var(--muted);font-size:13px}
.participant-event b{display:block;margin-bottom:6px}
.participant-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line)}
.cancel-form{display:flex;gap:8px}
.status.red{background:#fdecec;color:#a73a3a}
@media(max-width:700px){
  .participant-main{grid-template-columns:1fr}
  .participant-actions,.cancel-form{flex-direction:column}
  .participant-actions form,.participant-actions button{width:100%}
}

.scan-result.error{background:#fdecec;color:#a73a3a}
.qr-popup-shell{min-height:100vh;display:grid;place-items:center;padding:24px}
.qr-popup-card{width:min(480px,100%);padding:28px;border:1px solid var(--line);border-radius:30px;background:rgba(255,255,255,.82);backdrop-filter:var(--blur);box-shadow:var(--shadow);text-align:center}
.qr-placeholder{width:240px;height:240px;margin:22px auto;border:1px dashed var(--line);border-radius:24px;display:grid;place-items:center;background:#fff;color:var(--muted)}
.token-box{display:block;word-break:break-all;padding:12px;border-radius:12px;background:#f1f2f4;font-size:11px}
.muted-text{color:var(--muted);font-size:12px}

.mini-tabs a{
  flex:1;border:1px solid var(--line);border-radius:14px;padding:12px;
  background:rgba(255,255,255,.7);text-align:center;text-decoration:none
}
.mini-tabs a.active{background:#15171a;color:white}
.telegram-lock{width:64px;height:64px;margin:0 auto 18px;border-radius:22px;background:#15171a;color:#fff;display:grid;place-items:center;font-size:24px;font-weight:800}
.telegram-only-box{margin-top:20px;padding:16px;border-radius:18px;background:#f2f3f5;text-align:left}
.telegram-only-box b,.telegram-only-box span{display:block}
.telegram-only-box span{font-size:13px;color:var(--muted);margin-top:6px}
.my-registration-list{display:flex;flex-direction:column;gap:12px}
.my-registration-card{padding:18px;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.78);backdrop-filter:var(--blur)}
.my-registration-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.my-registration-head h2{font-size:18px;margin:0 0 6px}
.my-registration-head p{font-size:13px;color:var(--muted);margin:0}
.my-registration-info{display:flex;flex-direction:column;gap:5px;margin:14px 0;font-size:13px;color:var(--muted)}
.cancel-notice{padding:14px;border-radius:16px;background:#fdecec;color:#a73a3a}
.cancel-notice b,.cancel-notice span{display:block}
.cancel-notice span{font-size:12px;margin-top:5px}
.status.blue{background:#eaf0ff;color:#315fab}
.status.purple{background:#f0eafa;color:#7145a3}
.actual-qr-wrap{width:min(300px,100%);margin:22px auto;padding:14px;border-radius:26px;background:#fff;border:1px solid var(--line)}
.actual-qr{display:block;width:100%;height:auto;border-radius:14px}

/* v0.7 UI stabilization */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body,button,input,select,textarea,a,span,p,b,strong,small,label,td,th{writing-mode:horizontal-tb!important;text-orientation:mixed!important}
body{overflow-x:hidden;word-break:keep-all;overflow-wrap:break-word}
.admin-main,.page-content,.toolbar,.data-card,.data-row,.participant-card,.account-card,.event-card,.form-card,.mini-shell,.mini-form,.event-info{min-width:0}
h1,h2,h3,.brand-title,.nav-item b,.event-info h2,.account-name-row h3{word-break:keep-all;overflow-wrap:normal}
p,small,.muted-text{word-break:keep-all}
.admin-clock-wrap{display:flex;align-items:center;gap:10px;min-height:42px;padding:0 15px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.78);backdrop-filter:var(--blur);white-space:nowrap}
.clock-dot{width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:#22a06b;box-shadow:0 0 0 4px rgba(34,160,107,.10)}
.admin-clock{font-size:13px;font-weight:700;letter-spacing:.01em;color:#35383e;font-variant-numeric:tabular-nums;white-space:nowrap}
.select-shell{position:relative;display:block;width:100%;min-width:0}
.pretty-select{appearance:none;-webkit-appearance:none;width:100%;min-height:48px;padding:12px 44px 12px 14px!important;border:1px solid rgba(17,24,39,.10);border-radius:16px;background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,249,251,.96));box-shadow:inset 0 1px 0 rgba(255,255,255,.85),0 5px 18px rgba(16,24,40,.035);color:#202328;font-size:15px;font-weight:600;line-height:1.35;cursor:pointer}
.pretty-select:focus{outline:none;border-color:rgba(17,24,39,.30);box-shadow:0 0 0 4px rgba(17,24,39,.06),inset 0 1px 0 rgba(255,255,255,.9)}
.select-chevron{position:absolute;right:15px;top:50%;transform:translateY(-54%);pointer-events:none;font-size:18px;line-height:1;color:#747982}
.mini-select-shell .pretty-select{min-height:54px;border-radius:18px;background:rgba(255,255,255,.94);font-size:16px}
.input{min-width:0;max-width:100%;line-height:1.4;writing-mode:horizontal-tb!important}.event-card{overflow:hidden}.participant-card{position:relative}
.participant-select{display:inline-flex;align-items:center;gap:7px;margin-bottom:12px;font-size:12px;color:var(--muted)}.participant-select input{width:17px;height:17px;accent-color:#15171a}
.bulk-action-bar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:12px;padding:15px 17px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.76);backdrop-filter:var(--blur)}.bulk-action-bar b,.bulk-action-bar span{display:block}.bulk-action-bar span{margin-top:4px;color:var(--muted);font-size:12px}
.account-create-panel{margin-bottom:14px}.account-create-grid{display:grid;grid-template-columns:1fr 1fr 1fr 1fr auto;gap:10px;align-items:end}.account-create-grid label{min-width:0}.account-create-grid label>span:first-child{display:block;margin-bottom:8px;font-size:12px;font-weight:700}.account-add-btn{white-space:nowrap}
.account-list{display:flex;flex-direction:column;gap:12px}.account-card{display:grid;grid-template-columns:minmax(230px,.8fr) minmax(0,1.6fr);gap:22px;padding:20px;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.78);backdrop-filter:var(--blur)}
.account-identity{display:flex;align-items:center;gap:13px;min-width:0}.account-avatar{width:48px;height:48px;flex:0 0 48px;border-radius:16px;display:grid;place-items:center;background:#eef0f3;font-size:13px;font-weight:800}.account-copy{min-width:0}.account-name-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.account-name-row h3{margin:0}.account-copy p,.account-copy small{display:block;margin:4px 0 0;color:var(--muted);font-size:12px}
.account-edit-form{display:grid;grid-template-columns:1.2fr 1fr auto auto;gap:8px;align-items:center}.password-change-form{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:8px}.account-switch{display:flex;align-items:center;gap:6px;white-space:nowrap;font-size:12px}.account-switch input{width:17px;height:17px;accent-color:#15171a}
@media(max-width:1000px){.account-create-grid{grid-template-columns:1fr 1fr}.account-add-btn{grid-column:1/-1}.account-card{grid-template-columns:1fr}}
@media(max-width:760px){.admin-clock-wrap{padding:0 11px}.admin-clock{font-size:12px}.account-create-grid,.account-edit-form,.password-change-form{grid-template-columns:1fr}.bulk-action-bar{align-items:stretch;flex-direction:column}.bulk-action-bar button{width:100%}.mini-shell{width:100%;max-width:100%;padding-left:16px;padding-right:16px}}
@media(max-width:420px){.topbar{gap:12px}.topbar h1{font-size:22px}.admin-clock-wrap{min-height:38px}.admin-clock{font-size:11px}.event-card{grid-template-columns:58px minmax(0,1fr) 38px;gap:11px}.event-date{width:58px;height:58px}.event-info h2{font-size:16px}}

.checkin-user{margin:6px 0 0;color:var(--muted);font-size:12px}
.checkin-head-actions{display:flex;gap:8px;align-items:center}
.checkin-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.checkin-location-wrap{width:min(420px,100%);margin:14px auto 0;text-align:left}
.checkin-location-wrap span{display:block;margin-bottom:7px;font-size:12px;font-weight:700;color:var(--muted)}
.manual-checkin-panel{margin-top:14px;padding:22px;border:1px solid var(--line);border-radius:24px;background:rgba(255,255,255,.74);backdrop-filter:var(--blur)}
.manual-search-row{display:grid;grid-template-columns:1fr auto;gap:8px;margin-top:14px}
.manual-search-result{margin-top:12px}
.manual-result-item{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:14px 0;border-top:1px solid var(--line)}
.manual-result-item:first-child{border-top:0}
.manual-result-item b,.manual-result-item span,.manual-result-item small{display:block}
.manual-result-item span,.manual-result-item small{margin-top:4px;color:var(--muted);font-size:12px}
.advanced-filter-bar{display:grid;grid-template-columns:minmax(180px,1.5fr) minmax(180px,1fr) minmax(150px,.8fr) auto;gap:10px;margin:16px 0}
.participant-main small{display:block;margin-top:5px;color:var(--muted);font-size:12px}
.log-list{display:flex;flex-direction:column;gap:8px}
.log-item{display:grid;grid-template-columns:170px 1fr 130px;gap:16px;align-items:start;padding:16px 18px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.76)}
.log-time,.log-target{font-size:12px;color:var(--muted)}
.log-body b,.log-body span,.log-body small{display:block}
.log-body span,.log-body small{margin-top:4px;font-size:12px;color:var(--muted)}
@media(max-width:800px){
  .checkin-metrics{grid-template-columns:1fr 1fr}
  .advanced-filter-bar{grid-template-columns:1fr}
  .log-item{grid-template-columns:1fr}
  .manual-result-item{grid-template-columns:1fr}
  .manual-result-item button{width:100%}
}

.account-toolbar{align-items:center}
.account-search-form{display:grid;grid-template-columns:minmax(220px,360px) auto;gap:8px}
.account-table-row{display:grid;grid-template-columns:70px 1.3fr 1fr 1.4fr 1.3fr 150px;gap:12px;align-items:center;padding:14px 16px;border-top:1px solid var(--line);font-size:13px}
.account-table-row.header{border-top:0;color:var(--muted);font-size:11px;font-weight:800}
.account-table-row small,.logs-row small,.message-row small{display:block;margin-top:4px;color:var(--muted);font-size:11px}
.table-manage{display:flex;gap:6px}
.small-btn{min-height:34px;padding:0 10px;font-size:12px}
.modal-backdrop{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:rgba(15,18,24,.28);backdrop-filter:blur(12px)}
.modal-backdrop[hidden]{display:none}
.modal-card{width:min(520px,100%);max-height:90vh;overflow:auto;padding:24px;border:1px solid rgba(255,255,255,.65);border-radius:28px;background:rgba(255,255,255,.94);box-shadow:0 30px 90px rgba(15,18,24,.18)}
.compact-modal{width:min(420px,100%)}
.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:18px}
.modal-head h3{margin:4px 0 0}
.modal-close{width:38px;height:38px;border:0;border-radius:12px;background:#f0f1f3;font-size:20px}
.password-reset-box{margin-top:14px;padding:14px;border-radius:16px;background:#f7f8fa}
.logs-row{display:grid;grid-template-columns: 150px minmax(280px,1fr) 140px 120px 150px;gap:14px;align-items:center;padding:14px 16px;border-top:1px solid var(--line);font-size:13px}
.logs-row.header{border-top:0;color:var(--muted);font-size:11px;font-weight:800}
.event-admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.event-admin-card{position:relative;display:grid;grid-template-columns:1fr auto 36px;gap:18px;align-items:center;padding:22px;border:1px solid var(--line);border-radius:24px;background:rgba(255,255,255,.78);backdrop-filter:var(--blur);text-decoration:none}
.event-admin-card h3{margin:7px 0 6px}
.event-admin-card p{margin:0;color:var(--muted);font-size:13px}
.event-admin-stats{display:flex;gap:14px}
.event-admin-stats span{text-align:center}
.event-admin-stats b,.event-admin-stats small{display:block}
.event-admin-stats b{font-size:18px}
.event-admin-stats small{margin-top:3px;color:var(--muted);font-size:10px}
.event-admin-arrow{font-size:22px}
.message-ready-panel{min-height:190px;margin-bottom:14px}
.message-row{display:grid;grid-template-columns:170px 1.5fr 1.2fr 1fr 1fr;gap:12px;align-items:center;padding:14px 16px;border-top:1px solid var(--line);font-size:13px}
.message-row.header{border-top:0;color:var(--muted);font-size:11px;font-weight:800}
@media(max-width:900px){
  .account-table{overflow-x:auto}
  .account-table-row{min-width:880px}
  .logs-table{overflow-x:auto}.logs-row{min-width:760px}
  .event-admin-grid{grid-template-columns:1fr}
  .message-table{overflow-x:auto}.message-row{min-width:760px}
}
@media(max-width:620px){
  .account-search-form{grid-template-columns:1fr}
  .account-toolbar{align-items:stretch;flex-direction:column}
  .account-toolbar>.primary-btn{width:100%}
  .event-admin-card{grid-template-columns:1fr 34px}
  .event-admin-stats{grid-column:1/-1;justify-content:flex-start}
}
.event-modal-card{width:min(760px,100%)}.participant-filter-bar{display:grid;grid-template-columns:minmax(150px,220px) minmax(220px,1fr) 150px auto auto;gap:8px;align-items:center;margin:14px 0}.compact-table-wrap{overflow:auto;border:1px solid var(--line);border-radius:20px;background:rgba(255,255,255,.78)}.participant-compact-table{width:100%;min-width:1120px;border-collapse:collapse;font-size:12px}.participant-compact-table th{padding:10px;text-align:left;color:var(--muted);font-size:10px;background:#f7f8fa;white-space:nowrap}.participant-compact-table td{padding:9px 10px;border-top:1px solid var(--line);white-space:nowrap;vertical-align:middle}.participant-compact-table td small{display:block;margin-top:3px;color:var(--muted);font-size:10px}.participant-compact-table .status{font-size:10px;padding:5px 7px}.row-actions{display:flex;gap:5px}.modal-help{padding:10px 12px;border-radius:12px;background:#f7f8fa;color:var(--muted);font-size:12px}.mini-cancel-notice{margin-top:10px;padding:11px;border:1px solid #ffd4d1;border-radius:14px;background:#fff1f0}.mini-cancel-notice b,.mini-cancel-notice span,.mini-cancel-notice small{display:block}.mini-cancel-notice span,.mini-cancel-notice small{margin-top:4px;font-size:12px}@media(max-width:900px){.participant-filter-bar{grid-template-columns:1fr 1fr}.participant-filter-bar .select-shell:first-of-type{grid-column:1/-1}}

.single-cancel-notice{
  margin-top:14px;
  padding:15px;
  border:1px solid #ffd0cc;
  border-radius:17px;
  background:#fff0ef;
  color:#a53b35;
}
.single-cancel-notice b,
.single-cancel-notice span,
.single-cancel-notice small{
  display:block;
}
.single-cancel-notice span{margin-top:7px;font-size:13px}
.single-cancel-notice small{margin-top:6px;color:#b34b45;font-size:12px}

.ticket-top-nav{
  margin-bottom:12px;
}
.ticket-back-btn{
  display:inline-flex;
  align-items:center;
  min-height:42px;
  padding:0 14px;
  border:1px solid var(--line);
  border-radius:14px;
  background:rgba(255,255,255,.82);
  color:var(--text);
  text-decoration:none;
  font-size:13px;
  font-weight:700;
}
.ticket-back-btn:active{
  transform:scale(.98);
}
.message-summary-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  margin-bottom:14px;
}
.message-row.v11{
  grid-template-columns:160px minmax(180px,1.4fr) minmax(130px,1fr) 130px 120px 110px;
}
@media(max-width:800px){
  .message-summary-grid{grid-template-columns:1fr}
  .message-row.v11{min-width:900px}
}

body.popup-open{overflow:hidden}

.global-popup-backdrop{
  position:fixed;
  inset:0;
  z-index:3000;
  display:grid;
  place-items:center;
  padding:22px;
  background:rgba(16,18,24,.30);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
}
.global-popup-backdrop[hidden]{display:none}

.global-popup-card{
  width:min(430px,100%);
  padding:26px;
  border:1px solid rgba(255,255,255,.72);
  border-radius:28px;
  background:rgba(255,255,255,.96);
  box-shadow:0 34px 100px rgba(15,18,24,.20);
  text-align:center;
}

.global-popup-icon{
  width:58px;
  height:58px;
  margin:0 auto 17px;
  display:grid;
  place-items:center;
  border-radius:19px;
  background:#edf8f2;
  color:#16764c;
  font-size:25px;
  font-weight:900;
}

.global-popup-card.error .global-popup-icon{
  background:#fff0ef;
  color:#b6423c;
}

.global-popup-copy h3{
  margin:6px 0 8px;
  font-size:22px;
  letter-spacing:-.03em;
}
.global-popup-copy p{
  margin:0 0 20px;
  color:var(--muted);
  font-size:14px;
  line-height:1.6;
}

.message-stats-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:12px;
  margin-bottom:14px;
}

.message-filter-bar{
  display:grid;
  grid-template-columns:180px 180px 160px auto;
  gap:8px;
  align-items:center;
  margin-bottom:14px;
}

.message-management-table{
  width:100%;
  min-width:1050px;
  border-collapse:collapse;
  font-size:12px;
}
.message-management-table th{
  padding:11px 10px;
  background:#f7f8fa;
  color:var(--muted);
  text-align:left;
  font-size:10px;
  white-space:nowrap;
}
.message-management-table td{
  padding:10px;
  border-top:1px solid var(--line);
  white-space:nowrap;
  vertical-align:middle;
}
.message-management-table td small{
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-size:10px;
}
.message-error-text{
  padding:13px;
  border-radius:14px;
  background:#f7f8fa;
  color:#a13c37;
  font-size:12px;
  line-height:1.6;
  word-break:break-word;
  white-space:normal;
}

@media(max-width:900px){
  .message-stats-grid{grid-template-columns:1fr 1fr}
  .message-filter-bar{grid-template-columns:1fr 1fr}
}
@media(max-width:620px){
  .message-stats-grid{grid-template-columns:1fr 1fr}
  .message-filter-bar{grid-template-columns:1fr}
}

/* =========================================================
   v1.3 Modal layer fix
   ========================================================= */
body.modal-open{
  overflow:hidden !important;
}

.modal-backdrop{
  position:fixed !important;
  inset:0 !important;
  z-index:99999 !important;
  width:100vw !important;
  height:100vh !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  padding:24px !important;
  margin:0 !important;
  background:rgba(20,23,30,.38) !important;
  backdrop-filter:blur(16px) !important;
  -webkit-backdrop-filter:blur(16px) !important;
  overflow:auto !important;
}

.modal-backdrop[hidden]{
  display:none !important;
}

.modal-card{
  position:relative !important;
  width:min(540px,100%) !important;
  max-height:calc(100vh - 48px) !important;
  margin:auto !important;
  overflow:auto !important;
  border:1px solid rgba(255,255,255,.82) !important;
  border-radius:30px !important;
  background:rgba(255,255,255,.98) !important;
  box-shadow:
    0 35px 110px rgba(8,12,20,.24),
    0 5px 20px rgba(8,12,20,.08) !important;
  transform:none !important;
  filter:none !important;
}

.account-modal-card{
  width:min(560px,100%) !important;
}

.account-modal-summary{
  display:flex;
  align-items:center;
  gap:13px;
  margin-bottom:18px;
  padding:14px;
  border:1px solid var(--line);
  border-radius:18px;
  background:#f7f8fa;
}

.account-modal-summary b,
.account-modal-summary span,
.account-modal-summary small{
  display:block;
}

.account-modal-summary span,
.account-modal-summary small{
  margin-top:4px;
  color:var(--muted);
  font-size:12px;
}

.password-reset-head{
  margin-bottom:10px;
}

.password-reset-head b,
.password-reset-head span{
  display:block;
}

.password-reset-head span{
  margin-top:4px;
  color:var(--muted);
  font-size:12px;
}

.delete-confirm-box{
  padding:15px;
  border-radius:17px;
  background:#f7f8fa;
  text-align:center;
}

.delete-confirm-box b,
.delete-confirm-box span{
  display:block;
}

.delete-confirm-box span{
  margin-top:4px;
  color:var(--muted);
  font-size:12px;
}

.delete-confirm-box p{
  margin:14px 0 0;
}

.split-actions{
  justify-content:space-between;
}

.message-toolbar-actions{
  display:flex;
  gap:8px;
}

.message-filter-bar{
  grid-template-columns:
    minmax(150px,180px)
    minmax(150px,180px)
    minmax(140px,160px)
    auto
    auto;
}

.message-management-table.v13{
  min-width:1120px;
}

.message-management-table.v13 th:first-child,
.message-management-table.v13 td:first-child{
  width:36px;
  text-align:center;
}

.message-check,
#selectAllMessages{
  width:16px;
  height:16px;
  accent-color:#15171a;
}

@media(max-width:760px){
  .modal-backdrop{
    padding:14px !important;
    align-items:flex-end !important;
  }

  .modal-card{
    width:100% !important;
    max-height:88vh !important;
    border-radius:28px 28px 18px 18px !important;
  }

  .message-toolbar-actions{
    width:100%;
  }

  .message-toolbar-actions form,
  .message-toolbar-actions button{
    width:100%;
  }

  .message-filter-bar{
    grid-template-columns:1fr;
  }
}

.message-stats-grid.kakao-only{
  grid-template-columns:repeat(5,minmax(0,1fr));
}

.kakao-config-card{
  margin-bottom:14px;
}

.kakao-config-grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:9px;
  margin-top:14px;
}

.kakao-config-item{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  padding:11px 12px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#fafbfc;
  font-size:12px;
}

.config-ok{
  color:#16764c;
  white-space:nowrap;
}

.config-missing{
  color:#b5473f;
  white-space:nowrap;
}

.kakao-config-notice{
  margin-top:12px;
  padding:12px 14px;
  border-radius:14px;
  background:#fff8e8;
  color:#82620f;
  font-size:12px;
  line-height:1.55;
}

.kakao-message-filter{
  display:grid;
  grid-template-columns:minmax(150px,180px) auto auto auto auto;
  gap:8px;
  align-items:center;
  margin-bottom:14px;
}

.message-management-table.kakao-table{
  min-width:960px;
}

.message-management-table.kakao-table th:first-child,
.message-management-table.kakao-table td:first-child{
  width:38px;
  text-align:center;
}

.kakao-check,
#selectAllKakao{
  width:16px;
  height:16px;
  accent-color:#15171a;
}

@media(max-width:1000px){
  .message-stats-grid.kakao-only{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .kakao-config-grid{
    grid-template-columns:1fr 1fr;
  }

  .kakao-message-filter{
    grid-template-columns:1fr 1fr;
  }
}

@media(max-width:620px){
  .message-stats-grid.kakao-only{
    grid-template-columns:1fr 1fr;
  }

  .kakao-config-grid{
    grid-template-columns:1fr;
  }

  .kakao-message-filter{
    grid-template-columns:1fr;
  }
}

/* v1.4.1 - Telegram Mini App direct browser access */
.mini-access-denied-shell{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:24px;
  background:#f5f7fb;
}

.mini-access-denied-card{
  width:min(680px,100%);
  padding:64px 28px;
  border:1px solid var(--line);
  border-radius:32px;
  background:#fff;
  box-shadow:0 24px 70px rgba(17,24,39,.07);
  text-align:center;
}

.mini-access-denied-card h1{
  margin:0;
  font-size:clamp(30px,4vw,46px);
  font-weight:800;
  letter-spacing:-.04em;
  color:#182033;
}

.mini-access-denied-card p{
  margin:20px 0 0;
  font-size:clamp(18px,2.2vw,26px);
  font-weight:500;
  color:#6f7890;
  word-break:keep-all;
}

@media(max-width:600px){
  .mini-access-denied-shell{padding:18px}
  .mini-access-denied-card{padding:52px 22px;border-radius:26px}
}

/* =========================================================
   v1.4.2 - Event scoped check-in
   ========================================================= */

.checkin-event-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:14px;
}

.checkin-event-card{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto 34px;
  gap:18px;
  align-items:center;
  padding:22px;
  border:1px solid var(--line);
  border-radius:24px;
  background:rgba(255,255,255,.82);
  box-shadow:0 14px 42px rgba(16,24,40,.045);
  text-decoration:none;
  color:inherit;
}

.checkin-event-card:hover{
  transform:translateY(-1px);
  box-shadow:0 18px 48px rgba(16,24,40,.07);
}

.checkin-event-copy h2{
  margin:7px 0 6px;
  font-size:20px;
}

.checkin-event-copy p{
  margin:0;
  color:var(--muted);
  font-size:13px;
}

.checkin-event-stats{
  display:flex;
  gap:16px;
}

.checkin-event-stats span{
  min-width:58px;
  text-align:center;
}

.checkin-event-stats b,
.checkin-event-stats small{
  display:block;
}

.checkin-event-stats b{
  font-size:19px;
}

.checkin-event-stats small{
  margin-top:3px;
  color:var(--muted);
  font-size:10px;
}

.checkin-event-arrow{
  font-size:22px;
}

.checkin-back-link{
  display:inline-flex;
  margin-bottom:13px;
  color:var(--muted);
  text-decoration:none;
  font-size:12px;
  font-weight:700;
}

.checkin-event-meta{
  margin:7px 0 0;
  color:var(--muted);
  font-size:13px;
}

.checkin-metrics.three{
  grid-template-columns:repeat(3,1fr);
}

.checkin-participant-panel{
  margin-top:14px;
  padding:22px;
  border:1px solid var(--line);
  border-radius:24px;
  background:rgba(255,255,255,.76);
  backdrop-filter:var(--blur);
}

.checkin-participant-table-wrap{
  margin-top:14px;
  overflow:auto;
  border:1px solid var(--line);
  border-radius:18px;
}

.checkin-participant-table{
  width:100%;
  min-width:820px;
  border-collapse:collapse;
  background:rgba(255,255,255,.88);
  font-size:12px;
}

.checkin-participant-table th{
  padding:10px 11px;
  background:#f7f8fa;
  color:var(--muted);
  text-align:left;
  font-size:10px;
  white-space:nowrap;
}

.checkin-participant-table td{
  padding:10px 11px;
  border-top:1px solid var(--line);
  vertical-align:middle;
  white-space:nowrap;
}

.checkin-participant-table td small{
  display:block;
  margin-top:3px;
  color:var(--muted);
  font-size:10px;
}

@media(max-width:900px){
  .checkin-event-grid{
    grid-template-columns:1fr;
  }
}

@media(max-width:620px){
  .checkin-event-card{
    grid-template-columns:1fr 30px;
  }

  .checkin-event-stats{
    grid-column:1/-1;
    justify-content:flex-start;
  }

  .checkin-metrics.three{
    grid-template-columns:1fr 1fr 1fr;
  }
}

/* v1.4.3 - expired event QR */
.ended-event-notice{
  margin-top:12px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:15px;
  background:#f5f6f8;
  color:var(--muted);
  font-size:12px;
  font-weight:600;
  text-align:center;
}

/* =========================================================
   v1.5 - Mini App navigation / expired QR
   ========================================================= */

.mini-page-nav{
  display:flex;
  align-items:center;
  margin-bottom:12px;
}

.mini-back-btn{
  display:inline-flex;
  align-items:center;
  min-height:42px;
  padding:0 14px;
  border:1px solid var(--line);
  border-radius:14px;
  background:rgba(255,255,255,.84);
  color:var(--text);
  text-decoration:none;
  font-size:13px;
  font-weight:700;
  box-shadow:0 6px 18px rgba(16,24,40,.035);
}

.mini-back-btn:active{
  transform:scale(.98);
}

.expired-ticket-card{
  text-align:center;
}

.expired-ticket-icon{
  width:58px;
  height:58px;
  margin:0 auto 17px;
  display:grid;
  place-items:center;
  border-radius:19px;
  background:#f1f2f4;
  color:#687080;
  font-size:26px;
  font-weight:900;
}

.expired-ticket-card h1{
  margin-top:9px;
  word-break:keep-all;
}

.expired-ticket-card > p{
  color:var(--muted);
  line-height:1.65;
  word-break:keep-all;
}

.expired-summary{
  margin:20px 0;
  text-align:left;
}

.ended-event-notice b,
.ended-event-notice span{
  display:block;
}

.ended-event-notice span{
  margin-top:4px;
  font-size:11px;
  font-weight:500;
}

/* =========================================================
   v2.1 - event_report shared admin accounts
   ========================================================= */
.account-sync-notice{
  margin-bottom:12px;
  padding:12px 14px;
  border:1px solid #dce8ff;
  border-radius:15px;
  background:#f4f8ff;
  color:#41608f;
  font-size:12px;
  line-height:1.55;
}

.account-sync-notice.error{
  border-color:#ffd6d2;
  background:#fff3f2;
  color:#a54842;
}

.external-readonly{
  display:inline-flex;
  align-items:center;
  min-height:31px;
  padding:0 10px;
  border-radius:10px;
  background:#f1f3f6;
  color:#707782;
  font-size:11px;
  font-weight:700;
  white-space:nowrap;
}

/* source column added */
.account-table-row{
  grid-template-columns:
    70px
    1.2fr
    .8fr
    1fr
    1.25fr
    1.2fr
    140px;
}

@media(max-width:900px){
  .account-table-row{
    min-width:1050px;
  }
}

/* v2.2 - profile/password */
.sidebar-user-actions{display:flex;align-items:center;gap:8px;margin-left:auto}
.profile-link-btn{padding:0;border:0;background:transparent;color:var(--muted);font:inherit;font-size:11px;font-weight:700;cursor:pointer;white-space:nowrap}
.profile-link-btn:hover{color:var(--text)}
.profile-modal-card{width:min(480px,100%)!important}
.profile-modal-summary{display:flex;align-items:center;gap:13px;margin-bottom:18px;padding:15px;border:1px solid var(--line);border-radius:18px;background:#f7f8fa}
.profile-modal-summary .avatar.large{width:48px;height:48px;flex:0 0 48px;display:grid;place-items:center;border-radius:15px;font-size:13px}
.profile-modal-summary b,.profile-modal-summary span,.profile-modal-summary small{display:block}
.profile-modal-summary span{margin-top:4px;font-size:12px}
.profile-modal-summary small{margin-top:3px;color:var(--muted);font-size:11px}
.profile-password-note{padding:11px 12px;border-radius:13px;background:#f7f8fa;color:var(--muted);font-size:11px;line-height:1.55}
.forced-password-shell{min-height:100vh;background:#f5f7fb}
.forced-password-backdrop{min-height:100vh;display:grid;place-items:center;padding:22px}
.forced-password-card{width:min(480px,100%);padding:30px;border:1px solid rgba(255,255,255,.82);border-radius:30px;background:rgba(255,255,255,.98);box-shadow:0 35px 100px rgba(16,24,40,.12)}
.forced-password-icon{width:58px;height:58px;margin-bottom:18px;display:grid;place-items:center;border-radius:19px;background:#f1f3f6;font-size:24px;font-weight:900}
.forced-password-card h1{margin:8px 0;font-size:25px;letter-spacing:-.035em}
.forced-password-card>p{margin:0 0 20px;color:var(--muted);font-size:13px;line-height:1.6}
.forced-password-form{margin-top:16px}
.forced-logout{display:block;margin-top:14px;color:var(--muted);text-align:center;text-decoration:none;font-size:12px}


/* =========================================================
   v2.3 - Sidebar user info interaction
   ========================================================= */
.sidebar-footer{
  gap:10px;
}

.sidebar-user-info{
  min-width:0;
  flex:1 1 auto;
  display:flex;
  align-items:center;
  gap:10px;
  padding:6px;
  border:0;
  border-radius:14px;
  background:transparent;
  color:inherit;
  text-align:left;
  cursor:pointer;
  transition:
    background .16s ease,
    transform .16s ease;
}

.sidebar-user-info:hover{
  background:rgba(17,24,39,.045);
}

.sidebar-user-info:active{
  transform:scale(.985);
}

.sidebar-user-copy{
  min-width:0;
}

.sidebar-user-copy strong,
.sidebar-user-copy small{
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.sidebar-user-copy strong{
  color:var(--text);
  font-size:12px;
  font-weight:800;
}

.sidebar-user-copy small{
  margin-top:2px;
  color:var(--muted);
  font-size:10px;
}

.sidebar-logout{
  flex:0 0 auto;
  white-space:nowrap;
}

.sidebar-user-actions,
.profile-link-btn{
  display:none !important;
}


/* =========================================================
   v2.4 - QR reader + mobile camera dual scanning
   ========================================================= */

.scan-mode-row{
  width:min(560px,100%);
  display:flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  margin-top:12px;
  flex-wrap:wrap;
}

.scan-mode-badge{
  min-height:42px;
  display:inline-flex;
  align-items:center;
  gap:7px;
  padding:0 14px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#f7f8fa;
  color:var(--muted);
  font-size:11px;
}

.scan-mode-badge b{
  color:var(--text);
}

.scan-mode-badge.active:before{
  content:"";
  width:7px;
  height:7px;
  border-radius:50%;
  background:var(--success);
  box-shadow:0 0 0 4px rgba(36,162,105,.10);
}

.camera-start-btn,
.camera-stop-btn{
  min-width:150px;
}

.camera-scanner-wrap{
  width:min(500px,100%);
  margin-top:18px;
  padding:10px;
  border:1px solid var(--line);
  border-radius:22px;
  background:#0f1115;
  overflow:hidden;
}

.camera-scanner-wrap[hidden]{
  display:none !important;
}

.camera-reader{
  width:100%;
  overflow:hidden;
  border-radius:16px;
  background:#08090b;
}

.camera-reader video{
  display:block !important;
  width:100% !important;
  max-height:440px;
  object-fit:cover;
  border-radius:16px;
}

.camera-reader img{
  display:none !important;
}

.camera-reader #qr-shaded-region{
  border-width:40px !important;
}

.camera-guide{
  padding:10px 8px 4px;
  color:#c7cad1;
  font-size:11px;
  line-height:1.45;
  text-align:center;
}

@media(max-width:620px){
  .scanner-panel{
    min-height:0;
    padding:24px 16px;
    border-radius:26px;
  }

  .scanner-panel .scan-icon{
    font-size:42px;
  }

  .scanner-panel h2{
    margin-top:10px;
    font-size:24px;
  }

  .scanner-panel p{
    max-width:310px;
    font-size:12px;
    line-height:1.55;
    word-break:keep-all;
  }

  .scan-mode-row{
    display:grid;
    grid-template-columns:1fr;
  }

  .scan-mode-badge,
  .camera-start-btn,
  .camera-stop-btn{
    width:100%;
    justify-content:center;
  }

  .camera-scanner-wrap{
    width:100%;
  }

  .scan-result{
    margin-top:14px;
  }
}


/* =========================================================
   v2.5 - Cross-platform mobile camera
   ========================================================= */

.camera-toolbar{
  min-height:38px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:0 4px 9px;
  color:#d5d8de;
  font-size:11px;
}

.camera-select{
  max-width:220px;
  min-height:32px;
  padding:0 30px 0 10px;
  border:1px solid rgba(255,255,255,.15);
  border-radius:10px;
  background:#1c1f25;
  color:#f5f6f7;
  font-size:11px;
}

.camera-video-stage{
  position:relative;
  width:100%;
  min-height:250px;
  display:grid;
  place-items:center;
  overflow:hidden;
  border-radius:17px;
  background:#050607;
}

.camera-video{
  width:100%;
  max-height:480px;
  display:block;
  object-fit:cover;
  background:#050607;
}

.camera-scan-frame{
  position:absolute;
  left:50%;
  top:50%;
  width:min(62vw,250px);
  height:min(62vw,250px);
  max-width:70%;
  max-height:70%;
  transform:translate(-50%,-50%);
  pointer-events:none;
}

.camera-scan-frame span{
  position:absolute;
  width:32px;
  height:32px;
  border-color:#fff;
  border-style:solid;
  filter:drop-shadow(0 2px 5px rgba(0,0,0,.28));
}

.camera-scan-frame span:nth-child(1){
  left:0;
  top:0;
  border-width:3px 0 0 3px;
  border-radius:8px 0 0 0;
}

.camera-scan-frame span:nth-child(2){
  right:0;
  top:0;
  border-width:3px 3px 0 0;
  border-radius:0 8px 0 0;
}

.camera-scan-frame span:nth-child(3){
  left:0;
  bottom:0;
  border-width:0 0 3px 3px;
  border-radius:0 0 0 8px;
}

.camera-scan-frame span:nth-child(4){
  right:0;
  bottom:0;
  border-width:0 3px 3px 0;
  border-radius:0 0 8px 0;
}

.camera-canvas{
  display:none !important;
}

.camera-fallback{
  width:min(520px,100%);
  margin-top:13px;
  padding:14px;
  border:1px solid var(--line);
  border-radius:16px;
  background:#f7f8fa;
}

.camera-fallback[hidden]{
  display:none !important;
}

.camera-fallback p{
  margin:0 0 10px;
  color:var(--muted);
  font-size:11px;
  line-height:1.55;
  word-break:keep-all;
}

.camera-photo-btn{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  text-decoration:none;
}

@media(max-width:620px){
  .camera-toolbar{
    padding:0 1px 8px;
  }

  .camera-select{
    max-width:185px;
  }

  .camera-video-stage{
    min-height:230px;
  }

  .camera-video{
    min-height:230px;
    max-height:62vh;
  }

  .camera-scanner-wrap{
    padding:8px;
  }
}


/* =========================================================
   v2.6 - Check-in result popup (7 seconds)
   ========================================================= */

.checkin-result-popup{
  position:fixed;
  z-index:9999;
  left:50%;
  top:24px;
  width:min(460px,calc(100% - 28px));
  transform:translate(-50%,-18px);
  opacity:0;
  pointer-events:none;
}

.checkin-result-popup[hidden]{
  display:none !important;
}

.checkin-result-popup.show{
  animation:checkinPopupIn .2s ease forwards;
}

.checkin-result-popup-card{
  position:relative;
  display:grid;
  grid-template-columns:46px minmax(0,1fr);
  gap:13px;
  align-items:center;
  overflow:hidden;
  padding:17px 44px 19px 17px;
  border:1px solid var(--line);
  border-radius:22px;
  background:rgba(255,255,255,.97);
  box-shadow:
    0 24px 70px rgba(16,24,40,.16),
    0 2px 10px rgba(16,24,40,.05);
  backdrop-filter:blur(20px) saturate(150%);
  pointer-events:auto;
}

.checkin-result-popup.success .checkin-result-popup-card{
  border-color:rgba(36,162,105,.22);
}

.checkin-result-popup.error .checkin-result-popup-card{
  border-color:rgba(217,87,87,.22);
}

.checkin-result-popup-icon{
  width:46px;
  height:46px;
  display:grid;
  place-items:center;
  border-radius:15px;
  font-size:21px;
  font-weight:900;
}

.checkin-result-popup.success .checkin-result-popup-icon{
  background:#e8f6ef;
  color:#16764c;
}

.checkin-result-popup.error .checkin-result-popup-icon{
  background:#fdeeee;
  color:#b33e3e;
}

.checkin-result-popup-copy{
  min-width:0;
}

.checkin-result-popup-copy strong{
  display:block;
  margin-top:3px;
  font-size:17px;
  letter-spacing:-.025em;
}

.checkin-result-popup-copy p{
  margin:4px 0 0;
  color:var(--muted);
  font-size:13px;
  line-height:1.45;
  word-break:keep-all;
}

.checkin-result-popup-close{
  position:absolute;
  right:11px;
  top:10px;
  width:30px;
  height:30px;
  display:grid;
  place-items:center;
  padding:0;
  border:0;
  border-radius:10px;
  background:transparent;
  color:#8c929c;
  font-size:20px;
}

.checkin-result-popup-close:hover{
  background:#f2f3f5;
  color:#30343a;
}

.checkin-result-popup-timer{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:3px;
  overflow:hidden;
  background:rgba(17,24,39,.05);
}

.checkin-result-popup-timer span{
  display:block;
  width:100%;
  height:100%;
  transform-origin:left center;
}

.checkin-result-popup.success .checkin-result-popup-timer span{
  background:var(--success);
}

.checkin-result-popup.error .checkin-result-popup-timer span{
  background:var(--danger);
}

@keyframes checkinPopupIn{
  from{
    opacity:0;
    transform:translate(-50%,-18px) scale(.98);
  }
  to{
    opacity:1;
    transform:translate(-50%,0) scale(1);
  }
}

@keyframes checkinPopupTimer{
  from{
    transform:scaleX(1);
  }
  to{
    transform:scaleX(0);
  }
}

@media(max-width:620px){
  .checkin-result-popup{
    top:12px;
    width:calc(100% - 20px);
  }

  .checkin-result-popup-card{
    grid-template-columns:42px minmax(0,1fr);
    gap:11px;
    padding:15px 40px 17px 14px;
    border-radius:19px;
  }

  .checkin-result-popup-icon{
    width:42px;
    height:42px;
    border-radius:13px;
  }

  .checkin-result-popup-copy strong{
    font-size:16px;
  }

  .checkin-result-popup-copy p{
    font-size:12px;
  }
}


/* =========================================================
   v2.7 - Check-in page compact layout
   ========================================================= */

.checkin-action-grid{
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:14px;
  align-items:stretch;
  margin-top:14px;
}

.checkin-action-column{
  min-width:0;
}

.checkin-action-grid .scanner-panel,
.checkin-action-grid .manual-checkin-panel{
  height:100%;
  margin-top:0;
}

.checkin-action-grid .scanner-panel{
  min-height:300px;
  padding:24px 20px;
  border-radius:24px;
  box-shadow:none;
}

.checkin-action-grid .scanner-panel .scan-icon{
  font-size:40px;
}

.checkin-action-grid .scanner-panel h2{
  margin:9px 0 7px;
  font-size:23px;
}

.checkin-action-grid .scanner-panel > p{
  max-width:390px;
  font-size:12px;
  line-height:1.55;
  word-break:keep-all;
}

.checkin-action-grid .scan-mode-row{
  margin-top:8px;
}

.checkin-action-grid .scan-result{
  margin-top:14px;
  padding:13px;
}

.checkin-action-grid .manual-checkin-panel{
  padding:22px;
  border:1px solid var(--line);
  border-radius:24px;
  background:rgba(255,255,255,.76);
  backdrop-filter:var(--blur);
}

.checkin-action-grid .manual-search-row{
  margin-top:18px;
}

.checkin-action-grid .manual-search-result{
  margin-top:12px;
  max-height:430px;
  overflow:auto;
}

.checkin-participant-panel{
  margin-top:14px;
}

.recent-panel{
  margin-top:14px;
}

@media(max-width:800px){
  .checkin-action-grid{
    grid-template-columns:1fr;
  }

  .checkin-action-grid .scanner-panel{
    min-height:0;
  }
}


/* =========================================================
   v3.1 - affiliation / participant type / delegated admin
   ========================================================= */

:root{
  --aff-ministry:#d94a4a;
  --aff-advisory:#2f9b68;
  --aff-adult:#3478d4;
  --aff-women:#d8a600;
  --aff-youth:#8a56cf;
}

.affiliation-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:28px;
  padding:0 10px;
  border-radius:999px;
  font-size:11px;
  font-weight:800;
  white-space:nowrap;
  border:1px solid transparent;
}

.affiliation-교역{
  background:#fdecec;
  color:#b63636;
  border-color:#f5caca;
}

.affiliation-자문{
  background:#e8f7ef;
  color:#20764e;
  border-color:#c8ead8;
}

.affiliation-장년{
  background:#eaf2fd;
  color:#285fa9;
  border-color:#cfdef4;
}

.affiliation-부녀{
  background:#fff7d8;
  color:#8f6b00;
  border-color:#f2e3a3;
}

.affiliation-청년{
  background:#f1eafd;
  color:#7041b5;
  border-color:#ddcdf4;
}

.recruit-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:27px;
  padding:0 9px;
  border-radius:10px;
  background:#f1f3f6;
  color:#555d68;
  font-size:11px;
  font-weight:800;
}

/* Mini App participant type */
.participant-type-fieldset{
  margin:0;
  padding:0;
  border:0;
}

.participant-type-fieldset legend{
  margin-bottom:9px;
  font-size:13px;
  font-weight:800;
}

.participant-type-options{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}

.participant-type-card{
  position:relative;
  display:flex !important;
  flex-direction:row !important;
  align-items:center;
  gap:10px !important;
  min-height:72px;
  padding:13px 14px;
  border:1px solid var(--line);
  border-radius:17px;
  background:#fff;
  cursor:pointer;
}

.participant-type-card:has(input:checked){
  border-color:#15171a;
  box-shadow:0 0 0 2px rgba(21,23,26,.06);
}

.participant-type-card input{
  width:18px;
  height:18px;
  accent-color:#15171a;
}

.participant-type-card b,
.participant-type-card small{
  display:block;
}

.participant-type-card small{
  margin-top:3px;
  color:var(--muted);
  font-size:10px;
  font-weight:500;
}

.mini-choice-modal{
  position:fixed;
  z-index:10020;
  inset:0;
  display:grid;
  place-items:center;
  padding:20px;
  background:rgba(15,18,24,.32);
  backdrop-filter:blur(10px);
}

.mini-choice-modal[hidden]{
  display:none !important;
}

.mini-choice-modal-card{
  width:min(420px,100%);
  padding:21px;
  border:1px solid rgba(255,255,255,.8);
  border-radius:26px;
  background:rgba(255,255,255,.98);
  box-shadow:0 30px 90px rgba(17,24,39,.18);
}

.mini-choice-modal-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:15px;
  margin-bottom:15px;
}

.mini-choice-modal-head h3{
  margin:5px 0 0;
  font-size:20px;
}

.mini-choice-list{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:9px;
}

.mini-choice-button{
  min-height:54px;
  border:1px solid var(--line);
  border-radius:15px;
  background:#f7f8fa;
  color:var(--text);
  font-size:13px;
  font-weight:800;
}

.mini-choice-button:active{
  transform:scale(.985);
}

.mini-form-error{
  margin:12px 0;
  padding:12px 14px;
  border-radius:14px;
  background:#fdecec;
  color:#a73a3a;
  font-size:12px;
  font-weight:700;
}

/* ticket capture */
.ticket-capture-btn{
  margin-top:12px;
}

.ticket-capture-status{
  min-height:20px;
  margin:8px 0 0;
  color:var(--muted);
  font-size:11px;
  text-align:center;
}

.ticket-capture-status.error{
  color:#b33e3e;
}

.ticket-capture-area .affiliation-badge{
  margin-top:8px;
}

/* participant admin */
.participant-v31-table{
  min-width:1450px;
}

.participant-v31-table th,
.participant-v31-table td{
  white-space:nowrap;
}

.affiliation-dashboard-head{
  margin-bottom:18px;
  padding:22px;
  border:1px solid var(--line);
  border-radius:24px;
  background:rgba(255,255,255,.78);
}

.affiliation-dashboard-head h2{
  margin:10px 0 5px;
}

.affiliation-dashboard-head p{
  margin:0;
  color:var(--muted);
  font-size:12px;
}

/* account v3.1 */
.account-toolbar-actions{
  display:flex;
  align-items:center;
  gap:8px;
}

.account-table-row.account-table-v31{
  grid-template-columns:
    78px
    1.15fr
    .9fr
    .75fr
    1fr
    1.2fr
    1.05fr
    135px;
}

.account-id-cell{
  display:flex !important;
  align-items:center;
  gap:7px;
}

.account-id-cell small{
  color:var(--muted);
  font-size:10px;
}

.account-affiliation-field[hidden]{
  display:none !important;
}

@media(max-width:900px){
  .account-table-row.account-table-v31{
    min-width:1180px;
  }
}

@media(max-width:620px){
  .participant-type-options,
  .mini-choice-list{
    grid-template-columns:1fr;
  }

  .account-toolbar-actions{
    width:100%;
    justify-content:flex-end;
  }
}

/* =========================================================
   v3.1 - check-in popup affiliation colors
   ========================================================= */

.checkin-result-popup[data-affiliation="ministry"].success
.checkin-result-popup-card{
  border-color:rgba(217,74,74,.30);
}

.checkin-result-popup[data-affiliation="ministry"].success
.checkin-result-popup-icon{
  background:#fdecec;
  color:var(--aff-ministry);
}

.checkin-result-popup[data-affiliation="ministry"].success
.checkin-result-popup-timer span{
  background:var(--aff-ministry);
}

.checkin-result-popup[data-affiliation="advisory"].success
.checkin-result-popup-card{
  border-color:rgba(47,155,104,.30);
}

.checkin-result-popup[data-affiliation="advisory"].success
.checkin-result-popup-icon{
  background:#e8f7ef;
  color:var(--aff-advisory);
}

.checkin-result-popup[data-affiliation="advisory"].success
.checkin-result-popup-timer span{
  background:var(--aff-advisory);
}

.checkin-result-popup[data-affiliation="adult"].success
.checkin-result-popup-card{
  border-color:rgba(52,120,212,.30);
}

.checkin-result-popup[data-affiliation="adult"].success
.checkin-result-popup-icon{
  background:#eaf2fd;
  color:var(--aff-adult);
}

.checkin-result-popup[data-affiliation="adult"].success
.checkin-result-popup-timer span{
  background:var(--aff-adult);
}

.checkin-result-popup[data-affiliation="women"].success
.checkin-result-popup-card{
  border-color:rgba(216,166,0,.34);
}

.checkin-result-popup[data-affiliation="women"].success
.checkin-result-popup-icon{
  background:#fff7d8;
  color:#947000;
}

.checkin-result-popup[data-affiliation="women"].success
.checkin-result-popup-timer span{
  background:var(--aff-women);
}

.checkin-result-popup[data-affiliation="youth"].success
.checkin-result-popup-card{
  border-color:rgba(138,86,207,.32);
}

.checkin-result-popup[data-affiliation="youth"].success
.checkin-result-popup-icon{
  background:#f1eafd;
  color:var(--aff-youth);
}

.checkin-result-popup[data-affiliation="youth"].success
.checkin-result-popup-timer span{
  background:var(--aff-youth);
}


/* =========================================================
   v3.1 revision - Mini App 구분 2버튼 한 줄 고정
   ========================================================= */
.participant-type-options{
  display:grid !important;
  grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  gap:8px !important;
}

.participant-type-card{
  min-height:48px !important;
  padding:10px 12px !important;
  justify-content:center !important;
  border-radius:14px !important;
}

.participant-type-card > span{
  display:flex;
  align-items:center;
  justify-content:center;
}

.participant-type-card small{
  display:none !important;
}

@media(max-width:620px){
  .participant-type-options{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  }
}


/* =========================================================
   v3.2 - 입장 QR 소속별 테두리
   배경색은 변경하지 않고 QR 박스의 선만 소속 색상 적용
   ========================================================= */
.ticket-qr{
  background:#fff !important;
  border:3px solid #d1d5db !important;
  border-radius:18px;
}

.ticket-qr[data-affiliation="교역"]{ border-color:#ef4444 !important; }
.ticket-qr[data-affiliation="자문"]{ border-color:#22c55e !important; }
.ticket-qr[data-affiliation="장년"]{ border-color:#3b82f6 !important; }
.ticket-qr[data-affiliation="부녀"]{ border-color:#eab308 !important; }
.ticket-qr[data-affiliation="청년"]{ border-color:#a855f7 !important; }


/* =========================================================
   v3.3 - 서버 JPEG 2단계 저장
   ========================================================= */

.ticket-save-panel{
  display:grid;
  gap:9px;
  margin-top:12px;
}

.ticket-download-btn[hidden]{
  display:none !important;
}

.ticket-download-btn{
  text-align:center;
}


/* =========================================================
   v3.4 - 현장 참가자 상태 소속 색상
   ========================================================= */

.checkin-status-waiting{
  background:#fff4c8 !important;
  color:#8b6500 !important;
  border-color:#efd98a !important;
}

.checkin-status-complete{
  font-weight:800;
}

.affiliation-status-교역{
  background:#fdecec !important;
  color:#b63636 !important;
  border-color:#f2bcbc !important;
}

.affiliation-status-자문{
  background:#e8f7ef !important;
  color:#20764e !important;
  border-color:#bfe4d0 !important;
}

.affiliation-status-장년{
  background:#eaf2fd !important;
  color:#285fa9 !important;
  border-color:#c3d8f3 !important;
}

.affiliation-status-부녀{
  background:#fff7d8 !important;
  color:#8f6b00 !important;
  border-color:#ecd98c !important;
}

.affiliation-status-청년{
  background:#f1eafd !important;
  color:#7041b5 !important;
  border-color:#d7c3f2 !important;
}

.affiliation-status-none{
  background:#eef0f3 !important;
  color:#59606a !important;
  border-color:#d9dde3 !important;
}


/* =========================================================
   v3.5 - 실제 QR 영역 소속별 테두리
   ========================================================= */

.actual-qr-wrap{
  background:#ffffff !important;
  border:3px solid #d1d5db !important;
}

.actual-qr-wrap[data-affiliation="교역"]{
  border-color:#ef4444 !important;
}

.actual-qr-wrap[data-affiliation="자문"]{
  border-color:#22c55e !important;
}

.actual-qr-wrap[data-affiliation="장년"]{
  border-color:#3b82f6 !important;
}

.actual-qr-wrap[data-affiliation="부녀"]{
  border-color:#eab308 !important;
}

.actual-qr-wrap[data-affiliation="청년"]{
  border-color:#a855f7 !important;
}

.ticket-save-panel{
  display:block;
  margin-top:12px;
}


/* =========================================================
   v3.6 - Mini App 신청 오류 팝업
   ========================================================= */
.mini-error-popup{
  position:fixed;
  z-index:10050;
  inset:0;
  display:grid;
  place-items:center;
  padding:20px;
  background:rgba(15,18,24,.34);
  backdrop-filter:blur(10px);
}

.mini-error-popup-card{
  width:min(390px,100%);
  padding:26px 22px 22px;
  border:1px solid rgba(255,255,255,.85);
  border-radius:25px;
  background:rgba(255,255,255,.98);
  box-shadow:0 30px 90px rgba(17,24,39,.18);
  text-align:center;
}

.mini-error-popup-icon{
  display:grid;
  place-items:center;
  width:48px;
  height:48px;
  margin:0 auto 14px;
  border-radius:50%;
  background:#fdecec;
  color:#b63636;
  font-size:23px;
  font-weight:900;
}

.mini-error-popup-card h3{
  margin:0 0 8px;
  font-size:19px;
}

.mini-error-popup-card p{
  margin:0 0 19px;
  color:#555c66;
  font-size:14px;
  line-height:1.55;
}

/* v3.6 - 참석자 관리 구분 통합 */
.participant-kind-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:27px;
  padding:0 10px;
  border-radius:10px;
  font-size:11px;
  font-weight:800;
  white-space:nowrap;
}

.participant-kind-badge.companion{
  background:#eef0f3;
  color:#414750;
  border:1px solid #dce0e5;
}

.participant-kind-badge.recruit{
  background:#f1eafd;
  color:#7041b5;
  border:1px solid #ddcdf4;
}

.participant-v31-table{
  min-width:1370px;
}


/* =========================================================
   v3.7 - 참석자 구분 색상 제거
   ========================================================= */
.participant-kind-text{
  color:inherit !important;
  background:transparent !important;
  border:0 !important;
  font-weight:600;
}

.participant-kind-badge,
.participant-kind-badge.companion,
.participant-kind-badge.recruit{
  background:transparent !important;
  color:inherit !important;
  border:0 !important;
  border-radius:0 !important;
  padding:0 !important;
}

/* v4.0 survey */
.survey-public{max-width:720px;margin:0 auto;padding:32px 18px 60px}.survey-public-head{text-align:center;margin-bottom:24px}.survey-public-head span{font-size:11px;letter-spacing:.18em;color:#777}.survey-public-head h1{margin:8px 0}.survey-page,.survey-done{background:#fff;border:1px solid #e8e8ea;border-radius:24px;padding:24px;box-shadow:0 18px 60px rgba(0,0,0,.06)}.survey-q{margin:24px 0}.survey-q>label:first-child{display:block;margin-bottom:10px}.survey-q em{color:#d33;font-style:normal}.survey-option{display:flex;gap:10px;align-items:center;border:1px solid #e2e4e8;border-radius:14px;padding:13px;margin:8px 0}.survey-notice{background:#f6f7f8;border-radius:14px;padding:16px;line-height:1.65}.survey-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:28px}.survey-builder-page{margin-bottom:16px}.survey-builder-question{display:flex;flex-direction:column;gap:5px;border-top:1px solid #eee;padding:14px 0}.survey-builder-question span,.survey-builder-question small{color:#69707a}.survey-done{text-align:center;margin-top:80px}.done-check{width:60px;height:60px;border-radius:50%;display:grid;place-items:center;margin:0 auto 16px;background:#eef7ef;font-size:30px}.survey-result-answer{border-top:1px solid #eee;padding:16px 0}.inline-form{display:inline-flex;gap:8px;align-items:center}


/* =========================================================
   v4.1 - Follow-up survey admin UI
   ========================================================= */

.survey-admin-shell{
  display:grid;
  gap:16px;
}

.survey-admin-toolbar{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  padding:20px 22px;
  border:1px solid var(--line);
  border-radius:24px;
  background:rgba(255,255,255,.82);
  box-shadow:0 14px 42px rgba(17,24,39,.045);
}

.survey-admin-toolbar h2{
  margin:5px 0 6px;
  font-size:24px;
  letter-spacing:-.03em;
}

.survey-admin-toolbar p{
  margin:0;
  color:var(--muted);
  font-size:12px;
}

.survey-admin-card{
  overflow:hidden;
  padding:20px;
  border:1px solid var(--line);
  border-radius:24px;
  background:rgba(255,255,255,.88);
  box-shadow:0 14px 42px rgba(17,24,39,.045);
}

.survey-admin-table-wrap{
  overflow-x:auto;
}

.survey-admin-table{
  width:100%;
  min-width:900px;
  border-collapse:collapse;
}

.survey-admin-table th,
.survey-admin-table td{
  padding:14px 13px;
  border-bottom:1px solid #edf0f3;
  text-align:left;
  vertical-align:middle;
  font-size:12px;
}

.survey-admin-table th{
  background:#f7f8fa;
  color:#6b7280;
  font-size:11px;
  font-weight:800;
  white-space:nowrap;
}

.survey-admin-table tbody tr:last-child td{
  border-bottom:0;
}

.survey-admin-table tbody tr:hover{
  background:#fafbfc;
}

.survey-result-table{
  min-width:1120px;
}

.survey-url-code{
  display:block;
  max-width:360px;
  overflow:hidden;
  padding:8px 10px;
  border:1px solid #e4e7eb;
  border-radius:10px;
  background:#f7f8fa;
  color:#49515c;
  font-size:11px;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.survey-row-actions{
  display:flex;
  align-items:center;
  gap:7px;
}

.survey-row-actions form{
  margin:0;
}

.survey-status,
.survey-match{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:26px;
  padding:0 9px;
  border:1px solid transparent;
  border-radius:999px;
  font-size:10px;
  font-weight:800;
  white-space:nowrap;
}

.survey-status.active{
  background:#e9f7ef;
  color:#26764f;
  border-color:#c5e7d3;
}

.survey-status.inactive{
  background:#eef0f3;
  color:#666d76;
  border-color:#dce0e5;
}

.survey-match.matched{
  background:#eaf2fd;
  color:#285fa9;
  border-color:#cfdef4;
}

.survey-match.warning{
  background:#fff7d8;
  color:#8f6b00;
  border-color:#ecd98c;
}

.survey-match.unmatched{
  background:#fdecec;
  color:#ad3c3c;
  border-color:#f1caca;
}

.survey-empty-state{
  padding:38px 20px;
  color:var(--muted);
  text-align:center;
}

.survey-create-modal{
  width:min(440px,100%) !important;
}

.survey-builder-page{
  margin-bottom:14px;
}

.survey-builder-question{
  margin-top:10px;
  padding:14px 0;
  border-top:1px solid #edf0f3;
}

.survey-result-detail-card{
  max-width:860px;
}

@media(max-width:760px){
  .survey-admin-toolbar{
    align-items:stretch;
    flex-direction:column;
  }

  .survey-admin-toolbar .primary-btn{
    width:100%;
  }
}


/* =========================================================
   v4.1 - Account state / compact edit modal
   ========================================================= */

.account-table-row.account-table-v31{
  grid-template-columns:
    74px
    1.1fr
    .85fr
    .7fr
    .95fr
    .7fr
    1.12fr
    1fr
    130px !important;
}

.account-state{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:25px;
  padding:0 9px;
  border:1px solid transparent;
  border-radius:999px;
  font-size:10px;
  font-weight:800;
  white-space:nowrap;
}

.account-state.active{
  background:#e9f7ef;
  color:#26764f;
  border-color:#c5e7d3;
}

.account-state.inactive{
  background:#fdecec;
  color:#b33e3e;
  border-color:#efc8c8;
}

.account-edit-modal-card{
  width:min(430px,100%) !important;
  max-height:82vh !important;
  overflow-y:auto;
  padding:20px !important;
}

.account-edit-modal-card .modal-head{
  margin-bottom:12px;
}

.account-edit-modal-card .account-modal-summary{
  margin-bottom:12px;
  padding:11px 12px;
  border-radius:15px;
}

.account-edit-modal-card .form-stack{
  gap:10px;
}

.account-edit-modal-card .input{
  min-height:40px;
}

.compact-reset-area{
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:10px;
  margin-top:10px;
  padding-top:12px;
  border-top:1px solid var(--line);
}

.fixed-reset-form{
  display:flex;
  justify-content:flex-start;
  margin:0;
}

.compact-reset-area small{
  color:var(--muted);
  font-size:10px;
}

@media(max-width:760px){
  .account-table-row.account-table-v31{
    min-width:1280px;
  }

  .account-edit-modal-card{
    width:100% !important;
    max-height:86vh !important;
  }
}


/* =========================================================
   v4.2 - survey expired / editor
   ========================================================= */

.survey-expired-shell{
  min-height:100vh;
  display:grid;
  place-items:center;
  padding:24px;
  background:#f5f7fb;
}

.survey-expired-card{
  width:min(420px,100%);
  padding:48px 24px;
  border:1px solid #e4e7eb;
  border-radius:26px;
  background:#fff;
  box-shadow:0 18px 58px rgba(17,24,39,.07);
  text-align:center;
}

.survey-expired-card h1{
  margin:0;
  color:#20242a;
  font-size:24px;
  font-weight:800;
  letter-spacing:-.03em;
}


.survey-expired-card p{
  margin:10px 0 0;
  color:#626a74;
  font-size:14px;
  line-height:1.65;
}

.survey-editor-summary{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}

.survey-editor-summary h2{
  margin:5px 0 10px;
  font-size:22px;
}

.survey-condition-guide{
  padding:18px 20px;
  border:1px solid #dce6f4;
  border-radius:20px;
  background:#f6f9fd;
  color:#4f5966;
  font-size:12px;
  line-height:1.65;
}

.survey-condition-guide b{
  display:block;
  margin-bottom:7px;
  color:#273444;
  font-size:14px;
}

.survey-condition-guide p{
  margin:6px 0;
}

.survey-condition-guide small{
  display:block;
  margin-top:8px;
  color:#727b86;
}

.survey-page-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding-bottom:14px;
  border-bottom:1px solid #edf0f3;
}

.survey-page-number{
  color:#8a929c;
  font-size:10px;
  font-weight:800;
  letter-spacing:.12em;
}

.survey-page-head h3{
  margin:4px 0 0;
  font-size:18px;
}

.survey-page-actions,
.survey-question-actions{
  display:flex;
  align-items:center;
  gap:7px;
}

.survey-question-list{
  display:grid;
}

.survey-builder-question{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  padding:16px 2px !important;
}

.survey-question-main{
  min-width:0;
  display:grid;
  gap:6px;
}

.survey-question-id{
  color:#8a929c;
  font-size:9px;
  font-weight:800;
}

.survey-question-meta{
  display:flex;
  gap:6px;
}

.survey-question-meta span{
  display:inline-flex;
  padding:4px 7px;
  border-radius:999px;
  background:#eef0f3;
  color:#636a73;
  font-size:9px;
  font-weight:700;
}

.survey-condition-summary{
  color:#35699f !important;
}

.survey-question-modal{
  width:min(560px,100%) !important;
  max-height:86vh;
  overflow-y:auto;
}

.survey-condition-fields{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  padding:12px;
  border:1px solid #e4e8ee;
  border-radius:15px;
  background:#fafbfc;
}

.survey-condition-fields small{
  display:block;
  margin-top:5px;
  color:var(--muted);
  font-size:10px;
  line-height:1.45;
}

.survey-add-page-area{
  display:flex;
  justify-content:flex-end;
  padding-top:4px;
}

@media(max-width:760px){
  .survey-editor-summary,
  .survey-page-head{
    align-items:stretch;
    flex-direction:column;
  }

  .survey-page-actions{
    flex-wrap:wrap;
  }

  .survey-condition-fields{
    grid-template-columns:1fr;
  }

  .survey-builder-question{
    flex-direction:column;
  }
}

/* v4.3 */
.survey-option-row{display:flex;gap:8px;flex-wrap:wrap}.survey-option-row .survey-option{flex:1 1 110px;justify-content:center;text-align:center}.field-disabled{opacity:.48}.field-disabled textarea{cursor:not-allowed;background:#f1f3f5}.participant-add-modal{width:min(560px,100%);max-height:88vh;overflow:auto}.admin-participant-type{display:grid;grid-template-columns:1fr 1fr;gap:8px}.survey-result-event-picker{margin-bottom:14px}.survey-result-modal{width:min(620px,100%);max-height:86vh;overflow:auto}.survey-result-answer{padding:12px 0;border-bottom:1px solid #edf0f3}.survey-result-answer p{margin:6px 0 0;white-space:pre-wrap}.conditional-groups-field small{display:block;margin-top:5px;color:var(--muted);font-size:10px}

/* v4.4 admin visual alignment */
.survey-admin-shell{display:block}.survey-admin-toolbar{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;margin:0 0 18px}.survey-admin-toolbar .eyebrow{display:none}.survey-admin-toolbar h2{margin:0;font-size:24px}.survey-admin-card{padding:0;border:1px solid var(--line);border-radius:22px;background:rgba(255,255,255,.78);box-shadow:none}.survey-admin-table th,.survey-admin-table td{padding:11px 12px}.survey-admin-table th{background:#f7f8fa}.survey-title-edit{display:flex;gap:8px;align-items:center;margin:10px 0}.survey-title-edit .input{max-width:320px}.survey-event-grid{margin-top:0}.survey-results-selected-head{margin-bottom:14px}.participant-filter-bar{display:flex;align-items:center;gap:8px;margin:12px 0 14px;flex-wrap:wrap}.participant-filter-bar>input.input{width:220px;flex:0 0 220px}.participant-filter-bar>.select-shell{width:190px;flex:0 0 190px}.participant-filter-bar .soft-btn,.participant-filter-bar .primary-btn{width:auto;min-width:0;padding:11px 16px}.toolbar p{display:none}@media(max-width:760px){.participant-filter-bar>input.input,.participant-filter-bar>.select-shell{width:100%;flex:1 1 100%}.survey-title-edit{align-items:stretch;flex-direction:column}.survey-title-edit .input{max-width:none}}


/* =========================================================
   v4.5
   ========================================================= */
.account-sync-notice{margin-bottom:14px !important}
.account-toolbar{margin-bottom:16px !important}

.survey-editor-top{
  display:flex;align-items:flex-end;justify-content:space-between;gap:16px;
  margin-bottom:14px;padding:0 2px 14px;border-bottom:1px solid var(--line)
}
.survey-editor-top h2{margin:5px 0 10px;font-size:20px;letter-spacing:-.03em}
.survey-editor-top .survey-title-edit{display:flex;align-items:center;gap:8px;max-width:430px;margin-bottom:8px}
.survey-editor-top .survey-title-edit .input{min-height:38px;padding:8px 11px}
.survey-editor-top .survey-title-edit .soft-btn{min-height:38px;white-space:nowrap}
.survey-editor-top .survey-url-code{max-width:500px}

.survey-editor-page{
  overflow:hidden;margin-bottom:12px;border:1px solid var(--line);border-radius:20px;
  background:rgba(255,255,255,.78);backdrop-filter:var(--blur)
}
.survey-editor-page .survey-page-head{padding:14px 16px;background:rgba(250,251,252,.82)}
.survey-editor-page .survey-question-list{background:rgba(255,255,255,.52)}
.survey-editor-page .survey-builder-question{
  margin:0 !important;padding:15px 16px !important;border-top:1px solid var(--line) !important
}
.survey-editor-page .survey-builder-question:first-child{border-top:0 !important}
.survey-question-main b{font-size:13px}
.survey-question-main small{font-size:10px;line-height:1.5}
.survey-question-actions,.survey-page-actions{flex-shrink:0}
.survey-add-page-area{padding:2px 0 0 !important}
.survey-condition-guide{display:none !important}

.survey-match-button{min-height:26px;cursor:pointer}
.survey-match-modal{width:min(620px,100%) !important;max-height:84vh;overflow-y:auto}
.survey-match-info{padding:12px 14px;border:1px solid var(--line);border-radius:15px;background:#f7f8fa}
.survey-match-info b{display:block}
.survey-match-info p{margin:6px 0 0;color:var(--muted);font-size:11px;line-height:1.55}
.survey-match-candidate-list{display:grid;gap:8px;margin-top:12px}
.survey-match-candidate{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:12px 13px;border:1px solid #e3e7ec;border-radius:15px;background:#fff
}
.survey-match-candidate b,.survey-match-candidate span,.survey-match-candidate small{display:block}
.survey-match-candidate span{margin-top:4px;color:#49515b;font-size:11px}
.survey-match-candidate small{margin-top:4px;color:var(--muted);font-size:10px}

.qr-popup-card .actual-qr-wrap{border:3px solid #d1d5db !important;background:#fff !important}
.qr-popup-card .actual-qr-wrap[data-affiliation="교역"]{border-color:#ef4444 !important}
.qr-popup-card .actual-qr-wrap[data-affiliation="자문"]{border-color:#22c55e !important}
.qr-popup-card .actual-qr-wrap[data-affiliation="장년"]{border-color:#3b82f6 !important}
.qr-popup-card .actual-qr-wrap[data-affiliation="부녀"]{border-color:#eab308 !important}
.qr-popup-card .actual-qr-wrap[data-affiliation="청년"]{border-color:#a855f7 !important}

@media(max-width:760px){
  .survey-editor-top{align-items:stretch;flex-direction:column}
  .survey-editor-top .survey-title-edit{max-width:none}
  .survey-match-candidate{align-items:stretch;flex-direction:column}
}


/* =========================================================
   v4.6 - 설문 편집 / 공개 설문
   ========================================================= */

.survey-editor-top-actions{
  display:flex;
  align-items:center;
  gap:7px;
  flex-shrink:0;
}

.survey-editor-top-actions .small-btn{
  min-height:36px !important;
  padding:0 12px !important;
}

.modal-card.survey-question-modal{
  width:min(500px,calc(100vw - 32px)) !important;
  max-height:min(78vh,720px) !important;
  padding:18px !important;
  overflow:hidden !important;
  display:flex !important;
  flex-direction:column !important;
}

.survey-question-modal .modal-head{
  flex:0 0 auto;
  margin-bottom:12px !important;
}

.survey-question-modal > form{
  min-height:0;
  overflow-y:auto;
  padding-right:4px;
  overscroll-behavior:contain;
}

.survey-question-modal textarea.input{
  resize:vertical;
}

.survey-options-field[hidden],
.conditional-groups-field[hidden],
.survey-condition-fields[hidden]{
  display:none !important;
}

.survey-options-field small,
.conditional-groups-field small{
  display:block;
  margin-top:5px;
  color:var(--muted);
  font-size:10px;
  line-height:1.5;
}

.survey-question-modal .survey-condition-fields{
  grid-template-columns:1fr !important;
}

.survey-question-title{
  margin-bottom:10px;
}

.survey-question-title b{
  font-size:14px;
  line-height:1.55;
}

.survey-question-title em{
  margin-left:3px;
  color:#d33;
  font-style:normal;
}

.survey-option-column{
  display:grid;
  gap:8px;
}

.survey-option-column .survey-option{
  margin:0 !important;
}

.survey-option-row{
  display:grid !important;
  grid-template-columns:repeat(auto-fit,minmax(110px,1fr)) !important;
  gap:8px !important;
  width:100%;
}

.survey-row-button{
  position:relative;
  display:block;
  min-width:0;
  cursor:pointer;
}

.survey-row-button input{
  position:absolute;
  width:1px;
  height:1px;
  opacity:0;
  pointer-events:none;
}

.survey-row-button span{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  min-height:44px;
  padding:9px 10px;
  border:1px solid #dfe3e8;
  border-radius:13px;
  background:#fff;
  color:#3f454d;
  font-size:12px;
  font-weight:700;
  text-align:center;
  transition:.15s ease;
}

.survey-row-button input:checked + span{
  border-color:#15171a;
  background:#15171a;
  color:#fff;
  box-shadow:0 6px 18px rgba(17,24,39,.12);
}

.survey-content-text{
  margin:4px 0 14px;
  padding:15px 16px;
  border:1px solid #e5e8ec;
  border-radius:15px;
  background:#f8f9fa;
  color:#4f5660;
  font-size:12px;
  font-weight:400 !important;
  line-height:1.75;
  white-space:pre-wrap;
  word-break:keep-all;
}

.survey-notice-body{
  background:transparent;
  border:0;
  padding:0;
  margin-top:4px;
}

.survey-privacy-check{
  display:flex;
  align-items:flex-start;
  gap:9px;
  padding:13px 14px;
  border:1px solid #dde2e7;
  border-radius:14px;
  background:#fff;
  font-size:12px;
  line-height:1.5;
}

.survey-privacy-check input{
  margin-top:2px;
}

@media(max-width:620px){
  .modal-card.survey-question-modal{
    width:calc(100vw - 24px) !important;
    max-height:82vh !important;
    padding:16px !important;
  }

  .survey-option-row{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  }

  .survey-editor-top-actions{
    width:100%;
    justify-content:flex-end;
  }
}


/* =========================================================
   v4.7 - 설문 필수/중복 제출 팝업
   ========================================================= */

.survey-submit-popup{
  position:fixed;
  z-index:12000;
  inset:0;
  display:grid;
  place-items:center;
  padding:20px;
  background:rgba(17,24,39,.34);
  backdrop-filter:blur(9px);
}

.survey-submit-popup[hidden]{
  display:none !important;
}

.survey-submit-popup-card{
  width:min(360px,100%);
  padding:25px 22px 21px;
  border:1px solid rgba(255,255,255,.88);
  border-radius:24px;
  background:#fff;
  box-shadow:0 28px 85px rgba(17,24,39,.19);
  text-align:center;
}

.survey-submit-popup-icon{
  display:grid;
  place-items:center;
  width:46px;
  height:46px;
  margin:0 auto 13px;
  border-radius:50%;
  background:#fff1d7;
  color:#9a6b00;
  font-size:21px;
  font-weight:900;
}

.survey-submit-popup-card h3{
  margin:0 0 18px;
  color:#20242a;
  font-size:17px;
  letter-spacing:-.025em;
}

.survey-q[data-required="1"].survey-required-error{
  outline:2px solid rgba(220,38,38,.18);
  outline-offset:7px;
  border-radius:10px;
}


/* =========================================================
   v4.8 - 설문 가로 객관식 / 개인정보 줄바꿈 / 편집 팝업
   ========================================================= */

/* 관리자 모달은 항상 하나만 보이고 화면 중앙에 안정적으로 고정 */
.modal-backdrop[hidden]{
  display:none !important;
}

.modal-backdrop:not([hidden]){
  position:fixed !important;
  z-index:11000 !important;
  inset:0 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  overflow:auto !important;
  padding:24px !important;
  background:rgba(17,24,39,.34) !important;
  backdrop-filter:blur(8px);
}

body.modal-open{
  overflow:hidden !important;
}

/* 설문 문항 편집 팝업 */
.modal-backdrop .modal-card.survey-question-modal{
  position:relative !important;
  inset:auto !important;
  width:min(520px,calc(100vw - 40px)) !important;
  height:auto !important;
  max-height:calc(100dvh - 48px) !important;
  margin:auto !important;
  padding:20px !important;
  overflow:hidden !important;
  border-radius:24px !important;
  background:#fff !important;
  box-shadow:0 30px 90px rgba(17,24,39,.20) !important;
  display:flex !important;
  flex-direction:column !important;
}

.modal-backdrop .survey-question-modal .modal-head{
  position:relative !important;
  flex:0 0 auto !important;
  margin:0 0 14px !important;
  padding:0 !important;
  background:#fff !important;
}

.modal-backdrop .survey-question-modal > form{
  flex:1 1 auto !important;
  min-height:0 !important;
  max-height:none !important;
  overflow-y:auto !important;
  padding:0 5px 2px 0 !important;
}

.modal-backdrop .survey-question-modal .form-actions{
  position:sticky !important;
  bottom:0 !important;
  z-index:2 !important;
  margin-top:14px !important;
  padding:12px 0 0 !important;
  background:#fff !important;
}

/* 공개 설문 - 객관식 단일(가로 버튼)
   기존 세로 카드와 동일한 테두리/라운드/선택감을 유지 */
.survey-public .survey-option-row{
  display:flex !important;
  flex-wrap:wrap !important;
  align-items:stretch !important;
  gap:8px !important;
  width:100% !important;
}

.survey-public .survey-option-row .survey-row-button{
  position:relative !important;
  display:block !important;
  flex:1 1 120px !important;
  min-width:105px !important;
  margin:0 !important;
  cursor:pointer !important;
}

.survey-public .survey-option-row .survey-row-button > input{
  position:absolute !important;
  width:1px !important;
  height:1px !important;
  opacity:0 !important;
  overflow:hidden !important;
  pointer-events:none !important;
}

.survey-public .survey-option-row .survey-row-button > span{
  box-sizing:border-box !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  width:100% !important;
  min-height:48px !important;
  padding:11px 14px !important;
  border:1px solid #dde2e7 !important;
  border-radius:14px !important;
  background:#fff !important;
  color:#333a43 !important;
  box-shadow:0 2px 8px rgba(17,24,39,.025) !important;
  font-size:12px !important;
  font-weight:700 !important;
  line-height:1.35 !important;
  text-align:center !important;
  transition:
    border-color .15s ease,
    background .15s ease,
    color .15s ease,
    transform .15s ease !important;
}

.survey-public .survey-option-row .survey-row-button:hover > span{
  border-color:#b8bec6 !important;
  background:#fafbfc !important;
}

.survey-public .survey-option-row .survey-row-button:active > span{
  transform:scale(.985);
}

.survey-public .survey-option-row .survey-row-button > input:checked + span{
  border-color:#17191c !important;
  background:#17191c !important;
  color:#fff !important;
  box-shadow:0 7px 20px rgba(17,24,39,.13) !important;
}

/* 개인정보/안내문 줄바꿈을 DB 신/구 데이터 모두 확실히 표시 */
.survey-public .survey-content-text{
  white-space:pre-line !important;
  overflow-wrap:anywhere !important;
  word-break:keep-all !important;
}

.survey-public .survey-privacy-check{
  margin-top:10px !important;
}

/* 긴 개인정보 본문은 읽기 편하도록 문단 간 줄 간격 확보 */
.survey-public .survey-content-text{
  line-height:1.78 !important;
}

/* 관리자 textarea도 입력 줄바꿈이 눈에 잘 보이게 */
.survey-question-modal .survey-options-field textarea{
  white-space:pre-wrap !important;
  line-height:1.6 !important;
}

@media(max-width:620px){
  .modal-backdrop:not([hidden]){
    padding:12px !important;
    align-items:center !important;
  }

  .modal-backdrop .modal-card.survey-question-modal{
    width:100% !important;
    max-height:calc(100dvh - 24px) !important;
    padding:16px !important;
  }

  .survey-public .survey-option-row .survey-row-button{
    flex:1 1 calc(50% - 4px) !important;
    min-width:0 !important;
  }
}


/* =========================================================
   v4.8 HOTFIX - 설문 문항 편집 모달 viewport 고정
   ========================================================= */

/*
  설문 문항 편집 모달은 JS에서 body 직계 자식으로 이동한다.
  페이지 카드의 backdrop-filter / overflow / stacking context 영향을
  받지 않도록 viewport 전체 기준으로 강제한다.
*/
body > .modal-backdrop:not([hidden]){
  position:fixed !important;
  z-index:50000 !important;
  inset:0 !important;
  width:100vw !important;
  height:100dvh !important;
  min-height:100vh !important;

  display:flex !important;
  align-items:center !important;
  justify-content:center !important;

  margin:0 !important;
  padding:20px !important;
  overflow:auto !important;

  background:rgba(17,24,39,.42) !important;
  backdrop-filter:blur(8px) !important;
  -webkit-backdrop-filter:blur(8px) !important;
}

body > .modal-backdrop[hidden]{
  display:none !important;
}

body > .modal-backdrop .survey-question-modal{
  position:relative !important;
  top:auto !important;
  right:auto !important;
  bottom:auto !important;
  left:auto !important;

  width:min(540px,calc(100vw - 40px)) !important;
  max-width:540px !important;
  height:auto !important;
  max-height:calc(100dvh - 40px) !important;

  margin:auto !important;
  padding:20px !important;
  overflow:hidden !important;

  display:flex !important;
  flex-direction:column !important;

  border-radius:24px !important;
  background:#fff !important;
  box-shadow:0 28px 90px rgba(17,24,39,.24) !important;
}

body > .modal-backdrop .survey-question-modal .modal-head{
  flex:0 0 auto !important;
}

body > .modal-backdrop .survey-question-modal > form{
  flex:1 1 auto !important;
  min-height:0 !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;

  padding-right:6px !important;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
}

/* 조건 기준 문항까지 반드시 스크롤해서 접근 가능 */
body > .modal-backdrop .survey-question-modal .survey-condition-fields,
body > .modal-backdrop .survey-question-modal .conditional-groups-field{
  flex:0 0 auto !important;
}

/* 하단 버튼은 폼 내부에서 항상 접근 가능 */
body > .modal-backdrop .survey-question-modal .form-actions{
  position:sticky !important;
  bottom:0 !important;
  z-index:5 !important;

  margin-top:14px !important;
  padding-top:12px !important;
  padding-bottom:2px !important;

  background:#fff !important;
}

/* PAGE 카드가 모달을 자르지 않도록 추가 안전장치 */
.survey-editor-page{
  isolation:auto !important;
}

@media(max-width:620px){
  body > .modal-backdrop:not([hidden]){
    padding:10px !important;
    align-items:center !important;
  }

  body > .modal-backdrop .survey-question-modal{
    width:100% !important;
    max-width:none !important;
    max-height:calc(100dvh - 20px) !important;
    padding:16px !important;
    border-radius:20px !important;
  }
}

/* =========================================================
   v4.9 - 설문 연결 행사 / 설문명 동시 변경
   ========================================================= */
.survey-editor-top .survey-meta-edit{
  display:grid !important;
  grid-template-columns:minmax(180px,240px) minmax(220px,320px) auto !important;
  align-items:center !important;
  gap:8px !important;
  max-width:720px !important;
  margin-bottom:8px !important;
}

.survey-editor-top .survey-event-select-shell{
  width:100% !important;
  min-width:0 !important;
}

.survey-editor-top .survey-event-select-shell .input,
.survey-editor-top .survey-title-input{
  width:100% !important;
  min-height:38px !important;
}

.survey-editor-top .survey-meta-edit .soft-btn{
  min-height:38px !important;
  padding:0 15px !important;
  white-space:nowrap !important;
}

@media(max-width:760px){
  .survey-editor-top .survey-meta-edit{
    grid-template-columns:1fr !important;
    max-width:none !important;
  }

  .survey-editor-top .survey-meta-edit .soft-btn{
    width:100% !important;
  }
}


/* =========================================================
   v4.11 - 설문 이미지 단독 문항
   ========================================================= */
.survey-image-field[hidden]{
  display:none !important;
}

.survey-image-field small{
  display:block;
  margin-top:6px;
  color:var(--muted);
  font-size:10px;
}

.survey-admin-image-preview{
  display:block;
  width:100%;
  max-height:260px;
  margin-top:10px;
  object-fit:contain;
  border:1px solid #e2e6ea;
  border-radius:14px;
  background:#f8f9fa;
}

.survey-admin-list-image{
  display:block;
  width:160px;
  max-height:100px;
  margin-top:8px;
  object-fit:contain;
  border:1px solid #e4e7eb;
  border-radius:10px;
  background:#f8f9fa;
}

.survey-image-only{
  width:100%;
  margin:4px 0 18px;
  text-align:center;
}

.survey-image-only img{
  display:block;
  width:auto;
  max-width:100%;
  height:auto;
  margin:0 auto;
  border:0;
  border-radius:0;
  background:transparent;
  object-fit:contain;
}

@media(max-width:620px){
  .survey-image-only img{
    width:100%;
    height:auto;
  }
}


/* =========================================================
   v5 - 통계 관리 / 행사 운영 모니터링
   ========================================================= */

.statistics-event-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
}

.statistics-event-card{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  min-height:132px;
  padding:20px 52px 20px 20px;
  border:1px solid var(--line);
  border-radius:22px;
  background:rgba(255,255,255,.82);
  color:inherit;
  text-decoration:none;
  box-shadow:0 10px 34px rgba(17,24,39,.035);
  transition:.15s ease;
}

.statistics-event-card:hover{
  transform:translateY(-1px);
  border-color:#cfd4da;
  box-shadow:0 14px 38px rgba(17,24,39,.06);
}

.statistics-event-main h3{
  margin:5px 0 6px;
  font-size:18px;
}

.statistics-event-main p{
  margin:0;
  color:var(--muted);
  font-size:11px;
}

.statistics-event-numbers{
  display:flex;
  align-items:center;
  gap:18px;
  flex-shrink:0;
}

.statistics-event-numbers span{
  display:grid;
  gap:2px;
  text-align:center;
}

.statistics-event-numbers b{
  font-size:20px;
}

.statistics-event-numbers small{
  color:var(--muted);
  font-size:9px;
}

.statistics-event-arrow{
  position:absolute;
  right:18px;
  color:#9aa1aa;
  font-size:18px;
}

.monitor-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:16px;
  margin-bottom:14px;
  padding-bottom:14px;
  border-bottom:1px solid var(--line);
}

.monitor-head h2{
  margin:5px 0 4px;
  font-size:22px;
}

.monitor-head p{
  margin:0;
  color:var(--muted);
  font-size:11px;
}

.monitor-head-actions{
  display:flex;
  align-items:center;
  gap:7px;
}

.monitor-refresh-status{
  display:flex;
  align-items:center;
  gap:6px;
  margin-right:4px;
  color:#66707a;
  font-size:10px;
}

.monitor-live-dot{
  width:7px;
  height:7px;
  border-radius:50%;
  background:#22a06b;
  box-shadow:0 0 0 5px rgba(34,160,107,.10);
}

.monitor-kpi-grid{
  display:grid;
  grid-template-columns:repeat(8,minmax(0,1fr));
  gap:8px;
  margin-bottom:12px;
}

.monitor-kpi{
  display:grid;
  gap:5px;
  min-width:0;
  padding:14px 12px;
  border:1px solid var(--line);
  border-radius:17px;
  background:rgba(255,255,255,.82);
}

.monitor-kpi span{
  color:#737b85;
  font-size:10px;
  font-weight:700;
  white-space:nowrap;
}

.monitor-kpi b{
  font-size:23px;
  letter-spacing:-.03em;
}

.monitor-progress-grid,
.monitor-table-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  margin-bottom:12px;
}

.monitor-panel,
.monitor-alert-panel{
  padding:17px 18px;
  border:1px solid var(--line);
  border-radius:20px;
  background:rgba(255,255,255,.82);
  box-shadow:0 10px 30px rgba(17,24,39,.03);
}

.monitor-alert-panel{
  margin-bottom:12px;
}

.monitor-panel-title{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  margin-bottom:13px;
}

.monitor-panel-title h3{
  margin:3px 0 0;
  font-size:15px;
}

.monitor-panel-title strong{
  font-size:13px;
}

.monitor-panel-title > small{
  color:var(--muted);
  font-size:9px;
}

.monitor-progress-track{
  overflow:hidden;
  height:9px;
  border-radius:999px;
  background:#eef0f2;
}

.monitor-progress-track span{
  display:block;
  height:100%;
  border-radius:inherit;
  background:#23272c;
}

.monitor-progress-value{
  margin-top:7px;
  color:#505761;
  font-size:11px;
  font-weight:800;
  text-align:right;
}

.monitor-alert-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
}

.monitor-alert-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:12px 13px;
  border:1px solid #e4e7eb;
  border-radius:14px;
  background:#f8f9fa;
}

.monitor-alert-item span{
  color:#69717b;
  font-size:10px;
  font-weight:700;
}

.monitor-alert-item b{
  font-size:14px;
}

.monitor-alert-item.warning{
  border-color:#ecd98c;
  background:#fff9df;
}

.monitor-alert-item.warning b{
  color:#8c6900;
}

.monitor-alert-item.danger{
  border-color:#efcaca;
  background:#fff0f0;
}

.monitor-alert-item.danger b{
  color:#b33f3f;
}

.monitor-session-panel{
  margin-bottom:12px;
}

.monitor-session-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:8px;
}

.monitor-session-item{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:11px 12px;
  border:1px solid #e5e8ec;
  border-radius:13px;
  background:#fafbfc;
}

.monitor-session-item b,
.monitor-session-item small{
  display:block;
}

.monitor-session-item small{
  margin-top:3px;
  color:var(--muted);
  font-size:9px;
}

.monitor-session-item > span{
  color:#5f6771;
  font-size:10px;
  white-space:nowrap;
}

.monitor-table{
  width:100%;
  border-collapse:collapse;
}

.monitor-table th,
.monitor-table td{
  padding:9px 8px;
  border-bottom:1px solid #edf0f3;
  text-align:center;
  font-size:10px;
}

.monitor-table th{
  color:#727a84;
  background:#f8f9fa;
  font-size:9px;
}

.monitor-table th:first-child,
.monitor-table td:first-child{
  text-align:left;
}

.monitor-table tbody tr:last-child td{
  border-bottom:0;
}

.monitor-activity-list{
  display:grid;
}

.monitor-activity-item{
  display:grid;
  grid-template-columns:72px 76px minmax(200px,1fr) 100px;
  align-items:center;
  gap:10px;
  min-height:43px;
  padding:8px 3px;
  border-bottom:1px solid #edf0f3;
}

.monitor-activity-item:last-child{
  border-bottom:0;
}

.monitor-activity-item time{
  color:#737b84;
  font-size:10px;
  font-variant-numeric:tabular-nums;
}

.monitor-activity-type{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:24px;
  padding:0 7px;
  border-radius:999px;
  background:#eef0f3;
  color:#555d66;
  font-size:9px;
  font-weight:800;
}

.monitor-activity-item b{
  overflow:hidden;
  font-size:11px;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.monitor-activity-item small{
  color:var(--muted);
  font-size:9px;
  text-align:right;
}

@media(max-width:1180px){
  .monitor-kpi-grid{
    grid-template-columns:repeat(4,minmax(0,1fr));
  }

  .monitor-session-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media(max-width:820px){
  .statistics-event-grid,
  .monitor-progress-grid,
  .monitor-table-grid{
    grid-template-columns:1fr;
  }

  .monitor-head{
    align-items:stretch;
    flex-direction:column;
  }

  .monitor-head-actions{
    flex-wrap:wrap;
  }

  .monitor-alert-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

@media(max-width:620px){
  .statistics-event-card{
    align-items:flex-start;
    flex-direction:column;
    padding-right:42px;
  }

  .statistics-event-numbers{
    width:100%;
    justify-content:space-between;
  }

  .monitor-kpi-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .monitor-session-grid{
    grid-template-columns:1fr;
  }

  .monitor-activity-item{
    grid-template-columns:62px 68px 1fr;
  }

  .monitor-activity-item small{
    display:none;
  }
}


/* =========================================================
   v5.2 - statistics layout refinement
   ========================================================= */

/* 회차: 좌측 타임 정보 / 우측 신청·입장 숫자를 명확하게 분리 */
.monitor-session-item{
  align-items:center;
}

.monitor-session-copy{
  min-width:0;
}

.monitor-session-counts{
  display:grid;
  grid-template-columns:repeat(2,52px);
  gap:6px;
  flex-shrink:0;
}

.monitor-session-counts > span{
  display:grid;
  justify-items:center;
  gap:2px;
  min-height:48px;
  padding:7px 8px;
  border:1px solid #e5e8ec;
  border-radius:11px;
  background:#fff;
}

.monitor-session-counts small{
  margin:0;
  color:#7b838c;
  font-size:8px;
  font-weight:700;
}

.monitor-session-counts b{
  font-size:15px;
  line-height:1;
}

/* 소속별 + 구분별 통합 */
.monitor-affiliation-combined{
  margin-bottom:12px;
}

.monitor-affiliation-table th,
.monitor-affiliation-table td{
  vertical-align:middle;
}

.monitor-affiliation-table td:first-child{
  width:92px;
}

.monitor-affiliation-table td:nth-child(2){
  width:92px;
  text-align:left;
}

.monitor-affiliation-table .affiliation-badge{
  min-width:48px;
}

.monitor-type-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:25px;
  padding:0 9px;
  border:1px solid #dde1e5;
  border-radius:999px;
  background:#f5f6f7;
  color:#59616a;
  font-size:9px;
  font-weight:800;
  white-space:nowrap;
}

.monitor-type-recruit{
  background:#f2f4f6;
  color:#343a40;
}

.monitor-type-companion{
  background:#fff;
  color:#6b727b;
}

.monitor-affiliation-table tr.affiliation-group-end td{
  border-bottom:2px solid #e2e5e9;
}

.monitor-affiliation-table tbody tr:last-child td{
  border-bottom:0;
}

@media(max-width:820px){
  .monitor-affiliation-combined .compact-table-wrap{
    overflow-x:auto;
  }

  .monitor-affiliation-table{
    min-width:680px;
  }
}

@media(max-width:620px){
  .monitor-session-counts{
    grid-template-columns:repeat(2,46px);
  }
}


/* =========================================================
   v5.7 - Mini App JPEG save flow
   ========================================================= */

.ticket-image-modal[hidden]{
  display:none !important;
}

.ticket-image-modal{
  position:fixed;
  z-index:60000;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:16px;
  background:rgba(17,24,39,.48);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}

.ticket-image-modal-card{
  position:relative;
  width:min(440px,100%);
  max-height:calc(100dvh - 32px);
  overflow:auto;
  padding:20px;
  border-radius:24px;
  background:#fff;
  box-shadow:0 28px 90px rgba(17,24,39,.24);
}

.ticket-image-modal-card h3{
  margin:0 0 7px;
  font-size:17px;
}

.ticket-image-modal-card p{
  margin:0 0 13px;
  color:#68717b;
  font-size:11px;
  line-height:1.6;
}

.ticket-image-modal-card img{
  display:block;
  width:100%;
  height:auto;
  margin:0 0 12px;
  border:1px solid #e4e7eb;
  border-radius:16px;
  background:#f6f7f8;
}

.ticket-image-modal-close{
  position:absolute;
  top:12px;
  right:12px;
  display:grid;
  place-items:center;
  width:34px;
  height:34px;
  padding:0;
  border:0;
  border-radius:11px;
  background:#f1f3f5;
  color:#333a42;
  font-size:20px;
  cursor:pointer;
}

.ticket-capture-btn:disabled{
  opacity:.6;
  cursor:wait;
}


/* =========================================================
   v5.8 - 현장 참가자 현황 상태/이름 표시
   ========================================================= */

/* 참석완료 = 참석자 관리의 참석완료(green)와 동일 */
.checkin-status-complete{
  background:#e8f6ef !important;
  color:#16764c !important;
}

/* 미입장 = 참석자 관리의 승인완료(blue)와 동일 */
.checkin-status-waiting{
  background:#eaf2fd !important;
  color:#285fa9 !important;
}

/* 이름에만 소속 색 배경 적용 */
.checkin-name-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:28px;
  padding:0 10px;
  border:1px solid transparent;
  border-radius:999px;
  font-size:11px;
  font-weight:800;
  white-space:nowrap;
}

.checkin-name-badge.affiliation-교역{
  background:#fdecec;
  color:#b63636;
  border-color:#f5caca;
}

.checkin-name-badge.affiliation-자문{
  background:#e8f7ef;
  color:#20764e;
  border-color:#c8ead8;
}

.checkin-name-badge.affiliation-장년{
  background:#eaf2fd;
  color:#285fa9;
  border-color:#cfdef4;
}

.checkin-name-badge.affiliation-부녀{
  background:#fff7d8;
  color:#8f6b00;
  border-color:#f2e3a3;
}

.checkin-name-badge.affiliation-청년{
  background:#f1eafd;
  color:#7041b5;
  border-color:#ddcdf4;
}

.checkin-name-badge.affiliation-none{
  background:#f1f3f5;
  color:#555d68;
  border-color:#e1e5e9;
}


/* =========================================================
   v5.11 - Executive dashboard
   ========================================================= */

.executive-dashboard-section{
  margin-bottom:14px;
  padding:18px;
  border:1px solid var(--line);
  border-radius:22px;
  background:rgba(255,255,255,.84);
  box-shadow:0 10px 34px rgba(17,24,39,.035);
}

.executive-section-head{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:14px;
  margin-bottom:14px;
}

.executive-section-head h2{
  margin:4px 0 0;
  font-size:17px;
}

.today-event-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
}

.today-event-tab{
  min-height:32px;
  padding:0 11px;
  border:1px solid #e0e4e8;
  border-radius:999px;
  background:#f7f8f9;
  color:#636b74;
  font-size:10px;
  font-weight:800;
  cursor:pointer;
}

.today-event-tab.active{
  border-color:#252a30;
  background:#252a30;
  color:#fff;
}

.today-event-dashboard[hidden]{
  display:none !important;
}

.today-event-summary{
  position:relative;
  display:grid;
  grid-template-columns:minmax(160px,1fr) minmax(450px,2.4fr) auto;
  align-items:center;
  gap:18px;
  margin-bottom:12px;
  padding:17px 18px;
  border:1px solid #e6e9ed;
  border-radius:18px;
  background:#fafbfc;
}

.event-date-chip{
  display:inline-flex;
  min-height:23px;
  align-items:center;
  padding:0 8px;
  border-radius:999px;
  background:#eef0f3;
  color:#666f79;
  font-size:9px;
  font-weight:800;
}

.today-event-title h3{
  margin:7px 0 4px;
  font-size:18px;
}

.today-event-title p{
  margin:0;
  color:var(--muted);
  font-size:10px;
}

.today-event-kpis{
  display:grid;
  grid-template-columns:repeat(5,minmax(72px,1fr));
  gap:8px;
}

.today-event-kpis > div{
  display:grid;
  grid-template-columns:auto auto;
  grid-template-areas:
    "label label"
    "value unit";
  align-items:end;
  justify-content:center;
  min-height:72px;
  padding:10px;
  border:1px solid #e5e8eb;
  border-radius:14px;
  background:#fff;
  text-align:center;
}

.today-event-kpis span{
  grid-area:label;
  color:#727a84;
  font-size:9px;
  font-weight:700;
}

.today-event-kpis b{
  grid-area:value;
  font-size:22px;
  line-height:1;
}

.today-event-kpis small{
  grid-area:unit;
  margin-left:2px;
  color:#8a9199;
  font-size:8px;
}

.executive-visual-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:12px;
  margin-bottom:12px;
}

.executive-chart-card{
  padding:17px 18px;
  border:1px solid #e6e9ed;
  border-radius:18px;
  background:#fff;
}

.executive-card-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  margin-bottom:12px;
}

.executive-card-head h3{
  margin:3px 0 0;
  font-size:14px;
}

.dashboard-donut-wrap{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:28px;
  min-height:190px;
}

.dashboard-donut{
  --rate:0;
  position:relative;
  display:grid;
  place-items:center;
  width:150px;
  height:150px;
  flex:0 0 auto;
  border-radius:50%;
  background:
    conic-gradient(
      #2c333a calc(var(--rate) * 1%),
      #eceff2 0
    );
}

.dashboard-donut.survey-donut{
  background:
    conic-gradient(
      #606875 calc(var(--rate) * 1%),
      #eceff2 0
    );
}

.dashboard-donut::after{
  content:"";
  position:absolute;
  inset:16px;
  border-radius:50%;
  background:#fff;
  box-shadow:inset 0 0 0 1px #f0f2f4;
}

.dashboard-donut-center{
  position:relative;
  z-index:1;
  display:grid;
  justify-items:center;
  gap:3px;
}

.dashboard-donut-center b{
  font-size:25px;
  letter-spacing:-.04em;
}

.dashboard-donut-center span{
  color:#7c848d;
  font-size:9px;
  font-weight:800;
}

.dashboard-donut-copy{
  display:grid;
  gap:5px;
}

.dashboard-donut-copy strong{
  font-size:17px;
}

.dashboard-donut-copy span{
  color:#7b838c;
  font-size:10px;
}

.affiliation-chart-card{
  margin-bottom:0;
}

.affiliation-bar-list{
  display:grid;
  gap:10px;
}

.affiliation-bar-row{
  display:grid;
  grid-template-columns:70px minmax(100px,1fr) 55px 55px;
  align-items:center;
  gap:10px;
}

.affiliation-bar-track{
  overflow:hidden;
  height:12px;
  border-radius:999px;
  background:#eef0f3;
}

.affiliation-bar-fill{
  display:block;
  height:100%;
  border-radius:inherit;
}

.affiliation-bar-교역{background:#d85c5c}
.affiliation-bar-자문{background:#4f9a70}
.affiliation-bar-장년{background:#5882bd}
.affiliation-bar-부녀{background:#d1ae37}
.affiliation-bar-청년{background:#8a61be}

.affiliation-bar-row > strong{
  font-size:11px;
  text-align:right;
}

.affiliation-bar-row > small{
  color:#737b84;
  font-size:10px;
  text-align:right;
}

.executive-empty-today{
  display:grid;
  place-items:center;
  min-height:150px;
  gap:5px;
  border:1px dashed #dfe3e7;
  border-radius:18px;
  background:#fafbfc;
}

.executive-empty-today strong{
  font-size:14px;
}

.executive-lower-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
}

.executive-lower-grid > .executive-dashboard-section{
  margin-bottom:0;
}

.executive-list{
  display:grid;
}

.executive-list-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) 75px 55px 25px;
  align-items:center;
  gap:10px;
  min-height:55px;
  padding:8px 2px;
  border-bottom:1px solid #edf0f3;
}

.executive-list-row:last-child{
  border-bottom:0;
}

.executive-list-main{
  min-width:0;
  display:grid;
  gap:3px;
}

.executive-list-main b{
  overflow:hidden;
  font-size:11px;
  text-overflow:ellipsis;
  white-space:nowrap;
}

.executive-list-main span{
  color:#7c848d;
  font-size:9px;
}

.executive-list-number{
  display:flex;
  align-items:baseline;
  justify-content:flex-end;
  gap:3px;
}

.executive-list-number b{
  font-size:13px;
}

.executive-list-number span{
  color:#7c848d;
  font-size:8px;
}

.dday-chip{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:25px;
  padding:0 7px;
  border-radius:999px;
  background:#f0f2f4;
  color:#59616a;
  font-size:9px;
  font-weight:800;
}

.executive-row-link{
  display:inline-grid;
  place-items:center;
  width:25px;
  height:25px;
  border-radius:8px;
  color:#6d747d;
  text-decoration:none;
}

.executive-row-link:hover{
  background:#f0f2f4;
  color:#22282e;
}

.executive-result-table{
  width:100%;
  border-collapse:collapse;
}

.executive-result-table th,
.executive-result-table td{
  padding:10px 8px;
  border-bottom:1px solid #edf0f3;
  font-size:10px;
  text-align:center;
}

.executive-result-table th{
  color:#767e87;
  background:#f8f9fa;
  font-size:9px;
}

.executive-result-table th:first-child,
.executive-result-table td:first-child{
  text-align:left;
}

.executive-result-table td:first-child b,
.executive-result-table td:first-child small{
  display:block;
}

.executive-result-table td:first-child small{
  margin-top:2px;
  color:#8a9199;
  font-size:8px;
}

.executive-result-table tbody tr:last-child td{
  border-bottom:0;
}

@media(max-width:1000px){
  .today-event-summary{
    grid-template-columns:1fr;
  }

  .executive-lower-grid{
    grid-template-columns:1fr;
  }
}

@media(max-width:720px){
  .executive-section-head{
    align-items:flex-start;
    flex-direction:column;
  }

  .executive-visual-grid{
    grid-template-columns:1fr;
  }

  .today-event-kpis{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }

  .dashboard-donut-wrap{
    gap:20px;
  }

  .dashboard-donut{
    width:132px;
    height:132px;
  }

  .affiliation-bar-row{
    grid-template-columns:60px minmax(90px,1fr) 42px 46px;
    gap:7px;
  }
}

@media(max-width:480px){
  .dashboard-donut-wrap{
    align-items:center;
    flex-direction:column;
    min-height:235px;
  }

  .dashboard-donut-copy{
    text-align:center;
  }

  .executive-list-row{
    grid-template-columns:minmax(0,1fr) 68px 50px;
  }

  .executive-list-row .executive-row-link{
    display:none;
  }
}


/* =========================================================
   v5.12
   ========================================================= */

.survey-question-actions form{
  display:inline-flex;
  margin:0;
}

.survey-question-actions button:disabled{
  opacity:.35;
  cursor:not-allowed;
}

.form-error-text{
  display:block;
  margin-top:6px;
  color:#b33f3f;
  font-size:10px;
  font-weight:700;
}


/* v5.14 - 소속 관리자 대시보드 범위 안내 */
.affiliation-dashboard-scope{
  display:flex;
  align-items:center;
  gap:10px;
  margin-bottom:12px;
}

.affiliation-dashboard-scope small{
  color:#747c85;
  font-size:10px;
}


/* =========================================================
   v5.15 - Mobile admin sidebar
   ========================================================= */

.mobile-menu-btn,
.mobile-sidebar-backdrop{
  display:none;
}

.mobile-topbar-left{
  display:flex;
  align-items:center;
  gap:12px;
  min-width:0;
}

@media(max-width:620px){
  body.admin-mobile-menu-open{
    overflow:hidden;
  }

  .admin-shell{
    display:block;
    padding:0;
  }

  .admin-main{
    padding:14px;
  }

  .topbar{
    align-items:center;
    gap:10px;
    padding:10px 0 18px;
  }

  .mobile-topbar-left{
    flex:1;
    min-width:0;
  }

  .mobile-menu-btn{
    display:inline-grid;
    place-items:center;
    width:42px;
    height:42px;
    flex:0 0 42px;
    padding:0;
    border:1px solid var(--line);
    border-radius:14px;
    background:rgba(255,255,255,.88);
    color:#25282d;
    box-shadow:0 8px 24px rgba(18,24,40,.06);
    font-size:19px;
    line-height:1;
    -webkit-tap-highlight-color:transparent;
  }

  .mobile-menu-btn:active{
    transform:scale(.97);
  }

  .sidebar{
    display:flex !important;
    position:fixed;
    z-index:50010;
    top:0;
    left:0;
    width:min(290px,84vw);
    height:100dvh;
    margin:0;
    padding:18px 14px;
    border:0;
    border-right:1px solid var(--line);
    border-radius:0 26px 26px 0;
    background:rgba(255,255,255,.96);
    box-shadow:18px 0 60px rgba(17,24,39,.18);
    transform:translateX(-105%);
    transition:transform .22s ease;
    overflow-y:auto;
    overscroll-behavior:contain;
    visibility:hidden;
  }

  .sidebar.mobile-open{
    transform:translateX(0);
    visibility:visible;
  }

  .sidebar .brand{
    justify-content:flex-start;
  }

  .sidebar .brand>div:not(.brand-mark),
  .sidebar .nav-item b,
  .sidebar .sidebar-footer>div:not(.avatar),
  .sidebar .sidebar-user-copy{
    display:block !important;
  }

  .sidebar .nav-item{
    justify-content:flex-start;
  }

  .sidebar-footer{
    flex-wrap:nowrap;
  }

  .mobile-sidebar-backdrop{
    position:fixed;
    z-index:50000;
    inset:0;
    width:100%;
    height:100%;
    padding:0;
    border:0;
    border-radius:0;
    background:rgba(17,24,39,.38);
    backdrop-filter:blur(2px);
    -webkit-backdrop-filter:blur(2px);
  }

  .mobile-sidebar-backdrop:not([hidden]){
    display:block;
  }

  .top-actions .icon-btn{
    display:none;
  }

  .topbar h1{
    max-width:62vw;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
    font-size:24px;
  }

  .topbar .eyebrow{
    font-size:9px;
  }
}


/* =========================================================
   v5.16
   ========================================================= */

.survey-match-radio-row{
  display:grid !important;
  grid-template-columns:22px minmax(0,1fr);
  align-items:center;
  gap:10px;
  cursor:pointer;
}

.survey-match-radio-row input[type="radio"]{
  width:17px;
  height:17px;
  margin:0;
}

.survey-match.manual{
  background:#eaf2fd;
  color:#285fa9;
}


/* =========================================================
   v6.1 - 현장 체크인 결과 중앙 고정 오버레이
   ========================================================= */

/*
  기존 팝업은 viewport 상단(top:24px)에 떠서
  카메라 영역까지 스크롤한 모바일 사용자가 결과를 보려면
  다시 위로 올려야 했다.
  v6.1부터 전체 viewport 중앙에 고정한다.
*/
.checkin-result-popup{
  position:fixed !important;
  z-index:60050 !important;
  inset:0 !important;
  left:0 !important;
  top:0 !important;
  width:100% !important;
  height:100dvh !important;
  padding:20px !important;
  display:grid !important;
  place-items:center !important;
  transform:none !important;
  opacity:0;
  pointer-events:auto !important;
  background:rgba(15,18,24,.40);
  backdrop-filter:blur(5px);
  -webkit-backdrop-filter:blur(5px);
}

.checkin-result-popup[hidden]{
  display:none !important;
}

.checkin-result-popup.show{
  animation:checkinOverlayFadeIn .18s ease forwards !important;
}

.checkin-result-popup-card{
  width:min(480px,100%);
  min-height:150px;
  grid-template-columns:58px minmax(0,1fr) !important;
  gap:16px !important;
  padding:24px 50px 26px 22px !important;
  border-radius:26px !important;
  background:rgba(255,255,255,.985) !important;
  box-shadow:0 32px 100px rgba(10,15,25,.30) !important;
  transform:scale(.96);
  animation:checkinCardPop .20s ease forwards;
}

.checkin-result-popup-icon{
  width:58px !important;
  height:58px !important;
  border-radius:18px !important;
  font-size:28px !important;
}

.checkin-result-popup-copy strong{
  font-size:21px !important;
}

.checkin-result-popup-copy p{
  margin-top:7px !important;
  font-size:15px !important;
  font-weight:700;
  color:#525a64 !important;
}

.checkin-result-popup-close{
  width:34px !important;
  height:34px !important;
  right:12px !important;
  top:12px !important;
}

@keyframes checkinOverlayFadeIn{
  from{opacity:0}
  to{opacity:1}
}

@keyframes checkinCardPop{
  from{
    opacity:.6;
    transform:scale(.94);
  }
  to{
    opacity:1;
    transform:scale(1);
  }
}

@media(max-width:620px){
  .checkin-result-popup{
    inset:0 !important;
    top:0 !important;
    width:100% !important;
    height:100dvh !important;
    padding:16px !important;
  }

  .checkin-result-popup-card{
    width:min(420px,100%);
    grid-template-columns:52px minmax(0,1fr) !important;
    gap:13px !important;
    padding:21px 44px 23px 18px !important;
    border-radius:23px !important;
  }

  .checkin-result-popup-icon{
    width:52px !important;
    height:52px !important;
    border-radius:16px !important;
    font-size:25px !important;
  }

  .checkin-result-popup-copy strong{
    font-size:19px !important;
  }

  .checkin-result-popup-copy p{
    font-size:14px !important;
  }
}


/* =========================================================
   v6.2 - 행사 자동 스탭 / Android QR 다운로드
   ========================================================= */

.form-help{
  display:block;
  margin-top:6px;
  color:var(--muted);
  font-size:10px;
  font-weight:500;
  line-height:1.5;
}

.event-staff-card{
  margin-bottom:14px;
}

.event-staff-account-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;
}

.event-staff-account{
  display:grid;
  grid-template-columns:70px 1fr 1fr auto;
  align-items:center;
  gap:10px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:15px;
  background:#fafbfc;
}

.event-staff-account > span{
  font-size:10px;
  font-weight:800;
  color:#69717b;
}

.event-staff-account > div{
  display:grid;
  gap:2px;
}

.event-staff-account small{
  color:#8a9199;
  font-size:8px;
}

.event-staff-account b{
  font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;
  font-size:12px;
  letter-spacing:.04em;
}

.ticket-share-again{
  margin-top:8px;
}

@media(max-width:760px){
  .event-staff-account-grid{
    grid-template-columns:1fr;
  }

  .event-staff-account{
    grid-template-columns:62px 1fr 1fr;
  }

  .event-staff-account .status{
    grid-column:1/-1;
    justify-self:start;
  }
}

/* v6.6 */
.data-card .data-row{grid-template-columns:2fr 1fr 1.4fr .7fr .65fr .8fr 40px}
.participant-pagination{display:flex;align-items:center;justify-content:center;gap:6px;margin:16px 0 4px;flex-wrap:wrap}
.pagination-btn{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;padding:0 9px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);font-size:12px;font-weight:700;text-decoration:none}
.pagination-btn:hover{background:#f5f6f7}.pagination-btn.active{background:#1f2937;color:#fff;border-color:#1f2937}.pagination-ellipsis{padding:0 2px;color:var(--muted)}.pagination-count{margin-left:8px;color:var(--muted);font-size:11px;font-weight:700}
.survey-nonparticipant-table{min-width:520px}
.monitor-affiliation-combined .monitor-panel-title h3{font-size:20px}
.monitor-affiliation-table{font-size:14px}
.monitor-affiliation-table th{font-size:12px;font-weight:800}
.monitor-affiliation-table td{font-size:14px;font-weight:650}
.monitor-affiliation-table .affiliation-badge{font-size:12px;min-height:28px;padding:0 10px}
.monitor-affiliation-table .monitor-type-badge{font-size:11px;min-height:28px;padding:0 10px}
.monitor-activity-list{max-height:330px;overflow:auto}
@media(max-width:900px){.data-card .data-row{grid-template-columns:1.7fr 1fr 1fr}.data-card .data-row span:nth-child(3),.data-card .data-row span:nth-child(4),.data-card .data-row span:nth-child(5),.data-card .data-row span:nth-child(7){display:none}}
@media(max-width:620px){.data-card .data-row{grid-template-columns:1.6fr 1fr}.data-card .data-row span:nth-child(n+3){display:none}.monitor-affiliation-table{font-size:13px}.monitor-affiliation-table td{font-size:13px}}

/* v6.6 */
.data-card .data-row{grid-template-columns:2fr 1fr 1.4fr .7fr .65fr .8fr 40px}
.participant-pagination{display:flex;align-items:center;justify-content:center;gap:6px;margin:16px 0 4px;flex-wrap:wrap}
.pagination-btn{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;padding:0 9px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);font-size:12px;font-weight:700;text-decoration:none}
.pagination-btn:hover{background:#f5f6f7}.pagination-btn.active{background:#1f2937;color:#fff;border-color:#1f2937}.pagination-ellipsis{padding:0 2px;color:var(--muted)}.pagination-count{margin-left:8px;color:var(--muted);font-size:11px;font-weight:700}
.survey-nonparticipant-table{min-width:520px}
.monitor-affiliation-combined .monitor-panel-title h3{font-size:20px}
.monitor-affiliation-table{font-size:14px}
.monitor-affiliation-table th{font-size:12px;font-weight:800}
.monitor-affiliation-table td{font-size:14px;font-weight:650}
.monitor-affiliation-table .affiliation-badge{font-size:12px;min-height:28px;padding:0 10px}
.monitor-affiliation-table .monitor-type-badge{font-size:11px;min-height:28px;padding:0 10px}
.monitor-activity-list{max-height:330px;overflow:auto}
@media(max-width:900px){.data-card .data-row{grid-template-columns:1.7fr 1fr 1fr}.data-card .data-row span:nth-child(3),.data-card .data-row span:nth-child(4),.data-card .data-row span:nth-child(5),.data-card .data-row span:nth-child(7){display:none}}
@media(max-width:620px){.data-card .data-row{grid-template-columns:1.6fr 1fr}.data-card .data-row span:nth-child(n+3){display:none}.monitor-affiliation-table{font-size:13px}.monitor-affiliation-table td{font-size:13px}}


/* =========================================================
   v6.7 - 현장 체크인 운영 화면 재배치
   ========================================================= */

.checkin-action-grid-top{
  margin-top:14px;
  margin-bottom:14px;
}

.camera-only-row{
  justify-content:center;
}

.camera-only-row .camera-start-btn,
.camera-only-row .camera-stop-btn{
  min-width:180px;
}

.checkin-participant-count{
  display:flex;
  align-items:center;
  gap:4px;
  color:var(--muted);
  font-size:11px;
  white-space:nowrap;
}

.checkin-participant-count b{
  color:var(--text);
  font-size:13px;
}

.checkin-pagination{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:10px;
  margin-top:12px;
}

.checkin-pagination span{
  min-width:64px;
  color:var(--muted);
  font-size:11px;
  font-weight:800;
  text-align:center;
}

.checkin-pagination button:disabled{
  opacity:.35;
  cursor:not-allowed;
}

@media(max-width:720px){
  .checkin-action-grid-top{
    grid-template-columns:1fr;
  }

  .camera-only-row{
    align-items:stretch;
  }

  .camera-only-row .camera-start-btn,
  .camera-only-row .camera-stop-btn{
    width:100%;
  }

  .checkin-participant-panel .section-title{
    align-items:flex-start;
    gap:8px;
  }
}


/* =========================================================
   v6.8
   ========================================================= */

/* 수동 매칭은 자동 매칭과 명확하게 구분 */
.survey-match.manual{
  background:#f3e8ff !important;
  color:#6f3aa8 !important;
  border-color:#dcc4f4 !important;
}

/* 설문 결과 정렬 - 기존 th 카테고리 글자 크기를 그대로 사용 */
.survey-sort-btn{
  appearance:none;
  border:0;
  padding:0;
  margin:0;
  background:transparent;
  color:inherit;
  font:inherit;
  font-size:inherit;
  font-weight:inherit;
  cursor:pointer;
}

.survey-sort-btn::after{
  content:" ↕";
  opacity:.45;
  font-size:.9em;
}

.survey-sort-btn[data-direction="asc"]::after{
  content:" ↑";
  opacity:1;
}

.survey-sort-btn[data-direction="desc"]::after{
  content:" ↓";
  opacity:1;
}

.survey-match-search{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  margin-bottom:10px;
}

.survey-match-search-results{
  min-height:78px;
  max-height:360px;
  overflow-y:auto;
}

/* 작업 로그 검색/구분/50개 페이지 */
.admin-log-filter{
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  margin-bottom:12px;
}

.admin-log-filter-fields{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px;
}

.admin-log-filter-fields .input[type="search"]{
  width:min(320px,42vw);
}

.admin-log-filter-fields select.input{
  width:180px;
}

.admin-log-total{
  color:var(--muted);
  font-size:11px;
  font-weight:700;
}

.admin-pagination{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  margin-top:14px;
}

.admin-pagination > span{
  min-width:70px;
  color:var(--muted);
  font-size:11px;
  font-weight:800;
  text-align:center;
}

@media(max-width:620px){
  .survey-match-search{
    grid-template-columns:1fr;
  }

  .admin-log-filter{
    align-items:stretch;
    flex-direction:column;
  }

  .admin-log-filter-fields{
    display:grid;
    grid-template-columns:1fr 1fr;
  }

  .admin-log-filter-fields .input[type="search"]{
    width:100%;
    grid-column:1/-1;
  }

  .admin-log-filter-fields select.input{
    width:100%;
  }
}

/* =========================================================
   v6.9
   ========================================================= */

/* 미매칭 참가자 정보 박스와 검색 영역 간격 */
.survey-unmatched-match-form .survey-match-search{
  margin-top:18px;
}

/* 참석자 목록 정렬: 기존 카테고리 글자 크기/굵기 그대로 유지 */
.participant-sort-btn{
  appearance:none;
  border:0;
  padding:0;
  margin:0;
  background:transparent;
  color:inherit;
  font:inherit;
  font-size:inherit;
  font-weight:inherit;
  line-height:inherit;
  cursor:pointer;
  white-space:nowrap;
}
.participant-sort-btn::after{
  content:" ↕";
  opacity:.45;
  font-size:.9em;
}
.participant-sort-btn[data-direction="asc"]::after{
  content:" ↑";
  opacity:1;
}
.participant-sort-btn[data-direction="desc"]::after{
  content:" ↓";
  opacity:1;
}


/* =========================================================
   v7.1 신청자 + 열매 그룹 신청
   ========================================================= */

.group-application-form{
  display:grid;
  gap:14px;
}

.application-person-card{
  display:grid;
  gap:12px;
  padding:16px;
  border:1px solid var(--line);
  border-radius:18px;
  background:#fafbfc;
}

.application-person-title{
  font-size:14px;
  font-weight:900;
  color:var(--text);
}

.fruit-card{
  margin-top:10px;
}

.fruit-title-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
}

.fruit-remove-btn{
  border:0;
  padding:4px 7px;
  border-radius:8px;
  background:#fff0f0;
  color:#d64c4c;
  font-size:10px;
  font-weight:800;
  cursor:pointer;
}

.group-application-actions{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:10px;
  align-items:center;
}

.participant-v71-table{
  min-width:1160px;
}

.fruit-info-list{
  display:grid;
  gap:8px;
}

.fruit-info-row{
  display:grid;
  grid-template-columns:80px minmax(0,1fr) 70px;
  gap:10px;
  align-items:center;
  padding:11px 12px;
  border:1px solid var(--line);
  border-radius:13px;
  background:#fafbfc;
}

.fruit-info-row > span:last-child{
  font-variant-numeric:tabular-nums;
  text-align:right;
}

@media(max-width:620px){
  .group-application-actions{
    grid-template-columns:1fr 1fr;
  }

  .application-person-card{
    padding:14px;
  }
}


/* v7.7 dashboard ops board */
.today-event-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  justify-content:flex-end;
}
.today-ops-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
  margin-top:14px;
}
.today-session-list,
.today-recent-list{
  display:grid;
  gap:8px;
}
.today-session-row,
.today-recent-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 14px;
  border:1px solid var(--line);
  border-radius:14px;
  background:#fafbfc;
}
.today-session-row > div,
.today-recent-row > div{
  display:flex;
  align-items:center;
  gap:8px;
  min-width:0;
}
.today-session-row span{
  color:var(--muted);
  font-size:11px;
}
.today-session-row strong,
.today-recent-row strong{
  white-space:nowrap;
  font-size:12px;
}
.dashboard-upcoming-section{
  margin-top:14px;
}
@media(max-width:760px){
  .today-ops-grid{
    grid-template-columns:1fr;
  }
  .today-event-actions{
    justify-content:flex-start;
  }
}

.admin-log-total-actions{
  display:flex;
  align-items:center;
  gap:10px;
}

/* v7.9 - 오늘 행사 KPI 5개 한 줄 정렬 */
@media (min-width: 761px) and (max-width: 1180px){
  .today-event-summary{
    grid-template-columns:1fr;
  }
  .today-event-kpis{
    grid-template-columns:repeat(5,minmax(72px,1fr));
  }
  .today-event-actions{
    justify-content:flex-start;
  }
}
@media (max-width:760px){
  .today-event-summary{
    grid-template-columns:1fr;
  }
  .today-event-kpis{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .today-event-kpis > div:last-child{
    grid-column:auto;
  }
}

/* v7.10 dashboard action buttons */
.today-event-actions-vertical{
  display:flex;
  flex-direction:column;
  align-items:stretch;
  justify-content:center;
  min-width:110px;
}
.today-event-actions-vertical .link-btn{
  justify-content:center;
  width:100%;
}

/* v7.10 onsite registration */
.onsite-form-card{display:grid;gap:16px}
.onsite-person-card,.onsite-privacy-card{
  display:grid;gap:12px;padding:18px;border:1px solid var(--line);
  border-radius:18px;background:#fff;
}
.onsite-age-field{border:0;padding:0;margin:0}
.onsite-age-field legend{margin-bottom:8px;font-weight:800}
.onsite-age-options{display:flex;flex-wrap:wrap;gap:10px 16px}
.onsite-age-options label{display:flex;align-items:center;gap:5px}
.onsite-privacy-card p{white-space:pre-wrap;color:var(--muted);line-height:1.7}
.onsite-privacy-check{font-weight:800}
.my-registration-actions{display:flex;gap:8px;margin:10px 0}

/* v7.11 onsite redesign */
.onsite-public-shell{max-width:720px;margin:0 auto;padding:28px 18px 48px;background:linear-gradient(180deg,#f8f8f8 0,#fff 180px)}
.onsite-public-shell .survey-public-head{text-align:center;margin-bottom:20px}
.onsite-form-card{padding:0;background:transparent;box-shadow:none;border:0}
.onsite-person-card,.onsite-privacy-card{padding:22px;border-radius:22px;border:1px solid #e7e7e7;background:#fff;box-shadow:0 8px 28px rgba(0,0,0,.05)}
.onsite-person-card .application-person-title{font-size:20px;margin-bottom:4px}
.onsite-age-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.onsite-age-options label{padding:12px 14px;border:1px solid #e4e4e4;border-radius:12px;background:#fafafa}
.onsite-form-card input[type=number]{font-size:18px;letter-spacing:3px}
.onsite-error-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:#f6f7f9}
.onsite-error-card{width:min(460px,100%);padding:40px 28px;text-align:center;background:#fff;border:1px solid #e4e7eb;border-radius:18px;box-shadow:0 12px 36px rgba(0,0,0,.08)}
.onsite-error-code{width:54px;height:54px;margin:0 auto 18px;display:grid;place-items:center;border-radius:50%;border:2px solid #8b9198;font-size:28px;font-weight:900}
.onsite-error-card h1{font-size:22px;margin:0 0 12px}.onsite-error-card p{color:#60656c;line-height:1.6}.onsite-error-card small{display:block;margin-top:18px;color:#8a9096}
.fruit-affiliation-inline{display:flex;gap:6px;align-items:center}.fruit-affiliation-inline .input{min-width:110px}
@media(max-width:520px){.onsite-public-shell{padding:18px 12px 36px}.onsite-person-card,.onsite-privacy-card{padding:18px}.onsite-age-options{grid-template-columns:1fr 1fr}}


/* =========================================================
   v7.12 작업 로그 필터 컴팩트
   ========================================================= */
.admin-log-filter-fields{
  flex-wrap:nowrap;
}
.admin-log-filter-fields .input[type="search"]{
  width:220px;
  flex:0 0 220px;
}
.admin-log-filter-fields .input[type="date"]{
  width:132px;
  min-width:132px;
  flex:0 0 132px;
  padding:9px 10px;
  font-size:12px;
}
.admin-log-filter-fields select.input{
  width:150px;
  min-width:150px;
  flex:0 0 150px;
}
.admin-log-filter-fields .primary-btn,
.admin-log-filter-fields .soft-btn{
  padding:10px 14px;
  min-width:0;
  white-space:nowrap;
}
.admin-log-total{
  white-space:nowrap;
}
@media(max-width:900px){
  .admin-log-filter-fields{
    flex-wrap:wrap;
  }
}
@media(max-width:620px){
  .admin-log-filter-fields .input[type="date"],
  .admin-log-filter-fields select.input{
    width:100%;
    min-width:0;
    flex:1 1 100%;
  }
}


/* =========================================================
   v7.13 - 현장 열매 소속 편집 / 정렬 / 현장접수 완료 팝업
   ========================================================= */

.fruit-info-row-editable{
  grid-template-columns:minmax(178px,205px) minmax(0,1fr) 58px;
}

.fruit-affiliation-inline{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:6px;
  align-items:center;
  width:100%;
  min-width:0;
}

.fruit-affiliation-select-shell{
  width:100%;
  min-width:0;
}

.fruit-affiliation-inline .pretty-select{
  width:100%;
  min-width:0;
  height:36px;
  padding:7px 30px 7px 10px;
  font-size:11px;
}

.fruit-affiliation-inline .primary-btn{
  height:36px;
  padding:0 10px;
  font-size:10px;
  white-space:nowrap;
}

/* 정렬 버튼은 기존 th의 글자 크기/굵기를 그대로 상속 */
.participant-sort-btn,
.checkin-participant-sort-btn{
  appearance:none;
  border:0;
  background:transparent;
  color:inherit;
  font:inherit;
  font-size:inherit;
  font-weight:inherit;
  line-height:inherit;
  padding:0;
  margin:0;
  cursor:pointer;
  white-space:nowrap;
}

.participant-sort-btn::after,
.checkin-participant-sort-btn::after{
  content:"";
  display:inline-block;
  width:0;
  height:0;
  margin-left:4px;
  vertical-align:middle;
}

.participant-sort-btn[data-direction="asc"]::after,
.checkin-participant-sort-btn[data-direction="asc"]::after{
  border-left:3px solid transparent;
  border-right:3px solid transparent;
  border-bottom:5px solid currentColor;
}

.participant-sort-btn[data-direction="desc"]::after,
.checkin-participant-sort-btn[data-direction="desc"]::after{
  border-left:3px solid transparent;
  border-right:3px solid transparent;
  border-top:5px solid currentColor;
}

/* 현장 접수 완료: 현재 입력 화면 위에 10초 팝업 */
.onsite-complete-popup{
  position:fixed;
  inset:0;
  z-index:3000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:20px;
  background:rgba(20,24,32,.34);
  backdrop-filter:blur(7px);
  opacity:1;
  transition:opacity .25s ease;
}

.onsite-complete-popup.hide{
  opacity:0;
  pointer-events:none;
}

.onsite-complete-popup-card{
  position:relative;
  width:min(420px,100%);
  overflow:hidden;
  text-align:center;
  padding:30px 24px 24px;
  border:1px solid var(--line);
  border-radius:26px;
  background:#fff;
  box-shadow:0 24px 70px rgba(22,30,42,.22);
}

.onsite-complete-popup-icon{
  display:grid;
  place-items:center;
  width:52px;
  height:52px;
  margin:0 auto 14px;
  border-radius:50%;
  background:#edf8f2;
  font-size:25px;
  font-weight:900;
}

.onsite-complete-popup-card h3{
  margin:6px 0 7px;
}

.onsite-complete-popup-card p{
  margin:0;
  color:var(--muted);
}

.onsite-complete-popup-timer{
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:4px;
  background:#eef0f3;
}

.onsite-complete-popup-timer span{
  display:block;
  height:100%;
  background:#17191d;
  animation:onsiteCompleteTimer 10s linear forwards;
}

@keyframes onsiteCompleteTimer{
  from{width:100%}
  to{width:0}
}

@media(max-width:620px){
  .fruit-info-row-editable{
    grid-template-columns:minmax(155px,180px) minmax(0,1fr) 50px;
    gap:7px;
  }

  .fruit-affiliation-inline{
    gap:4px;
  }

  .fruit-affiliation-inline .primary-btn{
    padding:0 8px;
  }
}


/* v7.15 내 신청내역 버튼 */
.my-registration-actions-qr{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}
.my-registration-actions-qr > a,
.my-registration-actions-qr > form,
.my-registration-actions-qr > form > button{
  width:100%;
}
@media(max-width:420px){
  .my-registration-actions-qr{
    grid-template-columns:1fr 1fr;
  }
}


/* =========================================================
   v7.16 행사 등록 기간 시간(시:분)
   - 기존 date-wrap 크기/스타일은 그대로 유지
   ========================================================= */
.registration-time-row{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  margin-top:7px;
  min-height:34px;
}
.registration-time-row > small{
  color:var(--muted);
  font-size:11px;
  font-weight:600;
}
.registration-time-wrap{
  display:flex;
  align-items:center;
  width:104px;
  min-width:104px;
  height:34px;
  border:1px solid var(--line);
  background:rgba(255,255,255,.8);
  border-radius:11px;
  padding:0 9px;
}
.registration-time-wrap input[type="time"]{
  display:block;
  width:100%;
  min-width:0;
  border:0;
  outline:0;
  background:transparent;
  padding:0;
  font-size:12px;
  font:inherit;
}
@media(max-width:760px){
  .registration-time-row{
    justify-content:flex-end;
  }
}


/* =========================================================
   v7.17 등록 시작/종료 날짜 + 시간 1:1
   ========================================================= */
.registration-datetime-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:8px;
  width:100%;
  min-width:0;
}

.registration-datetime-row .registration-date-half,
.registration-datetime-row .registration-time-half{
  width:100%;
  min-width:0;
  box-sizing:border-box;
}

/* 날짜 입력은 기존 date-wrap 높이/모양 유지 */
.registration-datetime-row .date-wrap{
  margin:0;
}

/* 시간 입력도 날짜 박스와 동일한 높이와 외형 */
.registration-datetime-row .registration-time-wrap{
  display:flex;
  align-items:center;
  width:100%;
  min-width:0;
  height:auto;
  min-height:0;
  border:1px solid var(--line);
  background:rgba(255,255,255,.8);
  border-radius:14px;
  padding:12px 14px;
  box-sizing:border-box;
}

.registration-datetime-row .registration-time-wrap input[type="time"]{
  display:block;
  width:100%;
  min-width:0;
  border:0;
  background:transparent;
  padding:0;
  outline:none;
  font:inherit;
}

/* v7.16 아래줄 시간 UI는 사용하지 않음 */
.registration-time-row{
  display:none;
}

@media(max-width:520px){
  .registration-datetime-row{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    gap:6px;
  }
}

/* v7.18: GET 로그아웃 제거 후 버튼 외형 유지 */
.logout-form{margin:0;padding:0;}
.logout-button{font:inherit;cursor:pointer;}
.sidebar-logout.logout-button{width:100%;border:0;text-align:left;}
.forced-logout.logout-button{border:0;background:transparent;}


/* v7.19 - 관리자 사이드바 로그아웃 버튼 CSS 복원 */
.sidebar-footer > .logout-form{flex:0 0 auto;display:flex;align-items:center;margin:0 0 0 auto;padding:0;}
.sidebar-footer .sidebar-logout.logout-button{display:inline-flex;align-items:center;justify-content:center;width:auto;min-width:0;height:auto;margin:0;padding:5px 7px;border:0;border-radius:8px;background:transparent;box-shadow:none;color:var(--muted);font-family:inherit;font-size:11px;font-weight:600;line-height:1.2;text-align:center;text-decoration:none;white-space:nowrap;appearance:none;-webkit-appearance:none;cursor:pointer;}
.sidebar-footer .sidebar-logout.logout-button:hover{background:rgba(17,24,39,.045);color:var(--text);}
.sidebar-footer .sidebar-logout.logout-button:focus-visible{outline:2px solid rgba(17,24,39,.18);outline-offset:2px;}
@media(max-width:900px) and (min-width:621px){.sidebar-footer > .logout-form{display:none;}}

/* v7.20 참석자 관리: 신청 시간 추가 + 한 줄 유지 */
.participant-v71-table{min-width:1240px;table-layout:auto}
.participant-v71-table th,.participant-v71-table td{padding-left:7px;padding-right:7px}
.participant-v71-table th:nth-child(3),.participant-v71-table td:nth-child(3){width:76px}
.participant-v71-table th:nth-child(4),.participant-v71-table td:nth-child(4){width:72px}
.participant-v71-table th:nth-child(5),.participant-v71-table td:nth-child(5){width:76px}
.participant-v71-table th:nth-child(6),.participant-v71-table td:nth-child(6){width:86px}
.participant-v71-table th:nth-child(7),.participant-v71-table td:nth-child(7){width:64px}
.participant-v71-table th:nth-child(8),.participant-v71-table td:nth-child(8){width:118px}
.participant-v71-table th:nth-child(9),.participant-v71-table td:nth-child(9){width:118px}
.participant-v71-table .registration-created-at{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}


/* =========================================================
   v7.21 - 참석자 관리 표 반응형 / 상태 축소 / QR 중앙정렬
   ========================================================= */
.participants-table{
  width:100%;
  table-layout:auto;
}

.participants-table th,
.participants-table td{
  vertical-align:middle;
  white-space:nowrap;
}

/* 1열 상태: 필요한 폭만 사용 */
.participants-table th:nth-child(1),
.participants-table td:nth-child(1){
  width:1%;
  min-width:68px;
  padding-left:7px;
  padding-right:7px;
}

/* QR 발급: 중앙 정렬 */
.participants-table th:nth-child(9),
.participants-table td:nth-child(9){
  text-align:center;
}

/* 넓은 화면에서는 표가 컨테이너 폭에 자연스럽게 맞도록 */
@media (min-width:1101px){
  .participants-table{
    width:100%;
  }
}

/* 태블릿/모바일: 컬럼을 억지로 찌그러뜨리지 않고 가로 스크롤 */
@media (max-width:1100px){
  .participants-table{
    width:max-content;
    min-width:100%;
  }

  .participants-table th,
  .participants-table td{
    white-space:nowrap;
  }
}


/* =========================================================
   v7.22 - 참석자 관리 상태/QR 열 정확한 위치 보정
   1열=선택박스, 2열=상태, 10열=QR 발급
   ========================================================= */

/* 체크박스 열 */
.participants-table th:nth-child(1),
.participants-table td:nth-child(1){
  width:34px;
  min-width:34px;
  max-width:34px;
  padding-left:5px;
  padding-right:5px;
  text-align:center;
}

/* 상태 열: 폭 + 배지 자체 크기 축소 */
.participants-table th:nth-child(2),
.participants-table td:nth-child(2){
  width:64px;
  min-width:64px;
  max-width:72px;
  padding-left:4px;
  padding-right:4px;
  text-align:center;
}

.participants-table td:nth-child(2) .status{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:0;
  width:auto;
  padding:4px 7px;
  border-radius:999px;
  font-size:10px;
  line-height:1.1;
  white-space:nowrap;
}

/* QR 발급 / QR 보기 열: 제목과 버튼 모두 완전 중앙 정렬 */
.participants-table th:nth-child(10),
.participants-table td:nth-child(10){
  width:76px;
  min-width:76px;
  text-align:center !important;
  padding-left:4px;
  padding-right:4px;
}

.participants-table td:nth-child(10) > a,
.participants-table td:nth-child(10) > button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-left:auto;
  margin-right:auto;
}

/* v7.21에서 잘못 잡았던 9열(신청시간) 중앙정렬 해제 */
.participants-table th:nth-child(9),
.participants-table td:nth-child(9){
  text-align:left;
}


/* =========================================================
   v7.22 compact patch - 참석자 관리 표 우측 불필요 여백 제거
   ========================================================= */

/* 테이블이 컨테이너 전체 폭을 억지로 채우지 않도록 변경 */
.participants-table{
  width:max-content !important;
  min-width:0 !important;
  table-layout:auto !important;
}

/* 각 열은 내용에 맞는 폭만 사용 */
.participants-table th,
.participants-table td{
  width:auto;
}

/* 상태 열 */
.participants-table th:nth-child(2),
.participants-table td:nth-child(2){
  width:58px !important;
  min-width:58px !important;
  max-width:64px !important;
}

/* QR 열 */
.participants-table th:nth-child(10),
.participants-table td:nth-child(10){
  width:72px !important;
  min-width:72px !important;
  max-width:78px !important;
  text-align:center !important;
}

/* 관리 열도 버튼 크기에 맞춤 */
.participants-table th:nth-child(11),
.participants-table td:nth-child(11){
  width:92px !important;
  min-width:92px !important;
  max-width:104px !important;
  padding-left:5px;
  padding-right:5px;
}

/* 테이블 래퍼는 필요한 경우에만 가로 스크롤 */
.compact-table-wrap{
  overflow-x:auto;
}

/* 데스크톱에서도 100% 강제 확장 방지 */
@media (min-width:1101px){
  .participants-table{
    width:max-content !important;
    min-width:0 !important;
  }
}

/* 모바일은 최소 화면 폭 확보 후 스크롤 */
@media (max-width:1100px){
  .participants-table{
    width:max-content !important;
    min-width:100% !important;
  }
}


/* =========================================================
   v7.23 - 참석자 관리 표 최종 폭 재정렬
   전체 표는 카드 폭 100% 유지, 각 항목만 균형 배분
   ========================================================= */

.participants-table{
  width:100% !important;
  min-width:100% !important;
  table-layout:fixed !important;
}

/* 전체 컬럼 폭 */
.participants-table .col-select{width:3.5%}
.participants-table .col-status{width:7%}
.participants-table .col-telegram{width:9%}
.participants-table .col-affiliation{width:8%}
.participants-table .col-name{width:8%}
.participants-table .col-phone{width:9%}
.participants-table .col-fruit{width:7%}
.participants-table .col-session{width:13%}
.participants-table .col-created{width:14%}
.participants-table .col-qr{width:9%}
.participants-table .col-manage{width:12.5%}

.participants-table th,
.participants-table td{
  width:auto !important;
  min-width:0 !important;
  max-width:none !important;
  padding-left:7px;
  padding-right:7px;
  vertical-align:middle;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* 선택 */
.participants-table th:nth-child(1),
.participants-table td:nth-child(1){
  text-align:center;
  padding-left:4px;
  padding-right:4px;
}

/* 상태 - 작게 */
.participants-table th:nth-child(2),
.participants-table td:nth-child(2){
  text-align:center;
  padding-left:3px;
  padding-right:3px;
}

.participants-table td:nth-child(2) .status{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:auto;
  min-width:0;
  padding:3px 6px;
  border-radius:999px;
  font-size:9px;
  line-height:1.15;
  white-space:nowrap;
}

/* 신청자 ID / 소속 / 이름 / 연락처 / 열매 */
.participants-table th:nth-child(3),
.participants-table td:nth-child(3),
.participants-table th:nth-child(4),
.participants-table td:nth-child(4),
.participants-table th:nth-child(5),
.participants-table td:nth-child(5),
.participants-table th:nth-child(6),
.participants-table td:nth-child(6),
.participants-table th:nth-child(7),
.participants-table td:nth-child(7){
  text-align:center;
}

/* 회차는 좌측 */
.participants-table th:nth-child(8),
.participants-table td:nth-child(8){
  text-align:left;
}

/* 신청시간 */
.participants-table th:nth-child(9),
.participants-table td:nth-child(9){
  text-align:center;
  font-variant-numeric:tabular-nums;
}

/* QR 발급 완전 중앙 */
.participants-table th:nth-child(10),
.participants-table td:nth-child(10){
  text-align:center !important;
  padding-left:4px;
  padding-right:4px;
}

.participants-table td:nth-child(10) > a,
.participants-table td:nth-child(10) > button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin:0 auto;
}

/* 관리 */
.participants-table th:nth-child(11),
.participants-table td:nth-child(11){
  text-align:center;
  padding-left:4px;
  padding-right:4px;
  overflow:visible;
}

.participants-table td:nth-child(11) .row-actions{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:5px;
  flex-wrap:nowrap;
}

/* 넓은 화면: 카드 폭 꽉 채움 */
@media (min-width:1101px){
  .participants-table{
    width:100% !important;
    min-width:100% !important;
  }
}

/* 태블릿/모바일: 읽기 편하게 최소폭 확보 */
@media (max-width:1100px){
  .compact-table-wrap{
    overflow-x:auto;
  }

  .participants-table{
    width:1180px !important;
    min-width:1180px !important;
  }
}

/* v7.24 survey response time */
.survey-result-table-v724{width:100%;table-layout:fixed}
.survey-result-table-v724 th,
.survey-result-table-v724 td{
  padding-left:6px;padding-right:6px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;vertical-align:middle;
}
.survey-result-table-v724 .survey-response-time{
  font-size:11px;text-align:center;font-variant-numeric:tabular-nums;
}
@media(max-width:1000px){
  .survey-result-table-v724{min-width:950px}
}

/* v7.26 */
.survey-result-table-v726{width:100%;table-layout:fixed}
.survey-result-table-v726 th,.survey-result-table-v726 td{
  padding-left:5px;padding-right:5px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;vertical-align:middle;
}
.survey-result-table-v726 th:nth-child(4),
.survey-result-table-v726 td:nth-child(4){padding-right:2px}
.survey-result-table-v726 th:nth-child(5),
.survey-result-table-v726 td:nth-child(5){padding-left:2px}
.survey-result-table-v726 th.survey-response-time-head,
.survey-result-table-v726 td.survey-response-time,
.survey-result-table-v726 th.survey-checkin-time-head,
.survey-result-table-v726 td.survey-checkin-time{text-align:center!important}
.survey-result-table-v726 th.survey-response-time-head .survey-sort-btn,
.survey-result-table-v726 th.survey-checkin-time-head .survey-sort-btn{
  display:flex;align-items:center;justify-content:center;width:100%;
  margin:0;padding:0;white-space:nowrap;
}
.survey-result-table-v726 td.survey-response-time,
.survey-result-table-v726 td.survey-checkin-time{
  font-size:11px;font-variant-numeric:tabular-nums;
}
.survey-result-multi-answer{display:grid;gap:5px}
.survey-result-multi-answer span{display:block;line-height:1.55}
@media(max-width:1000px){.survey-result-table-v726{min-width:950px}}


/* =========================================================
   v7.29
   ========================================================= */

/* 사용자취소와 관리자취소 색상 분리 */
.status.user-cancelled{
  background:#f4eadf !important;
  color:#87572f !important;
  border-color:#dfc5a9 !important;
}

/* 내 신청내역 버튼: 글자 길이에 맞는 컴팩트 폭 */
.my-registration-actions,
.my-registration-actions-qr{
  display:flex !important;
  align-items:center;
  justify-content:flex-start;
  flex-wrap:wrap;
  gap:7px;
}

.my-registration-actions > a,
.my-registration-actions > form,
.my-registration-actions-qr > a,
.my-registration-actions-qr > form{
  width:auto !important;
  flex:0 0 auto !important;
}

.my-registration-actions > a,
.my-registration-actions > form > button,
.my-registration-actions-qr > a,
.my-registration-actions-qr > form > button{
  width:auto !important;
  min-width:0 !important;
  padding:9px 12px !important;
  white-space:nowrap;
}

/* 참석자 수정 팝업 */
.participant-edit-modal{
  width:min(720px,calc(100% - 24px)) !important;
  max-height:88vh;
  overflow-y:auto;
}

.participant-edit-person,
.participant-edit-fruits{
  display:grid;
  gap:10px;
  padding:14px;
  border:1px solid var(--line);
  border-radius:16px;
  background:rgba(255,255,255,.72);
}

.participant-edit-fruit-row{
  display:grid;
  grid-template-columns:1fr 1fr 120px;
  gap:8px;
  align-items:center;
}

@media(max-width:620px){
  .participant-edit-fruit-row{
    grid-template-columns:1fr;
  }

  .participant-edit-modal .form-grid.three{
    grid-template-columns:1fr;
  }
}


/* =========================================================
   v7.30 - 참석자 수정 = 참가 신청 화면 디자인
   ========================================================= */
.participant-edit-application-modal{
  width:min(620px,calc(100% - 20px)) !important;
  max-height:92vh;
  overflow-y:auto;
  padding:22px !important;
}

.participant-edit-application-form{
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
  background:transparent !important;
  box-shadow:none !important;
}

/* 신청 화면과 동일한 카드 간격 */
.participant-edit-application-form .application-person-card{
  margin-top:14px;
}

.participant-edit-application-form .edit-fruit-list{
  display:grid;
  gap:14px;
}

/* 기존 v7.29 3열 수정폼 스타일 무효화 */
.participant-edit-application-form .participant-edit-person,
.participant-edit-application-form .participant-edit-fruits,
.participant-edit-application-form .participant-edit-fruit-row{
  display:initial;
}

/* 참가 신청 화면과 동일하게 하단 +추가 / 저장 2분할 */
.participant-edit-application-form .group-application-actions{
  margin-top:14px;
}

@media(max-width:620px){
  .participant-edit-application-modal{
    width:calc(100% - 12px) !important;
    max-height:94vh;
    padding:18px !important;
    border-radius:24px !important;
  }
}


/* =========================================================
   v7.31 - 참석자 수정 하단 버튼 컴팩트화
   ========================================================= */
.participant-edit-application-form .group-application-actions{
  display:flex !important;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
}

.participant-edit-application-form .group-application-actions > button{
  width:auto !important;
  min-width:0 !important;
  flex:0 0 auto !important;
  padding-left:14px !important;
  padding-right:14px !important;
  white-space:nowrap;
}

.participant-edit-application-form .edit-add-fruit-button{
  margin-right:auto;
}

/* v7.32 */
#onsiteCompanionList{display:grid;gap:16px}
.onsite-person-actions{display:flex;justify-content:flex-start}
.onsite-person-actions>button{width:auto;min-width:0;padding-left:14px;padding-right:14px}
.onsite-companion-card .fruit-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.onsite-companion-card .onsite-person-remove{width:auto;min-width:0;flex:0 0 auto}
.my-registration-actions-qr{display:flex!important;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:7px}


/* =========================================================
   v7.33 - 참석자 목록 나이대 컬럼 포함 12열 재배치
   ========================================================= */
.participants-table .col-select{width:3%}
.participants-table .col-status{width:6%}
.participants-table .col-telegram{width:8%}
.participants-table .col-affiliation{width:7%}
.participants-table .col-name{width:7%}
.participants-table .col-age{width:6%}
.participants-table .col-phone{width:8%}
.participants-table .col-fruit{width:6%}
.participants-table .col-session{width:12%}
.participants-table .col-created{width:13%}
.participants-table .col-qr{width:8%}
.participants-table .col-manage{width:16%}

/* 나이대 */
.participants-table th:nth-child(6),
.participants-table td:nth-child(6){
  text-align:center;
}

/* 연락처/열매 중앙 */
.participants-table th:nth-child(7),
.participants-table td:nth-child(7),
.participants-table th:nth-child(8),
.participants-table td:nth-child(8){
  text-align:center;
}

/* 신청 회차 */
.participants-table th:nth-child(9),
.participants-table td:nth-child(9){
  text-align:left;
}

/* 신청 시간 */
.participants-table th:nth-child(10),
.participants-table td:nth-child(10){
  text-align:center;
  font-variant-numeric:tabular-nums;
}

/* QR */
.participants-table th:nth-child(11),
.participants-table td:nth-child(11){
  text-align:center !important;
}
.participants-table td:nth-child(11) > a,
.participants-table td:nth-child(11) > button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin:0 auto;
}

/* 관리 */
.participants-table th:nth-child(12),
.participants-table td:nth-child(12){
  text-align:center;
  overflow:visible;
}


/* =========================================================
   v7.34 - 열매 정보 팝업 나이대 표시
   ========================================================= */
.fruit-age-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:54px;
  padding:6px 9px;
  border:1px solid var(--line);
  border-radius:999px;
  background:rgba(255,255,255,.82);
  color:var(--text);
  font-size:12px;
  font-weight:700;
  white-space:nowrap;
}

.fruit-affiliation-inline{
  display:flex;
  align-items:center;
  gap:7px;
  flex-wrap:nowrap;
}

@media(max-width:620px){
  .fruit-affiliation-inline{
    flex-wrap:wrap;
  }
}
\n\n/* =========================================================\n   v7.35\n   ========================================================= */\n.fruit-info-modal{width:max-content!important;min-width:360px!important;max-width:calc(100vw - 24px)!important}\n.fruit-info-modal .fruit-info-list{display:grid;gap:8px}\n.fruit-info-modal .fruit-info-row,.fruit-info-modal .fruit-info-row-editable{display:flex!important;grid-template-columns:none!important;align-items:center;justify-content:flex-start;gap:8px;width:auto;min-width:0;padding:9px 10px}\n.fruit-info-modal .fruit-affiliation-inline{display:flex!important;grid-template-columns:none!important;align-items:center;flex:0 0 auto;width:auto!important;min-width:0;gap:6px}\n.fruit-info-modal .fruit-affiliation-select-shell{width:108px!important;min-width:108px!important;flex:0 0 108px}\n.fruit-info-modal .fruit-age-badge{min-width:58px;padding:6px 8px;flex:0 0 auto}\n.fruit-info-modal .fruit-info-row>b,.fruit-info-modal .fruit-info-row>span{flex:0 0 auto;white-space:nowrap}\n.fruit-info-modal .fruit-info-row>span:last-child{margin-left:2px;text-align:left}\n.participant-list-title{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}\n.participant-list-title small,.participant-list-inline-count{color:var(--muted);font-size:11px;font-weight:600}\n@media(max-width:520px){.fruit-info-modal{width:calc(100vw - 20px)!important;min-width:0!important}.fruit-info-modal .fruit-info-row,.fruit-info-modal .fruit-info-row-editable{flex-wrap:wrap}}\n

/* =========================================================
   v8.1 - 현장 열매 실제 소속 / 대시보드 2중 도넛
   ========================================================= */
.onsite-fruit-affiliation-field[hidden]{
  display:none !important;
}

.dashboard-double-donut-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px;
  align-items:start;
  min-height:190px;
}

.dashboard-type-donut-item{
  display:grid;
  justify-items:center;
  align-content:start;
  gap:9px;
  min-width:0;
}

.dashboard-type-label{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:54px;
  padding:5px 10px;
  border:1px solid #e4e7eb;
  border-radius:999px;
  background:#f7f8fa;
  color:#555d66;
  font-size:10px;
  font-weight:800;
}

.dashboard-donut-small{
  width:118px;
  height:118px;
}

.dashboard-donut-small::after{
  inset:13px;
}

.dashboard-donut-small .dashboard-donut-center b{
  font-size:20px;
}

.dashboard-donut-copy-center{
  justify-items:center;
  text-align:center;
}

.dashboard-donut-copy-center strong{
  font-size:13px;
}

@media(max-width:760px){
  .dashboard-double-donut-grid{
    gap:10px;
  }

  .dashboard-donut-small{
    width:105px;
    height:105px;
  }

  .dashboard-donut-small::after{
    inset:12px;
  }
}

@media(max-width:420px){
  .dashboard-double-donut-grid{
    grid-template-columns:1fr 1fr;
  }

  .dashboard-donut-small{
    width:92px;
    height:92px;
  }

  .dashboard-donut-small .dashboard-donut-center b{
    font-size:16px;
  }
}


/* =========================================================
   v8.2 - 열매 정보 compact / 현장 접수 토스트
   ========================================================= */

/* 열매 팝업은 필요한 폭만 사용 */
.fruit-info-modal{
  width:auto !important;
  min-width:0 !important;
  max-width:min(560px,calc(100vw - 24px)) !important;
}

.fruit-info-modal .fruit-info-list{
  width:max-content;
  max-width:100%;
}

.fruit-info-modal .fruit-info-row{
  display:flex !important;
  align-items:center;
  justify-content:flex-start;
  gap:8px;
  width:max-content;
  max-width:100%;
  min-width:0;
  padding:9px 10px;
}

.fruit-info-modal .fruit-info-row:not(.fruit-info-row-editable){
  flex-wrap:nowrap;
}

.fruit-person-compact{
  display:inline-flex;
  align-items:center;
  gap:2px;
  min-width:0;
  white-space:nowrap;
  font-size:12px;
}

.fruit-person-compact b{
  font-size:12px;
}

.fruit-inline-age{
  color:#5f6670;
  font-size:11px;
  font-weight:700;
}

.fruit-slash{
  margin:0 3px;
  color:#a0a6ad;
}

.fruit-phone{
  font-variant-numeric:tabular-nums;
  font-size:12px;
}

.fruit-info-modal .fruit-affiliation-inline{
  display:flex !important;
  align-items:center;
  justify-content:flex-start;
  flex-wrap:nowrap;
  width:max-content !important;
  max-width:100%;
  gap:7px;
}

.fruit-info-modal .fruit-affiliation-select-shell{
  width:150px !important;
  min-width:150px !important;
  flex:0 0 150px;
}

.fruit-info-modal .fruit-affiliation-inline .primary-btn{
  flex:0 0 auto;
}

/* 열매 선택 전에는 추가 소속 필드를 절대 표시하지 않음 */
.onsite-fruit-affiliation-field[hidden]{
  display:none !important;
}

/* 현장 접수 완료: 중앙 모달 대신 상단 임시 토스트 */
.onsite-complete-toast{
  position:fixed;
  z-index:4000;
  top:max(14px,env(safe-area-inset-top));
  left:50%;
  transform:translateX(-50%);
  display:flex;
  align-items:center;
  gap:8px;
  width:max-content;
  max-width:calc(100vw - 24px);
  padding:10px 14px;
  border:1px solid #dfe5e2;
  border-radius:12px;
  background:rgba(255,255,255,.97);
  box-shadow:0 8px 24px rgba(20,28,24,.12);
  color:#202722;
  font-size:12px;
  opacity:1;
  transition:opacity .2s ease,transform .2s ease;
}

.onsite-complete-toast.hide{
  opacity:0;
  transform:translate(-50%,-8px);
  pointer-events:none;
}

.onsite-complete-toast-icon{
  display:inline-grid;
  place-items:center;
  width:20px;
  height:20px;
  flex:0 0 20px;
  border-radius:50%;
  background:#eaf7ef;
  color:#257348;
  font-size:12px;
  font-weight:900;
}

@media(max-width:520px){
  .fruit-info-modal{
    width:calc(100vw - 20px) !important;
  }

  .fruit-info-modal .fruit-info-list,
  .fruit-info-modal .fruit-info-row,
  .fruit-info-modal .fruit-affiliation-inline{
    width:100% !important;
  }

  .fruit-info-modal .fruit-info-row,
  .fruit-info-modal .fruit-affiliation-inline{
    flex-wrap:wrap;
  }

  .fruit-info-modal .fruit-affiliation-select-shell{
    width:132px !important;
    min-width:132px !important;
    flex-basis:132px;
  }
}


/* =========================================================
   v8.3 - 설문 결과 검색/매칭필터 + 구분 컬럼 여백
   ========================================================= */
.survey-results-filter-bar{
  display:flex;
  align-items:center;
  gap:8px;
  margin:0 0 12px;
  flex-wrap:wrap;
}

.survey-results-filter-bar .survey-results-search{
  width:260px;
  min-width:220px;
}

.survey-results-match-select-shell{
  width:170px;
  min-width:170px;
}

.survey-results-filter-bar > button{
  width:auto;
  min-width:0;
  flex:0 0 auto;
}

/* 구분 헤더/값이 표 왼쪽 경계에 너무 붙지 않도록 여백 추가 */
.survey-result-table-v726 th:first-child,
.survey-result-table-v726 td:first-child{
  padding-left:14px !important;
  padding-right:8px !important;
}

/* 헤더의 정렬 버튼도 왼쪽 여백을 그대로 사용 */
.survey-result-table-v726 th:first-child .survey-sort-btn{
  margin-left:0;
}

@media(max-width:620px){
  .survey-results-filter-bar{
    display:grid;
    grid-template-columns:1fr 150px auto;
  }

  .survey-results-filter-bar .survey-results-search,
  .survey-results-match-select-shell{
    width:100%;
    min-width:0;
  }
}


/* =========================================================
   v8.4 - 현장 접수 추천인 선택 입력
   ========================================================= */
.onsite-optional-label{
  margin-left:5px;
  color:#939aa3;
  font-size:10px;
  font-weight:700;
}

.onsite-optional-help{
  margin:8px 2px 12px;
  color:#7c838c;
  font-size:11px;
  line-height:1.5;
}


/* =========================================================
   v8.5 - 설문 결과 상단 한 줄 / 삭제 순서 UI
   ========================================================= */
.survey-results-selected-title{
  display:flex;
  align-items:center;
  gap:9px;
  margin:0 0 12px;
}

.survey-results-selected-title h2{
  margin:0;
}

.survey-results-command-bar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  width:100%;
  margin:0 0 12px;
}

.survey-results-filter-inline{
  display:flex;
  align-items:center;
  gap:8px;
  margin:0 !important;
  flex:0 1 auto;
  flex-wrap:nowrap;
}

.survey-results-command-actions{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  margin-left:auto;
  flex:0 0 auto;
  flex-wrap:nowrap;
}

.survey-results-command-actions > *{
  white-space:nowrap;
}

@media(max-width:1050px){
  .survey-results-command-bar{
    overflow-x:auto;
    padding-bottom:3px;
  }

  .survey-results-filter-inline,
  .survey-results-command-actions{
    flex-wrap:nowrap !important;
  }
}

@media(max-width:620px){
  .survey-results-command-bar{
    display:flex;
    align-items:center;
    justify-content:flex-start;
    gap:8px;
    overflow-x:auto;
  }

  .survey-results-filter-bar.survey-results-filter-inline{
    display:flex;
    grid-template-columns:none;
    flex:0 0 auto;
  }

  .survey-results-filter-inline .survey-results-search{
    width:210px;
    min-width:210px;
  }

  .survey-results-filter-inline .survey-results-match-select-shell{
    width:150px;
    min-width:150px;
  }
}


/* =========================================================
   v8.6 - 현장 접수 입력 UI 정돈
   ========================================================= */

/* 나이대 5개를 한 줄에 표시 */
.onsite-age-options{
  display:grid !important;
  grid-template-columns:repeat(5,minmax(92px,1fr)) !important;
  gap:8px !important;
  overflow-x:auto;
  padding-bottom:2px;
}

.onsite-age-options label{
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:7px;
  min-width:92px;
  padding:11px 12px !important;
  white-space:nowrap;
}

/* 제목/라벨/입력칸 사이에 일정한 호흡을 줌 */
.onsite-person-card{
  display:grid;
  gap:15px;
}

.onsite-person-card > label{
  display:grid;
  gap:8px;
  margin:0;
  font-weight:700;
}

.onsite-person-card .application-person-title{
  margin-bottom:2px !important;
}

.onsite-age-field{
  display:grid;
  gap:9px;
  margin:0;
  padding:0;
  border:0;
}

.onsite-age-field legend{
  margin:0 0 1px;
  padding:0;
  font-weight:800;
}

.onsite-person-card .input{
  margin-top:0 !important;
}

.onsite-optional-help{
  margin-top:12px !important;
  margin-bottom:18px !important;
}

@media(max-width:620px){
  /* 모바일도 한 줄 구조는 유지하고 필요 시 가로 스크롤 */
  .onsite-age-options{
    grid-template-columns:repeat(5,minmax(88px,1fr)) !important;
  }
}


/* 소속 저장 후 원래 참석자 행으로 복귀 */
.participant-return-highlight{
  animation:participantReturnHighlight 1.2s ease;
}

@keyframes participantReturnHighlight{
  0%,35%{
    background:rgba(32,125,86,.09);
  }
  100%{
    background:transparent;
  }
}


/* =========================================================
   v8.7 - 대표 참가자 구분 표시
   ========================================================= */
.participant-type-mini{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-right:5px;
  padding:3px 6px;
  border-radius:999px;
  font-size:9px;
  font-weight:800;
  line-height:1;
  vertical-align:middle;
}
.participant-type-mini.fruit{
  border:1px solid #d9c8ff;
  background:#f6f0ff;
  color:#6d43ad;
}


/* =========================================================
   v8.8 - 참석자 수정 모달 레이아웃 복구
   기존 전역 .participant-type-card 스타일 충돌 무효화
   ========================================================= */
.participant-edit-application-modal{
  width:min(680px,calc(100vw - 28px)) !important;
}

.participant-edit-application-form{
  display:grid !important;
  gap:16px !important;
  width:100%;
}

.participant-edit-application-form > label{
  display:grid !important;
  gap:8px !important;
  width:100%;
  margin:0 !important;
  font-weight:800;
}

.participant-edit-application-form > label > .select-shell{
  width:100% !important;
  min-width:0 !important;
}

.participant-edit-application-form > label select{
  width:100% !important;
}

/* 핵심: 신청자/열매 대표 카드가 한 줄로 찌그러지지 않도록 복구 */
.participant-edit-application-form .participant-type-card{
  display:grid !important;
  grid-template-columns:1fr !important;
  align-items:stretch !important;
  justify-content:stretch !important;
  justify-items:stretch !important;
  gap:14px !important;
  width:100% !important;
  min-width:0 !important;
  min-height:0 !important;
  margin-top:0 !important;
  padding:16px !important;
  border:1px solid var(--line) !important;
  border-radius:18px !important;
  background:#fafbfc !important;
}

.participant-edit-application-form .participant-type-card > .application-person-title{
  display:block !important;
  width:auto !important;
  margin:0 0 2px !important;
  padding:0 !important;
  text-align:left !important;
  font-size:14px !important;
  font-weight:900 !important;
}

.participant-edit-application-form .participant-type-card > label{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:8px !important;
  width:100% !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
  font-weight:800;
}

.participant-edit-application-form .participant-type-card > label > .input,
.participant-edit-application-form .participant-type-card > label > input,
.participant-edit-application-form .participant-type-card > label > .select-shell{
  display:block !important;
  width:100% !important;
  min-width:0 !important;
  max-width:none !important;
  box-sizing:border-box !important;
}

.participant-edit-application-form .participant-type-card .select-shell select{
  width:100% !important;
  min-width:0 !important;
}

/* 열매 카드도 동일한 세로형 편집 UI 유지 */
.participant-edit-application-form .edit-fruit-list .application-person-card{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:14px !important;
  width:100% !important;
  padding:16px !important;
}

.participant-edit-application-form .edit-fruit-list .application-person-card > label{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:8px !important;
  width:100% !important;
}

.participant-edit-application-form .edit-fruit-list .application-person-card input,
.participant-edit-application-form .edit-fruit-list .application-person-card .select-shell{
  width:100% !important;
  min-width:0 !important;
}

/* 수정 저장 / 추가 버튼은 기존 컴팩트 크기 유지 */
.participant-edit-application-form .group-application-actions{
  display:flex !important;
  align-items:center !important;
  justify-content:flex-end !important;
  gap:8px !important;
  margin-top:2px !important;
}

.participant-edit-application-form .edit-add-fruit-button{
  margin-right:auto !important;
}

@media(max-width:620px){
  .participant-edit-application-modal{
    width:calc(100vw - 12px) !important;
  }

  .participant-edit-application-form .participant-type-card,
  .participant-edit-application-form .edit-fruit-list .application-person-card{
    padding:14px !important;
  }
}


/* =========================================================
   v8.10 - 참석자 수정 입력 UI 정리
   ========================================================= */
.participant-edit-application-modal{
  width:min(700px,calc(100vw - 28px)) !important;
}

.participant-edit-application-form{
  gap:18px !important;
}

.participant-edit-application-form > label,
.participant-edit-application-form .participant-type-card > label,
.participant-edit-application-form .edit-fruit-list .application-person-card > label{
  gap:9px !important;
  color:#20242a;
  font-size:12px;
  font-weight:800;
}

/* input/select 공통 높이와 여백 통일 */
.participant-edit-application-form input.input,
.participant-edit-application-form select.input.pretty-select{
  width:100% !important;
  min-width:0 !important;
  height:52px !important;
  min-height:52px !important;
  padding:0 15px !important;
  border:1px solid rgba(17,24,39,.12) !important;
  border-radius:14px !important;
  background:#fff !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.9),
    0 2px 8px rgba(17,24,39,.025) !important;
  color:#171a1f !important;
  font-size:14px !important;
  font-weight:650 !important;
  line-height:1.2 !important;
  transition:
    border-color .15s ease,
    box-shadow .15s ease,
    background-color .15s ease !important;
}

/* select 화살표 공간 확보 */
.participant-edit-application-form select.input.pretty-select{
  padding-right:42px !important;
}

.participant-edit-application-form input.input:hover,
.participant-edit-application-form select.input.pretty-select:hover{
  border-color:rgba(17,24,39,.20) !important;
}

.participant-edit-application-form input.input:focus,
.participant-edit-application-form select.input.pretty-select:focus{
  outline:none !important;
  border-color:rgba(17,24,39,.34) !important;
  box-shadow:
    0 0 0 4px rgba(17,24,39,.055),
    0 4px 12px rgba(17,24,39,.035) !important;
}

.participant-edit-application-form input.input::placeholder{
  color:#a0a6ae !important;
  font-weight:500 !important;
}

/* 신청자/열매 카드 */
.participant-edit-application-form .participant-type-card,
.participant-edit-application-form .edit-fruit-list .application-person-card{
  gap:16px !important;
  padding:18px !important;
  border:1px solid rgba(17,24,39,.09) !important;
  border-radius:18px !important;
  background:rgba(249,250,251,.88) !important;
  box-shadow:0 6px 20px rgba(17,24,39,.025) !important;
}

.participant-edit-application-form .participant-type-card-title,
.participant-edit-application-form .fruit-title-row{
  color:#171a1f !important;
  font-size:14px !important;
  font-weight:900 !important;
}

.participant-edit-application-form .participant-affiliation-label{
  display:block;
  color:#20242a;
}

/* 상단 참여시간/구분은 카드와 시각적으로 동일한 필드 처리 */
.participant-edit-application-form > label > .select-shell{
  display:block !important;
}

/* 버튼은 불필요하게 커지지 않음 */
.participant-edit-application-form .group-application-actions > button{
  min-height:42px !important;
  width:auto !important;
  min-width:0 !important;
  padding:0 14px !important;
}

/* 모바일 */
@media(max-width:620px){
  .participant-edit-application-modal{
    width:calc(100vw - 14px) !important;
  }

  .participant-edit-application-form input.input,
  .participant-edit-application-form select.input.pretty-select{
    height:50px !important;
    min-height:50px !important;
    font-size:14px !important;
  }

  .participant-edit-application-form .participant-type-card,
  .participant-edit-application-form .edit-fruit-list .application-person-card{
    padding:15px !important;
  }
}


/* =========================================================
   v8.11 - 참석자 수동 추가 구분
   ========================================================= */
#adminParticipantAddForm{
  display:grid;
  gap:16px;
}

#adminParticipantAddForm > label{
  display:grid;
  gap:8px;
  font-weight:800;
}

#adminParticipantAddForm #adminPrimaryParticipantCard{
  display:grid;
  gap:14px;
}

#adminParticipantAddForm #adminPrimaryParticipantCard > label{
  display:grid;
  gap:8px;
}

#adminParticipantAddForm #adminPrimaryParticipantCard input.input,
#adminParticipantAddForm #adminPrimaryParticipantCard select.input{
  width:100%;
  min-width:0;
}

#adminParticipantAddForm #adminAddFruitButton[hidden]{
  display:none !important;
}


/* =========================================================
   v8.11 revised - 관리자 메모
   ========================================================= */
.participant-admin-memo-field{
  display:grid;
  gap:8px;
  width:100%;
  margin:0;
  font-weight:800;
}

.participant-admin-memo-field > input.input{
  width:100% !important;
  min-width:0 !important;
  height:52px !important;
  min-height:52px !important;
  padding:0 15px !important;
  border-radius:14px !important;
  box-sizing:border-box !important;
}


/* =========================================================
   v8.12 - 현장 접수 입력 간격 / 나이대 한 줄 고정
   ========================================================= */
.onsite-form-card .onsite-person-card{
  display:grid !important;
  gap:18px !important;
}

.onsite-form-card .onsite-person-card > label{
  display:grid !important;
  gap:10px !important;
  margin:0 !important;
  font-weight:800 !important;
}

.onsite-form-card .onsite-person-card > label > .input{
  margin:0 !important;
  height:50px !important;
  min-height:50px !important;
}

.onsite-form-card .onsite-age-field{
  display:grid !important;
  gap:10px !important;
  margin:0 !important;
  padding:0 !important;
  border:0 !important;
}

.onsite-form-card .onsite-age-field legend{
  margin:0 0 10px 0 !important;
  padding:0 !important;
  font-weight:800 !important;
}

/* 30/40/50/60/70대 이상을 내용 폭만큼 한 줄 표시 */
.onsite-form-card .onsite-age-options{
  display:flex !important;
  flex-wrap:nowrap !important;
  align-items:center !important;
  justify-content:flex-start !important;
  gap:8px !important;
  width:max-content !important;
  max-width:100% !important;
  overflow-x:auto !important;
  padding:0 0 2px !important;
}

.onsite-form-card .onsite-age-options label{
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  flex:0 0 auto !important;
  width:auto !important;
  min-width:0 !important;
  margin:0 !important;
  padding:10px 12px !important;
  gap:6px !important;
  white-space:nowrap !important;
}

.onsite-form-card .onsite-age-options input[type="radio"]{
  flex:0 0 auto !important;
  margin:0 !important;
}

.onsite-optional-label{
  margin-left:6px !important;
  color:#858c95 !important;
  font-size:10px !important;
  font-weight:650 !important;
  line-height:1.4 !important;
}

@media(max-width:520px){
  .onsite-form-card .onsite-age-options{
    max-width:100% !important;
  }

  .onsite-form-card .onsite-age-options label{
    padding:9px 10px !important;
    font-size:12px !important;
  }
}


/* =========================================================
   v8.13 - 내 신청 내역 편집 select/input 정렬
   ========================================================= */
.miniapp-edit-form{
  display:grid !important;
  gap:18px !important;
}
.miniapp-edit-form > label,
.miniapp-edit-form .application-person-card > label{
  display:grid !important;
  gap:9px !important;
  width:100% !important;
  min-width:0 !important;
}
.miniapp-edit-form .select-shell{
  display:block !important;
  position:relative !important;
  width:100% !important;
  min-width:0 !important;
}
.miniapp-edit-form input.input,
.miniapp-edit-form select.input.pretty-select{
  display:block !important;
  width:100% !important;
  min-width:0 !important;
  height:52px !important;
  min-height:52px !important;
  box-sizing:border-box !important;
  padding:0 15px !important;
  border:1px solid rgba(17,24,39,.12) !important;
  border-radius:14px !important;
  background:#fff !important;
  font-size:14px !important;
  font-weight:650 !important;
}
.miniapp-edit-form select.input.pretty-select{
  appearance:none !important;
  -webkit-appearance:none !important;
  padding-right:42px !important;
}
.miniapp-edit-form .select-chevron{
  position:absolute !important;
  top:50% !important;
  right:15px !important;
  transform:translateY(-52%) !important;
  pointer-events:none !important;
  color:#747b84 !important;
}
.miniapp-edit-form .application-person-card{
  display:grid !important;
  grid-template-columns:minmax(0,1fr) !important;
  gap:16px !important;
  width:100% !important;
  min-width:0 !important;
}


/* v10.5 event detail close/reopen actions */
.detail-actions{align-items:center;flex-wrap:wrap}
.detail-actions form{margin:0;display:flex;align-items:center}
.detail-actions .soft-btn,.detail-actions .danger-btn,.detail-actions .link-btn{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}
.event-reopen-btn{border-color:#d8dde5;background:#fff;color:#313843}
.event-closed-badge{min-height:42px;display:inline-flex;align-items:center;padding:0 15px;border-radius:14px;font-size:13px}


/* v10.6 일반 스탭 QR */
.general-staff-qr-wrap{display:flex;gap:22px;align-items:center;flex-wrap:wrap;margin-top:14px}
.general-staff-qr-preview{width:220px;max-width:100%;height:auto;border:3px solid #000;border-radius:18px;background:#fff;display:block}
.general-staff-qr-actions{display:flex;gap:10px;flex-wrap:wrap}
@media(max-width:640px){.general-staff-qr-wrap{align-items:stretch}.general-staff-qr-preview{width:100%;max-width:300px;margin:0 auto}.general-staff-qr-actions{width:100%}.general-staff-qr-actions>a{flex:1;text-align:center}}

/* v10.7 참석자 식별/행사 수정/회차+일반스탭 QR 레이아웃 */
.event-form-grid-spacer{min-height:1px}
.event-session-qr-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(250px,1fr);gap:14px;align-items:stretch;margin-bottom:14px}
.event-session-qr-grid.no-general-staff{grid-template-columns:1fr}
.event-session-qr-grid>.section-card{margin:0}
.compact-general-staff-card{display:flex;flex-direction:column;min-width:0}
.compact-general-staff-card .toolbar.compact{margin-bottom:18px}
.general-staff-qr-summary{padding:18px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.65);display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.general-staff-qr-summary span{font-size:12px;color:var(--muted)}
.general-staff-qr-summary strong{font-size:24px;line-height:1.2}
.general-staff-save-btn{margin-top:auto;width:100%;text-align:center;justify-content:center}
@media(max-width:900px){.event-session-qr-grid{grid-template-columns:1fr}.event-form-grid-spacer{display:none}}


/* v10.10 hotfix - 참석자 관리 성별 컬럼 */
.participants-table .col-age{width:5%}
.participants-table .col-gender{width:4%}
.participants-table .col-phone{width:8%}
.participants-table th:nth-child(7),
.participants-table td:nth-child(7){text-align:center}

/* =========================================================
   v10.1 - 참석자 목록 직접 클릭 수정 / 수정 팝업 컴팩트화
   ========================================================= */
.participant-click-edit td:not(:first-child){
  cursor:pointer;
}
.participant-click-edit:hover td{
  background:rgba(17,24,39,.018);
}
.participant-click-edit td:has(a),
.participant-click-edit td:has(button),
.participant-click-edit td:has(input){
  cursor:default;
}

.participant-edit-application-modal{
  width:min(620px,calc(100vw - 28px)) !important;
  padding:16px !important;
  max-height:90vh !important;
}
.participant-edit-application-modal .modal-head{
  margin-bottom:10px !important;
}
.participant-edit-application-form{
  gap:10px !important;
}
.participant-edit-application-form > label,
.participant-edit-application-form .participant-type-card > label,
.participant-edit-application-form .edit-fruit-list .application-person-card > label{
  gap:5px !important;
}
.participant-edit-application-form input.input,
.participant-edit-application-form select.input.pretty-select{
  height:44px !important;
  min-height:44px !important;
  padding-top:0 !important;
  padding-bottom:0 !important;
}
.participant-edit-application-form .participant-type-card,
.participant-edit-application-form .edit-fruit-list .application-person-card{
  gap:10px !important;
  padding:12px !important;
  border-radius:14px !important;
}
.participant-edit-application-form .application-person-card,
.participant-edit-application-form .edit-fruit-list{
  margin-top:0 !important;
  gap:10px !important;
}
.participant-edit-application-form .participant-admin-memo-field{
  margin-top:0 !important;
}
.participant-edit-application-form .group-application-actions{
  margin-top:0 !important;
  gap:7px !important;
}
.participant-edit-application-form .participant-edit-delete-button{
  margin-left:auto;
}
.participant-edit-application-form .edit-add-fruit-button + .participant-edit-delete-button{
  margin-left:0;
}
@media(max-width:620px){
  .participant-edit-application-modal{
    width:calc(100vw - 12px) !important;
    padding:14px !important;
  }
}


/* v10.3 참석자 셀 클릭 / 관리 링크 UX */
.participant-edit-cell{cursor:pointer}
.participant-edit-cell:hover{background:rgba(15,23,42,.035)}
.survey-url-link{display:inline-block;color:inherit;text-decoration:none;max-width:100%}
.survey-url-link:hover .survey-url-code{text-decoration:underline}


/* =========================================================
   v10.3 hotfix - 참석자 수정 팝업 폭 축소
   ========================================================= */
.participant-edit-application-modal{
  width:min(480px,calc(100vw - 28px)) !important;
  max-width:480px !important;
  padding:16px !important;
}
.participant-edit-application-form{
  gap:9px !important;
}
.participant-edit-application-form .participant-type-card,
.participant-edit-application-form .edit-fruit-list .application-person-card{
  padding:12px !important;
  gap:9px !important;
}
@media(max-width:520px){
  .participant-edit-application-modal{
    width:calc(100vw - 12px) !important;
    max-width:none !important;
    padding:13px !important;
  }
}

/* =========================================================
   v10.12 - 관리자 전체 표 정렬 / 기존 폰트·크기 유지
   ========================================================= */
.admin-generic-sort-btn{
  appearance:none;
  -webkit-appearance:none;
  border:0;
  background:transparent;
  padding:0;
  margin:0;
  color:inherit;
  font:inherit;
  font-size:inherit;
  font-weight:inherit;
  line-height:inherit;
  letter-spacing:inherit;
  text-align:inherit;
  cursor:pointer;
  white-space:inherit;
}
.admin-generic-sort-btn::after{
  content:"↕";
  display:inline-block;
  margin-left:4px;
  font-size:.82em;
  line-height:1;
  opacity:.38;
  vertical-align:middle;
}
.admin-generic-sort-btn[data-direction="asc"]::after{
  content:"▲";
  opacity:.82;
}
.admin-generic-sort-btn[data-direction="desc"]::after{
  content:"▼";
  opacity:.82;
}

/* =========================================================
   v10.13 - 테스트 설정 표/팝업 정리
   ========================================================= */
.test-mode-toolbar{
  margin-bottom:12px;
}
.test-user-toolbar{
  margin-top:24px;
  margin-bottom:12px;
}
.test-mode-event-table-wrap,
.test-user-table-wrap{
  width:100%;
}
.test-mode-event-table{
  min-width:720px;
}
.test-user-table{
  min-width:900px;
}
.test-mode-empty-cell{
  text-align:center !important;
  color:var(--muted);
  padding:24px 12px !important;
}
.test-user-actions{
  flex-wrap:nowrap;
}
.test-mode-modal{
  width:min(520px,100%);
}
@media(max-width:700px){
  .test-mode-toolbar,
  .test-user-toolbar{
    align-items:flex-start;
  }
}

/* =========================================================
   v10.16 - 섭외자/잎사귀 상세 팝업 + 참석자 추가 액션 정렬
   ========================================================= */
.member-info-modal{
  width:min(640px,calc(100vw - 24px)) !important;
  max-width:min(640px,calc(100vw - 24px)) !important;
}

.member-info-modal .fruit-info-list,
.member-info-modal .fruit-info-row,
.member-info-modal .member-affiliation-inline{
  width:100% !important;
}

.member-info-modal .member-affiliation-inline{
  display:grid !important;
  grid-template-columns:150px minmax(0,1fr) auto;
  align-items:center;
  gap:10px;
}

.member-info-modal .member-person-compact{
  font-size:13px;
}

.member-info-modal .member-person-compact b{
  font-size:13px;
}

.participant-add-actions{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
}

.participant-add-actions-left,
.participant-add-actions-right{
  display:flex;
  align-items:center;
  gap:8px;
}

@media(max-width:620px){
  .member-info-modal .member-affiliation-inline{
    grid-template-columns:1fr;
  }

  .member-info-modal .fruit-affiliation-select-shell{
    width:100% !important;
    min-width:0 !important;
  }

  .participant-add-actions{
    align-items:stretch;
    flex-direction:column;
  }

  .participant-add-actions-left,
  .participant-add-actions-right{
    width:100%;
  }

  .participant-add-actions-right{
    justify-content:flex-end;
  }
}

@media(min-width:761px){
  .dashboard-double-donut-grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
}

/* =========================================================
   v10.17 - 최고관리자 전용 럭키 드로우 이벤트
   ========================================================= */
.lucky-admin-toolbar,.lucky-detail-toolbar,.lucky-rank-toolbar{margin-bottom:14px}
.lucky-admin-table{min-width:940px}
.lucky-create-modal{width:min(540px,calc(100vw - 24px))}
.lucky-public-link-card{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 16px;margin-bottom:18px;border:1px solid var(--line);border-radius:16px;background:var(--card)}
.lucky-public-link-card code{flex:1;min-width:260px;overflow-wrap:anywhere;font-size:13px}
.lucky-config-form{display:grid;gap:16px}
.lucky-basic-panel,.lucky-rank-row{padding:18px}
.lucky-basic-grid{grid-template-columns:2fr 1fr 1fr 2fr}
.lucky-rank-toolbar{margin-top:4px}
.lucky-count-summary{font-size:13px;padding:8px 12px;border-radius:999px;background:rgba(15,23,42,.05)}
.lucky-count-summary .is-error{color:#b91c1c}
.lucky-rank-list{display:grid;gap:10px}
.lucky-rank-row{display:grid;grid-template-columns:72px minmax(0,1fr);align-items:center;gap:14px}
.lucky-rank-badge{display:flex;align-items:center;justify-content:center;min-height:58px;border-radius:14px;font-weight:800;font-size:18px;background:rgba(99,102,241,.09);color:#4338ca}
.lucky-rank-fields{display:grid;grid-template-columns:110px 150px minmax(220px,1fr) minmax(220px,1fr);align-items:start;gap:10px}
.lucky-rank-fields label{margin:0}
.lucky-rank-row:not(.is-image-mode) .lucky-image-field{opacity:.62}
.lucky-rank-row.is-image-mode .lucky-text-field{opacity:.62}
.lucky-danger-zone{display:flex;justify-content:flex-end;gap:8px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}
.sticky-form-actions{position:sticky;bottom:10px;z-index:4;justify-content:flex-end;padding:10px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.94);backdrop-filter:blur(8px)}

.lucky-public-body{margin:0;min-height:100vh;background:radial-gradient(circle at 50% 0%,#252d58 0,#11162f 48%,#080b19 100%);color:#fff;font-family:inherit;overscroll-behavior:none;user-select:none;-webkit-user-select:none}
.lucky-public-shell{min-height:100vh;padding:28px clamp(16px,3vw,40px) 44px;box-sizing:border-box}
.lucky-public-head{text-align:center;max-width:980px;margin:0 auto 24px}
.lucky-kicker{display:inline-block;font-size:12px;font-weight:800;letter-spacing:.22em;color:#facc15;margin-bottom:8px}
.lucky-public-head h1{margin:0;font-size:clamp(30px,5vw,56px);line-height:1.08;letter-spacing:-.04em}
.lucky-public-head p{margin:10px 0 0;color:rgba(255,255,255,.7);font-size:clamp(14px,2vw,18px)}
.lucky-progress{margin:14px auto 0;display:inline-flex;gap:5px;padding:7px 13px;border:1px solid rgba(255,255,255,.15);border-radius:999px;background:rgba(255,255,255,.06);font-size:13px}
.lucky-card-grid{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:repeat(10,minmax(58px,1fr));gap:10px;touch-action:pan-y}
.lucky-card{appearance:none;border:1px solid rgba(255,255,255,.22);aspect-ratio:1.35/1;border-radius:13px;background:linear-gradient(145deg,#fff 0,#eef1ff 100%);box-shadow:0 7px 18px rgba(0,0,0,.24);color:#212a55;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:grab;transition:transform .16s ease,opacity .2s ease,box-shadow .2s ease;touch-action:pan-y}
.lucky-card span{font-weight:900;font-size:clamp(10px,1.25vw,16px);letter-spacing:.05em}.lucky-card small{font-size:9px;letter-spacing:.18em;margin-top:2px;opacity:.55}
.lucky-card.is-dragging{cursor:grabbing;z-index:5;box-shadow:0 18px 35px rgba(0,0,0,.4)}
.lucky-card.is-picking{transform:translateY(-30px) scale(1.08)!important;opacity:.55}
.lucky-card-used{background:rgba(255,255,255,.055);border-style:dashed;box-shadow:none;color:rgba(255,255,255,.2);cursor:default}
.lucky-result-backdrop{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(3,5,15,.86);backdrop-filter:blur(12px)}
.lucky-result-backdrop[hidden]{display:none}
.lucky-result-card{width:min(680px,94vw);max-height:90vh;overflow:auto;text-align:center;padding:34px;border:1px solid rgba(255,255,255,.14);border-radius:28px;background:linear-gradient(160deg,#fff,#f2f4ff);color:#111827;box-shadow:0 30px 80px rgba(0,0,0,.48);animation:luckyPop .32s ease both}
.lucky-result-rank{display:inline-block;padding:7px 14px;border-radius:999px;background:#11162f;color:#fff;font-size:14px;font-weight:900;letter-spacing:.08em}
.lucky-result-card img{display:block;max-width:100%;max-height:52vh;object-fit:contain;margin:18px auto 0;border-radius:18px}
.lucky-result-card h2{font-size:clamp(24px,4vw,42px);line-height:1.2;margin:20px 0;white-space:pre-line}
.lucky-result-close{border:0;border-radius:14px;background:#11162f;color:#fff;font-size:16px;font-weight:800;padding:14px 28px;cursor:pointer}
.lucky-drag-hint{position:fixed;z-index:900;left:50%;bottom:24px;transform:translateX(-50%);padding:10px 16px;border-radius:999px;background:rgba(0,0,0,.72);color:#fff;font-weight:800;font-size:13px;pointer-events:none}
.lucky-closed-message{max-width:680px;margin:80px auto;text-align:center;padding:30px;border:1px solid rgba(255,255,255,.15);border-radius:20px;background:rgba(255,255,255,.06)}
@keyframes luckyPop{from{opacity:0;transform:scale(.88) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}
@media(max-width:1000px){.lucky-basic-grid{grid-template-columns:1fr 1fr}.lucky-rank-fields{grid-template-columns:100px 140px 1fr}.lucky-image-field{grid-column:2/-1}.lucky-card-grid{grid-template-columns:repeat(8,minmax(54px,1fr))}}
@media(max-width:700px){.lucky-rank-row{grid-template-columns:1fr}.lucky-rank-badge{min-height:42px}.lucky-rank-fields{grid-template-columns:1fr 1fr}.lucky-text-field,.lucky-image-field{grid-column:1/-1}.lucky-card-grid{grid-template-columns:repeat(5,minmax(48px,1fr));gap:8px}.lucky-public-shell{padding-inline:12px}.lucky-card{border-radius:10px}.lucky-detail-toolbar{align-items:flex-start}.lucky-public-link-card code{min-width:0;width:100%}}

/* =========================================================
   v10.18 - 럭키 드로우 관리자 UI 재정비 / 클릭 추첨
   ========================================================= */
.lucky-page-toolbar{align-items:flex-end;margin-bottom:18px}.lucky-page-toolbar h2{margin:0 0 5px;font-size:20px;letter-spacing:-.025em}.lucky-page-toolbar .muted{margin:0}
.lucky-list-panel{padding:0;overflow:hidden;border-radius:18px}.lucky-table-wrap{margin:0}.lucky-admin-table{min-width:900px;margin:0}.lucky-admin-table th,.lucky-admin-table td{vertical-align:middle}.lucky-admin-table th{padding-top:12px;padding-bottom:12px}.lucky-admin-table td{padding-top:13px;padding-bottom:13px}.lucky-manage-col{width:230px}.lucky-title-cell{display:flex;flex-direction:column;gap:4px}.lucky-title-cell b{font-size:14px}.lucky-title-cell small{font-size:11px;color:var(--muted)}
.lucky-list-url{display:inline-block;max-width:260px;padding:7px 10px;border:1px solid var(--line);border-radius:9px;background:rgba(15,23,42,.025);font-size:12px;color:inherit;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lucky-list-url:hover{border-color:rgba(15,23,42,.22);background:rgba(15,23,42,.045)}
.lucky-list-actions{gap:6px;flex-wrap:nowrap}.lucky-list-actions form{margin:0}.lucky-list-actions .small-btn{min-width:58px;justify-content:center}.lucky-public-btn{border:1px solid rgba(22,163,74,.20);background:rgba(22,163,74,.09);color:#15803d}.danger-outline-btn{border:1px solid rgba(220,38,38,.18);background:#fff;color:#b91c1c;border-radius:10px;cursor:pointer}.danger-outline-btn:hover{background:rgba(220,38,38,.05)}
.lucky-create-modal{width:min(560px,calc(100vw - 28px))}.lucky-create-form{gap:16px}

.lucky-public-link-card{display:flex;align-items:center;gap:12px;padding:13px 16px;margin:0 0 18px;border:1px solid var(--line);border-radius:14px;background:var(--card);color:inherit;text-decoration:none;transition:border-color .15s ease,background .15s ease}.lucky-public-link-card:hover{border-color:rgba(15,23,42,.22);background:rgba(255,255,255,.75)}.lucky-public-url-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:650}.lucky-link-arrow{font-size:18px;color:var(--muted)}
.lucky-config-form{display:grid;gap:18px}.lucky-basic-panel{padding:20px 22px;border-radius:18px}.lucky-section-head{margin-bottom:16px}.lucky-section-head h3{margin-top:2px}.lucky-basic-grid-v2{display:grid;grid-template-columns:minmax(220px,2fr) minmax(110px,.65fr) minmax(110px,.65fr) minmax(260px,2fr);gap:14px;align-items:end}.lucky-field{display:grid;gap:7px;margin:0;font-size:12px;font-weight:700;color:var(--text)}.lucky-field .input{margin:0}.lucky-basic-grid-v2 .input{height:43px}.lucky-no-win-field{min-width:0}
.lucky-rank-toolbar{align-items:flex-end;margin:2px 0 0}.lucky-rank-toolbar h3{margin:0 0 4px;font-size:17px}.lucky-rank-toolbar p{margin:0}.lucky-count-summary{display:flex;align-items:center;gap:5px;white-space:nowrap;font-size:12px;padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:var(--card)}.lucky-count-summary span{color:var(--muted)}
.lucky-rank-list{display:grid;gap:10px}.lucky-rank-row{display:grid;grid-template-columns:70px minmax(0,1fr);align-items:center;gap:16px;padding:16px 18px;border-radius:17px}.lucky-rank-badge{min-height:52px;border-radius:12px;font-size:17px}.lucky-rank-fields{display:grid;grid-template-columns:92px 128px minmax(220px,1.25fr) minmax(240px,1fr);gap:12px;align-items:start}.lucky-rank-fields .input{height:42px}.lucky-file-input{padding:7px 9px}.lucky-rank-row:not(.is-image-mode) .lucky-image-field,.lucky-rank-row.is-image-mode .lucky-text-field{opacity:.48}.lucky-rank-row:not(.is-image-mode) .lucky-image-field:hover,.lucky-rank-row.is-image-mode .lucky-text-field:hover{opacity:.75}
.lucky-form-footer{display:flex;justify-content:flex-end;gap:8px;padding:16px 0 2px;border-top:1px solid var(--line)}

.lucky-card{cursor:pointer;touch-action:manipulation}.lucky-card:not(.lucky-card-used):hover{transform:translateY(-3px);box-shadow:0 12px 24px rgba(0,0,0,.30)}.lucky-card:focus-visible{outline:3px solid rgba(250,204,21,.75);outline-offset:2px}.lucky-card.is-picking{transform:translateY(-18px) scale(1.05)!important;opacity:.58}.lucky-card-used{pointer-events:none}

@media(max-width:1100px){.lucky-basic-grid-v2{grid-template-columns:1.5fr .7fr .7fr}.lucky-no-win-field{grid-column:1/-1}.lucky-rank-fields{grid-template-columns:90px 128px minmax(240px,1fr)}.lucky-image-field{grid-column:2/-1}}
@media(max-width:760px){.lucky-page-toolbar{align-items:flex-start}.lucky-basic-panel{padding:16px}.lucky-basic-grid-v2{grid-template-columns:1fr 1fr}.lucky-title-field,.lucky-no-win-field{grid-column:1/-1}.lucky-rank-row{grid-template-columns:1fr;padding:14px}.lucky-rank-badge{min-height:40px}.lucky-rank-fields{grid-template-columns:1fr 1fr}.lucky-text-field,.lucky-image-field{grid-column:1/-1}.lucky-form-footer{justify-content:space-between}.lucky-public-url-text{font-size:12px}.lucky-list-actions{flex-wrap:wrap}}
/* 사용 완료 카드는 grid 칸 자체는 유지하고 시각적으로 비워 중간 빈자리를 보존한다. */
.lucky-card-used{visibility:hidden}


/* Lucky Draw v10.19 result modal */
.lucky-result-card{position:relative}
.lucky-result-card img[hidden]{display:none!important}
.lucky-result-x{position:absolute;top:14px;right:14px;width:38px;height:38px;border:1px solid rgba(15,23,42,.10);border-radius:50%;background:rgba(255,255,255,.86);color:#111827;font-size:27px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:3;transition:background .15s ease,transform .15s ease}
.lucky-result-x:hover{background:#fff;transform:scale(1.05)}
.lucky-result-x:focus-visible{outline:3px solid rgba(99,102,241,.28);outline-offset:2px}
.lucky-confetti-canvas{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:1}
.lucky-result-card{z-index:2}

/* v10.25 - Fruit management: align with existing admin compact table UI */
.fruit-management-panel{width:100%;}
.fruit-management-table-wrap{width:100%;overflow:auto;}
.fruit-management-table{width:100%;min-width:760px;}
.fruit-management-table th,.fruit-management-table td{vertical-align:middle;}
.fruit-management-table tbody .fruit-history-row{cursor:pointer;transition:background .16s ease;}
.fruit-management-table tbody .fruit-history-row:hover,.fruit-management-table tbody .fruit-history-row:focus{background:#f7f8fa;outline:none;}
.fruit-management-table th:nth-child(1),.fruit-management-table td:nth-child(1){width:22%;}
.fruit-management-table th:nth-child(2),.fruit-management-table td:nth-child(2){width:22%;}
.fruit-management-table th:nth-child(3),.fruit-management-table td:nth-child(3){width:20%;}
.fruit-management-table th:nth-child(4),.fruit-management-table td:nth-child(4),.fruit-management-table th:nth-child(5),.fruit-management-table td:nth-child(5){width:18%;text-align:center;}
.fruit-history-detail-wrap{max-height:58vh;overflow:auto;}
.fruit-history-detail-table{width:100%;min-width:820px;}
@media(max-width:760px){.fruit-management-table{min-width:680px;}.fruit-history-detail-table{min-width:760px;}}


/* v10.26 - statistics readability / fruit detail page */
#sessionApplyStats1{} /* selector anchor only; actual styling uses id-prefix below */
[id^="sessionApplyStats"] .modal-card,[id^="sessionCheckinStats"] .modal-card{width:min(760px,calc(100vw - 28px));}
[id^="sessionApplyStats"] .modal-head h3,[id^="sessionCheckinStats"] .modal-head h3{font-size:22px;line-height:1.35;}
[id^="sessionApplyStats"] .eyebrow,[id^="sessionCheckinStats"] .eyebrow{font-size:12px;}
[id^="sessionApplyStats"] .monitor-table th,[id^="sessionCheckinStats"] .monitor-table th{font-size:15px;padding:13px 12px;}
[id^="sessionApplyStats"] .monitor-table td,[id^="sessionCheckinStats"] .monitor-table td{font-size:17px;padding:14px 12px;}
[id^="sessionApplyStats"] .monitor-table td b,[id^="sessionCheckinStats"] .monitor-table td b{font-size:18px;}
[id^="sessionApplyStats"] .affiliation-badge,[id^="sessionCheckinStats"] .affiliation-badge{font-size:15px;padding:6px 10px;}
.fruit-affiliation-badges{display:flex;gap:6px;align-items:center;flex-wrap:wrap;}
.fruit-detail-page{width:100%;}
.fruit-detail-toolbar{display:flex;justify-content:flex-start;margin-bottom:14px;}
.fruit-detail-summary{margin-bottom:16px;}
.fruit-detail-summary-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px;}
.fruit-detail-summary-grid>div{padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:rgba(15,23,42,.02);}
.fruit-detail-summary-grid span:first-child{display:block;margin-bottom:7px;color:var(--muted);font-size:12px;font-weight:700;}
.fruit-detail-summary-grid b{font-size:15px;}
.fruit-detail-summary-grid b .affiliation-badge{display:inline-block;margin-right:4px;}
.fruit-detail-page .fruit-history-detail-wrap{max-height:none;}
@media(max-width:760px){[id^="sessionApplyStats"] .monitor-table td,[id^="sessionCheckinStats"] .monitor-table td{font-size:16px}.fruit-detail-summary-grid{grid-template-columns:1fr;}}


/* =========================================================
   v10.27 - fruit detail UI alignment
   ========================================================= */
.fruit-detail-toolbar .soft-btn.small-btn.link-btn{
  min-height:36px;
  padding:0 12px;
  text-decoration:none;
}
.fruit-detail-summary-grid b{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:4px;
  min-height:28px;
  line-height:1.2;
}
.fruit-detail-summary-grid b .affiliation-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin:0;
  line-height:1;
  vertical-align:middle;
}

/* v10.30: 행사 목록 - 현장/일반 스탭 열 분리 */
.event-list-card .data-row{grid-template-columns:2fr 1fr 1.4fr .7fr .7fr .7fr .8fr 40px}
@media(max-width:900px){
  .event-list-card .data-row{grid-template-columns:1.7fr 1fr 1fr}
  .event-list-card .data-row span:nth-child(3),
  .event-list-card .data-row span:nth-child(4),
  .event-list-card .data-row span:nth-child(5),
  .event-list-card .data-row span:nth-child(6),
  .event-list-card .data-row span:nth-child(8){display:none}
  .event-list-card .data-row span:nth-child(7){display:block}
}
@media(max-width:620px){
  .event-list-card .data-row{grid-template-columns:1.6fr 1fr}
  .event-list-card .data-row span:nth-child(n+3){display:none}
}
/* v10.31 참석자 역할별 편집 */
.member-manage-modal{width:min(1080px,calc(100vw - 32px));max-width:1080px}
.member-manage-list{display:grid;gap:10px}
.member-manage-row-wrap{display:flex;gap:8px;align-items:center}
.member-manage-row{display:grid;grid-template-columns:1.25fr 110px 110px 90px 110px auto;gap:8px;align-items:center;flex:1}
.member-add-row{padding-top:12px;border-top:1px solid var(--line)}
.member-manage-row .input{min-width:0}
@media(max-width:900px){.member-manage-row{grid-template-columns:1fr 1fr}.member-manage-row-wrap{align-items:flex-end}.member-manage-row-wrap>form:last-child{flex:0 0 auto}}

/* v10.32 섭외자/잎사귀 관리 팝업: 인도자 수정 팝업과 동일한 세로형 폼 */
.member-compact-modal{width:min(540px,calc(100vw - 32px));max-width:540px;max-height:calc(100vh - 40px);overflow:auto}
.member-compact-list{display:grid;gap:14px}
.member-compact-card{padding:0 0 14px;border-bottom:1px solid var(--line,#e8e9ec)}
.member-compact-card:last-child{border-bottom:0}
.member-compact-card .form-stack{margin:0}
.member-item-actions{justify-content:space-between}
.member-item-actions .danger-btn{margin-right:auto}
.member-main-delete-note{font-size:12px;color:var(--muted,#7b818a);align-self:center}
.member-modal-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:18px;padding-top:16px;border-top:1px solid var(--line,#e8e9ec)}
.member-add-card[hidden]{display:none!important}
.member-add-trigger:disabled{opacity:.5;cursor:not-allowed}

/* v10.33 참석자 관리 - 섭외자/잎사귀 편집 UI를 참석자 추가 카드와 통일 */
.member-editor-modal{width:min(560px,100%);max-height:88vh;overflow:auto}
.member-editor-list{display:grid;gap:14px}
.member-editor-card{margin:0}
.member-editor-card .form-stack{margin:0}
.member-editor-card .application-person-title{margin-bottom:12px}
.member-editor-card .member-item-actions{margin-top:12px}
.member-editor-card .member-item-actions .danger-btn{margin-right:auto}
.member-editor-card.member-add-card[hidden]{display:none!important}
.member-editor-modal .member-modal-footer{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:18px}

/* v10.34 common gender radio */
.gender-radio-field{border:0;padding:0;margin:0;min-width:0}
.gender-radio-field legend{font-size:13px;font-weight:700;margin:0 0 8px;color:var(--text,#20242a)}
.gender-radio-options{display:flex;gap:8px;align-items:center}
.gender-radio-options label{position:relative;display:inline-flex;align-items:center;margin:0;cursor:pointer}
.gender-radio-options input{position:absolute;opacity:0;pointer-events:none}
.gender-radio-options span{display:inline-flex;align-items:center;justify-content:center;min-width:72px;height:42px;padding:0 18px;border:1px solid #dfe3e8;border-radius:12px;background:#fff;font-size:14px;font-weight:700;line-height:1;color:#4b5563;transition:.15s ease}
.gender-radio-options input:checked + span{border-color:#17191c;background:#17191c;color:#fff}
.gender-radio-options input:focus-visible + span{outline:2px solid #6b7280;outline-offset:2px}
.participant-guide-edit-cell{cursor:pointer}
.participant-guide-edit-cell:hover{text-decoration:underline;text-underline-offset:3px}
.member-editor-modal .member-item-actions{justify-content:flex-end}

/* v10.35 member editor alignment */
.member-footer-right{display:flex;align-items:center;gap:10px;margin-left:auto}
.member-editor-card .fruit-title-row .fruit-remove-btn{margin-left:auto}
.member-editor-modal .member-add-card .form-actions{justify-content:flex-end}


/* v10.38 - 행사 수정 문의 연락처 폭 복구 / 인도자 관리자 메모 */
.event-contact-field{
  display:block;
  width:calc(50% - 7px);
}
.event-contact-field > .input{
  width:100%;
}
.participant-guide-manager-memo{
  min-height:84px;
  resize:vertical;
}
@media(max-width:900px){
  .event-contact-field{width:100%;}
}

/* v10.42 channel management modal alignment */
.kakao-channel-modal-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:6px}
.kakao-channel-modal-actions-right{display:flex;align-items:center;justify-content:flex-end;gap:8px}
@media(max-width:520px){.kakao-channel-modal-actions{align-items:flex-end}.kakao-channel-modal-actions-right{gap:6px}}

/* v10.42 UI 보완 - 카카오 채널 관리 팝업을 공통 관리자 폼 간격/버튼 스타일과 통일 */
#kakaoChannelManage .compact-modal{
  width:min(540px,calc(100vw - 32px));
  max-width:540px;
}
#kakaoChannelManage .modal-head{
  margin-bottom:22px;
}
#kakaoChannelManage .form-grid{
  display:flex;
  flex-direction:column;
  gap:18px;
}
#kakaoChannelManage .field{
  display:flex;
  flex-direction:column;
  gap:9px;
  margin:0;
  font-size:13px;
  font-weight:700;
}
#kakaoChannelManage .field .input{
  min-height:48px;
  padding:13px 14px;
}
#kakaoChannelManage .kakao-channel-modal-actions{
  margin-top:4px;
  padding-top:18px;
  border-top:1px solid var(--line);
}
#kakaoChannelManage .kakao-channel-modal-actions .soft-btn,
#kakaoChannelManage .kakao-channel-modal-actions .primary-btn{
  min-height:42px;
  padding:0 15px;
  border-radius:14px;
  text-decoration:none;
}
@media(max-width:520px){
  #kakaoChannelManage .compact-modal{width:calc(100vw - 24px)}
  #kakaoChannelManage .kakao-channel-modal-actions{align-items:center}
}


/* v10.43 카카오 채널 관리 - 링크 버튼 정렬/강조 */
#kakaoChannelManage .kakao-channel-link-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
  line-height:1;
  background:#eaf2ff;
  border-color:#9dbcf2;
  color:#2457a7;
  font-weight:800;
}
#kakaoChannelManage .kakao-channel-link-btn:hover{background:#dce9ff;border-color:#7ea5e8;color:#174789}

/* v10.44 onsite target / manager actions */
.onsite-person-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.onsite-manager-add-btn{font-weight:800}
#onsiteManagerList{display:grid;gap:16px}

/* v10.46 - 회차 입력 폭/통계 상세 가독성 */
[id^="sessionStats"] .monitor-table th{font-size:14px;padding:13px 11px;}
[id^="sessionStats"] .monitor-table td{font-size:16px;padding:14px 11px;}
[id^="sessionStats"] .monitor-table td b{font-size:17px;}
[id^="sessionStats"] .affiliation-badge{font-size:14px;}
@media(max-width:760px){
  [id^="sessionStats"] .monitor-table th{font-size:13px;}
  [id^="sessionStats"] .monitor-table td{font-size:15px;}
}

/* v10.50 - 회차별 신청/입장/미입장 그룹 구분 */
[id^="sessionStats"] .monitor-table .stats-group-end{border-right:3px solid #cbd2da;}
[id^="sessionStats"] .monitor-table .stats-group-checkin,[id^="sessionStats"] .monitor-table .stats-group-missing{border-left:3px solid #cbd2da;}
[id^="sessionStats"] .monitor-table .stats-group-apply{background:#f7f9fb;}
[id^="sessionStats"] .monitor-table .stats-group-checkin{background:#f2f7f4;}
[id^="sessionStats"] .monitor-table .stats-group-missing{background:#faf6f2;}
[id^="sessionStats"] .compact-table-wrap{overflow-x:auto;}
/* v10.51 event games */
.lucky-create-form>label{display:grid;gap:10px}.lucky-create-form .input{margin-top:0}.event-game-field{margin-top:18px}.event-items-textarea{min-height:300px;height:auto;padding:14px;resize:vertical;line-height:1.65}.event-game-body{margin:0;min-height:100vh;background:#f4f5f7;color:#15171a;font-family:Arial,'Noto Sans KR',sans-serif}.event-game-shell{max-width:920px;margin:0 auto;padding:42px 24px;text-align:center}.event-game-shell h1{font-size:clamp(30px,5vw,54px);margin:8px 0 30px}.roulette-stage,.timer-stage{background:#fff;border-radius:28px;padding:28px;box-shadow:0 18px 50px rgba(0,0,0,.1);position:relative}.roulette-stage canvas{width:min(680px,90vw);height:auto;max-width:100%}.roulette-pointer{font-size:42px;line-height:1;color:#111;margin-bottom:-20px;position:relative;z-index:2}.event-play-btn{min-width:200px;margin-top:22px;font-size:20px;padding:15px 28px}.event-result{font-size:28px;font-weight:800;min-height:42px;margin-top:20px}.timer-target{font-size:24px;color:#555}.timer-display{font-variant-numeric:tabular-nums;font-size:clamp(80px,18vw,180px);font-weight:900;letter-spacing:-.06em;margin:38px 0}.timer-stage{padding:50px 28px}

/* v10.52 roulette result modal */
.roulette-result-modal{position:fixed;inset:0;z-index:3000;display:none;align-items:center;justify-content:center;padding:24px;background:rgba(15,23,42,.58);backdrop-filter:blur(4px)}.roulette-result-modal.show{display:flex}.roulette-result-card{width:min(520px,92vw);background:#fff;border-radius:26px;padding:34px 28px;text-align:center;box-shadow:0 28px 80px rgba(0,0,0,.24)}.roulette-result-kicker{font-size:12px;font-weight:800;letter-spacing:.18em;color:#64748b}.roulette-result-card h2{margin:8px 0 18px;font-size:24px}.roulette-result-value{font-size:clamp(34px,7vw,58px);font-weight:900;line-height:1.2;word-break:keep-all;overflow-wrap:anywhere;margin:18px 0 26px}.roulette-result-close{min-width:150px}


/* v10.53: 열매 관리 기존 표 유지 + 수강생 진단 컬럼/팝업만 추가 */
.fruit-management-table th:nth-child(6),.fruit-management-table td:nth-child(6){width:14%;text-align:center;white-space:nowrap;}
.fruit-diagnosis-btn{border:1px solid #111827;background:#111827;color:#fff;border-radius:8px;padding:6px 12px;font:inherit;font-weight:700;cursor:pointer;}
.fruit-diagnosis-none,.fruit-diagnosis-unavailable{font-weight:700;color:#6b7280;}
.fruit-diagnosis-unavailable{color:#9a6700;}
.fruit-diagnosis-modal[hidden]{display:none;}.fruit-diagnosis-modal{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:20px;}
.fruit-diagnosis-backdrop{position:absolute;inset:0;background:rgba(17,24,39,.48);}
.fruit-diagnosis-dialog{position:relative;width:min(720px,100%);max-height:86vh;overflow:auto;background:#fff;border-radius:18px;padding:26px;box-shadow:0 24px 70px rgba(0,0,0,.24);}
.fruit-diagnosis-close{position:absolute;right:18px;top:14px;border:0;background:transparent;font-size:28px;cursor:pointer;color:#6b7280;}
.fruit-diagnosis-dialog h2{margin:4px 0 20px}.fruit-diagnosis-body{display:grid;gap:16px}.diagnosis-person{display:flex;gap:12px;align-items:center;padding:14px 16px;background:#f7f8fa;border-radius:12px}.diagnosis-person span{color:#6b7280;font-size:13px}
.diagnosis-section{border:1px solid #e5e7eb;border-radius:14px;padding:16px}.diagnosis-section h3{margin:0 0 12px;font-size:18px}.diagnosis-section h4{margin:16px 0 8px;font-size:14px}.diagnosis-info-row,.diagnosis-check-list>div{display:flex;justify-content:space-between;gap:18px;padding:7px 0;border-bottom:1px solid #f0f1f3}.diagnosis-info-row:last-child,.diagnosis-check-list>div:last-child{border-bottom:0}.diagnosis-info-row span,.diagnosis-check-list span{color:#6b7280}.diagnosis-info-row b,.diagnosis-check-list b{text-align:right}.diagnosis-empty{padding:12px;color:#6b7280;background:#f9fafb;border-radius:10px}.diagnosis-error{padding:14px;color:#991b1b;background:#fef2f2;border-radius:10px}.fruit-diagnosis-actions{display:flex;justify-content:flex-end;margin-top:20px}.diagnosis-modal-open{overflow:hidden}
@media(max-width:760px){.fruit-management-table{min-width:800px}.fruit-diagnosis-dialog{padding:22px 16px}.diagnosis-info-row,.diagnosis-check-list>div{align-items:flex-start}.diagnosis-check-list span{max-width:78%}}


/* v10.55: 수강생 진단 팝업 문구 및 닫기 버튼 정리 */
.fruit-diagnosis-actions{justify-content:center;margin-top:24px}
.fruit-diagnosis-footer-close{min-width:132px;border:1px solid #d1d5db;background:#fff;color:#374151;border-radius:10px;padding:10px 22px;font:inherit;font-weight:700;line-height:1.2;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.04);transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}
.fruit-diagnosis-footer-close:hover{background:#f8fafc;border-color:#9ca3af;box-shadow:0 3px 10px rgba(0,0,0,.08)}
.fruit-diagnosis-footer-close:active{transform:translateY(1px)}
.fruit-diagnosis-footer-close:focus-visible{outline:3px solid rgba(17,24,39,.14);outline-offset:2px}

/* v10.57 - roulette probability/effect editor */
.roulette-config-field{gap:12px}.roulette-config-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.roulette-config-head>div{display:grid;gap:5px}.roulette-probability-summary{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:rgba(15,23,42,.025);font-size:12px}.roulette-probability-summary b{font-size:15px}.roulette-probability-summary span{margin-left:auto;font-weight:800}.roulette-probability-summary .is-ok{color:#15803d}.roulette-probability-summary .is-error{color:#b91c1c}.roulette-config-list{display:grid;gap:9px}.roulette-config-row{display:grid;grid-template-columns:minmax(180px,1.6fr) minmax(120px,.65fr) minmax(150px,.8fr) 64px;gap:10px;align-items:end;padding:12px;border:1px solid var(--line);border-radius:13px;background:var(--card)}.roulette-config-row label{display:grid;gap:6px;font-size:11px;font-weight:750}.roulette-config-row .input{height:42px}.roulette-remove-item{height:42px}.roulette-remove-item:disabled{opacity:.35;cursor:not-allowed}@media(max-width:760px){.roulette-config-head{align-items:stretch;flex-direction:column}.roulette-config-row{grid-template-columns:1fr 1fr}.roulette-config-row label:first-child{grid-column:1/-1}.roulette-remove-item{width:100%}}
#rouletteConfetti{z-index:3100}
