:root{--font-display:"Grandstander","Comic Sans MS",cursive;--font-body:"Nunito",system-ui,sans-serif;--paper:#fffaf3;--raspberry:#e0507a;--jam:#b23a5e;--leaf:#4f9d69;--leaf-soft:#e4f2e8;--marigold:#ffb63d;--marigold-soft:#fff0d6;--cocoa:#4a2c2a;--cocoa-soft:#8a6f6d;--card:#ffffff;--line:#f0dfd2}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-body);background:var(--paper);color:var(--cocoa);min-height:100vh}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible{outline:3px solid var(--marigold);outline-offset:2px}.tablecloth{background:repeating-linear-gradient(0deg,rgba(255,255,255,.22) 0 14px,transparent 14px 28px),repeating-linear-gradient(90deg,rgba(255,255,255,.22) 0 14px,transparent 14px 28px),var(--raspberry);color:#fff;text-align:center;padding:34px 20px 40px;position:relative}.scallops{height:22px;margin-top:-1px;background:radial-gradient(circle at 14px -8px,var(--raspberry) 19px,transparent 20px);background-size:28px 22px;background-repeat:repeat-x}.tablecloth h1{font-family:var(--font-display);font-weight:800;font-size:clamp(1.7rem,6vw,2.6rem);line-height:1.15;text-shadow:0 2px 0 rgba(178,58,94,.55)}.tablecloth .daisies{font-size:1.4rem;letter-spacing:.4em;margin-bottom:6px}.tablecloth p{margin-top:8px;font-weight:700;font-size:.95rem;opacity:.95}main{max-width:640px;margin:0 auto;padding:18px 16px 90px}.section-label{font-family:var(--font-display);font-weight:700;font-size:1.15rem;color:var(--jam);margin:22px 0 10px;display:flex;align-items:center;gap:8px}.hint{color:var(--cocoa-soft);font-size:.88rem;margin:-6px 0 10px}.name-group-label{font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--cocoa-soft);margin:12px 0 6px}.name-grid{display:flex;flex-wrap:wrap;gap:8px}.name-chip{padding:10px 16px;border-radius:999px;background:var(--card);border:2px solid var(--line);font-weight:700;font-size:.95rem;transition:transform .08s ease,background .15s,border-color .15s}.name-chip:active{transform:scale(.96)}.name-chip.selected{background:var(--jam);border-color:var(--jam);color:#fff}.greeting{background:var(--marigold-soft);border:2px dashed var(--marigold);border-radius:16px;padding:12px 16px;font-weight:700;margin-top:14px;display:flex;justify-content:space-between;align-items:center;gap:10px}.greeting button{font-size:.82rem;font-weight:800;color:var(--jam);text-decoration:underline;flex-shrink:0}.day-strip{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 10px;scrollbar-width:none}.day-strip::-webkit-scrollbar{display:none}.day-pill{flex:0 0 auto;min-width:68px;padding:10px 12px;border-radius:16px;background:var(--card);border:2px solid var(--line);text-align:center;transition:transform .08s ease}.day-pill:active{transform:scale(.96)}.day-pill .wd{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--cocoa-soft)}.day-pill .dn,.day-pill .wd{display:block;font-weight:800}.day-pill .dn{font-family:var(--font-display);font-size:1.35rem;line-height:1.2}.day-pill .count{display:block;font-size:.68rem;font-weight:700;color:var(--leaf)}.day-pill.selected{background:var(--leaf);border-color:var(--leaf);color:#fff}.day-pill.selected .count,.day-pill.selected .wd{color:rgba(255,255,255,.85)}.slot-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:10px;gap:10px}@media (min-width:480px){.slot-grid{grid-template-columns:repeat(3,1fr)}}.slot{border-radius:14px;padding:12px 10px;text-align:center;min-height:64px;display:flex;flex-direction:column;justify-content:center;gap:2px;transition:transform .08s ease}.slot .time{font-weight:800;font-size:.98rem}.slot .who{font-size:.8rem;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot.open{background:var(--card);border:2px dashed var(--raspberry);color:var(--jam)}.slot.open:active{transform:scale(.95)}.slot.open .who{color:var(--raspberry);opacity:.75}.slot.taken{background:var(--leaf-soft);border:2px solid var(--leaf-soft);color:var(--cocoa);cursor:default}.slot.taken .who{color:var(--leaf)}.slot.mine{background:var(--marigold-soft);border:2px solid var(--marigold)}.slot.mine .who{color:var(--jam)}.my-visit{background:var(--card);border:2px solid var(--line);border-radius:16px;padding:12px 16px;display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;font-weight:700}.my-visit .cancel{color:var(--jam);font-weight:800;font-size:.85rem;text-decoration:underline;flex-shrink:0}.sheet-backdrop{position:fixed;inset:0;background:rgba(74,44,42,.45);z-index:40}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:50;background:var(--paper);border-radius:24px 24px 0 0;padding:24px 20px calc(24px + env(safe-area-inset-bottom));max-width:640px;margin:0 auto;box-shadow:0 -8px 30px rgba(74,44,42,.25);animation:rise .22s ease}@keyframes rise{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}@media (prefers-reduced-motion:reduce){.sheet{animation:none}.day-pill,.name-chip,.slot{transition:none}}.sheet h2{font-family:var(--font-display);font-weight:800;font-size:1.4rem;color:var(--jam);margin-bottom:4px}.sheet .when{font-weight:800;font-size:1.05rem;margin-bottom:14px}.sheet textarea{width:100%;border:2px solid var(--line);border-radius:14px;padding:12px;font-family:inherit;font-size:1rem;resize:none;background:var(--card);color:var(--cocoa);margin-bottom:14px}.btn-row{display:flex;gap:10px}.btn{flex:1 1;padding:15px;border-radius:999px;font-weight:800;font-size:1.05rem;transition:transform .08s ease}.btn:active{transform:scale(.97)}.btn.primary{background:var(--raspberry);color:#fff;box-shadow:0 3px 0 var(--jam)}.btn.primary:disabled{opacity:.6;cursor:wait}.btn.ghost{background:var(--card);border:2px solid var(--line);color:var(--cocoa-soft)}.btn.danger{background:var(--jam);color:#fff}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--cocoa);color:#fff;font-weight:700;font-size:.92rem;padding:12px 20px;border-radius:999px;z-index:60;max-width:92vw;text-align:center;box-shadow:0 6px 20px rgba(74,44,42,.35)}.toast.happy{background:var(--leaf)}.admin-wrap{max-width:640px;margin:0 auto;padding:24px 16px 60px}.admin-wrap h1{font-family:var(--font-display);color:var(--jam);margin-bottom:16px}.admin-wrap input[type=password]{width:100%;padding:12px;font-size:1rem;margin-bottom:12px;color:var(--cocoa)}.admin-status,.admin-wrap input[type=password]{border:2px solid var(--line);border-radius:12px;background:var(--card)}.admin-status{font-size:.88rem;padding:10px 14px;margin:14px 0;line-height:1.6}.admin-booking{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:.95rem}.admin-booking .note{color:var(--cocoa-soft);font-size:.82rem}footer{text-align:center;color:var(--cocoa-soft);font-size:.8rem;padding:30px 16px}footer a{color:var(--jam)}