@charset "utf-8";
/* the W.O.W.整体 予約Webアプリ
   HPのテイストに合わせたブルーグレーとゴールド。見出しは明朝体、本文はNoto Sans。
   角は角丸2px。スマホ前提。ライト／ダークの両方に対応。 */

:root{
  --bg:#FAFCFD;--surface:#FFFFFF;--ink:#2A4458;--muted:#6F8798;--line:#DCE8EF;
  --accent:#5B7F99;--accent-ink:#FFFFFF;--soft:#EEF4F8;--gold:#C9AE6A;
  --gc:#A9C8DA;--treat:#6A8FAA;--qqt:#DCC58A;--other:#E3EBF0;--warn:#C46A5E;
  color-scheme:light;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#0A1824;--surface:#11273A;--ink:#E8F0F5;--muted:#9DB6C8;--line:#24435A;
    --accent:#D4B96A;--accent-ink:#0D2233;--soft:#173248;--gold:#D4B96A;
    --gc:#6B9AB8;--treat:#8FB6D2;--qqt:#D4B96A;--other:#3A5468;--warn:#E38282;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#0A1824;--surface:#11273A;--ink:#E8F0F5;--muted:#9DB6C8;--line:#24435A;
  --accent:#D4B96A;--accent-ink:#0D2233;--soft:#173248;--gold:#D4B96A;
  --gc:#6B9AB8;--treat:#8FB6D2;--qqt:#D4B96A;--other:#3A5468;--warn:#E38282;
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:inherit}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;background:var(--bg);color:var(--ink);
  font-family:"Noto Sans","Noto Sans JP",system-ui,-apple-system,"Hiragino Sans",sans-serif;
  font-size:15px;line-height:1.6}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:#5B7F99}
button{font:inherit;color:inherit}
button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid var(--gc);outline-offset:2px}

