/* Café Floor — owner: agent CAFE. Every selector is prefixed .cafe- */

/* ------------------------------------------------------------ light / dark state */
.cafe-scene .cafe-litonly { transition: opacity .35s; }
.cafe-dark .cafe-litonly { opacity: 0; }
.cafe-lit .cafe-darkonly { display: none; }
.cafe-scene .cafe-overlay { display: none; }
.cafe-dark .cafe-overlay, .cafe-flicker .cafe-overlay { display: inline; }
.cafe-flicker .cafe-overlay { animation: cafe-flick 1.6s steps(1, end) forwards; }
@keyframes cafe-flick {
  0% { opacity: 1; } 10% { opacity: .15; } 17% { opacity: 1; } 30% { opacity: .05; } 38% { opacity: .85; }
  50% { opacity: 0; } 58% { opacity: .6; } 68% { opacity: 0; } 100% { opacity: 0; }
}
.cafe-scene .cafe-toggle { transition: transform .15s; }
.cafe-lit .cafe-toggle { transform: translateY(-4px); }
.cafe-dark .cafe-zzz { display: none; }

/* Molly's glowing eyes in the dark */
.cafe-scene .cafe-eyes { transform-box: fill-box; transform-origin: center; animation: cafe-blink 4.2s infinite; }
@keyframes cafe-blink { 0%, 90%, 100% { transform: scaleY(1); } 93% { transform: scaleY(.1); } 96% { transform: scaleY(1); } }

/* ------------------------------------------------------------ ambient */
.cafe-scene .cafe-rain { animation: cafe-rain .75s linear infinite; }
@keyframes cafe-rain { from { transform: translateY(0); } to { transform: translateY(180px); } }
.cafe-scene .cafe-drip { animation: cafe-drip 7s ease-in infinite; }
.cafe-scene .cafe-drip2 { animation-delay: -2.5s; animation-duration: 9s; }
.cafe-scene .cafe-drip3 { animation-delay: -5s; }
@keyframes cafe-drip { 0% { transform: translateY(0); opacity: 0; } 10% { opacity: .55; } 80% { transform: translateY(110px); opacity: .5; } 100% { transform: translateY(150px); opacity: 0; } }
.cafe-scene .cafe-winlight { animation: cafe-winlight 11s infinite; }
@keyframes cafe-winlight { 0%, 60%, 100% { opacity: .8; } 62%, 85% { opacity: .1; } }
.cafe-scene .cafe-streetglow { transform-box: fill-box; transform-origin: center; animation: cafe-street 4s ease-in-out infinite; }
@keyframes cafe-street { 50% { opacity: .75; transform: scale(.94); } 52% { opacity: .5; } 54% { opacity: .8; } }
.cafe-scene .cafe-bulb { animation: cafe-twinkle 2.6s ease-in-out infinite; }
@keyframes cafe-twinkle { 50% { opacity: .4; } }
.cafe-lit .cafe-lampglow { animation: cafe-lamp 6s ease-in-out infinite; }
@keyframes cafe-lamp { 0%, 100% { opacity: 1; } 45% { opacity: .85; } 47% { opacity: .7; } 49% { opacity: .9; } }
.cafe-lit .cafe-neon-on { animation: cafe-neon 7s infinite; }
@keyframes cafe-neon { 0%, 38%, 44%, 80%, 100% { opacity: 1; } 40%, 42.5% { opacity: .25; } 81% { opacity: .6; } }
.cafe-scene .cafe-steam { opacity: 0; transform-box: fill-box; transform-origin: 50% 100%; animation: cafe-steam 3.2s ease-out infinite; }
.cafe-scene .cafe-steam2 { animation-delay: 1.6s; }
@keyframes cafe-steam { 0% { opacity: 0; transform: translateY(6px) scaleY(.6); } 30% { opacity: .45; } 100% { opacity: 0; transform: translateY(-16px) scaleY(1.15); } }

