:root{
  --eazo-safe-area-top: max(56px, env(safe-area-inset-top, 0px));
  --eazo-safe-area-bottom: max(34px, env(safe-area-inset-bottom, 0px));
  --sal:max(14px, env(safe-area-inset-left, 0px));
  --sar:max(14px, env(safe-area-inset-right, 0px));
  --rose:#e8a6b8; --plum:#8f6f97; --amber:#f4b878;
  --slate:#5a6472; --ink:#f0dfe6; --ink-dim:#b79aae;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;height:100%;}
body{
  font-family:"Georgia","Times New Roman",serif;
  color:var(--ink);
  background:radial-gradient(140% 90% at 50% 8%, #33253a 0%, #241b26 42%, #1a1420 100%);
  overflow:hidden;-webkit-user-select:none;user-select:none;touch-action:manipulation;
}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0;}

#app{
  position:fixed;inset:0;display:flex;flex-direction:column;
  height:100dvh;
  padding:var(--eazo-safe-area-top) var(--sar) var(--eazo-safe-area-bottom) var(--sal);
}
.dust{position:absolute;inset:0;pointer-events:none;opacity:.5;
  background:
    radial-gradient(2px 2px at 20% 30%, rgba(232,166,184,.5), transparent 60%),
    radial-gradient(1.5px 1.5px at 70% 20%, rgba(244,184,120,.35), transparent 60%),
    radial-gradient(1.5px 1.5px at 40% 70%, rgba(143,111,151,.4), transparent 60%),
    radial-gradient(2px 2px at 85% 60%, rgba(232,166,184,.3), transparent 60%),
    radial-gradient(1.5px 1.5px at 12% 82%, rgba(244,184,120,.3), transparent 60%);
  animation:drift 26s ease-in-out infinite alternate;}
@keyframes drift{from{transform:translateY(0)}to{transform:translateY(-14px)}}

header{position:relative;z-index:6;display:flex;align-items:center;justify-content:space-between;
  gap:12px;flex:0 0 auto;padding:2px 6px 0;}
.title{font-size:15px;letter-spacing:.06em;color:var(--ink-dim);font-variant:small-caps;}
.header-controls{display:inline-flex;align-items:center;gap:10px;}
.langtoggle{display:inline-flex;align-items:center;border:1px solid rgba(232,166,184,.28);
  border-radius:999px;overflow:hidden;background:rgba(232,166,184,.10);
  box-shadow:inset 0 0 12px rgba(232,166,184,.06);}
.langtoggle .langopt{appearance:none;-webkit-appearance:none;border:0;background:transparent;
  color:var(--ink-dim);font:inherit;font-size:13px;letter-spacing:.03em;
  min-height:36px;min-width:44px;padding:0 14px;cursor:pointer;transition:color .3s ease,background .3s ease;}
.langtoggle .langopt[aria-pressed="true"]{background:rgba(244,184,120,.20);color:var(--ink);
  text-shadow:0 0 10px rgba(244,184,120,.35);}
.langtoggle .langopt+.langopt{border-left:1px solid rgba(232,166,184,.20);}
.langtoggle .langopt:focus-visible{outline:1px solid rgba(232,166,184,.6);outline-offset:-3px;}
.lang{display:inline-flex;align-items:center;border:1px solid rgba(232,166,184,.28);
  border-radius:999px;overflow:hidden;background:rgba(232,166,184,.10);
  box-shadow:inset 0 0 12px rgba(232,166,184,.06);}
.lang select{appearance:none;-webkit-appearance:none;border:0;
  background:transparent;color:var(--ink);font:inherit;font-size:13px;
  min-height:36px;padding:0 30px 0 14px;border-radius:999px;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,var(--ink-dim) 50%),linear-gradient(135deg,var(--ink-dim) 50%,transparent 50%);
  background-position:calc(100% - 16px) 15px,calc(100% - 11px) 15px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;}
.lang select:focus-visible{outline:1px solid rgba(232,166,184,.5);outline-offset:2px;}
.lang select option{color:#241b26;}

main{position:relative;flex:1 1 auto;min-height:0;display:flex;}
#stage{position:absolute;inset:0;overflow:visible;}
svg#heart{position:absolute;left:50%;top:50%;transform:translate(-50%,-52%);
  width:min(74vw,340px);height:auto;filter:drop-shadow(0 0 22px rgba(232,166,184,.10));}

.wedge{transition:fill .9s ease, opacity .9s ease, filter .9s ease;}
.wedge.lit{filter:drop-shadow(0 0 8px rgba(244,184,120,.55));}
.notch-glow{opacity:0;transition:opacity .35s ease;}
.notch-glow.on{opacity:1;}
.heart-hit{fill:transparent;cursor:pointer;}

.shard{position:absolute;width:64px;height:64px;margin:-32px 0 0 -32px;cursor:pointer;
  transition:left .9s cubic-bezier(.22,1,.36,1),top .9s cubic-bezier(.22,1,.36,1),transform .5s ease, opacity .6s ease;
  will-change:left,top,transform;touch-action:none;}