body.staff .bar{background:#8197A6;color:#FFFFFF}
body.staff::before{background:#8197A6}
.flow .gc,.flow .qqt,.tl .blk.gc,.tl .blk.qqt{color:#22384A}
.bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;background:#5B7F99;color:#FFFFFF;
  padding:12px 18px;display:flex;align-items:baseline;gap:10px;border-bottom:2px solid var(--gold)}
.bar .brand{font-family:"Noto Serif JP",serif;font-weight:600;font-size:18px;letter-spacing:.06em}
.bar .sub{font-size:11px;letter-spacing:.2em;color:#F3E6C0}
.bar .who{margin-left:auto;font-size:12px;color:#F3E6C0}

.wrap{max-width:520px;margin:0 auto;padding:0 16px 120px}

.pick{margin:14px 0 0;padding:10px 12px;border:1px solid var(--line);border-radius:2px;font-size:13px;color:var(--muted);
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--surface)}
.pick select,.pick input{font:inherit;padding:6px 8px;border-radius:2px;border:1px solid var(--line);background:var(--surface);color:var(--ink)}
.pick select{flex:1 1 180px;min-width:0}

.me{margin-top:14px;background:var(--surface);border-radius:2px;padding:16px;border:1px solid var(--line)}
.me h1{margin:0 0 4px;font-size:19px}
.me .course{font-size:14px;color:var(--muted);margin:0 0 12px}
.flow{display:flex;height:34px;border-radius:2px;overflow:hidden}
.flow span{display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;padding:0 4px}
.flow .gc{background:var(--gc)} .flow .treat{background:var(--treat)} .flow .qqt{background:var(--qqt)}
:root[data-theme="dark"] .flow span{color:#0D1A2E}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .flow span{color:#0D1A2E}}
.me .steps{list-style:none;margin:10px 0 0;padding:0;font-size:13px;color:var(--muted)}
.me .steps li{padding:2px 0}

.tabs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;margin:18px 0 6px;background:var(--soft);padding:4px;border-radius:2px}
.tabs button{border:0;background:transparent;padding:9px 4px;border-radius:2px;font-size:14px;cursor:pointer;color:var(--muted)}
.tabs button[aria-selected="true"]{background:var(--surface);color:var(--ink);font-weight:700;box-shadow:0 1px 2px rgba(0,0,0,.08)}
/* スタッフ画面はタブが5つあるので、折り返さないように少し詰める */
body.staff .tabs{gap:2px;padding:3px}
body.staff .tabs button{font-size:13px;padding:9px 2px;white-space:nowrap;letter-spacing:-.02em}
@media (max-width:360px){body.staff .tabs button{font-size:12px}}

h2{font-family:"Noto Serif JP",serif;font-weight:600;font-size:16px;letter-spacing:.04em;margin:24px 0 10px;padding-left:10px;border-left:2px solid var(--gold)}
.me h1,.sheet h3,.card .when,.tk-num b{font-family:"Noto Serif JP",serif;font-weight:600}
.price .tot span:last-child{color:var(--gold)}
.hint{font-size:13px;color:var(--muted);margin:-4px 0 10px}

.banner{background:var(--soft);border-radius:2px;padding:10px 12px;font-size:13px;margin-top:12px;display:flex;justify-content:space-between;align-items:center;gap:8px}
.banner button{border:1px solid var(--line);background:var(--surface);border-radius:2px;padding:4px 10px;font-size:13px;cursor:pointer}

.dates{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 8px;scroll-snap-type:x proximity}
.date{flex:0 0 58px;border:1px solid var(--line);background:var(--surface);border-radius:2px;padding:8px 0;text-align:center;cursor:pointer;scroll-snap-align:start}
.date .md{display:block;font-size:15px;font-weight:700}
.date .wd{display:block;font-size:12px;color:var(--muted)}
.date .n{display:block;font-size:11px;color:var(--muted);margin-top:2px}
.date.sat .wd{color:#3B6FB6} .date.sun .wd{color:var(--warn)}
.date.full{opacity:.45}
.date[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.date[aria-pressed="true"] .wd,.date[aria-pressed="true"] .n{color:var(--accent-ink)}

.nom{display:flex;gap:8px;flex-wrap:wrap}
.nom button{border:1px solid var(--line);background:var(--surface);border-radius:2px;padding:7px 14px;font-size:14px;cursor:pointer}
.nom button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700}

.ticket{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.tk-num{display:flex;align-items:baseline;gap:10px}
.tk-num b{font-size:22px}
.tk-num span{font-size:13px;color:var(--muted)}
.tk-dots{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 6px}
.tk-dots i{width:16px;height:16px;border-radius:50%;border:2px solid var(--accent)}
.tk-dots i.free{background:var(--accent)}
.tk-dots i.res{background:repeating-linear-gradient(45deg,var(--accent) 0 3px,transparent 3px 6px)}
.tk-dots i.used{background:var(--line);border-color:var(--line)}
.tk-sub{font-size:13px;color:var(--muted);margin:0}

.price{margin-top:14px;background:var(--surface);border:1px solid var(--line);border-radius:2px;padding:10px 14px;font-size:14px}
.price div{display:flex;justify-content:space-between;gap:10px;padding:3px 0;font-variant-numeric:tabular-nums}
.price .tot{border-top:1px solid var(--line);margin-top:4px;padding-top:8px;font-weight:700}

.form{display:grid;gap:10px;margin-top:14px;font-size:14px}
.form label{display:grid;gap:4px}
.form input,.form textarea,.form select{font:inherit;padding:9px 10px;border-radius:2px;border:1px solid var(--line);background:var(--bg);color:var(--ink)}
.form .sh{font-family:"Noto Serif JP",serif;font-weight:600;font-size:14px;margin:10px 0 0;color:var(--muted)}
.form .chk{display:flex;gap:8px;align-items:flex-start}
.form .radio{display:grid;gap:6px}
.choice{display:grid;gap:10px}
.choice button{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:2px;
  padding:16px;cursor:pointer;display:flex;flex-direction:column;gap:2px}
.choice b{font-size:16px}
.choice span{font-size:13px;color:var(--muted)}
.menusel{width:100%;font:inherit;padding:10px;border-radius:2px;border:1px solid var(--line);background:var(--surface);color:var(--ink)}
.form .row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.swap{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px}
.swap select{font:inherit;padding:8px 10px;border:1px solid var(--line);border-radius:2px;background:var(--surface);color:var(--ink)}
.err{color:var(--warn);font-size:13px;margin:0}
.link{border:0;background:none;color:var(--accent);padding:0;font-size:14px;cursor:pointer;margin-top:14px;text-decoration:underline}

.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.slot{border:1px solid var(--line);background:var(--surface);border-radius:2px;padding:10px 0;font-size:15px;font-weight:500;cursor:pointer;font-variant-numeric:tabular-nums}
.slot:hover{border-color:var(--accent)}
.empty{background:var(--surface);border:1px solid var(--line);border-radius:2px;padding:18px;font-size:14px;color:var(--muted);text-align:center}

.card{background:var(--surface);border:1px solid var(--line);border-radius:2px;padding:14px 16px;margin-bottom:12px}
.card .when{font-weight:700;font-size:16px}
.card ul,.sheet ul{list-style:none;margin:8px 0 12px;padding:0;font-size:14px}
.card li,.sheet li{display:flex;gap:10px;align-items:center;padding:2px 0}
.dot{width:10px;height:10px;border-radius:50%;flex:0 0 10px;display:inline-block}
.dot.gc{background:var(--gc)} .dot.treat{background:var(--treat)} .dot.qqt{background:var(--qqt)}
.time{font-variant-numeric:tabular-nums;color:var(--muted);min-width:96px}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.btn{border-radius:2px;padding:9px 14px;font-size:14px;cursor:pointer;border:1px solid var(--line);background:var(--surface)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700}
.btn.danger{color:var(--warn);border-color:var(--warn)}
.btn:disabled{opacity:.4;cursor:not-allowed}
.note{font-size:12px;color:var(--muted);margin-top:8px}

.tl-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:2px;padding:10px 0}
.tl{position:relative}
.tl .row{display:flex;align-items:center;height:34px}
.tl .lab{position:sticky;left:0;z-index:2;flex:0 0 96px;padding:0 10px;font-size:12px;background:var(--surface);white-space:nowrap}
.tl .lane{position:relative;height:26px;background:repeating-linear-gradient(90deg,var(--line) 0 1px,transparent 1px 60px)}
.tl .blk{position:absolute;top:2px;bottom:2px;border-radius:2px;font-size:10px;color:#fff;padding:0 4px;overflow:hidden;white-space:nowrap;line-height:22px}
.tl .blk.other{background:var(--other);color:var(--ink)}
.tl .blk.gc{background:var(--gc)} .tl .blk.treat{background:var(--treat)} .tl .blk.qqt{background:var(--qqt)}
.tl .blk.mine{outline:2px solid var(--ink)}
.tl .blk.off{background:repeating-linear-gradient(45deg,var(--other) 0 6px,transparent 6px 12px);color:var(--ink)}
.tl .hours{display:flex;margin-left:96px;font-size:10px;color:var(--muted)}
.tl .hours span{flex:0 0 60px}
.tl .bar5{position:absolute;bottom:0;width:5px;background:var(--treat);opacity:.7}
.tl .bar5.max{background:var(--warn);opacity:1}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:10px}
.legend span{display:flex;align-items:center;gap:6px}

.scrim{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:20}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:21;background:var(--surface);border-radius:2px;
  padding:20px 18px calc(20px + env(safe-area-inset-bottom,0px));max-width:560px;margin:0 auto;
  box-shadow:0 -6px 24px rgba(0,0,0,.18);max-height:88vh;overflow:auto}
.sheet h3{margin:0 0 2px;font-size:18px}
.sheet .sub{color:var(--muted);font-size:13px;margin:0 0 14px}
.sheet .actions{margin-top:16px}
.sheet .actions .btn{flex:1}
@media (prefers-reduced-motion:no-preference){.sheet{animation:up .22s ease-out}@keyframes up{from{transform:translateY(30px);opacity:0}}}

.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);
  padding:10px 16px;border-radius:2px;font-size:14px;z-index:30;opacity:0;pointer-events:none;transition:opacity .2s;max-width:88vw;text-align:center}
.toast.show{opacity:1}
.loading{font-size:13px;color:var(--muted);padding:12px 0}
footer{font-size:12px;color:var(--muted);margin-top:28px;line-height:1.7}
[hidden]{display:none !important}

/* スタッフのメモ（患者さんの画面には出ない） */
.memo{margin-top:12px;padding:10px 12px;border-left:3px solid var(--accent);background:var(--soft);
  border-radius:2px;font-size:13px;line-height:1.7}
.memo b{display:block;font-size:11px;letter-spacing:.08em;color:var(--muted);font-weight:500;margin-bottom:2px}
.memo span{display:block}

/* カレンダーの自動反映の案内 */
.sync{margin-top:14px;border:1px solid var(--line);border-radius:2px;background:var(--surface);font-size:13px}
.sync summary{padding:10px 12px;cursor:pointer;font-weight:500}
.sync>p{margin:0;padding:0 12px 10px;line-height:1.8;color:var(--muted)}
.sync b{color:var(--ink)}
.sync .url{display:block;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:11px;background:var(--soft);border-radius:2px;padding:6px 8px;margin:4px 0 6px;color:var(--ink)}
.sync .warn{color:var(--ink)}
.sync .btn{font-size:12px;padding:4px 10px}
