/* Koshin — Marokash koshini: sakkiz qirrali yulduz naqshli fon, yorug‘lik sirpanishi, arka ramka va gumbazli kartochkalar. Ranglar manifest sxemasidan; animatsiyalar prefers-reduced-motion da o‘chadi. */
.t-koshin .inv{background:var(--p1);color:var(--tx)}
.t-koshin .wash{position:absolute;inset:0;pointer-events:none;z-index:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E%3Cg fill='none' stroke='%232F5DA8' stroke-width='1.2' stroke-opacity='.55'%3E%3Cpath d='M40 4l10 26 26 10-26 10-10 26-10-26-26-10 26-10z'/%3E%3Cpath d='M40 16l6 18 18 6-18 6-6 18-6-18-18-6 18-6z'/%3E%3Cpath d='M0 0h80v80H0z' stroke-opacity='.25'/%3E%3Ccircle cx='40' cy='40' r='5'/%3E%3Cpath d='M0 40h14M66 40h14M40 0v14M40 66v14' stroke-opacity='.35'/%3E%3C/g%3E%3Cg fill='%232F5DA8' fill-opacity='.14'%3E%3Cpath d='M40 4l10 26 26 10-26 10-10 26-10-26-26-10 26-10z'/%3E%3C/g%3E%3C/svg%3E");background-size:80px 80px;opacity:.9;
  -webkit-mask:linear-gradient(180deg,#000 0,rgba(0,0,0,.35) 35%,rgba(0,0,0,.35) 65%,#000);mask:linear-gradient(180deg,#000 0,rgba(0,0,0,.35) 35%,rgba(0,0,0,.35) 65%,#000)}
.t-koshin .wash::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,var(--w1) 50%,transparent 70%);background-size:220% 100%;animation:ksSheen 9s ease-in-out infinite}
@keyframes ksSheen{0%{background-position:120% 0}100%{background-position:-120% 0}}
.t-koshin .deco{display:none}
.t-koshin .content{padding-top:70px}
.t-koshin .small{font-family:var(--fb);font-size:11px;letter-spacing:.3em;color:var(--gl)}
/* Arka ramka */
.t-koshin .frame{border:2px solid var(--gl);border-radius:200px 200px 18px 18px;background:var(--card);padding:56px 18px 30px;box-shadow:0 16px 40px rgba(0,0,0,.1)}
.t-koshin .frame::before{content:"";position:absolute;inset:8px;border:1px solid var(--line);border-radius:192px 192px 12px 12px;pointer-events:none}
.t-koshin .frame::after{content:"";position:absolute;left:50%;top:-2px;width:22px;height:22px;transform:translate(-50%,-50%) rotate(45deg);background:var(--p1);border:2px solid var(--gl)}
.t-koshin .hero .small{color:var(--gl)}
.t-koshin .names{font-family:var(--fs);font-size:44px;line-height:1.1;color:var(--tx)}
.t-koshin .names .amp{font-family:var(--fd);font-style:italic;font-size:28px;color:var(--gl)}
.t-koshin .photo{border-radius:100px 100px 12px 12px;width:200px;height:240px;border-color:var(--gl)}
.t-koshin .quote{font-family:var(--fd);font-style:italic;color:var(--tx2)}
.t-koshin .greeting{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px 16px}
.t-koshin .greeting p::first-line{font-family:var(--fs);font-size:30px;color:var(--gl)}
.t-koshin .cal{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 10px 12px;max-width:320px}
.t-koshin .cal .dn span.on{background:var(--gl);border-radius:50% 50% 8px 8px}
.t-koshin .datebig{font-family:var(--fn);font-size:54px;color:var(--tx)}
.t-koshin .datebig small{color:var(--gl)}
.t-koshin .cd div{background:var(--card);border:1px solid var(--gl);border-radius:40px 40px 8px 8px;padding-top:14px}
.t-koshin .cd b{color:var(--gl)}
.t-koshin .ev,.t-koshin .parents div,.t-koshin .note,.t-koshin .wi,.t-koshin .next,.t-koshin .tl .it,.t-koshin .gift .card,.t-koshin .smp{background:var(--card);border:1px solid var(--line);border-radius:14px}
.t-koshin .ev .t{color:var(--gl)}
.t-koshin .ev .n,.t-koshin .parents .nm{font-family:var(--fd)}
.t-koshin .parents div{border-radius:60px 60px 10px 10px;padding-top:18px}
.t-koshin .today{border-radius:60px 60px 14px 14px;background:linear-gradient(180deg,var(--gl),color-mix(in srgb,var(--gl) 65%,var(--tx)));padding-top:26px}
.t-koshin .btn{border-radius:999px;border-width:1.5px}
.t-koshin .btn.solid{color:#fff}
.t-koshin .seg button,.t-koshin .form input,.t-koshin .form select,.t-koshin .form textarea{border-radius:10px;background:rgba(255,255,255,.75)}
.t-koshin .together{font-family:var(--fn);color:var(--tx)}
.t-koshin .together small{font-family:var(--fs);color:var(--gl)}
.t-koshin .tl .it:before{border-radius:2px;transform:rotate(45deg)}
.t-koshin .closing{font-family:var(--fs);font-size:28px;color:var(--gl)}
.t-koshin .gate{background:var(--p1);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' viewBox='0 0 80 80'%3E%3Cg fill='none' stroke='%232F5DA8' stroke-width='1.2' stroke-opacity='.55'%3E%3Cpath d='M40 4l10 26 26 10-26 10-10 26-10-26-26-10 26-10z'/%3E%3Cpath d='M40 16l6 18 18 6-18 6-6 18-6-18-18-6 18-6z'/%3E%3Cpath d='M0 0h80v80H0z' stroke-opacity='.25'/%3E%3Ccircle cx='40' cy='40' r='5'/%3E%3Cpath d='M0 40h14M66 40h14M40 0v14M40 66v14' stroke-opacity='.35'/%3E%3C/g%3E%3Cg fill='%232F5DA8' fill-opacity='.14'%3E%3Cpath d='M40 4l10 26 26 10-26 10-10 26-10-26-26-10 26-10z'/%3E%3C/g%3E%3C/svg%3E");background-size:80px 80px}
.t-koshin .gate::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 50%,var(--p1) 30%,transparent 80%);pointer-events:none}
.t-koshin .gate>*{position:relative}
.t-koshin .env-back,.t-koshin .env-front,.t-koshin .env-flap{border-radius:14px}
.t-koshin .gate-names{font-family:var(--fs)}
@media (prefers-reduced-motion:reduce){.t-koshin .wash::after{animation:none}}
