:root{
  --stage-w:100vw;
  --stage-h:100dvh;
  --digit-size:72px;
  --apple-digit-size:34px;
  --blue:#1da7ff;
}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;background:#000;overflow:hidden}
body{position:fixed;inset:0;font-family:-apple-system,BlinkMacSystemFont,"Inter","Segoe UI",Roboto,Arial,sans-serif;-webkit-text-size-adjust:100%;touch-action:manipulation}
button{font:inherit}
.app-shell{position:fixed;inset:0;width:100%;height:100%;background:#000;overflow:hidden;display:flex;justify-content:center;align-items:flex-start}
.stage{position:relative;width:var(--stage-w);height:var(--stage-h);overflow:hidden;background:#000;flex:0 0 auto}
.master-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;display:block;pointer-events:none;user-select:none;-webkit-user-drag:none;z-index:0}


/* v21: clean green recovery layer for the three apples baked red into the master art. */
.green-apple-overlay{
  position:absolute;inset:0;width:100%;height:100%;object-fit:fill;display:block;
  pointer-events:none;user-select:none;-webkit-user-drag:none;z-index:3;opacity:1;
}

/* v21: every red apple layer is reversible. A blank/removed Sheet result fades it back to green. */
.ripe-apple-overlay{
  position:absolute;inset:0;width:100%;height:100%;object-fit:fill;display:block;
  pointer-events:none;user-select:none;-webkit-user-drag:none;z-index:4;
  opacity:0;transition:opacity 2.6s ease-in-out;will-change:opacity;
}
.ripe-apple-overlay.ripe{opacity:1}
@media (prefers-reduced-motion:reduce){.ripe-apple-overlay{transition:none}}

.hit,.nav-hits button{position:absolute;border:0;background:transparent;padding:0;margin:0;z-index:20;-webkit-tap-highlight-color:transparent}
.hit-menu{left:5.0%;top:2.5%;width:13%;height:7.0%;border-radius:50%}
.hit-bell{right:4.8%;top:2.5%;width:13%;height:7.0%;border-radius:50%}
.hit:active,.nav-hits button:active{background:rgba(26,160,255,.08)}

/* Clean result overlay: NO masks, NO circles, NO tint patches. The artwork itself is clean. */
.draw-slots{position:absolute;inset:0;z-index:7;pointer-events:none}
.draw-slot{position:absolute;display:grid;place-items:center;background:transparent;overflow:visible}
.draw-value{
  display:block;transform:translateY(5%);
  font-family:Impact,Haettenschweiler,"Arial Black",sans-serif;
  font-size:var(--apple-digit-size);font-weight:900;line-height:1;letter-spacing:-.045em;
  color:#f8fbff;-webkit-text-stroke:1px #20313e;
  text-shadow:0 2px 0 #5c6c79,0 0 4px rgba(255,255,255,.95),0 0 8px rgba(0,139,255,.78);
}
.draw-slot.pending .draw-value{font-size:calc(var(--apple-digit-size) * .74);letter-spacing:.02em}
/* v22: per-apple optical centering. Each result is centered on the actual fruit body,
   not on the old artwork coordinates. */
.slot-11a{left:12.1%;top:22.65%;width:21.5%;height:9.2%}
.slot-1p {left:68.9%;top:22.80%;width:21.5%;height:9.2%}
.slot-3p {left:10.9%;top:39.35%;width:22.0%;height:9.5%}
.slot-5p {left:72.0%;top:41.65%;width:21.5%;height:9.2%}
.slot-7p {left:6.3%;top:56.55%;width:21.5%;height:9.2%}
.slot-9p {left:74.7%;top:57.75%;width:21.5%;height:9.2%}

/* The clean master already contains the two glass number panels. Only digits are overlaid. */
.live-overlay{position:absolute;left:50%;top:66.55%;transform:translateX(-50%);width:44.5%;height:11.8%;display:grid;grid-template-columns:1fr 1fr;gap:2.8%;z-index:8;pointer-events:none}
.live-box{position:relative;display:grid;place-items:center;background:transparent;border:0;box-shadow:none;overflow:visible}
.live-box span{position:relative;display:block;transform:translateY(-1.5%);font-family:Impact,Haettenschweiler,"Arial Black",sans-serif;font-size:var(--digit-size);font-weight:900;line-height:.9;letter-spacing:-.055em;background:linear-gradient(180deg,#fff 0%,#f8fbff 30%,#aebcc8 49%,#fff 68%,#8998a6 100%);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-stroke:1.2px #172432;filter:drop-shadow(0 3px 0 #526675) drop-shadow(0 0 5px rgba(255,255,255,.85)) drop-shadow(0 0 8px rgba(0,145,255,.72));transition:transform .12s ease,filter .12s ease}
.live-overlay.rolling .live-box span{transform:translateY(-1.5%) scale(.94);filter:blur(.7px) brightness(1.16) drop-shadow(0 0 9px rgba(0,145,255,.9))}


/* v30: replace only the five baked navigation icons with mini versions of the top chrome Apple logo.
   Card positions, labels, hit areas, server-clock and all result logic stay untouched. */
.nav-logo-overlays{position:absolute;inset:0;z-index:19;pointer-events:none}
.nav-logo{position:absolute;top:86.05%;width:7.8%;aspect-ratio:1/1;transform:translateX(-50%);display:grid;place-items:center;filter:drop-shadow(0 2px 4px rgba(0,0,0,.7))}
.nav-logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:24%;display:block;user-select:none;-webkit-user-drag:none}
.nav-logo-2d{left:13.7%;filter:drop-shadow(0 0 6px rgba(56,174,255,.75)) drop-shadow(0 2px 4px rgba(0,0,0,.72))}
.nav-logo-3d{left:32.0%}
.nav-logo-history{left:50.0%}
.nav-logo-holidays{left:68.0%}
.nav-logo-telegram{left:86.0%}
.nav-logo-cover{position:absolute;left:50%;top:57%;width:60%;height:39%;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse at center,rgba(4,10,18,.99) 0 61%,rgba(4,10,18,.94) 70%,rgba(4,10,18,.25) 84%,transparent 100%);box-shadow:0 0 6px rgba(0,0,0,.8);z-index:2}
.nav-logo b,.history-mark,.calendar-mark,.plane-mark{position:absolute;z-index:3;left:50%;top:57%;transform:translate(-50%,-50%);color:#f4f9ff;text-shadow:0 0 3px rgba(255,255,255,.7),0 0 7px rgba(52,163,255,.55);line-height:1}
.nav-logo b{font-size:calc(var(--stage-w) * .031);font-weight:950;letter-spacing:-.07em}
.history-mark{font-size:calc(var(--stage-w) * .040);font-weight:700;transform:translate(-50%,-54%)}
.plane-mark{font-size:calc(var(--stage-w) * .033);font-weight:800;transform:translate(-52%,-52%) rotate(-18deg)}
.calendar-mark{width:37%;height:33%;border:1.7px solid #f2f8ff;border-radius:2px;display:grid;grid-template-columns:repeat(2,1fr);grid-template-rows:repeat(2,1fr);gap:2px;padding:4px 3px 3px;box-shadow:0 0 5px rgba(54,164,255,.45)}
.calendar-mark::before,.calendar-mark::after{content:"";position:absolute;top:-4px;width:2px;height:5px;border-radius:2px;background:#f2f8ff}
.calendar-mark::before{left:26%}.calendar-mark::after{right:26%}
.calendar-mark i{display:block;width:3px;height:3px;border-radius:50%;background:#f2f8ff;align-self:center;justify-self:center}
@media (max-width:380px){.nav-logo{width:7.3%}.nav-logo b{font-size:11px}.history-mark{font-size:15px}.plane-mark{font-size:13px}}

.nav-hits{position:absolute;inset:0;z-index:21;pointer-events:none}
.nav-hits button{pointer-events:auto;top:85.5%;height:9.2%;border-radius:15%}
.nav-hits button:nth-child(1){left:5.0%;width:17.5%}
.nav-hits button:nth-child(2){left:23.5%;width:17.0%}
.nav-hits button:nth-child(3){left:41.5%;width:17.0%}
.nav-hits button:nth-child(4){left:59.4%;width:17.0%}
.nav-hits button:nth-child(5){left:77.2%;width:17.5%}

.toast{position:absolute;left:50%;bottom:14%;z-index:60;transform:translate(-50%,12px);opacity:0;pointer-events:none;max-width:86%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:10px 14px;border-radius:999px;color:white;background:rgba(4,11,18,.94);border:1px solid rgba(77,181,255,.42);box-shadow:0 0 22px rgba(0,130,255,.32);font-size:13px;font-weight:700;transition:.18s ease}
.toast.show{opacity:1;transform:translate(-50%,0)}
.backdrop{position:absolute;inset:0;z-index:40;background:rgba(0,0,0,.60);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.sheet{position:absolute;z-index:41;left:2.5%;right:2.5%;bottom:1.2%;max-height:70%;overflow:auto;border:1px solid rgba(86,183,255,.44);border-radius:24px;background:linear-gradient(180deg,rgba(8,18,31,.985),rgba(2,7,13,.992));box-shadow:0 0 36px rgba(0,130,255,.34),0 -14px 45px rgba(0,0,0,.48), inset 0 0 0 1px rgba(255,255,255,.03);color:#eef8ff;-webkit-overflow-scrolling:touch}
.grab{width:44px;height:5px;border-radius:99px;background:#7f96aa;margin:10px auto 2px;box-shadow:0 0 10px rgba(255,255,255,.08)}
.sheet header{display:flex;justify-content:center;align-items:center;gap:10px;position:relative;padding:13px 18px 12px;border-bottom:1px solid rgba(255,255,255,.08)}
.sheet h2{font-size:20px;margin:0;font-weight:900;letter-spacing:.01em;text-shadow:0 1px 2px rgba(0,0,0,.5)}
.sheet-icon{position:relative;display:grid;place-items:center;width:32px;height:32px;flex:0 0 32px;filter:drop-shadow(0 0 8px rgba(46,157,255,.22))}
.sheet-icon img{width:100%;height:100%;object-fit:cover;border-radius:26%}
.sheet-icon-cover{position:absolute;left:50%;top:58%;width:58%;height:39%;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse at center,rgba(4,10,18,.99) 0 61%,rgba(4,10,18,.92) 74%,transparent 100%)}
.sheet-icon b,.sheet-icon .sym{position:absolute;left:50%;top:56%;transform:translate(-50%,-50%);z-index:2;color:#f3f9ff;font-weight:950;line-height:1;text-shadow:0 0 3px rgba(255,255,255,.75),0 0 7px rgba(52,163,255,.55)}
.sheet-icon b{font-size:11px;letter-spacing:-.05em}.sheet-icon .sym{font-size:15px;font-weight:800}.sheet-icon.icon-history .sym{transform:translate(-50%,-53%)}.sheet-icon.icon-telegram .sym{transform:translate(-52%,-50%) rotate(-18deg)}
.sheet-icon.icon-holidays .sym{font-size:13px;transform:translate(-50%,-56%)}
.sheet header button{position:absolute;right:14px;top:7px;width:40px;height:40px;border-radius:50%;border:1px solid rgba(94,193,255,.35);background:linear-gradient(180deg,rgba(11,28,42,.95),rgba(5,15,24,.95));color:#fff;font-size:30px;line-height:1;box-shadow:inset 0 0 0 1px rgba(255,255,255,.03)}
.sheet-body{padding:15px 18px 24px;font-size:15px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.card{padding:14px 14px 15px;border-radius:18px;background:linear-gradient(180deg,rgba(14,28,41,.68),rgba(8,17,26,.78));border:1px solid rgba(67,150,220,.42);box-shadow:inset 0 0 0 1px rgba(255,255,255,.03),0 7px 20px rgba(0,0,0,.16)}.card small{display:block;color:#97bedb;margin-bottom:10px;font-size:11px;font-weight:700;letter-spacing:.03em}.card strong{display:block;font-size:25px;font-weight:900;line-height:1;color:#f4f8ff;text-shadow:0 0 4px rgba(255,255,255,.14),0 0 10px rgba(74,170,255,.18)}.notice{padding:14px;border-radius:15px;background:rgba(30,142,255,.08);border:1px solid rgba(57,159,255,.22);line-height:1.5}.list{display:grid;gap:10px}.row{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:13px 14px;border-radius:16px;background:linear-gradient(180deg,rgba(14,28,41,.62),rgba(8,17,26,.76));border:1px solid rgba(63,142,210,.28)}
.row span{color:#b8d7ec}.row b{font-size:18px;color:#f4fbff;text-shadow:0 0 4px rgba(255,255,255,.08)}
.api-date{margin:0 0 12px;color:#d7ebfb;font-size:14px;font-weight:700;text-align:center;letter-spacing:.03em;padding:8px 12px;border-radius:999px;background:linear-gradient(180deg,rgba(15,32,49,.82),rgba(8,18,29,.82));border:1px solid rgba(73,156,226,.28);box-shadow:inset 0 0 0 1px rgba(255,255,255,.03)}.history-list{display:grid;gap:10px}.history-day{padding:12px;border-radius:16px;background:linear-gradient(180deg,rgba(14,28,41,.62),rgba(8,17,26,.76));border:1px solid rgba(63,142,210,.28)}.history-date{font-weight:800;margin-bottom:10px;color:#d8edfb}.history-values{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.history-values span{display:grid;gap:3px;text-align:center;padding:8px 4px;border-radius:10px;background:rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.03)}.history-values small{font-size:9px;color:#89aec9}.history-values b{font-size:14px;color:#f4fbff}.sheet.panel-results2d .sheet h2{}
@media (max-width:380px){.sheet h2{font-size:18px}.card strong{font-size:23px}.history-values{grid-template-columns:repeat(2,1fr)}}
[hidden]{display:none!important}

/* Approved loading: green apple slowly ripens into red. */
.splash{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:#01040a;overflow:hidden;opacity:1;visibility:visible;transition:opacity .5s ease,visibility .5s ease}
.splash.splash-hide{opacity:0;visibility:hidden;pointer-events:none}
.splash-apple{position:relative;width:74vw;height:74dvh;overflow:hidden}
.splash-layer{position:absolute;left:50%;top:50%;width:82%;height:82%;transform:translate(-50%,-50%);object-fit:contain;user-select:none;-webkit-user-drag:none;pointer-events:none}
.splash-green{z-index:1;opacity:1}
.splash-red{z-index:2;opacity:0;animation:ripenToRed 2.6s ease-in-out 1.8s forwards}
@keyframes ripenToRed{0%{opacity:0}20%{opacity:.08}45%{opacity:.36}72%{opacity:.72}100%{opacity:1}}
@media (prefers-reduced-motion:reduce){.splash-red{animation:none!important;opacity:1}}

/* v27: canonical Netlify server clock. No label, only date + time. */
.server-clock{
  position:absolute;
  left:50%;
  top:57.95%;
  transform:translateX(-50%);
  width:44%;
  z-index:9;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  pointer-events:none;
  text-align:center;
  white-space:nowrap;
  color:#f4f9ff;
  text-shadow:0 0 5px rgba(255,255,255,.42),0 0 11px rgba(26,146,255,.66);
}
.server-date{
  font-size:clamp(7px,1.85vw,10px);
  font-weight:650;
  line-height:1.05;
  letter-spacing:.07em;
  color:rgba(219,235,247,.88);
}
.server-time{
  margin-top:3px;
  font-variant-numeric:tabular-nums;
  font-size:clamp(12px,3.3vw,18px);
  font-weight:800;
  line-height:1.05;
  letter-spacing:.025em;
  color:#fff;
}

.sheet.panel-results2d #sheetTitle,.sheet.panel-results3d #sheetTitle,.sheet.panel-history #sheetTitle,.sheet.panel-holidays #sheetTitle,.sheet.panel-telegram #sheetTitle{background:linear-gradient(180deg,#fbfeff 0%,#dbe9f3 40%,#afc5d7 100%);-webkit-background-clip:text;background-clip:text;color:transparent} 

/* v35: loading apple slightly smaller; animation unchanged. */
.splash-apple{
  width:74vw !important;
  height:74dvh !important;
  max-width:520px;
  max-height:740px;
}
.splash-layer{
  object-fit:contain !important;
}


/* =========================================================
   APPLE 2D — FINAL UI POLISH
   Visual-only. Draw/API/date logic is intentionally untouched.
   ========================================================= */

/* Cleaner native rendering on iPhone / mobile browsers. */
html,body{
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}

/* Keep all apple state artwork locked pixel-for-pixel to the master canvas. */
.master-art,
.green-apple-overlay,
.ripe-apple-overlay{
  transform:translateZ(0);
  -webkit-backface-visibility:hidden;
  backface-visibility:hidden;
}

/* Preserve complete green/red fruit coverage with a smooth, premium ripening fade. */
.green-apple-overlay{
  opacity:1 !important;
}
.ripe-apple-overlay{
  mix-blend-mode:normal;
  transition:opacity 2.6s cubic-bezier(.42,0,.28,1);
}
.ripe-apple-overlay.ripe{
  opacity:1 !important;
}

/* Result digits: slightly cleaner chrome edge without changing placement. */
.draw-value{
  -webkit-font-smoothing:antialiased;
  text-shadow:
    0 2px 0 #556774,
    0 0 3px rgba(255,255,255,.96),
    0 0 7px rgba(0,139,255,.64);
}

/* Server date/time: same location, more balanced visual hierarchy. */
.server-date{
  font-weight:700;
  letter-spacing:.085em;
  color:rgba(226,240,250,.91);
  text-shadow:0 0 5px rgba(20,132,224,.30);
}
.server-time{
  margin-top:2px;
  font-weight:850;
  letter-spacing:.03em;
  text-shadow:
    0 1px 1px rgba(0,0,0,.55),
    0 0 5px rgba(255,255,255,.34),
    0 0 10px rgba(24,143,255,.56);
}

/* LIVE digits: refined metal finish and less harsh bloom. */
.live-box span{
  filter:
    drop-shadow(0 3px 0 #526675)
    drop-shadow(0 0 4px rgba(255,255,255,.78))
    drop-shadow(0 0 7px rgba(0,145,255,.58));
}
.live-overlay.rolling .live-box span{
  filter:
    blur(.55px)
    brightness(1.13)
    drop-shadow(0 0 8px rgba(0,145,255,.72));
}

/* Bottom icon row: tighten chrome rendering, keep original positions/hit areas. */
.nav-logo{
  -webkit-backface-visibility:hidden;
  backface-visibility:hidden;
}
.nav-logo img{
  image-rendering:auto;
}
.nav-logo-2d{
  filter:
    drop-shadow(0 0 5px rgba(56,174,255,.58))
    drop-shadow(0 2px 4px rgba(0,0,0,.72));
}

/* Panels: slightly cleaner glass treatment without changing layout. */
.sheet{
  border-color:rgba(86,183,255,.40);
  box-shadow:
    0 0 32px rgba(0,130,255,.28),
    0 -12px 38px rgba(0,0,0,.48),
    inset 0 0 0 1px rgba(255,255,255,.035);
}
.sheet header{
  border-bottom-color:rgba(255,255,255,.075);
}
.grab{
  opacity:.92;
}
.card,.row,.history-day{
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.028),
    0 6px 16px rgba(0,0,0,.13);
}

/* Keep bottom sheet clear of iPhone home indicator in installed/PWA mode. */
@supports (padding-bottom: env(safe-area-inset-bottom)){
  .sheet{
    bottom:max(1.2%, env(safe-area-inset-bottom));
  }
}

/* Reduced-motion still keeps state changes immediate and accurate. */
@media (prefers-reduced-motion:reduce){
  .ripe-apple-overlay,
  .live-box span{
    transition:none !important;
  }
}


/* =========================================================
   APPLE 2D — MISSING ANALYSIS
   Bell panel only; no draw/API/date timing changes.
   ========================================================= */
.sheet.panel-missing #sheetTitle{
  background:linear-gradient(180deg,#fbfeff 0%,#dbe9f3 40%,#afc5d7 100%);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}
.sheet-icon.icon-missing b{
  font-size:12px;
  letter-spacing:0;
}
.missing-date{
  margin:0 0 12px;
  text-align:center;
  padding:8px 12px;
  border-radius:999px;
  color:#cfe8fa;
  font-size:12px;
  font-weight:750;
  letter-spacing:.025em;
  background:linear-gradient(180deg,rgba(18,38,57,.78),rgba(8,18,29,.82));
  border:1px solid rgba(77,163,232,.26);
}
.missing-section{
  margin-bottom:12px;
  padding:11px;
  border-radius:18px;
  background:linear-gradient(180deg,rgba(12,28,42,.72),rgba(6,16,25,.80));
  border:1px solid rgba(68,153,222,.30);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.025),0 8px 20px rgba(0,0,0,.13);
}
.missing-heading{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap:10px;
  margin:0 2px 9px;
}
.missing-heading span{
  color:#eff8ff;
  font-size:15px;
  font-weight:900;
  letter-spacing:.01em;
  text-shadow:0 0 8px rgba(54,159,244,.25);
}
.missing-heading small{
  color:#789db8;
  font-size:9px;
  font-weight:700;
  text-align:right;
}
.missing-list{
  display:grid;
  gap:6px;
}
.missing-row{
  min-height:38px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:8px 11px;
  border-radius:12px;
  background:rgba(0,0,0,.23);
  border:1px solid rgba(255,255,255,.035);
}
.missing-row span{
  color:#bad9ef;
  font-size:13px;
  font-weight:760;
}
.missing-row b{
  color:#f6fbff;
  font-size:13px;
  font-weight:900;
  white-space:nowrap;
  text-shadow:0 0 7px rgba(51,165,255,.30);
}
.missing-none{
  padding:10px 8px;
  text-align:center;
  border-radius:11px;
  color:#7fa7c2;
  font-size:11px;
  background:rgba(0,0,0,.16);
}

/* Compact special-family Missing summary */
.missing-special-row span{
  display:flex;
  align-items:baseline;
  gap:10px;
  min-width:0;
}
.missing-special-row span strong{
  font:inherit;
  font-weight:900;
  color:#eef7ff;
  white-space:nowrap;
}
.missing-special-row span small{
  font:inherit;
  font-size:.86em;
  font-weight:800;
  color:#9ec8ee;
  white-space:nowrap;
}
.missing-special-row b{
  white-space:nowrap;
}


/* v40.1 — Holiday nav slot becomes Apple 2D Calendar. No other layout/logic changed. */
.calendar-nav-label{
  position:absolute;left:68%;top:91.78%;transform:translateX(-50%);z-index:20;
  width:15.4%;height:1.55%;display:grid;place-items:center;pointer-events:none;
  color:#f7fbff;font-size:calc(var(--stage-w) * .0225);font-weight:850;line-height:1;letter-spacing:-.02em;
  text-shadow:0 1px 2px #000,0 0 4px rgba(255,255,255,.18);
  background:linear-gradient(90deg,transparent 0%,rgba(5,14,24,.97) 13%,rgba(5,14,24,.99) 87%,transparent 100%);
}
.sheet-icon.icon-calendar .sym{font-size:16px;transform:translate(-50%,-56%)}
.sheet.panel-calendar #sheetTitle{
  background:linear-gradient(180deg,#fbfeff 0%,#dbe9f3 40%,#afc5d7 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.calendar-caption{
  margin:0 0 10px;padding:8px 10px;text-align:center;border-radius:12px;
  color:#e8f6ff;font-size:13px;font-weight:850;letter-spacing:.02em;
  background:linear-gradient(180deg,rgba(18,52,78,.72),rgba(7,22,36,.82));
  border:1px solid rgba(82,180,247,.32);
}
.calendar-table-wrap{
  width:100%;overflow-x:auto;border-radius:14px;border:1px solid rgba(70,166,235,.42);
  background:rgba(2,10,18,.72);-webkit-overflow-scrolling:touch;
}
.calendar-table{width:100%;min-width:332px;border-collapse:separate;border-spacing:0;table-layout:fixed;font-variant-numeric:tabular-nums}
.calendar-table th,.calendar-table td{
  padding:9px 3px;text-align:center;border-right:1px solid rgba(119,190,240,.23);border-bottom:1px solid rgba(119,190,240,.23);
  white-space:nowrap;overflow:hidden;text-overflow:clip;
}
.calendar-table th:first-child,.calendar-table td:first-child{width:25%}
.calendar-table th:not(:first-child),.calendar-table td:not(:first-child){width:12.5%}
.calendar-table th{
  position:sticky;top:0;z-index:2;color:#f4fbff;font-size:9px;font-weight:900;
  background:linear-gradient(180deg,#0c426a,#082d4b);text-shadow:0 1px 1px rgba(0,0,0,.8);
}
.calendar-table td{
  color:#dff4ff;font-size:13px;font-weight:900;background:linear-gradient(180deg,rgba(10,45,72,.88),rgba(5,31,53,.9));
}
.calendar-table .calendar-date{color:#f2f8ff;font-size:10px;font-weight:800}
.calendar-table tr:last-child td{border-bottom:0}
.calendar-table th:last-child,.calendar-table td:last-child{border-right:0}
@media (max-width:380px){
  .calendar-nav-label{font-size:8px}
  .calendar-table{min-width:320px}
  .calendar-table th{font-size:8px}
  .calendar-table td{font-size:12px;padding:8px 2px}
  .calendar-table .calendar-date{font-size:9px}
}


/* PWA install controls — appended without changing the existing Apple 2D layout. */
.install-app-row{
  width:100%; border:0; color:inherit; font:inherit; text-align:left; cursor:pointer;
  background:transparent; appearance:none; -webkit-appearance:none;
}
.install-app-row:active{transform:scale(.995)}
.install-guide{padding:4px 0 12px}
.install-guide-title{font-size:20px;font-weight:800;margin:4px 0 14px;color:#eef7ff}
.install-step{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;margin:9px 0;border:1px solid rgba(91,160,207,.22);border-radius:16px;background:rgba(3,15,25,.68);color:#d8e9f6;line-height:1.45}
.install-step>b{display:grid;place-items:center;min-width:27px;height:27px;border-radius:50%;background:#0e3148;color:#e9f7ff;font-size:14px}
.install-step strong{color:#fff}
.pwa-install-button{display:block;width:100%;margin:14px 0 10px;padding:14px 16px;border:1px solid rgba(83,172,231,.55);border-radius:16px;background:linear-gradient(180deg,rgba(16,63,94,.98),rgba(5,30,48,.98));color:#fff;font:800 16px/1.2 inherit;box-shadow:inset 0 1px 0 rgba(255,255,255,.12);cursor:pointer}
.install-hint{font-size:13px;line-height:1.45;color:#93abc0;padding:2px 6px}
.install-notice b{color:#eef7ff}


/* Apple-fall effect — isolated overlay; existing positions, fonts and artwork untouched. */
.apple-fall-layer{
  position:absolute;inset:0;z-index:6;pointer-events:none;overflow:hidden;
}
.apple-fall-piece{
  position:absolute;left:var(--start-x);top:var(--start-y);
  width:clamp(21px,var(--apple-size),35px);height:auto;display:block;
  opacity:0;transform-origin:50% 35%;pointer-events:none;
  filter:drop-shadow(0 1px 2px rgba(0,0,0,.55)) drop-shadow(0 0 2px rgba(235,248,255,.2));
  animation:apple-fall-float var(--flight) cubic-bezier(.28,.14,.72,.87) var(--delay) both;
  will-change:transform,opacity;
}
@keyframes apple-fall-float{
  0%{transform:translate3d(0,-7px,0) rotate(-13deg) scale(.88);opacity:0}
  7%{opacity:1}
  22%{transform:translate3d(var(--sway-a),var(--fall-22),0) rotate(11deg) scale(.98);opacity:1}
  48%{transform:translate3d(var(--sway-b),var(--fall-48),0) rotate(-10deg) scale(1);opacity:1}
  74%{transform:translate3d(var(--sway-c),var(--fall-74),0) rotate(12deg) scale(.98);opacity:1}
  88%{opacity:.98}
  100%{transform:translate3d(var(--sway-d),var(--fall-end),0) rotate(-14deg) scale(.91);opacity:0}
}
@media (prefers-reduced-motion:reduce){.apple-fall-layer{display:none!important}}