.shard svg{width:100%;height:100%;display:block;overflow:visible;filter:drop-shadow(0 0 10px rgba(232,166,184,.45));}
.shard.held{transform:scale(1.16);z-index:5;}
.shard.held svg{filter:drop-shadow(0 0 18px rgba(255,215,160,.85));animation:bob 2.2s ease-in-out infinite alternate;}
@keyframes bob{from{transform:translateY(0)}to{transform:translateY(-6px)}}
.shard.gone{opacity:0;pointer-events:none;transform:scale(.4);}
.shard.float{animation:sfloat 6s ease-in-out infinite alternate;}
@keyframes sfloat{from{transform:translateY(0)}to{transform:translateY(9px)}}

.memline{position:absolute;left:50%;transform:translateX(-50%);
  font-family:"Snell Roundhand","Segoe Script","Brush Script MT",cursive;
  font-size:20px;color:var(--rose);white-space:nowrap;pointer-events:none;
  text-shadow:0 0 14px rgba(232,166,184,.5);opacity:0;z-index:7;max-width:90vw;overflow:hidden;text-overflow:ellipsis;}
.memline.zh{font-family:"STKaiti","Kaiti SC","KaiTi",serif;}
@keyframes rise{0%{opacity:0;transform:translate(-50%,0)}18%{opacity:1}100%{opacity:0;transform:translate(-50%,-120px)}}

footer{position:relative;z-index:6;flex:0 0 auto;text-align:center;padding:6px 10px 2px;}
.instruction{font-size:14px;line-height:1.4;color:var(--ink-dim);max-width:30em;margin:0 auto;}
.waitline{min-height:1.3em;margin-top:8px;font-style:italic;color:var(--slate);font-size:13.5px;transition:opacity .8s;opacity:0;}
.waitline.show{opacity:1;}
.leave{margin-top:8px;}
.leave button{appearance:none;background:transparent;border:0;color:var(--ink-dim);font:inherit;font-size:13px;
  text-decoration:underline;text-underline-offset:3px;min-height:44px;padding:0 8px;cursor:pointer;opacity:.75;}

.scrim{position:fixed;inset:0;z-index:20;display:none;align-items:stretch;justify-content:center;
  background:radial-gradient(120% 90% at 50% 0%, rgba(40,28,46,.7), rgba(16,12,20,.92));backdrop-filter:blur(3px);}
.scrim.show{display:flex;}
.card{width:100%;max-width:520px;display:flex;flex-direction:column;min-height:0;
  padding:var(--eazo-safe-area-top) calc(var(--sar) + 20px) var(--eazo-safe-area-bottom) calc(var(--sal) + 20px);}
.card .inner{display:flex;flex-direction:column;min-height:0;flex:1;overflow:hidden;}
.card h2{font-size:20px;font-weight:normal;letter-spacing:.04em;margin:4px 0 2px;text-align:center;color:var(--ink);}
.card .sub{text-align:center;color:var(--ink-dim);font-size:14px;margin:0 0 6px;font-style:italic;}
.card .heartmini{flex:0 1 auto;display:flex;justify-content:center;align-items:center;min-height:0;margin:6px 0;}
.card .heartmini svg{width:min(46vw,190px);height:auto;filter:drop-shadow(0 0 18px rgba(244,184,120,.2));}
.card .closing{text-align:center;color:var(--rose);font-size:14.5px;line-height:1.45;margin:2px auto 10px;max-width:26em;
  font-family:"Snell Roundhand","Segoe Script","Brush Script MT",cursive;text-shadow:0 0 10px rgba(232,166,184,.4);}
.card .closing.zh{font-family:"STKaiti","Kaiti SC","KaiTi",serif;}
.actions{display:flex;gap:12px;justify-content:center;flex:0 0 auto;}
.actions button{appearance:none;font:inherit;font-size:15px;min-height:48px;padding:0 22px;border-radius:999px;cursor:pointer;
  border:1px solid rgba(232,166,184,.4);color:var(--ink);background:linear-gradient(180deg, rgba(232,166,184,.16), rgba(143,111,151,.12));}
.actions button.primary{background:linear-gradient(180deg, rgba(244,184,120,.32), rgba(232,166,184,.2));border-color:rgba(244,184,120,.55);}
.expander{flex:0 1 auto;min-height:0;display:flex;flex-direction:column;margin-top:12px;}
.expander > button{appearance:none;background:transparent;border:0;color:var(--ink-dim);font:inherit;font-size:13.5px;
  min-height:44px;cursor:pointer;text-decoration:underline;text-underline-offset:3px;}
.lines{overflow:auto;margin-top:4px;padding:0 2px 4px;display:none;}
.lines.open{display:block;}
.lines li{list-style:none;padding:7px 2px;border-bottom:1px solid rgba(232,166,184,.12);
  font-family:"Snell Roundhand","Segoe Script","Brush Script MT",cursive;font-size:16px;color:var(--rose);}
.lines.zh li{font-family:"STKaiti","Kaiti SC","KaiTi",serif;}
ul{margin:0;padding:0;}
