
/* ---------- scoped calendar variables ---------- */
.ns-cal-wrap {
    --ns-navy:      #000099;
    --ns-navy-light:#e6e6ff;
    --ns-gold:      #b8860b;
    --ns-gray:      #7f7f7f;
    --ns-border:    #c8d8ef;
    --ns-hdr-bg:    #f0f4fb;
    --ns-sun-bg:    #fdf0f0;
    --ns-sat-bg:    #f0f0fd;
    --ns-empty-bg:  #fafbfd;
    --ns-radius:    16px;
    --ns-shadow:    0 4px 24px rgba(0,0,153,.09), 0 1px 4px rgba(0,0,0,.05);
}

/* ---------- wrapper ---------- */
.ns-cal-wrap {
    width: 100%;
    font-family: 'Crimson Pro', Georgia, serif;
    margin: 1.5rem 0 2rem;
}
.ns-cal-wrap *, .ns-cal-wrap *::before, .ns-cal-wrap *::after {
    box-sizing: border-box;
}

/* ---------- page title ---------- */
.ns-cal-wrap .ns-page-title {
    text-align: center;
    margin-bottom: .9rem;
}
.ns-cal-wrap .ns-page-title p {
    font-family: 'Noto Sans Gurmukhi', sans-serif;
    font-size: clamp(0.6rem, 1.8vw, 0.95rem);
    font-weight: 400;
    color: var(--ns-gray);
    letter-spacing: .07em;
    text-transform: uppercase;
    line-height: 1.4;
    margin: 0;
}

/* ---------- card ---------- */
.ns-cal-wrap .ns-card {
    background: #fff;
    border-radius: var(--ns-radius);
    box-shadow: var(--ns-shadow);
    overflow: hidden;
    border: 1px solid var(--ns-border);
}

