:root{--navy:#1a2547;--violet:#7c3aed;--violet-d:#6d28d9;--ink:#1a2547;--mute:#556080;--line:#e1e4ef;--bg:#f5f6fb;--ok:#15803d;--warn:#d97706}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--violet);outline-offset:2px}
.top{background:var(--navy);color:#fff}
.top-in{max-width:1120px;margin:0 auto;padding:0 24px;min-height:64px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.brand{color:#fff;text-decoration:none;font-size:20px;font-weight:700;letter-spacing:-.01em}
.top-title{color:#dfe3f2;font-size:15px;flex:1}
.link-btn{background:none;border:0;color:#dfe3f2;font:inherit;font-size:14px;cursor:pointer;min-height:44px;padding:0 8px;text-decoration:underline}
.wrap{max-width:1120px;margin:0 auto;padding:16px 24px 64px;display:flex;flex-direction:column;gap:24px}
h1{margin:0;font-size:32px;letter-spacing:-.02em}
h2{margin:0;font-size:20px;font-weight:600}
h3{margin:0;font-size:18px;font-weight:600}
p{margin:0}
.sub{color:var(--mute);margin-top:8px}
.help{color:var(--mute);font-size:14px;margin-top:4px}
.back{display:inline-flex;align-items:center;min-height:44px;color:var(--violet-d);text-decoration:none;font-weight:600;font-size:15px}
.card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px;display:flex;flex-direction:column;gap:20px}
.card.tight{gap:12px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:20px}
.cols{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}
.col-main{flex:999 1 620px;min-width:0;display:flex;flex-direction:column;gap:24px}
.col-side{flex:1 1 320px;min-width:0;display:flex;flex-direction:column;gap:24px}
a.place{display:flex;flex-direction:column;gap:16px;padding:24px;background:#fff;border:1px solid var(--line);border-radius:16px;text-decoration:none;color:inherit}
a.place:hover{border-color:var(--violet)}
.row{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px}
.row>.grow{flex:1 1 260px;min-width:0}
.pill{display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:999px;font-size:14px;font-weight:600;background:#eceef5;color:#3f4a6b;white-space:nowrap}
.pill.ok{background:#dcfce7;color:#166534}.pill.hot{background:#ffedd5;color:#9a3412}.pill.vio{background:#ede9fe;color:#5b21b6}.pill.warn{background:#fef3c7;color:#92400e}.pill.bad{background:#fee2e2;color:#991b1b}
.pills{display:flex;flex-wrap:wrap;gap:8px}
.sep{height:1px;background:var(--line);border:0;margin:0;width:100%}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 20px;border-radius:12px;border:0;background:var(--violet);color:#fff;font:inherit;font-size:15px;font-weight:600;cursor:pointer;text-decoration:none}
.btn.ghost{background:#fff;color:var(--violet-d);border:1px solid var(--violet)}
.btn.danger{background:#fff;color:#991b1b;border:1px solid #fca5a5}
.btn:disabled{background:var(--line);color:var(--mute);cursor:not-allowed}
.btn.block{width:100%;min-height:48px;font-size:16px}
.seg{display:flex;flex-wrap:wrap;gap:8px}
.seg button{min-height:44px;padding:0 20px;border-radius:12px;font:inherit;font-size:15px;font-weight:600;cursor:pointer;border:1px solid #c9cde0;background:#fff;color:var(--ink)}
.seg button[aria-pressed=true]{background:var(--violet);border-color:var(--violet);color:#fff}
.stepper{display:flex;align-items:center;gap:8px}
.stepper button{width:44px;height:44px;border-radius:12px;border:1px solid #c9cde0;background:#fff;color:var(--ink);font:inherit;font-size:22px;line-height:1;cursor:pointer}
.stepper output{min-width:116px;text-align:center;font-size:22px;font-weight:700}
.switch{width:60px;height:44px;padding:0;border:0;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:flex-end}
.switch span{width:52px;height:30px;border-radius:999px;padding:3px;display:flex;align-items:center;background:#6b7490}
.switch span i{width:24px;height:24px;border-radius:50%;background:#fff;display:block}
.switch[aria-checked=true] span{background:var(--violet);justify-content:flex-end}
.switch[aria-checked=false] span{justify-content:flex-start}
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.field label,.lbl{font-weight:600;font-size:16px}
input[type=text],input[type=time],input[type=password],select{min-height:44px;padding:0 12px;border:1px solid #c9cde0;border-radius:12px;font:inherit;color:var(--ink);background:#fff;max-width:100%}
.times{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px;color:var(--mute)}
.days{display:flex;gap:4px}
.days button{width:36px;height:44px;border-radius:10px;border:1px solid #c9cde0;background:#fff;font:inherit;font-weight:600;cursor:pointer}
.days button[aria-pressed=true]{background:var(--violet);border-color:var(--violet);color:#fff}
.slot{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fafbff}
.status{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px}
.dot{width:10px;height:10px;border-radius:50%;display:inline-block;flex:none}
.err{padding:12px 16px;border-radius:12px;background:#fee2e2;color:#991b1b;font-weight:600}
.note{padding:12px 16px;border-radius:12px;background:#ede9fe;color:#4c1d95;font-size:15px}
.warnbox{padding:12px 16px;border-radius:12px;background:#fef3c7;color:#92400e;font-size:15px}
ul.list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
ul.list li{display:flex;flex-direction:column;gap:2px}
ul.list li+li{border-top:1px solid var(--line);padding-top:12px}
.time{font-size:14px;color:var(--mute)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--navy);color:#fff;padding:12px 20px;border-radius:12px;font-weight:600;z-index:10}
.login{max-width:420px;margin:48px auto}
dl.kv{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:0;font-size:15px}
dl.kv dt{color:var(--mute)}dl.kv dd{margin:0}
