:root{--bg:#f3f6fb;--band:#061a8c;--surface:#fff;--sunken:#e6ecf5;--line:#cdd7e6;--ink:#14233b;--muted:#566680;--blue:#0d4fb6;--green:#8ed870;--navy:#06207a;--soft:#dbe7fa;--warn:#f6e8c8;--warnink:#7a4e05;--bad:#f9dfdc;--badink:#a02018}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 "Helvetica Neue",Helvetica,Arial,"PingFang SC","Noto Sans SC",sans-serif}
header{background:var(--band);border-bottom:2px solid var(--green);color:#fff}.bar{max-width:1040px;margin:auto;padding:10px max(16px,env(safe-area-inset-left));display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.brand{display:flex;gap:10px;align-items:center;font-weight:700;font-size:1.1rem}.brand img{width:52px;height:auto}.brand em{font-style:normal;color:var(--green)}
nav{display:flex;gap:4px;flex-wrap:wrap}nav button{border:0;background:none;color:#cdd8f7;padding:8px 12px;border-radius:7px;font:inherit;font-weight:700;cursor:pointer}nav button[aria-current=page]{background:var(--green);color:var(--navy)}
main{max-width:1040px;margin:auto;padding:18px max(16px,env(safe-area-inset-left)) 60px;display:grid;gap:16px}h1,h2,h3,p{margin:0}h1{font-size:1.8rem;line-height:1.15}h2{font-size:1.2rem}h3{font-size:1rem}.muted{color:var(--muted)}.small{font-size:.875rem}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:18px;display:grid;gap:12px}.row{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.between{justify-content:space-between}
button,input,select,textarea{font:inherit;color:inherit}.btn{border:1px solid var(--line);background:#fff;padding:9px 14px;border-radius:8px;font-weight:700;cursor:pointer}.btn.primary{background:var(--green);border-color:var(--green);color:var(--navy)}
input[type=text],input[type=email],input[type=date],input[type=time],select,textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:9px 11px;background:#fff}textarea{min-height:120px}label.f{display:grid;gap:4px;font-weight:700;font-size:.9rem}
.opt,.slot,.day{border:1px solid var(--line);background:#fff;border-radius:8px;cursor:pointer}.opt{text-align:left;padding:11px 13px;font-weight:700}.opt[aria-pressed=true]{background:var(--soft);border-color:var(--blue)}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:7px}.slot{padding:8px 0}.slot[aria-pressed=true],.day[aria-pressed=true]{background:var(--blue);border-color:var(--blue);color:#fff}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.cal span{text-align:center;font-size:.76rem;font-weight:700;color:var(--muted)}.day{padding:9px 0;font-weight:700}.day:disabled{background:var(--sunken);border-color:transparent;color:var(--muted);cursor:not-allowed;opacity:.7}
.lang{justify-self:end;display:flex;gap:4px;background:var(--sunken);padding:4px;border-radius:9px}.lang button{border:0;background:none;padding:6px 12px;border-radius:6px;font-weight:700;cursor:pointer;color:var(--muted)}.lang button[aria-pressed=true]{background:#fff;color:var(--ink)}
.error{background:var(--bad);color:var(--badink);padding:8px 11px;border-radius:7px;font-size:.9rem}.note{background:var(--warn);color:var(--warnink);padding:8px 11px;border-radius:7px;font-size:.9rem}.check{display:flex;gap:9px;font-size:.92rem}.check input{margin-top:4px}
.appt{display:grid;grid-template-columns:60px minmax(0,1fr) auto;gap:10px;align-items:center;border-top:1px solid var(--line);padding:10px 0}.link{border:0;background:none;padding:0;color:var(--blue);font-weight:700;text-decoration:underline;cursor:pointer;text-align:left}
.views{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.view{display:grid;gap:6px;min-width:0}.cmp{position:relative;aspect-ratio:3/4;background:var(--sunken);border-radius:8px;overflow:hidden;display:grid;place-items:center}.cmp img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.cmp .a{clip-path:inset(0 0 0 50%)}input[type=range]{width:100%}
.up{position:relative;overflow:hidden;display:inline-block}.up input{position:absolute;inset:0;opacity:0;cursor:pointer}.log{font-size:.85rem;display:grid;gap:4px}@media(max-width:760px){.views{grid-template-columns:repeat(2,minmax(0,1fr))}.appt{grid-template-columns:50px minmax(0,1fr)}.appt>.end{grid-column:2}}
.brandtext{display:grid;line-height:1.25}.brandtext small{font-size:.76rem;font-weight:400;color:#c3cef5}

.seg{display:flex;gap:4px;background:var(--sunken);padding:4px;border-radius:9px}.seg button{border:0;background:none;padding:6px 14px;border-radius:6px;font-weight:700;cursor:pointer;color:var(--muted)}.seg button[aria-pressed=true]{background:#fff;color:var(--ink)}.sr{position:absolute;width:1px;height:1px;overflow:hidden}
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.wd{display:grid;gap:5px;align-content:start;min-width:0;min-height:160px;padding:6px;border:1px solid var(--line);border-radius:8px}.wd.now,.md.now{border-color:var(--blue);background:var(--soft)}.ev{border:0;border-radius:5px;padding:4px 5px;font-size:.76rem;text-align:left;cursor:pointer;background:var(--soft);color:var(--ink);overflow-wrap:anywhere}.ev.block{background:var(--sunken);color:var(--muted)}
.month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.mh{text-align:center;font-size:.78rem;font-weight:700;color:var(--muted)}.md{display:grid;align-content:start;gap:2px;min-width:0;min-height:96px;padding:6px;border:1px solid var(--line);border-radius:8px;background:#fff;text-align:left;cursor:pointer;overflow:hidden}.md.out{opacity:.45}.md span{font-size:.72rem;color:var(--blue);font-weight:700}.md small{font-size:.68rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:760px){.week{grid-template-columns:minmax(0,1fr)}.wd{min-height:0}.md{min-height:62px;padding:4px}.md small{display:none}}
[hidden]{display:none!important}

.tools{display:flex;gap:8px;flex-wrap:wrap}

.form{max-width:640px}.line{display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px;align-items:center}.line>span:first-child{font-weight:700;color:var(--blue)}.short{width:130px!important}.stack{display:grid;gap:8px}@media(max-width:520px){.line{grid-template-columns:minmax(0,1fr);gap:3px}}

body.admin main{max-width:none;padding-top:0;padding-left:0;padding-right:0}body.admin header .bar{max-width:none}.cal-layout{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:calc(100vh - 70px)}.side{background:#fff;border-right:1px solid var(--line);padding:14px;display:grid;gap:18px;align-content:start}.cal-main{padding:14px 16px;display:grid;gap:10px;align-content:start;min-width:0}.top h1{font-size:1.5rem}.top select{width:auto;padding:6px 8px}
.mini{display:grid;gap:6px;font-size:.82rem}.mini-g{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;text-align:center}.mini-g i{font-style:normal;color:var(--muted);font-size:.72rem}.mini-d{border:0;background:none;border-radius:50%;aspect-ratio:1;cursor:pointer;font:inherit;font-size:.78rem;padding:0}.mini-d.now{color:var(--blue);font-weight:700}.mini-d.sel{background:var(--blue);color:#fff}.skip{display:grid;gap:6px;font-size:.85rem}
.gridwrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:10px;max-height:calc(100vh - 200px)}.grid{display:grid;min-width:0}.corner,.dh{position:sticky;top:0;z-index:3;background:#fff;border:0;border-bottom:1px solid var(--line);padding:8px 2px;font-weight:700;font-size:.84rem}.dh{cursor:pointer}.dh.now{color:var(--blue)}.labels{position:relative;height:780px}.labels span{position:absolute;right:6px;font-size:.72rem;color:var(--muted);transform:translateY(-1px)}.col{position:relative;height:780px;border-left:1px solid var(--line);background-image:repeating-linear-gradient(to bottom,var(--line) 0 1px,transparent 1px 60px);cursor:copy}.shut{position:absolute;left:0;right:0;background:#d8dde6;pointer-events:none}
.ev2{position:absolute;left:2px;right:2px;border:0;border-radius:4px;background:var(--blue);color:#fff;padding:4px 6px;text-align:left;cursor:pointer;overflow:hidden;display:grid;align-content:start;font-size:.76rem;line-height:1.25}.ev2.block{background:#b9c8d8;color:var(--ink)}.modal{position:fixed;inset:0;background:rgba(10,20,50,.45);display:grid;place-items:start center;padding:6vh 14px;overflow:auto;z-index:20}.sheet{background:var(--bg);border-radius:12px;width:min(640px,100%);padding:12px;display:grid;gap:10px}.sheet .panel{box-shadow:none}
@media(max-width:900px){.cal-layout{grid-template-columns:minmax(0,1fr)}.side{display:none}.gridwrap{max-height:none}}

.sheet:has(.card){padding:0;background:none;gap:6px;overflow:hidden}.sheet:has(.card)>.note,.sheet:has(.card)>.error{margin:0}.card{background:#fff;border-radius:12px;overflow:hidden;display:grid}.card-top{background:var(--band);color:#fff;padding:18px 20px;display:grid;gap:3px}.card-top h2{font-size:1.35rem}.x{border:0;background:none;color:#fff;font-size:1.6rem;line-height:1;cursor:pointer;padding:0 4px}.roomline{display:flex;align-items:center;gap:10px;margin-top:8px;font-weight:700}.roomline input{max-width:200px;color:var(--ink);padding:6px 10px}
.card-body{padding:18px 20px;display:grid;gap:16px}.sticky{display:grid;gap:4px;background:#fbf1cf;border:1px solid #ecd98f;border-radius:8px;padding:10px 12px}.sticky span{font-size:.76rem;font-weight:700;color:var(--warnink)}.sticky textarea{border:0;background:none;min-height:64px;padding:0;resize:vertical}.card-cols{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:18px}.card a{color:var(--blue);overflow-wrap:anywhere}.link.big{font-size:1.15rem;font-weight:700;padding:0}.card dl{margin:0;display:grid;gap:2px}.card dt{font-weight:700;color:var(--blue);font-size:.86rem;margin-top:8px}.card dd{margin:0}.card dd .link{padding:0;text-align:left}.acts{display:grid;gap:8px;align-content:start}.acts .btn.on{background:#1f7a4d;border-color:#1f7a4d;color:#fff}
.resched,.confirm{border:1px solid var(--line);border-radius:8px;padding:12px 14px;display:grid;gap:8px}.resched .row{align-items:end}.resched .row label{flex:1 1 120px}.confirm{background:var(--bad);border-color:#efc2bc}.card-foot{background:var(--navy);padding:10px 20px;display:flex;flex-wrap:wrap}.card-foot button{background:none;border:1px solid #ffffff55;border-right-width:0;color:#fff;padding:8px 14px;font:inherit;font-weight:700;cursor:pointer}.card-foot button:first-child{border-radius:7px 0 0 7px}.card-foot button:last-child{border-right-width:1px;border-radius:0 7px 7px 0}
@media(max-width:560px){.card-cols{grid-template-columns:minmax(0,1fr)}.card-foot button{padding:8px 10px}}
.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
input[type=tel],input[type=number]{width:100%;border:1px solid var(--line);border-radius:8px;padding:9px 11px;background:#fff}.paid{display:grid;gap:2px;background:#e4f4ea;border:1px solid #b9e0c7;border-radius:8px;padding:8px 10px}.paid .link{padding:0;justify-self:start}.resched .row label{min-width:0}
.mini-h{display:grid;grid-template-columns:32px 1fr 32px;align-items:center;text-align:center}.mini-h button{border:0;background:none;cursor:pointer;font-size:1.3rem;line-height:1;padding:4px 0;border-radius:6px}.mini-h button:hover{background:var(--soft)}.mini-t{text-align:center}
.hint{font-weight:400}
.form-h{background:var(--band);color:#fff;margin:-18px -18px 2px;padding:18px;border-radius:10px 10px 0 0}
.t-SI{background:#0d4fb6}.t-ZFI{background:#6b3fa0}.t-LDT{background:#0f766e}.t-SCAR{background:#b4481e}.t-IB{background:#475569}.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.8rem;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:12px;height:12px;border-radius:3px}
.form-page{max-width:680px;margin:auto;width:100%}.q{border:1px solid var(--line);border-radius:8px;padding:10px 12px;display:grid;gap:6px;margin:0;min-width:0}.q legend{font-weight:700;padding:0 4px}.bad.q,.bad.check,label.bad{outline:2px solid var(--badink);outline-offset:2px;border-radius:8px}.sc{display:grid;gap:2px;padding:4px 0}.sc>div{display:flex;gap:14px;flex-wrap:wrap}.sc label{display:inline-flex;gap:4px;align-items:center}.ans{margin:4px 0;display:grid;gap:2px}.ans dt{font-weight:700;font-size:.86rem}.ans dd{margin:0 0 6px;overflow-wrap:anywhere}
body.admin main>:not(.cal-layout):not(.modal){margin-inline:16px}body.admin main:has(>section,>h1,>button){padding-top:14px}