/* ---------- header ---------- */
.ns-cal-wrap .ns-hdr {
    background: linear-gradient(135deg,#dce8f8 0%,#eef3fb 50%,#e6eedf 100%);
    padding: clamp(.7rem,2.5vw,1.4rem) clamp(.7rem,2.5vw,1.8rem);
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: clamp(.5rem,2vw,1.5rem);
    border-bottom: 1.5px solid var(--ns-border);
    flex-wrap: wrap;
}
.ns-cal-wrap .ns-hdr-left {
    display: flex; flex-direction: column; gap: 4px; flex: 0 0 auto;
}
.ns-cal-wrap .ns-month-g {
    font-family: 'Noto Sans Gurmukhi', sans-serif;
    font-size: clamp(2rem,7vw,3.4rem);
    font-weight: 700;
    color: var(--ns-navy);
    line-height: 1.0;
    display: block;
}
.ns-cal-wrap .ns-month-r {
    font-size: clamp(.68rem,1.8vw,.88rem);
    color: var(--ns-gray);
    letter-spacing: .04em;
    display: block;
}
.ns-cal-wrap .ns-pill {
    display: inline-block;
    margin-top: 5px;
    background: var(--ns-navy);
    color: #fff;
    font-size: clamp(.55rem,1.3vw,.68rem);
    letter-spacing: .1em;
    text-transform: uppercase;
    padding: 3px 11px;
    border-radius: 20px;
}
.ns-cal-wrap .ns-hdr-mid {
    flex: 1 1 180px;
    align-self: stretch;
    min-height: clamp(80px,12vw,115px);
    display: flex; align-items: center; justify-content: center;
}
.ns-cal-wrap .ns-hdr-mid span {
    font-family: 'Noto Sans Gurmukhi', sans-serif;
    font-size: clamp(1rem,3vw,1.6rem);
    font-weight: 700;
    color: var(--ns-navy);
    text-align: center;
    opacity: .75;
}
.ns-cal-wrap .ns-hdr-right {
    display: flex; flex-direction: column;
    gap: clamp(4px,1vw,8px);
    flex: 0 0 auto; align-self: center;
}
.ns-cal-wrap .ns-meta { display: flex; flex-direction: column; gap: 1px; }
.ns-cal-wrap .ns-meta-lbl {
    font-family: 'Noto Sans Gurmukhi', sans-serif;
    font-size: clamp(.6rem,1.5vw,.76rem);
    font-weight: 700; color: var(--ns-navy); display: block;
}
.ns-cal-wrap .ns-meta-val {
    font-size: clamp(.62rem,1.5vw,.78rem);
    color: var(--ns-gray); display: block;
}
.ns-cal-wrap .ns-ornament {
    font-size: clamp(1.6rem,5vw,3rem);
    color: var(--ns-gold); opacity: .5;
    user-select: none; line-height: 1;
    flex-shrink: 0; align-self: center;
}

/* ---------- table ---------- */
.ns-cal-wrap .ns-tbl-wrap {
    width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch;
}
.ns-cal-wrap table.ns-tbl {
    width: 100%; min-width: 290px;
    border-collapse: collapse; table-layout: fixed; margin: 0;
}
.ns-cal-wrap table.ns-tbl thead tr { background: var(--ns-hdr-bg); }
.ns-cal-wrap table.ns-tbl thead th {
    padding: clamp(4px,1.5vw,9px) 1px;
    text-align: center;
    border-right: .5px solid var(--ns-border);
    border-bottom: 1.5px solid var(--ns-border);
    vertical-align: middle;
}
.ns-cal-wrap table.ns-tbl thead th:last-child { border-right: none; }
.ns-cal-wrap .ns-thg {
    display: block;
    font-family: 'Noto Sans Gurmukhi', sans-serif;
    font-size: clamp(.6rem,1.8vw,.88rem);
    font-weight: 700; color: var(--ns-navy); line-height: 1.2;
}
.ns-cal-wrap .ns-the {
    display: block;
    font-size: clamp(.52rem,1.3vw,.67rem);
    color: var(--ns-gray); letter-spacing: .03em; margin-top: 1px;
}
.ns-cal-wrap table.ns-tbl tbody tr { border-bottom: .5px solid var(--ns-border); }
.ns-cal-wrap table.ns-tbl tbody tr:last-child { border-bottom: none; }
.ns-cal-wrap table.ns-tbl tbody td {
    border-right: .5px solid var(--ns-border);
    padding: clamp(3px,1.2vw,7px) 1px;
    text-align: center; vertical-align: top;
    height: clamp(50px,10vw,72px);
    transition: background .15s;
}
.ns-cal-wrap table.ns-tbl tbody td:last-child { border-right: none; }
.ns-cal-wrap table.ns-tbl tbody td:not(.ns-empty):hover {
    background: var(--ns-navy-light) !important; cursor: default;
}
.ns-cal-wrap table.ns-tbl tbody td.ns-sun  { background: var(--ns-sun-bg); }
.ns-cal-wrap table.ns-tbl tbody td.ns-sat  { background: var(--ns-sat-bg); }
.ns-cal-wrap table.ns-tbl tbody td.ns-empty{ background: var(--ns-empty-bg); }

/* ---------- cell content ---------- */
.ns-cal-wrap .ns-cell {
    display: flex; flex-direction: column;
    align-items: center; gap: 1px;
}
.ns-cal-wrap .ns-dg {
    font-family: 'Noto Sans Gurmukhi', sans-serif;
    font-size: clamp(1rem,3.8vw,1.65rem);
    font-weight: 700; color: var(--ns-navy); line-height: 1.05;
}
.ns-cal-wrap .ns-de {
    font-size: clamp(.58rem,1.5vw,.72rem);
    color: var(--ns-gray); line-height: 1.3;
    font-family: 'Crimson Pro', serif;
}
.ns-cal-wrap .ns-dot {
    width: clamp(3px,.8vw,5px); height: clamp(3px,.8vw,5px);
    border-radius: 50%; background: var(--ns-gold);
    margin-top: 1px; flex-shrink: 0;
}
.ns-cal-wrap .ns-tag {
    font-family: 'Noto Sans Gurmukhi', sans-serif;
    font-size: clamp(.48rem,1.1vw,.58rem);
    color: var(--ns-gold); font-weight: 700; line-height: 1.2;
}

/* ---------- footer ---------- */
.ns-cal-wrap .ns-foot {
    background: var(--ns-hdr-bg);
    border-top: .5px solid var(--ns-border);
    font-family: 'Crimson Pro', Georgia, serif;
    font-size: clamp(.6rem,1.4vw,.72rem);
    color: var(--ns-gray);
}
.ns-cal-wrap .ns-frow {
    display: flex; align-items: center;
    flex-wrap: wrap; gap: clamp(8px,2vw,14px);
    padding: clamp(6px,1.8vw,10px) clamp(10px,2.5vw,18px);
}
.ns-cal-wrap .ns-frow + .ns-frow { border-top: .5px solid var(--ns-border); }
.ns-cal-wrap .ns-leg-item { display: flex; align-items: center; gap: 5px; }
.ns-cal-wrap .ns-leg-box {
    width: 11px; height: 11px;
    border-radius: 3px; border: .5px solid var(--ns-border);
    flex-shrink: 0; display: inline-block;
}
.ns-cal-wrap .ns-fdates { display: flex; flex-wrap: wrap; gap: clamp(8px,2.5vw,20px); align-items: center; }
.ns-cal-wrap .ns-fdi   { display: flex; flex-direction: column; gap: 1px; }
.ns-cal-wrap .ns-fdil  {
    font-family: 'Noto Sans Gurmukhi', sans-serif;
    font-size: clamp(.6rem,1.5vw,.74rem); font-weight: 700;
    color: var(--ns-navy); display: block;
}
.ns-cal-wrap .ns-fdiv  { font-size: clamp(.6rem,1.4vw,.72rem); color: var(--ns-gray); display: block; }
.ns-cal-wrap .ns-fsites{ display: flex; align-items: center; flex-wrap: wrap; gap: clamp(6px,2vw,16px); }
.ns-cal-wrap .ns-fsites a {
    font-size: clamp(.58rem,1.4vw,.7rem); color: var(--ns-navy);
    text-decoration: none; font-weight: 600; letter-spacing: .03em; opacity: .8;
}
.ns-cal-wrap .ns-fsites a:hover { opacity: 1; text-decoration: underline; }
.ns-cal-wrap .ns-fsep  { color: var(--ns-border); font-size: .8rem; }
.ns-cal-wrap .ns-finfo { font-size: clamp(.56rem,1.3vw,.68rem); color:#aaa; font-style:italic; margin-left:auto; }
.ns-cal-wrap .ns-disc  {
    font-size: 10px; color: #ababab;
    padding: 6px clamp(10px,2.5vw,18px);
    border-top: .5px solid var(--ns-border);
    line-height: 1.5;
    font-family: 'Noto Sans Gurmukhi', sans-serif;
}

@media (max-width:360px) {
    .ns-cal-wrap .ns-the    { display:none; }
    .ns-cal-wrap .ns-ornament{ display:none; }
}
@media print {
    .ns-cal-wrap .ns-card { box-shadow:none; border:1px solid #ccc; }
}
