:root{--bg:#f7f3ef;--accent:#d9534f;--card:#fff;--muted:#666}
    *{box-sizing:border-box}
    body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#fff 0%,#f0eefc 100%);color:#222}
    .stage{width:900px;max-width:96vw;height:620px;background:var(--card);border-radius:18px;box-shadow:0 10px 30px rgba(30,30,50,.12);overflow:hidden;position:relative}
    header{padding:16px 22px;border-bottom:1px solid #eee;display:flex;align-items:center;gap:12px}
    header h1{font-size:18px;margin:0;color:#8B0000}
    .center{height:calc(100% - 64px);display:flex;align-items:center;justify-content:center;position:relative;padding:16px}
    /* Gift box */
    .gift-wrap{display:flex;flex-direction:column;align-items:center;gap:12px}
    .gift{width:220px;height:220px;border-radius:12px;background:linear-gradient(180deg,#ffb3b3,#ff7b7b);display:flex;align-items:center;justify-content:center;position:relative;cursor:pointer;box-shadow:0 8px 16px rgba(200,0,0,.12);transition:transform .18s ease}
    .gift:hover{transform:translateY(-6px)}
    .ribbon{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:160px;height:32px;background:rgba(255,255,255,.86);border-radius:6px;display:flex;align-items:center;justify-content:center;font-weight:700;color:#b00000}
    .tag{font-size:14px}
    .bow{position:absolute;top:-20px;right:50%;transform:translateX(50%);font-size:40px}
    .tap{font-size:14px;color:var(--muted)}
    /* transitions */
    .screen{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;transition:all .38s ease}
    .hidden{opacity:0;pointer-events:none;transform:scale(.98)}
    /* Scratch card */
    .scratch-card{width:520px;max-width:92%;height:360px;border-radius:12px;border:1px solid #eee;background:linear-gradient(180deg,#fff 0%,#fff7f0 100%);display:flex;flex-direction:column;align-items:center;padding:22px;box-shadow:0 10px 30px rgba(0,0,0,.05);position:relative}
    .card-title{font-weight:700;margin-bottom:6px}
    #scratchCanvas{width:480px;height:160px;border-radius:10px;margin-top:10px;background:#c2c2c2;touch-action:none}
    /* Gift message card */
    .gift-card{width:520px;max-width:92%;height:360px;border-radius:12px;border:1px solid #eee;background:linear-gradient(180deg,#fff 0%,#fffef3 100%);display:flex;flex-direction:column;align-items:center;padding:22px}
    .wish{font-size:18px;color:#222;text-align:center}
    .action-btn{margin-top:16px;padding:10px 16px;border-radius:10px;background:var(--accent);color:#fff;border:none;cursor:pointer;font-weight:700}
    /* Bottle game */
    .game-area{width:520px;max-width:92%;height:360px;border-radius:12px;border:1px dashed #eee;background:linear-gradient(180deg,#fff 0%,#f7fbff 100%);display:flex;flex-direction:column;align-items:center;padding:12px;position:relative}
    #gameField{flex:1;display:flex;align-items:center;justify-content:center;position:relative;width:100%;}
    #bottleCanvas{background:#d9f0ff;border-radius:8px;touch-action:none}
    .game-info{margin-bottom:8px}
    #skipGameBtn{background:#444}
    /* Photo frame */
    .photo-stage{width:520px;max-width:92%;height:360px;border-radius:12px;border:1px solid #FFD700;background:linear-gradient(180deg,#fff 0%,#FFFFE0 100%);display:flex;flex-direction:column;align-items:center;padding:22px;position:relative}
    .frame{width:280px;height:200px;border-radius:12px;background:#fff;border:6px solid #FAEBD7;box-shadow:0 8px 30px rgba(0,0,0,.08);display:flex;align-items:center;justify-content:center;overflow:hidden}
    .frame img{width:100%;height:100%;object-fit:cover}
    #sprinkleCanvas{position:absolute;inset:0;pointer-events:none;width:520px;height:360px}
    footer{position:absolute;right:14px;bottom:12px;font-size:12px;color:#888}
    @media (max-width:640px){.stage{height:86vh}}