/* ------------------------------------------------------------ Molly (asleep) */
.cafe-scene .cafe-breath { transform-box: fill-box; transform-origin: 50% 100%; animation: cafe-breath 3.4s ease-in-out infinite; }
@keyframes cafe-breath { 50% { transform: scale(1.012, 1.045); } }
.cafe-scene .cafe-z { opacity: 0; animation: cafe-z 3.6s ease-out infinite; }
.cafe-scene .cafe-z2 { animation-delay: 1.2s; }
.cafe-scene .cafe-z3 { animation-delay: 2.4s; }
@keyframes cafe-z { 0% { opacity: 0; transform: translate(0, 0); } 20% { opacity: .9; } 100% { opacity: 0; transform: translate(-20px, -42px); } }
.cafe-scene .cafe-sparkle { transform-box: fill-box; transform-origin: center; animation: cafe-sparkle 2.4s ease-in-out infinite; }
@keyframes cafe-sparkle { 0%, 55%, 100% { opacity: 0; transform: scale(.2) rotate(0); } 75% { opacity: 1; transform: scale(1.25) rotate(45deg); } }

/* waking → stretch → hop → landing */
.cafe-scene .cafe-open-eyes, .cafe-scene .cafe-chomp { display: none; }
.cafe-waking .cafe-open-eyes, .cafe-waking .cafe-chomp { display: inline; }
.cafe-waking .cafe-closed-eyes, .cafe-waking .cafe-zzz { display: none; }
.cafe-waking .cafe-chomp > * { transform-box: fill-box; transform-origin: 50% 100%; animation: cafe-chomp .5s cubic-bezier(.3,1.6,.5,1) both; }
.cafe-waking .cafe-chomp .cafe-cherry2 { animation-delay: .15s; }
.cafe-waking .cafe-chomp text { animation-delay: .3s; }
@keyframes cafe-chomp { from { opacity: 0; transform: translateY(10px) scale(.3); } }
.cafe-hop .cafe-chomp { display: none; }
.cafe-stretch .cafe-breath { animation: cafe-stretch .75s ease-in-out forwards; }
@keyframes cafe-stretch { 50% { transform: scale(1.16, .84); } 100% { transform: scale(1.04, 1.1); } }
.cafe-hop .cafe-molly-sleep { transform-box: fill-box; transform-origin: 50% 100%; animation: cafe-hop .8s cubic-bezier(.45,0,.55,1) forwards; }
@keyframes cafe-hop {
  0% { transform: none; opacity: 1; }
  18% { transform: translate(0, 6px) scale(1.1, .8); }
  60% { transform: translate(-70px, -250px) scale(.55); opacity: 1; }
  100% { transform: translate(-108px, -262px) scale(.4); opacity: 0; }
}
.cafe-hop .cafe-keyglint { visibility: hidden; }
.cafe-hop .cafe-cushion-items { display: inline; }

/* ------------------------------------------------------------ Molly (moved: windowsill) */
.cafe-scene .cafe-molly-sill, .cafe-scene .cafe-cushion-items { display: none; }
.cafe-moved .cafe-molly-sill, .cafe-moved .cafe-cushion-items { display: inline; }
.cafe-moved .cafe-molly-sleep { display: none; }
.cafe-landing .cafe-sitter { transform-box: fill-box; transform-origin: 50% 100%; animation: cafe-land .6s cubic-bezier(.3,1.6,.5,1) both; }
@keyframes cafe-land { 0% { opacity: 0; transform: translateY(-30px) scale(.8, 1.2); } 60% { opacity: 1; transform: scale(1.15, .85); } 100% { transform: none; } }
.cafe-scene .cafe-tail { transform-box: fill-box; transform-origin: 0% 0%; animation: cafe-swish 2.6s ease-in-out infinite; }
@keyframes cafe-swish { 0%, 100% { transform: rotate(-8deg); } 50% { transform: rotate(12deg); } }
.cafe-scene .cafe-blink { transform-box: fill-box; transform-origin: center; animation: cafe-blink 5.3s infinite; }

