:root{
  --tile:#f3eee2; --grout:#e6dfcf; --card:#fffdf7; --card2:#fbf6ea; --line:#e2d8c3; --line2:#d3c7ad;
  --ink:#1f2a30; --ink2:#55636b; --ink3:#86929a;
  --duck:#ffc628; --duck2:#e8a300; --beak:#ff7a2f;
  --water:#2ba3b8; --water2:#13697a; --water3:#0c4a57; --foam:#ffffff;
  --red:#e0463c; --green:#2e9e66; --amber:#e39a12;
  --r:14px;
  --fd:'Baloo 2',ui-rounded,system-ui,sans-serif;
  --fb:'DM Sans',system-ui,-apple-system,Segoe UI,sans-serif;
  --fm:ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  color-scheme:light;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{min-height:100%}
body{font-family:var(--fb);color:var(--ink);background:linear-gradient(180deg,#cdeef1,#8fd2dc) fixed;
  min-height:100vh;display:flex;flex-direction:column;-webkit-font-smoothing:antialiased}
html{overflow-x:hidden}

/* ---------- the water (bg.js) ---------- */
#bgWater{position:fixed;inset:0;width:100vw;height:100vh;z-index:-2;display:block}
.bubbles{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.bubbles.pop{z-index:40}
.bub{position:absolute;bottom:-80px;border-radius:50%;
  background:radial-gradient(circle at 32% 28%,#ffffffee 0 9%,#ffffff55 10% 18%,transparent 19%),
    radial-gradient(circle at 50% 50%,transparent 58%,#ffffff70 70%,#c8f0ff90 80%,#ffd6f680 88%,#ffffffcc 96%,transparent 100%);
  animation:rise linear infinite,wob ease-in-out infinite alternate}
.bubbles.pop .bub{pointer-events:auto;cursor:pointer}
@keyframes rise{from{transform:translateY(0)}to{transform:translateY(calc(-100vh - 160px))}}
@keyframes wob{from{margin-left:-14px}to{margin-left:14px}}
.drop{position:fixed;width:6px;height:6px;border-radius:50%;background:#fff;box-shadow:0 0 0 1.5px #8fd2dc;
  transform:translate(-50%,-50%);animation:drop .55s ease-out forwards;pointer-events:none}
@keyframes drop{to{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(.3);opacity:0}}

/* ---------- 3D tilt (app.js, [data-tilt]) ---------- */
[data-tilt]{transform-style:preserve-3d;transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s;will-change:transform;position:relative}
[data-tilt].tilting{transition:transform .08s linear,box-shadow .2s}
[data-tilt] .sheen{position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s;
  background:radial-gradient(circle at var(--sx,50%) var(--sy,50%),#ffffff90,transparent 45%);mix-blend-mode:soft-light}
[data-tilt].tilting .sheen{opacity:1}
[data-tilt] .lift{transform:translateZ(28px)}
a{color:inherit}
button{font:inherit;cursor:pointer}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---------- nav ---------- */
nav.top{display:flex;align-items:center;gap:2px;flex-wrap:wrap;padding:12px 16px;max-width:1180px;width:100%;margin:0 auto}
nav.top .brand{display:flex;align-items:center;gap:8px;margin-right:auto;text-decoration:none;font-family:var(--fd);
  font-weight:800;font-size:20px;letter-spacing:.5px;color:var(--ink)}
nav.top .brand svg{width:34px;height:34px;transition:transform .3s cubic-bezier(.3,1.6,.5,1)}
nav.top .brand:hover svg{transform:rotate(-14deg) scale(1.15)}
nav.top a.link{color:#2c3b42;text-decoration:none;font-size:14px;font-weight:600;padding:8px 11px;border-radius:9px;transition:background .15s,color .15s}
nav.top a.link:hover{color:var(--ink);background:#ffffff70}
nav.top a.link.on{color:var(--ink);background:#ffffffb0}
.wbtn{margin-left:8px;border:2px solid var(--ink);background:var(--duck);color:var(--ink);font-weight:700;font-size:13px;
  padding:7px 13px;border-radius:10px;box-shadow:0 3px 0 var(--ink);transition:transform .1s,box-shadow .1s}
.wbtn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--ink)}
.wbtn.on{background:var(--card)}
@media (max-width:720px){
  nav.top{gap:0;padding:10px 12px}
  nav.top .brand{flex:1 1 auto;margin-bottom:6px}
  nav.top::after{content:'';order:1;flex-basis:100%}
  nav.top a.link{order:2}
  nav.top a.link{font-size:13px;padding:7px 8px}
  .wbtn{order:1;margin:0 0 6px}
}

/* ---------- common ---------- */
.wrap{max-width:1180px;width:100%;margin:0 auto;padding:10px 16px 40px;flex:1}
h1.pg{font-family:var(--fd);font-weight:800;font-size:clamp(30px,6vw,44px);line-height:1.05;margin:14px 0 6px}
p.lead{color:#2c3b42;max-width:640px;line-height:1.6;margin-bottom:20px}
.card{background:var(--card);border:2px solid #1f2a3026;border-radius:var(--r);box-shadow:0 6px 0 #0c4a5722,0 18px 40px -18px #0c4a5760}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:2px solid var(--ink);background:var(--duck);
  color:var(--ink);font-weight:800;font-size:15px;padding:12px 22px;border-radius:12px;text-decoration:none;
  box-shadow:0 4px 0 var(--ink);transition:transform .1s,box-shadow .1s}
.btn:hover{transform:translateY(-1px);box-shadow:0 5px 0 var(--ink)}
.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}
.btn.ghost{background:var(--card)}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:0 4px 0 var(--ink)}
.chip{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.8px;padding:3px 8px;border-radius:6px}
.chip.FREE{background:#2ba3b822;color:var(--water2)}
.chip.DEMO{background:#ffc62845;color:#8a5a00}
.mono{font-family:var(--fm)}
.muted{color:var(--ink3)}
table.t{width:100%;border-collapse:collapse;font-size:14px}
table.t th{text-align:left;font-size:11px;letter-spacing:1px;color:var(--ink3);font-weight:700;padding:10px 12px;border-bottom:2px solid var(--line)}
table.t td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
table.t tr:last-child td{border-bottom:none}
table.t td.num,table.t th.num{text-align:right;font-variant-numeric:tabular-nums}
.tscroll{overflow-x:auto}
.empty{text-align:center;color:var(--ink2);padding:40px 16px;line-height:1.7}

footer.bot{text-align:center;padding:24px 16px 32px;color:var(--ink2);font-size:13px;border-top:2px solid #ffffff80;background:#ffffff40;backdrop-filter:blur(6px)}
footer.bot a{color:var(--ink);font-weight:700;text-decoration:none}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}[data-tilt]{transform:none!important}}
