.hol{--hol-ink:var(--ink,#0e1520);--hol-muted:var(--muted,#5a6472);--hol-surface:var(--surface,#fff);--hol-accent:var(--signal,#008bf9);--hol-line:color-mix(in srgb,var(--hol-ink) 14%,transparent);--hol-soft:color-mix(in srgb,var(--hol-surface) 92%,var(--hol-ink) 8%);--paper:#fbf7ee;--paper-ink:#1b2430;--paper-muted:#5d6672;--c-public:#d6353a;--c-professional:#2f6fd0;--c-memorial:#5e6b7a;--c-international:#0f8a7c;--c-cultural:#c4791a;--c-religious:#7b55c8;color:var(--hol-ink);max-width:1240px;margin:0 auto;padding:clamp(14px,3vw,34px) 20px 72px;line-height:1.55}
html[data-theme=dark] .hol{--c-public:#ff7a7d;--c-professional:#7eabff;--c-memorial:#a3afbd;--c-international:#3ccbb9;--c-cultural:#f0b24c;--c-religious:#b898ff}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .hol{--c-public:#ff7a7d;--c-professional:#7eabff;--c-memorial:#a3afbd;--c-international:#3ccbb9;--c-cultural:#f0b24c;--c-religious:#b898ff}}
.hol *,.hol *:before,.hol *:after{box-sizing:border-box}
.hol [hidden]{display:none!important}
.hol h1,.hol h2,.hol h3,.hol p{margin-top:0}
.hol p{max-width:72ch}
.hol h2{font-size:clamp(1.5rem,3vw,2.1rem);line-height:1.15;letter-spacing:-.03em;margin-bottom:10px}
.hol h3{font-size:1.08rem;line-height:1.3}
.hol button,.hol input,.hol select{font:inherit}
.hol a{color:var(--hol-accent);text-underline-offset:3px}
.hol :focus-visible{outline:3px solid var(--hol-accent);outline-offset:3px}
.hol [data-cat=public],.hol [data-chip=public]{--cc:var(--c-public)}
.hol [data-cat=professional],.hol [data-chip=professional]{--cc:var(--c-professional)}
.hol [data-cat=memorial],.hol [data-chip=memorial]{--cc:var(--c-memorial)}
.hol [data-cat=international],.hol [data-chip=international]{--cc:var(--c-international)}
.hol [data-cat=cultural],.hol [data-chip=cultural]{--cc:var(--c-cultural)}
.hol [data-cat=religious],.hol [data-chip=religious]{--cc:var(--c-religious)}

/* buttons and fields */
.hol-crumb{display:flex;flex-wrap:wrap;gap:6px 10px;font-size:.88rem;color:var(--hol-muted);margin:0 0 clamp(14px,2.4vw,26px)}
.hol-crumb a{text-decoration:none}
.hol button{min-height:44px;padding:9px 18px;border-radius:999px;border:1px solid var(--hol-line);background:var(--hol-surface);color:var(--hol-ink);font-weight:650;font-size:.95rem;cursor:pointer;transition:background .15s,border-color .15s,transform .15s}
.hol button:hover{border-color:var(--hol-accent);background:var(--hol-soft)}
.hol button:active{transform:translateY(1px)}
.hol button:disabled{opacity:.45;cursor:default}
.hol button.hol-primary{background:var(--hol-accent);border-color:var(--hol-accent);color:#fff}
.hol button.hol-primary:hover{background:color-mix(in srgb,var(--hol-accent) 86%,#000)}
.hol input,.hol select{min-height:46px;padding:9px 14px;border-radius:14px;border:1px solid var(--hol-line);background:var(--hol-surface);color:var(--hol-ink);width:100%;font-weight:500}
.hol label{display:flex;flex-direction:column;gap:6px;font-weight:650;font-size:.85rem;min-width:0}
.hol-actions{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0}
.hol-note{font-size:.85rem;color:var(--hol-muted)}
.hol-lead{font-size:clamp(1rem,1.5vw,1.15rem);color:var(--hol-muted)}
.hol-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:clamp(14px,2vw,22px)}
.hol-section-head h2,.hol-section-head p{margin:0}
.hol-explore,.hol-soon,.hol-months,#holResults,.hol-bottom,.hol-faq,.hol-detail,.hol-month-hero+section{margin-bottom:clamp(34px,5vw,60px)}

/* tear-off leaf */
.hol-leaf{display:inline-grid;grid-template-rows:auto 1fr auto;justify-items:center;width:62px;border-radius:11px;overflow:hidden;background:var(--paper);color:var(--paper-ink);text-decoration:none;flex:none;box-shadow:0 1px 0 #00000026,0 8px 16px -10px #000000b3;--cc:var(--c-international)}
.hol .hol-leaf i{font-style:normal;width:100%;text-align:center;background:var(--cc);color:#fff;font-size:.7rem;font-weight:700;padding:3px 0 2px}
html[data-theme=dark] .hol .hol-leaf i{color:#0f1722}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .hol .hol-leaf i{color:#0f1722}}
.hol-leaf b{font-size:1.75rem;line-height:1.1;font-weight:800;padding-top:3px;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.hol-leaf.is-red b{color:#d6353a}
.hol-leaf small{font-size:.68rem;color:var(--paper-muted);padding-bottom:5px}
.hol a.hol-leaf:hover{transform:translateY(-1px)}

/* hero */
.hol-hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(24px,5vw,72px);align-items:center;padding:0 0 clamp(26px,4vw,46px)}
.hol .hol-hero h1{font-size:clamp(2.3rem,5.6vw,4.4rem);line-height:1;letter-spacing:-.045em;margin:0 0 20px}
.hol-count{font-size:.9rem;color:var(--hol-muted)}
.hol-today{position:relative;justify-self:center;width:min(100%,340px);margin-bottom:22px}
.hol-today:before,.hol-today:after{content:'';position:absolute;left:12px;right:12px;height:100%;border-radius:20px;background:var(--paper);opacity:.5;z-index:0}
.hol-today:before{top:-8px;transform:rotate(-2.4deg)}
.hol-today:after{top:-4px;transform:rotate(1.6deg);opacity:.75}
.hol-sheet{position:relative;z-index:1;background:var(--paper);color:var(--paper-ink);border-radius:20px 20px 0 0;padding:0 0 24px;text-align:center;box-shadow:0 30px 50px -28px #000000b3;transform:rotate(.6deg)}
.hol-sheet:after{content:'';position:absolute;left:0;right:0;top:100%;height:12px;background:linear-gradient(135deg,var(--paper) 25%,transparent 25%) -6px 0,linear-gradient(225deg,var(--paper) 25%,transparent 25%) -6px 0;background-size:12px 12px;filter:drop-shadow(0 6px 5px #0000004d)}
.hol-sheet-top{position:relative;background:#d6353a;color:#fff;border-radius:20px 20px 0 0;padding:16px 16px 12px;font-weight:700;letter-spacing:.01em}
.hol-sheet-top:before,.hol-sheet-top:after{content:'';position:absolute;top:7px;width:11px;height:11px;border-radius:50%;background:var(--paper);box-shadow:inset 0 2px 3px #00000066}
.hol-sheet-top:before{left:28%}.hol-sheet-top:after{right:28%}
.hol-sheet-top span{display:block;margin-top:10px}
.hol-sheet-day{font-size:clamp(5.5rem,14vw,8rem);line-height:1;font-weight:800;letter-spacing:-.06em;padding-top:10px;font-variant-numeric:tabular-nums}
.hol-sheet-day.is-red{color:#d6353a}
.hol-sheet-wd{margin:0 0 12px!important;max-width:none!important;font-size:1.15rem;font-weight:650;color:var(--paper-muted)}
.hol-sheet-list{list-style:none;margin:0;padding:0 22px;display:grid;gap:6px}
.hol.hol .hol-sheet-list a,.hol.hol .hol-sheet-none a{color:var(--paper-ink);font-weight:700;text-decoration-color:#d6353a}
.hol-sheet-none{margin:0 auto!important;padding:0 22px;font-size:.95rem;color:var(--paper-muted)}

/* upcoming strip */
.hol-soon-list{list-style:none;margin:0;padding:6px 2px 14px;display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.hol-soon-list li{flex:0 0 min(300px,82%);scroll-snap-align:start}
.hol.hol .hol-soon-list a{display:flex;align-items:center;gap:14px;padding:12px 16px;border-radius:20px;border:1px solid var(--hol-line);background:var(--hol-surface);color:var(--hol-ink);text-decoration:none;height:100%;transition:border-color .15s}
.hol.hol .hol-soon-list a:hover{border-color:var(--hol-accent)}
.hol-soon-list strong{display:block;line-height:1.3}
.hol-soon-list small{display:block;color:var(--hol-muted);margin-top:2px}

/* months */
.hol-months h2{font-size:1.2rem}
.hol-months ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.hol.hol .hol-months a{display:inline-flex;align-items:center;min-height:42px;padding:6px 16px;border-radius:999px;border:1px solid var(--hol-line);background:var(--hol-surface);color:var(--hol-ink);text-decoration:none;font-weight:600;font-size:.92rem;transition:border-color .15s,background .15s}
.hol.hol .hol-months a:hover{border-color:var(--hol-accent)}
.hol.hol .hol-months a[aria-current]{background:var(--hol-accent);border-color:var(--hol-accent);color:#fff}
.hol-years-nav{margin:14px 0 0;font-size:.92rem;color:var(--hol-muted)}
.hol-years-nav a{margin-right:12px}

/* explorer */
.hol-year{flex-direction:row!important;align-items:center;gap:10px!important}
.hol-year select{width:auto;min-width:96px}
.hol-browser{display:grid;grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:clamp(16px,3vw,32px);align-items:start}
.hol-calendar{padding:20px;border-radius:26px;border:1px solid var(--hol-line);background:var(--hol-surface)}
.hol-month-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px}
.hol-month-head h3{margin:0;text-transform:capitalize;font-size:1.15rem}
.hol .hol-month-head button{width:44px;padding:0;font-size:1.3rem;line-height:1}
.hol-week,.hol-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center}
.hol-week span{font-size:.74rem;font-weight:650;color:var(--hol-muted);padding:4px 0}
.hol-days>span:not([role]){display:block}
.hol .hol-days button,.hol .hol-days a,.hol-days span[role=gridcell]{position:relative;display:grid;place-items:center;aspect-ratio:1;min-height:0;width:100%;padding:0;border-radius:12px;border:1px solid transparent;background:transparent;color:var(--hol-ink);font-weight:600;font-size:.92rem;text-decoration:none;font-variant-numeric:tabular-nums}
.hol .hol-days button:hover,.hol .hol-days a:hover{background:var(--hol-soft);border-color:var(--hol-line)}
.hol .hol-days .has-event:after{content:'';position:absolute;bottom:5px;left:50%;width:5px;height:5px;margin-left:-2.5px;border-radius:50%;background:var(--hol-accent)}
.hol .hol-days .is-red{color:var(--c-public)}
.hol .hol-days .is-red:after{background:var(--c-public)}
.hol .hol-days .is-today{border-color:var(--hol-ink)}
.hol .hol-days [aria-pressed=true]{background:var(--hol-ink);color:var(--hol-surface);border-color:var(--hol-ink)}
.hol .hol-days [aria-pressed=true]:after{background:var(--hol-surface)}
.hol-calendar-note{font-size:.8rem;color:var(--hol-muted);margin:12px 0 10px;display:flex;flex-direction:column;gap:4px}
.hol-calendar-note span{display:flex;align-items:center;gap:7px}
.hol-dot-demo{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--hol-accent)}
.hol-red-demo{font-style:normal;font-weight:700;color:var(--c-public);min-width:6px;text-align:center}
#holWholeMonth{width:100%}
#holWholeMonth[aria-pressed=true]{background:var(--hol-ink);color:var(--hol-surface);border-color:var(--hol-ink)}
.hol-filter-panel{display:grid;gap:14px;padding:clamp(16px,2.4vw,24px);border-radius:26px;border:1px solid var(--hol-line);background:var(--hol-soft)}
.hol-filter-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.hol-filter-panel .hol-actions{margin:0}
.hol-chips{display:flex;flex-wrap:wrap;gap:8px}
.hol .hol-chips button{min-height:40px;padding:6px 14px;font-size:.88rem;display:inline-flex;align-items:center;gap:8px}
.hol .hol-chips button[data-cat]:before{content:'';width:9px;height:9px;border-radius:50%;background:var(--cc)}
.hol .hol-chips button[aria-pressed=true]{background:var(--hol-ink);border-color:var(--hol-ink);color:var(--hol-surface)}

/* cards */
.hol-count,.hol-empty{color:var(--hol-muted)}
.hol-empty{padding:34px 20px;text-align:center;background:var(--hol-soft);border-radius:18px}
.hol-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.hol-card{display:flex;flex-direction:column;min-width:0;padding:18px;border-radius:22px;border:1px solid var(--hol-line);background:var(--hol-surface);transition:border-color .15s}
.hol-card:hover{border-color:color-mix(in srgb,var(--cc,var(--hol-accent)) 60%,var(--hol-line))}
.hol-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:12px}
.hol .hol-star{width:42px;height:42px;padding:0;border:0;background:transparent;font-size:1.45rem;line-height:1;color:var(--hol-muted);margin:-6px -8px 0 0}
.hol .hol-star:hover{background:var(--hol-soft);color:var(--hol-ink)}
.hol .hol-star[aria-pressed=true]{color:#f0a723}
.hol-meta{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--hol-muted);margin:0 0 6px}
.hol-dot{width:9px;height:9px;border-radius:50%;background:var(--cc,var(--hol-accent));flex:none}
.hol-card h3{margin:0 0 8px;font-size:1.12rem}
.hol.hol .hol-card h3 a{color:var(--hol-ink);text-decoration:none}
.hol.hol .hol-card h3 a:hover{color:var(--hol-accent);text-decoration:underline}
.hol-desc{color:var(--hol-muted);font-size:.93rem;margin:0 0 16px}
.hol-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;padding-top:10px;border-top:1px solid var(--hol-line);font-size:.88rem}
.hol.hol .hol-card-foot a{font-weight:650;text-decoration:none}
.hol .hol-card-foot button{min-height:36px;padding:4px 12px;font-size:.82rem}
.hol-more-wrap{text-align:center;margin:22px 0 0;max-width:none!important}
.hol-cell{display:flex;scroll-margin-top:90px}.hol-cell>.hol-card{width:100%}

/* month page */
.hol-month-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,360px);gap:clamp(22px,4vw,60px);align-items:center;margin-bottom:clamp(28px,4vw,48px)}
.hol .hol-month-hero h1{font-size:clamp(2.1rem,5vw,3.8rem);line-height:1.02;letter-spacing:-.04em;margin:0 0 18px}
.hol-pager{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}
.hol.hol .hol-pager a{display:inline-flex;align-items:center;min-height:44px;padding:8px 18px;border-radius:999px;border:1px solid var(--hol-line);background:var(--hol-surface);color:var(--hol-ink);text-decoration:none;font-weight:650}
.hol.hol .hol-pager a:hover{border-color:var(--hol-accent)}
.hol-month-grid{padding:20px;border-radius:26px;border:1px solid var(--hol-line);background:var(--hol-surface)}
.hol-month-grid .hol-week{margin-bottom:6px}

/* detail */
.hol-detail-head{display:flex;gap:clamp(16px,3vw,32px);align-items:flex-start;margin-bottom:clamp(22px,3vw,36px)}
.hol-detail-head .hol-leaf{width:clamp(84px,12vw,116px);border-radius:16px}
.hol-detail-head .hol-leaf b{font-size:clamp(2.5rem,6vw,3.8rem)}
.hol-detail-head .hol-leaf i{font-size:.82rem;padding:5px 0 3px}
.hol-detail-head .hol-leaf small{font-size:.8rem}
.hol .hol-detail h1{font-size:clamp(1.9rem,4.6vw,3.4rem);line-height:1.04;letter-spacing:-.04em;margin:0 0 14px}
.hol-when{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;font-size:1.1rem;font-weight:650;margin:0}
.hol-until{font-size:.85rem;padding:4px 12px;border-radius:999px;background:var(--hol-soft);border:1px solid var(--hol-line);color:var(--hol-muted);font-weight:600}
.hol-detail-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,320px);gap:clamp(20px,4vw,52px);align-items:start}
.hol-detail-main>p.hol-lead{font-size:1.2rem;color:var(--hol-ink)}
.hol-fact,.hol-greet{margin:22px 0;padding:18px 20px;border-radius:20px;border:1px solid var(--hol-line);background:var(--hol-soft);border-left:5px solid var(--cc,var(--hol-accent))}
.hol-fact h2,.hol-greet h2{font-size:1.1rem;margin-bottom:6px}
.hol-fact p,.hol-greet p{margin:0 0 6px}
.hol-greet button{margin-top:8px}
.hol-years h2{font-size:1.3rem}
.hol-tablewrap{overflow-x:auto;border:1px solid var(--hol-line);border-radius:18px;background:var(--hol-surface);max-width:520px}
.hol-table{width:100%;border-collapse:collapse}
.hol-table th,.hol-table td{padding:11px 18px;text-align:left;border-bottom:1px solid var(--hol-line);white-space:nowrap}
.hol-table thead th{font-size:.78rem;color:var(--hol-muted);background:var(--hol-soft)}
.hol-table tbody tr:last-child>*{border-bottom:0}
.hol-table tr.is-now th,.hol-table tr.is-now td{font-weight:750;background:color-mix(in srgb,var(--hol-accent) 10%,transparent)}
.hol-source{margin:20px 0 8px}
.hol-detail-side{display:grid;gap:20px}
.hol-detail-side section{padding:18px 20px;border-radius:20px;border:1px solid var(--hol-line);background:var(--hol-surface)}
.hol-detail-side h2{font-size:1.05rem}
.hol-list{list-style:none;margin:0 0 10px;padding:0;display:grid;gap:4px}
.hol.hol .hol-list a{display:block;padding:8px 10px;margin:0 -10px;border-radius:12px;color:var(--hol-ink);text-decoration:none}
.hol.hol .hol-list a:hover{background:var(--hol-soft)}
.hol-list strong{display:block;line-height:1.3}
.hol-list small{color:var(--hol-muted)}

/* quiz and faq */
.hol-bottom{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(20px,4vw,52px);align-items:start}
.hol-quiz{padding:clamp(20px,3vw,30px);border-radius:26px;border:1px solid var(--hol-line);background:var(--hol-surface)}
.hol-quiz h2{font-size:1.4rem}
.hol-quiz>p{color:var(--hol-muted)}
#holQuestion{font-size:1.1rem;font-weight:700}
.hol-answers{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}
.hol .hol-answers button{border-radius:14px}
.hol .hol-answers button.correct{background:#dff3e8;color:#14573c;border-color:#4f9a77;opacity:1}
.hol .hol-answers button.wrong{background:#fbe5e1;color:#85291d;border-color:#c77569;opacity:1}
#holQuizResult{min-height:3em;font-size:.92rem}
.hol-faq details{border-bottom:1px solid var(--hol-line)}
.hol-faq details:first-of-type{border-top:1px solid var(--hol-line)}
.hol-faq summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 2px;min-height:56px;font-weight:650;cursor:pointer;list-style:none}
.hol-faq summary::-webkit-details-marker{display:none}
.hol-faq summary:after{content:'+';flex:none;width:28px;height:28px;border-radius:50%;border:1px solid var(--hol-line);display:grid;place-items:center;font-weight:500;color:var(--hol-muted);transition:transform .2s}
.hol-faq details[open] summary:after{transform:rotate(45deg)}
.hol-faq details p{margin:0 0 16px;color:var(--hol-muted)}
.hol-status{min-height:1.5em;font-size:.92rem;margin:0 0 12px}
.hol-links{display:flex;flex-wrap:wrap;gap:10px 24px;border-top:1px solid var(--hol-line);padding-top:22px;font-size:.92rem}

@media(max-width:1020px){.hol-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hol-hero,.hol-browser,.hol-bottom,.hol-month-hero,.hol-detail-body{grid-template-columns:1fr}.hol-today{justify-self:start;margin-top:18px}.hol-month-grid{max-width:420px}}
@media(max-width:720px){.hol{padding:12px 16px 56px}.hol-grid{grid-template-columns:1fr}.hol-filter-row{grid-template-columns:1fr}.hol-detail-head{flex-direction:column}.hol-detail-head .hol-leaf{width:92px}.hol-calendar,.hol-month-grid{padding:14px}}
@media(prefers-reduced-motion:reduce){.hol *,.hol *:before,.hol *:after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