.cafe-scene .cafe-taken, .cafe-reg-art .cafe-taken { transform-box: fill-box; transform-origin: center; animation: cafe-taken .5s ease-in forwards; pointer-events: none; }
@keyframes cafe-taken { to { opacity: 0; transform: translateY(-14px) scale(1.4); } }

/* ------------------------------------------------------------ doors */
.cafe-scene .cafe-leaf { transform-box: fill-box; transition: transform .7s cubic-bezier(.4,.1,.3,1), filter .7s; }
.cafe-scene .cafe-leaf-l { transform-origin: 0% 50%; }
.cafe-scene .cafe-leaf-r { transform-origin: 100% 50%; }
.cafe-open-kitchen #cafe-kdoor .cafe-leaf,
.cafe-open-studio #cafe-sdoor .cafe-leaf,
.cafe-open-records #cafe-rdoor .cafe-leaf { transform: scaleX(.6); filter: brightness(.82); }
.cafe-go-kitchen #cafe-kdoor .cafe-leaf,
.cafe-go-studio #cafe-sdoor .cafe-leaf,
.cafe-go-records #cafe-rdoor .cafe-leaf { transform: scaleX(.1); filter: brightness(.55); }
.cafe-scene .cafe-port-lit { opacity: 0; transition: opacity .6s; }
.cafe-open-kitchen .cafe-port-lit { opacity: .85; }
.cafe-scene .cafe-led { transition: fill .3s; }
.cafe-open-records .cafe-led { fill: #3dff6a; }

/* register + shelf drawers in the scene */
.cafe-scene .cafe-sc-drawer { transition: transform .8s cubic-bezier(.3,1.4,.5,1); }
.cafe-reg-open .cafe-sc-drawer { transform: translateY(7px); }
.cafe-scene .cafe-sc-shelfdrawer { transform-box: fill-box; transform-origin: 50% 0%; transition: transform .9s cubic-bezier(.3,1.3,.5,1); }
.cafe-scene .cafe-sc-shelfdrawer.cafe-is-open { transform: translateY(6px) scale(1.08, .9); }

/* ------------------------------------------------------------ close-up: chalkboard */
.cafe-board { background: linear-gradient(#83533a, #6a4028); padding: 12px 12px 0; border-radius: 12px; box-shadow: 0 10px 24px rgba(0,0,0,.35), inset 0 2px 0 rgba(255,255,255,.15); }
.cafe-board-inner {
  position: relative; overflow: hidden; border-radius: 4px; padding: 12px 18px 14px;
  background:
    radial-gradient(ellipse at 22% 18%, rgba(255,255,255,.09), transparent 55%),
    radial-gradient(ellipse at 85% 88%, rgba(255,255,255,.07), transparent 45%),
    radial-gradient(ellipse at 60% 45%, rgba(255,255,255,.04), transparent 40%),
    #1f2d26;
  box-shadow: inset 0 0 30px rgba(0,0,0,.55);
  color: #f4efe6; font-family: "Caveat", cursive; text-shadow: 0 0 1px rgba(255,255,255,.55), 0 0 6px rgba(255,255,255,.12);
}
.cafe-board-inner::before { /* chalk dust smudges */
  content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .5;
  background:
    radial-gradient(circle at 12% 70%, rgba(255,255,255,.08) 0 18px, transparent 40px),
    radial-gradient(circle at 78% 30%, rgba(255,255,255,.06) 0 26px, transparent 60px),
    repeating-linear-gradient(-12deg, transparent 0 22px, rgba(255,255,255,.025) 22px 24px);
}
.cafe-board h4 { font-family: "Caveat", cursive; font-weight: 700; font-size: 2.1rem; text-align: center; margin: 0 0 6px; text-decoration: underline wavy rgba(255,138,143,.7); text-underline-offset: 6px; text-decoration-thickness: 2px; }
.cafe-menu { list-style: none; margin: 0; padding: 0; position: relative; }
.cafe-menu li { display: flex; align-items: baseline; gap: 6px; font-size: 1.5rem; line-height: 1.3; }
.cafe-menu small { font-size: .78em; opacity: .75; }
.cafe-menu i { flex: 1; min-width: 12px; border-bottom: 2px dotted rgba(244,239,230,.4); transform: translateY(-6px); }
.cafe-menu b { color: #ffe27a; font-weight: 700; white-space: nowrap; }
.cafe-menu span { text-wrap: pretty; }
.cafe-match { text-align: center; color: #ff9ea3; font-size: 1.45rem; margin: 10px 0 6px; transform: rotate(-1.5deg); position: relative; }
.cafe-rule { font-size: 1.45rem; line-height: 1.25; margin: 8px 0 0; padding-top: 8px; border-top: 2px dashed rgba(244,239,230,.3); color: #d9f0c4; position: relative; }
.cafe-rule span { opacity: .8; white-space: nowrap; }
.cafe-doodle { display: block; width: 62px; margin: 4px 0 0 auto; opacity: .9; position: relative; }
.cafe-sig { display: block; text-align: right; font-size: 1.15rem; opacity: .7; position: relative; }
.cafe-tray { position: relative; height: 14px; margin: 6px -12px 0; background: linear-gradient(#5a3622, #3e2518); border-radius: 0 0 12px 12px; }
.cafe-chalk { position: absolute; top: -3px; left: 24%; width: 26px; height: 6px; border-radius: 3px; background: #fbf3e4; }
.cafe-chalk-p { left: 34%; width: 16px; background: #ff9ea3; }
.cafe-eraser { position: absolute; top: -8px; right: 18%; width: 44px; height: 11px; border-radius: 3px; background: linear-gradient(#c9a227 0 45%, #e8e2d6 45%); }

/* ------------------------------------------------------------ close-up: cash register */
.cafe-reg { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.cafe-reg-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 10px 16px; }
/* the drawing is decoration only: its brass keys are dummies, the working keys are the date pad */
.cafe-reg-art { width: 190px; max-width: 100%; height: auto; display: block; overflow: visible; pointer-events: none; }
.cafe-reg-done .cafe-reg-art { width: min(270px, 100%); }
.cafe-reg-art .cafe-reg-deco { opacity: .7; }
.cafe-reg-pad {
  padding: 8px 10px 10px; border-radius: 14px;
  background: linear-gradient(#f0d27a, #c9a227 55%, #9c7420);
  box-shadow: inset 0 2px 0 rgba(255,255,255,.5), inset 0 -2px 0 rgba(0,0,0,.2), 0 4px 10px rgba(0,0,0,.3);
}
.cafe-reg-pad[hidden] { display: none; }
.cafe-reg-padlbl { margin: 0 0 6px; text-align: center; font-family: "Fraunces", serif; font-weight: 800; font-size: .66rem; letter-spacing: .1em; text-transform: uppercase; color: #5a3f10; }
.cafe-reg-pad .kp { gap: 8px; }
.cafe-reg-pad .kp-code { gap: 5px; padding: 4px; border-radius: 8px; background: #2b1d17; }
.cafe-reg-pad .kp-code span { width: 34px; height: 40px; border-radius: 4px; font-size: 1.4rem; background: #fbf3e4; color: #3a2a23; text-shadow: none; box-shadow: inset 0 -3px 0 rgba(58,42,35,.15); font-family: "Fraunces", serif; }
.cafe-reg-pad .kp-keys { grid-template-columns: repeat(3, 50px); gap: 6px; }
.cafe-reg-pad .kp-keys button { height: 38px; background: #fbf3e4; box-shadow: 0 3px 0 #8a6420; }
.cafe-reg-pad .kp-keys button:active { box-shadow: 0 1px 0 #8a6420; }
.cafe-reg-pad .kp-keys .ok { background: var(--leaf); box-shadow: 0 3px 0 #3f5832; }
.cafe-reg-art .cafe-reg-drawer { transition: transform .9s cubic-bezier(.3,1.3,.5,1); }
.cafe-reg-isopen .cafe-reg-drawer { transform: translateY(52px); }
.cafe-reg-art .cafe-tab { transform-box: fill-box; transform-origin: 50% 100%; }
.cafe-reg-isopen .cafe-tab { animation: cafe-tabpop .45s cubic-bezier(.3,1.6,.5,1) var(--d, 0s) both; }
@keyframes cafe-tabpop { from { transform: scaleY(.1); } }
.cafe-reg-art .cafe-reg-rec { cursor: pointer; pointer-events: auto; transition: filter .2s; }
.cafe-reg-isopen .cafe-reg-rec { animation: cafe-recpulse 1.8s ease-in-out infinite; }
.cafe-reg-art .cafe-reg-rec:hover, .cafe-reg-art .cafe-reg-rec:focus-visible { filter: drop-shadow(0 0 6px #ffd84d); outline: none; }
@keyframes cafe-recpulse { 50% { filter: drop-shadow(0 0 5px rgba(255,216,77,.9)); } }
.cafe-reg-cap { margin: 0; text-align: center; font-size: .92rem; }

/* ------------------------------------------------------------ close-up: bookshelf */
.cafe-shelf { background: linear-gradient(#6a4028, #5a3622); padding: 12px 12px 0; border-radius: 12px; box-shadow: 0 10px 24px rgba(0,0,0,.35); }
.cafe-shelf-row {
  display: flex; align-items: flex-end; justify-content: center; gap: 3px; height: 250px; padding: 12px 8px 0;
  background: linear-gradient(#24140c, #3a2419); border-radius: 6px 6px 0 0; box-shadow: inset 0 8px 16px rgba(0,0,0,.5);
}
.cafe-spine {
  flex: 1 1 0; min-width: 0; max-width: 50px; height: var(--h); background: var(--c); color: #fff8ec;
  writing-mode: vertical-rl; white-space: nowrap; display: flex; align-items: center; justify-content: center;
  border-radius: 3px 3px 0 0; padding: 8px 0; cursor: pointer;
  font-family: "Fraunces", serif; font-weight: 600; font-size: .8rem; letter-spacing: .02em;
  box-shadow: inset -5px 0 0 rgba(0,0,0,.16), inset 4px 0 0 rgba(255,255,255,.08);
  transition: transform .2s, filter .2s, opacity .45s;
}
.cafe-spine.hs:hover, .cafe-spine.hs:focus-visible { transform: translateY(-6px); filter: brightness(1.12); outline: none; }
.cafe-spine-red { font-weight: 800; font-size: .95rem; position: relative; flex-grow: 1.4; max-width: 66px; transform: translateY(-10px) rotate(-3deg); transform-origin: 50% 100%; box-shadow: inset -5px 0 0 rgba(0,0,0,.16), inset 4px 0 0 rgba(255,255,255,.08), 4px 4px 10px rgba(0,0,0,.45); animation: cafe-red-nudge 5s ease-in-out 1.2s infinite; }
/* Red. is pulled out, a bit too fat, and a corner of see-through red plastic peeks out of the top */
.cafe-spine-red::before { content: ""; position: absolute; top: -13px; left: 22%; width: 56%; height: 20px; z-index: -1; background: rgba(255,60,72,.55); border: 1px solid rgba(255,220,220,.7); border-radius: 2px; transform: rotate(7deg); box-shadow: 0 0 8px rgba(255,60,72,.5); }
.cafe-spine-red.hs:hover, .cafe-spine-red.hs:focus-visible { transform: translateY(-18px) rotate(-3deg); }
@keyframes cafe-red-nudge { 0%, 86%, 100% { transform: translateY(-10px) rotate(-3deg); } 90% { transform: translateY(-15px) rotate(-5deg); } 94% { transform: translateY(-10px) rotate(-1deg); } }
.cafe-spine-gone { transform: translateY(-120%) rotate(-10deg) !important; opacity: 0; pointer-events: none; animation: none; }
.cafe-spine-gap { flex: 0 0 12px; }
/* decoy novels: author on the spine, Frankenstein gets a stitched scar, Circe gold bands */
.cafe-spine-au { font-family: "Nunito", sans-serif; font-weight: 800; font-size: .58rem; letter-spacing: .06em; text-transform: uppercase; opacity: .72; margin-top: 8px; }
.cafe-spine-frank, .cafe-spine-circe { position: relative; }
.cafe-spine-frank { color: #dfe8cf; }
.cafe-spine-frank::before {
  content: ""; position: absolute; left: 3px; right: 5px; top: 12px; height: 7px; transform: rotate(-8deg);
  background: linear-gradient(#cfd8c0, #cfd8c0) center / 100% 1px no-repeat, repeating-linear-gradient(90deg, #cfd8c0 0 1px, transparent 1px 4px);
}
.cafe-spine-circe { color: #f3d98a; background: linear-gradient(var(--c) 0 8px, #c9a227 8px 10px, var(--c) 10px calc(100% - 10px), #c9a227 calc(100% - 10px) calc(100% - 8px), var(--c) calc(100% - 8px)); }
.cafe-glow {
  color: #3a2a23; background: #fff1a0; border-radius: 4px; padding: 3px 1px; margin: 2px 0;
  text-transform: uppercase; font-weight: 800; font-size: 1.2em; text-shadow: none;
  box-shadow: 0 0 10px 2px #ffd84d; animation: cafe-glow 2.2s ease-in-out infinite;
}
@keyframes cafe-glow { 50% { box-shadow: 0 0 4px 1px #ffd84d; } }
.cafe-shelf-board { height: 12px; margin: 0 -4px; background: linear-gradient(#9a6a44, #7a4b2e); border-radius: 2px; box-shadow: 0 5px 8px rgba(0,0,0,.35); position: relative; }
.cafe-base { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; justify-content: center; padding: 16px 6px 16px; }
.cafe-plate {
  position: relative; flex: 1 1 260px; max-width: 330px; text-align: center; padding: 10px 10px 12px; border-radius: 10px;
  background: linear-gradient(#f0d27a, #c9a227 55%, #9c7420);
  box-shadow: inset 0 2px 0 rgba(255,255,255,.5), inset 0 -2px 0 rgba(0,0,0,.2), 0 4px 10px rgba(0,0,0,.35);
}
.cafe-plate::before, .cafe-plate::after { content: ""; position: absolute; top: 8px; width: 7px; height: 7px; border-radius: 50%; background: #8a6420; box-shadow: inset 0 1px 1px rgba(0,0,0,.4); }
.cafe-plate::before { left: 8px; } .cafe-plate::after { right: 8px; }
.cafe-plate-txt { font-family: "Fraunces", serif; font-style: italic; font-weight: 600; margin: 0 0 8px; color: #4a3410; font-size: .95rem; }
.cafe-plate-done { font-family: "Fraunces", serif; font-weight: 800; font-size: 1.6rem; letter-spacing: .25em; color: #3f5832; padding: 6px 0; }
.cafe-comp { position: relative; flex: 0 0 150px; height: 130px; border-radius: 8px; overflow: hidden; background: #1d110b; box-shadow: inset 0 6px 14px rgba(0,0,0,.75); }
.cafe-comp-inside { position: absolute; inset: 0; display: grid; place-items: center; }
.cafe-comp-door {
  position: absolute; inset: 0; display: grid; place-items: center; border: 3px solid #4a2e1e; border-radius: 8px;
  background: repeating-linear-gradient(90deg, #7a4b2e 0 14px, #83533a 14px 28px);
  transition: transform 1.1s cubic-bezier(.5,0,.3,1);
}
.cafe-comp-door i { width: 12px; height: 20px; border-radius: 6px; background: linear-gradient(#f0d27a, #9c7420); }
.cafe-comp-open .cafe-comp-door { transform: translateX(-104%); }
.cafe-comp-rec {
  width: 96px; height: 96px; border: 0; border-radius: 50%; cursor: pointer; padding: 0;
  background: radial-gradient(circle, #151515 0 3%, #b8323a 4% 22%, #151515 23% 25%, transparent 26%), repeating-radial-gradient(circle, #232323 0 2px, #111 2px 4px);
  box-shadow: 0 4px 10px rgba(0,0,0,.5); transition: transform .3s;
}
.cafe-comp-open .cafe-comp-rec { animation: cafe-recglow 1.8s ease-in-out 1s infinite; }
.cafe-comp-rec.hs:hover, .cafe-comp-rec.hs:focus-visible { transform: scale(1.06) rotate(25deg); }
@keyframes cafe-recglow { 50% { box-shadow: 0 0 0 4px rgba(255,216,77,.55), 0 0 18px rgba(255,216,77,.7); } }
.cafe-comp-empty { color: #e8d8c0; opacity: .65; font-family: "Caveat", cursive; font-size: 1.2rem; text-align: center; padding: 8px; }

/* ------------------------------------------------------------ close-up: Record Room door */
.cafe-rdoor { display: flex; flex-direction: column; align-items: center; gap: 14px; padding: 16px 12px 14px; border-radius: 14px; background: linear-gradient(#4a3d60, #2c2439); box-shadow: inset 0 0 0 3px #1d1728; }
.cafe-rdoor-sign { font-family: "Fraunces", serif; font-weight: 800; letter-spacing: .08em; color: #3a2a23; padding: 6px 16px; border-radius: 999px; background: linear-gradient(#f0d27a, #c9a227 60%, #9c7420); box-shadow: 0 3px 8px rgba(0,0,0,.4); }
.cafe-rdoor-sign span { display: inline-block; animation: cafe-note 1.6s ease-in-out infinite; }
.cafe-rdoor-sign span:last-child { animation-delay: .8s; }
@keyframes cafe-note { 50% { transform: translateY(-3px) rotate(-10deg); } }
.cafe-rdoor-note { max-width: 250px; color: var(--ink); transform: rotate(-2deg); }
.cafe-rdoor-pad { background: linear-gradient(#26262c, #141417); border-radius: 16px; padding: 12px 14px 14px; box-shadow: 0 6px 16px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.12); }
.cafe-rdoor-led { width: 10px; height: 10px; border-radius: 50%; margin: 0 auto 10px; background: #ff4d4d; box-shadow: 0 0 8px #ff4d4d; transition: background .3s, box-shadow .3s; }
.cafe-rdoor-led.cafe-ok { background: #3dff6a; box-shadow: 0 0 10px #3dff6a; }
.cafe-rdoor-cap { margin: 0; color: var(--cream); opacity: .7; font-size: .88rem; text-align: center; }

@media (max-width: 600px) {
  .cafe-shelf-row { height: 220px; gap: 2px; padding: 10px 4px 0; }
  .cafe-spine { font-size: .7rem; }
  .cafe-spine-red { font-size: .8rem; }
  .cafe-spine-au { font-size: .5rem; margin-top: 5px; }
  .cafe-menu li { font-size: 1.3rem; }
  .cafe-board-inner { padding: 10px 12px 12px; }
  /* long "price" may wrap onto two short lines instead of squeezing the name */
  .cafe-menu b.cafe-menu-note { white-space: normal; text-align: right; font-size: .85em; line-height: 1; max-width: 4.2em; }
  .cafe-rule, .cafe-match { font-size: 1.3rem; }
  .cafe-comp { flex-basis: 130px; height: 116px; }
}
@media (max-width: 420px) {
  .cafe-reg-row { gap: 8px; }
  .cafe-reg-art { width: 112px; }
  .cafe-reg-pad { padding: 6px 8px 8px; }
  .cafe-reg-pad .kp-keys { grid-template-columns: repeat(3, 46px); gap: 5px; }
  .cafe-reg-pad .kp-code span { width: 30px; height: 36px; font-size: 1.25rem; }
}
