/* 事業者の管理画面（白地・押せるものだけ枠線か塗り） */
.adm{min-height:100vh}
.side{display:none}
.top{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--line);height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;gap:12px}
.top .biz{font-weight:700;display:flex;align-items:center;gap:8px;min-width:0}
.top .biz span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.icon-btn{position:relative;width:44px;height:44px;border:0;background:none;border-radius:var(--r);display:grid;place-items:center;cursor:pointer}
.icon-btn:hover{background:var(--fill)}
.icon-btn .dot{position:absolute;top:6px;right:6px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--err);color:#fff;font-size:10px;font-weight:700;line-height:16px;text-align:center}
.content{padding:24px 16px 112px;max-width:1120px}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;background:var(--bg);border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(5,1fr);padding-bottom:env(safe-area-inset-bottom)}
.tabbar a,.tabbar button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0 10px;font-size:11px;text-decoration:none;color:var(--text2);background:none;border:0;cursor:pointer}
.tabbar .on{color:var(--text);font-weight:700}
.tabbar svg{width:24px;height:24px}
@media(min-width:1024px){
 .adm{display:grid;grid-template-columns:232px 1fr}
 .side{display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;border-right:1px solid var(--line);padding:16px 12px;gap:2px}
 .side .biz{font-weight:700;padding:8px 12px 20px;display:flex;gap:8px;align-items:center}
 .side a{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:var(--r);text-decoration:none;color:var(--text2);font-size:14px}
 .side a:hover{background:var(--fill)}
 .side a.on{background:var(--primary);color:#fff;font-weight:700}
 .side a .n{margin-left:auto;font-size:11px;font-weight:700;color:var(--err)}
 .side a.on .n{color:#fff}
 .side .foot{margin-top:auto;font-size:12px;color:var(--text3);padding:12px}
 .side svg{width:20px;height:20px;flex:none}
 .tabbar,.top .menu-btn{display:none}
 .content{padding:32px 40px 80px}
}
.ph-title{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}
.ph-title .sub{color:var(--text2);font-size:13px;margin-top:2px}

/* 数字のまとめ（押せないので塗らない） */
.metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:24px 16px;margin-bottom:40px}
@media(min-width:768px){.metrics{grid-template-columns:repeat(4,1fr)}}
.metric .k{font-size:12px;color:var(--text2)}
.metric .v{font-size:28px;font-weight:700;line-height:1.3;font-feature-settings:"tnum"}
.metric .v small{font-size:13px;font-weight:400;color:var(--text2);margin-left:2px}
.grid2{display:grid;gap:40px}
@media(min-width:1024px){.grid2{grid-template-columns:1fr 1fr;gap:48px}}
.blk>h2{font-size:17px;font-weight:700;margin-bottom:8px;display:flex;justify-content:space-between;align-items:baseline}
.blk>h2 a{font-size:13px;font-weight:500}
.blk+.blk{margin-top:40px}

/* 押せる行（枠線） */
.tap{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:1px solid var(--line2);border-radius:var(--r);background:var(--bg);text-decoration:none;cursor:pointer;text-align:left}
.tap:hover{background:var(--fill)}
.taps>*+*{margin-top:8px}
.tap .tm{font-weight:700;font-feature-settings:"tnum";width:52px;flex:none}
.tap .cnt{font-feature-settings:"tnum";white-space:nowrap}
.bar{height:2px;background:var(--line);margin-top:6px;position:relative}
.bar i{position:absolute;left:0;top:0;bottom:0;background:var(--primary)}

/* 予約の一覧 */
.filters{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:flex-end;margin-bottom:16px}
.seg{display:inline-flex;max-width:100%;overflow-x:auto;border:1px solid var(--line2);border-radius:var(--r)}
.seg button{flex:none;white-space:nowrap;border:0;background:var(--bg);padding:0 14px;min-height:36px;font-size:13px;cursor:pointer;font-weight:500}
.seg button+button{border-left:1px solid var(--line2)}
.seg button:hover{background:var(--fill)}
.seg button.on{background:var(--primary);color:#fff;font-weight:700}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:left;font-size:12px;color:var(--text2);font-weight:500;padding:8px 10px;border-bottom:1px solid var(--line)}
.tbl td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl tr.clk{cursor:pointer}
.tbl tr.clk:hover td{background:var(--fill)}
.tbl .no{font-size:12px;color:var(--text2);font-feature-settings:"tnum"}
@media(max-width:767px){.tbl thead{display:none}.tbl tr{display:block;border:1px solid var(--line2);border-radius:var(--r);padding:10px 12px;margin-bottom:8px}.tbl td{display:block;border:0;padding:2px 0}.tbl td:empty{display:none}}

/* 詳細 */
.two{display:grid;gap:40px}
@media(min-width:1024px){.two{grid-template-columns:1fr 320px;gap:56px}}
.actions{display:flex;flex-direction:column;gap:8px}
.hist{font-size:13px;color:var(--text2)}
.hist div{padding:3px 0}

/* カレンダー */
.mcal{display:grid;grid-template-columns:repeat(7,1fr);border-left:1px solid var(--line);border-top:1px solid var(--line)}
.mcal .w{font-size:12px;color:var(--text2);padding:6px 8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.mcal .c{min-height:104px;border:0;border-radius:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:6px;cursor:pointer;background:var(--bg);text-align:left;font:inherit;display:flex;flex-direction:column;gap:3px}
.mcal .c:hover{background:var(--fill)}
.mcal .c.out{color:var(--text3);cursor:default}
.mcal .c.out:hover{background:var(--bg)}
.mcal .c.sel{outline:2px solid var(--focus);outline-offset:-2px}
.mcal .d{font-size:13px;font-weight:700}
.mcal .c.today .d{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:12px;background:var(--primary);color:#fff}
.chip{font-size:11px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-feature-settings:"tnum"}
.chip.full{color:var(--err)}
.chip.stop{color:var(--text3);text-decoration:line-through}
@media(max-width:767px){.mcal .c{min-height:56px;padding:4px}.mcal .chip{display:none}.mcal .dots{display:flex;gap:2px}.mcal .dots i{width:5px;height:5px;border-radius:3px;background:var(--primary)}.mcal .dots i.full{background:var(--err)}}
@media(min-width:768px){.mcal .dots{display:none}}
.calwrap{display:grid;gap:32px}
@media(min-width:1200px){.calwrap{grid-template-columns:1fr 340px}}

/* 名簿 */
.roster .who{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.ckbtn{min-width:96px}
.ckbtn.done{background:var(--ok-bg);border-color:var(--ok-bg);color:var(--ok)}

/* 受付（読み取り） */
.scan{aspect-ratio:1;max-width:320px;width:100%;margin:0 auto;border-radius:var(--r);background:#1a1a1a;position:relative;overflow:hidden}
.scan::before{content:"";position:absolute;inset:18%;border:2px solid #fff;border-radius:8px}
.scan::after{content:"";position:absolute;left:18%;right:18%;height:2px;background:#fff;top:50%;animation:scan 2s ease-in-out infinite}
@keyframes scan{0%,100%{top:22%}50%{top:76%}}
.scan .cap{position:absolute;left:0;right:0;bottom:12px;text-align:center;color:#fff;font-size:12px}

/* 体験の編集 */
.etabs{display:flex;gap:4px;overflow-x:auto;border-bottom:1px solid var(--line);margin-bottom:24px}
.etabs button{border:0;background:none;padding:10px 12px;font-size:14px;cursor:pointer;white-space:nowrap;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--text2)}
.etabs button:hover{color:var(--text)}
.etabs button.on{border-bottom-color:var(--primary);color:var(--text);font-weight:700}
.form{max-width:640px}
.form>*+*{margin-top:24px}
.frow{display:grid;gap:16px}
@media(min-width:640px){.frow{grid-template-columns:1fr 1fr}.frow.three{grid-template-columns:2fr 1fr 1fr}}
.list-edit .item{display:grid;grid-template-columns:1fr 120px 40px;gap:12px;align-items:end;padding:8px 0}
.list-edit .item.four{grid-template-columns:1fr 100px 100px 40px}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.photos button{border:1px solid var(--line2);border-radius:var(--r);padding:0;background:none;cursor:pointer;position:relative;overflow:hidden}
.photos button .ph{aspect-ratio:4/3;border-radius:0}
.photos button.on{outline:2px solid var(--focus);outline-offset:1px}
.photos button .ord{position:absolute;top:6px;left:6px;width:22px;height:22px;border-radius:11px;background:var(--primary);color:#fff;font-size:12px;font-weight:700;display:grid;place-items:center}
.daypick{display:flex;flex-wrap:wrap;gap:8px}
.daypick label{display:flex}
.daypick input{position:absolute;opacity:0}
.daypick span{min-width:44px;height:40px;display:grid;place-items:center;border:1px solid var(--line2);border-radius:var(--r);cursor:pointer;padding:0 10px}
.daypick input:checked+span{background:var(--primary);border-color:var(--primary);color:#fff;font-weight:700}
.daypick input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}
.savebar{position:sticky;bottom:0;background:var(--bg);border-top:1px solid var(--line);padding:12px 0;display:flex;gap:12px;justify-content:flex-end;margin-top:40px}
@media(max-width:1023px){.savebar{bottom:57px}}
.switch{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;cursor:pointer}
.switch input{appearance:none;width:44px;height:26px;border-radius:13px;border:1px solid var(--line2);background:var(--bg);position:relative;cursor:pointer;flex:none;margin:0}
.switch input::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:9px;background:var(--line2);transition:left .15s}
.switch input:checked{background:var(--primary);border-color:var(--primary)}
.switch input:checked::after{left:21px;background:#fff}
.switch input:focus-visible{outline:2px solid var(--focus);outline-offset:2px}

/* 予約ボタン */
.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.6;white-space:pre-wrap;word-break:break-all;border:1px solid var(--line);border-radius:var(--r);padding:14px;max-height:260px;overflow:auto}
.preview{border:1px dashed var(--line2);border-radius:var(--r);padding:24px;min-height:120px}
.preview iframe{width:100%;height:560px;border:0}

/* ログイン */
.auth{min-height:100vh;display:grid;place-items:center;padding:24px 16px}
.auth .box{width:100%;max-width:400px}
.auth .brand{display:flex;align-items:center;gap:8px;font-weight:700;margin-bottom:40px}
.steps-dots{display:flex;gap:4px;margin-bottom:24px}
.steps-dots i{flex:1;height:2px;background:var(--line)}
.steps-dots i.on{background:var(--primary)}

/* 集計 */
.hbar{display:grid;grid-template-columns:140px 1fr 72px;gap:12px;align-items:center;font-size:13px;padding:6px 0}
.hbar .tr{height:8px;background:var(--line);border-radius:2px;position:relative}
.hbar .tr i{position:absolute;left:0;top:0;bottom:0;background:var(--primary);border-radius:2px}
.hbar .v{text-align:right;font-feature-settings:"tnum"}
@media(max-width:640px){.hbar{grid-template-columns:96px 1fr 56px}}
.vbars{display:flex;align-items:flex-end;gap:6px;height:160px;border-bottom:1px solid var(--line);padding-top:8px}
.vbars div{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;height:100%}
.vbars i{width:100%;max-width:28px;background:var(--primary);border-radius:2px 2px 0 0}
.vbars i.fut{background:var(--line2)}
.vbars span{font-size:10px;color:var(--text2)}
