:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#f7f6f3;--surface:#fff;--fg:#1c1917;--muted:#6b6560;--border:#e4e1dc;--weekend-bg:#f3f1ed;--accent:#1c1917;--cn-off:#c0262d;--cn-off-bg:#fdecec;--cn-work:#3f3a36;--fr-holiday:#1f4fd1;--fr-holiday-bg:#e9effd;--term:#2f7d3a;--today:#c0262d;--on-today:#fff;--radius:10px;--font:system-ui, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--bg:#161412;--surface:#211e1b;--fg:#f2efeb;--muted:#a39d96;--border:#3a3531;--weekend-bg:#1b1916;--accent:#f2efeb;--cn-off:#ff7b7b;--cn-off-bg:#3a1d1d;--cn-work:#d9d4ce;--fr-holiday:#8fb0ff;--fr-holiday-bg:#1b2440;--term:#7fcf8b;--today:#ff7b7b;--on-today:#161412}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#161412;--surface:#211e1b;--fg:#f2efeb;--muted:#a39d96;--border:#3a3531;--weekend-bg:#1b1916;--accent:#f2efeb;--cn-off:#ff7b7b;--cn-off-bg:#3a1d1d;--cn-work:#d9d4ce;--fr-holiday:#8fb0ff;--fr-holiday-bg:#1b2440;--term:#7fcf8b;--today:#ff7b7b;--on-today:#161412}*,:before,:after{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);min-height:100dvh;color:var(--fg);font-family:var(--font);-webkit-text-size-adjust:100%;line-height:1.5}a{color:var(--fr-holiday)}button,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--fr-holiday);outline-offset:2px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--muted)}.app-header{max-width:76rem;margin:0 auto;padding:1rem 1rem 0}.app-header h1{color:var(--muted);letter-spacing:.01em;margin:0;font-size:1rem;font-weight:600}.layout{gap:1.25rem;max-width:76rem;margin:0 auto;padding:.5rem 1rem 1rem;display:grid}@media (width>=900px){.layout{grid-template-columns:minmax(0,1fr) 20rem;align-items:start}.sidebar{position:sticky;top:1rem}}.app-footer{max-width:76rem;color:var(--muted);margin:0 auto;padding:1rem 1rem 2rem;font-size:.8125rem}.app-footer p{margin:.25rem 0}.month-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.25rem 1rem;margin-bottom:.75rem;display:flex}.month-title{gap:.25rem;min-width:0;display:flex}.month-title select{appearance:none;cursor:pointer;field-sizing:content;background:0 0;border:0;border-radius:6px;padding:.125rem .25rem;font-size:1.625rem;font-weight:700;line-height:1.2}.month-title select:first-child{text-transform:capitalize}.month-title select:hover{background:var(--weekend-bg)}.month-nav{gap:.375rem;display:flex}.month-nav button{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:999px;height:2.25rem}.month-nav button:hover:not(:disabled){border-color:var(--muted)}.month-nav button:disabled{opacity:.4;cursor:default}.icon-button{width:2.25rem;font-size:1.25rem;line-height:1}.today-button{padding:0 .875rem;font-size:.875rem;font-weight:600}.lunar-years{color:var(--muted);flex-basis:100%;margin:0 .25rem;font-size:.875rem}.notice{border-radius:var(--radius);border:1px dashed var(--cn-off);background:var(--surface);flex-basis:100%;margin:.5rem 0 0;padding:.625rem .75rem;font-size:.8125rem}.month-grid{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);touch-action:pan-y;overflow:hidden}.week-row{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.week-row+.week-row{border-top:1px solid var(--border)}.weekday{text-align:center;color:var(--muted);text-transform:capitalize;padding:.5rem 0;font-size:.75rem;font-weight:600}.day-cell+.day-cell{border-left:1px solid var(--border)}.day{text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:stretch;gap:.125rem;width:100%;min-height:5.75rem;padding:.375rem .5rem;display:flex;position:relative}.day:hover,.day.is-weekend{background:var(--weekend-bg)}.day.cn-off{background:var(--cn-off-bg)}.day.is-outside{opacity:.38}.day.is-selected{box-shadow:inset 0 0 0 2px var(--accent);border-radius:4px}.day:focus-visible{outline-offset:-3px}.day-top{justify-content:space-between;align-items:center;gap:.25rem;display:flex}.day-num{font-variant-numeric:tabular-nums;border-radius:999px;place-items:center;min-width:1.75rem;height:1.75rem;margin-left:-.25rem;font-size:.9375rem;font-weight:600;display:inline-grid}.day.is-fr-holiday .day-num{color:var(--fr-holiday)}.day.is-today .day-num{background:var(--today);color:var(--on-today)}.badge{border-radius:4px;flex-shrink:0;place-items:center;min-width:1.25rem;height:1.25rem;padding:0 .25rem;font-size:.75rem;font-weight:700;line-height:1;display:inline-grid}.badge-off{background:var(--cn-off);color:var(--surface)}.badge-work{background:var(--cn-work);color:var(--surface)}.badge-fr{background:var(--fr-holiday);color:var(--surface);letter-spacing:.04em;font-size:.625rem}.statutory-dot{border:2px solid var(--cn-off);border-radius:999px;flex-shrink:0;width:.75rem;height:.75rem;display:inline-block}.day-label{white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;line-height:1.2;overflow:hidden}.label-festival{color:var(--cn-off);font-weight:600}.label-term{color:var(--term);font-weight:600}.label-month{font-weight:600}.label-day{color:var(--muted)}.fr-tag{color:var(--fr-holiday);white-space:nowrap;text-overflow:ellipsis;margin-top:auto;font-size:.6875rem;font-weight:600;line-height:1.25;overflow:hidden}.fr-short{display:none}@media (width<=640px){.layout{padding-inline:.5rem}.month-title select{font-size:1.25rem}.day{text-align:center;align-items:center;min-height:4rem;padding:.25rem}.day-top{flex-direction:column;gap:0}.day-num{min-width:1.5rem;height:1.5rem;margin-left:0;font-size:.875rem}.day .badge{min-width:.9375rem;height:.9375rem;padding:0;font-size:.625rem;position:absolute;top:.125rem;right:.125rem}.day .statutory-dot{width:.5rem;height:.5rem;position:absolute;top:.25rem;right:.25rem}.day-label{max-width:100%;font-size:.6875rem}.fr-name{display:none}.fr-short{background:var(--fr-holiday);color:var(--surface);letter-spacing:.04em;border-radius:3px;padding:0 .25rem;font-size:.5625rem;display:inline-block}}.legend ul{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.25rem;margin:.875rem 0 0;padding:0;font-size:.8125rem;list-style:none;display:flex}.legend li{align-items:center;gap:.375rem;display:flex}.day-detail{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.125rem}.day-detail p{margin:.25rem 0}.detail-date{margin:0;font-size:1.25rem;line-height:1.3}.detail-date:first-letter{text-transform:uppercase}.detail-week{color:var(--muted);font-size:.8125rem}.detail-block{border-top:1px solid var(--border);margin-top:1rem;padding-top:.875rem}.detail-block h3{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 .375rem;font-size:.75rem;font-weight:700}.detail-lunar{letter-spacing:.05em;font-size:1.5rem;font-weight:600}.detail-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.name-list{margin:.25rem 0;padding-left:1.125rem}.festival-zh{color:var(--cn-off);font-weight:700}.term-zh{color:var(--term);font-weight:700}.app-header{justify-content:space-between;align-items:center;gap:1rem;display:flex}.header-actions{gap:.5rem;display:flex}.header-button{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:.375rem;height:2.25rem;padding:0 .875rem;font-size:.875rem;font-weight:600;display:inline-flex}.header-button:hover{border-color:var(--muted)}.header-button.primary{background:var(--accent);border-color:var(--accent);color:var(--surface)}@media (width<=640px){.header-button{width:2.25rem;padding:0}.header-button span{display:none}}.sheet{border:1px solid var(--border);background:var(--surface);width:min(30rem,100vw - 2rem);max-height:calc(100dvh - 2rem);color:var(--fg);border-radius:14px;padding:0;box-shadow:0 20px 60px #00000040}.sheet::backdrop{background:#0006}.sheet-body{padding:1rem 1.25rem 1.25rem}.sheet-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.25rem;display:flex}.sheet-header h2{margin:0;font-size:1.125rem}@media (width<=640px){.sheet{border-radius:16px 16px 0 0;width:100%;max-width:100%;max-height:92dvh;margin:auto 0 0}}.text-button{color:var(--fr-holiday);cursor:pointer;background:0 0;border:0;padding:.25rem .5rem;font-weight:600}.sheet fieldset{border:0;min-width:0;margin:0;padding:.75rem 0 0}.sheet fieldset+fieldset{border-top:1px solid var(--border);margin-top:.75rem}.sheet legend{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:.25rem;padding:0;font-size:.75rem;font-weight:700}.option{cursor:pointer;align-items:flex-start;gap:.625rem;padding:.375rem 0;display:flex}.option input{width:1.05rem;height:1.05rem;accent-color:var(--accent);flex-shrink:0;margin:.2rem 0 0}.segmented{border:1px solid var(--border);border-radius:999px;gap:2px;padding:2px;display:inline-flex}.segmented label{position:relative}.segmented input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.segmented span{border-radius:999px;padding:.375rem .875rem;font-size:.875rem;display:block}.segmented input:checked+span{background:var(--accent);color:var(--surface);font-weight:600}.segmented input:focus-visible+span{outline:2px solid var(--fr-holiday);outline-offset:1px}.small{font-size:.8125rem}.month-grid.with-weeks .week-row{grid-template-columns:2.25rem repeat(7,minmax(0,1fr))}.week-num{border-right:1px solid var(--border);color:var(--muted);font-variant-numeric:tabular-nums;place-items:center;font-size:.6875rem;display:grid}.weekday-row .week-num{font-weight:600}@media (width<=640px){.month-grid.with-weeks .week-row{grid-template-columns:1.5rem repeat(7,minmax(0,1fr))}.week-num{font-size:.625rem}}:root{--ev-teal:#0f8b8d;--ev-orange:#d9730d;--ev-purple:#7c4dcc;--ev-pink:#d63384;--ev-gold:#b88a00;--ev-gray:#78716c}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ev-teal:#3cc4c6;--ev-orange:#f59e4b;--ev-purple:#a98bf0;--ev-pink:#f472b6;--ev-gold:#e3b341;--ev-gray:#a8a29e}}:root[data-theme=dark]{--ev-teal:#3cc4c6;--ev-orange:#f59e4b;--ev-purple:#a98bf0;--ev-pink:#f472b6;--ev-gold:#e3b341;--ev-gray:#a8a29e}.ev-teal{--ev:var(--ev-teal)}.ev-orange{--ev:var(--ev-orange)}.ev-purple{--ev:var(--ev-purple)}.ev-pink{--ev:var(--ev-pink)}.ev-gold{--ev:var(--ev-gold)}.ev-gray{--ev:var(--ev-gray)}.event-chips{flex-direction:column;gap:2px;min-width:0;display:flex}.event-chip{border-left:3px solid var(--ev);background:color-mix(in srgb, var(--ev) 18%, transparent);white-space:nowrap;text-overflow:ellipsis;border-radius:3px;padding:0 .25rem;font-size:.6875rem;line-height:1.35;display:block;overflow:hidden}.event-time{font-variant-numeric:tabular-nums;color:var(--muted);margin-right:.25rem}.event-more{color:var(--muted);font-size:.625rem}@media (width<=640px){.event-chips{flex-direction:row;justify-content:center;align-items:center;gap:3px}.event-chip{background:var(--ev);border:0;border-radius:999px;width:6px;height:6px;padding:0;font-size:0}.event-time{display:none}.event-more{font-size:.5625rem;line-height:1}}.block-head{justify-content:space-between;align-items:baseline;gap:.5rem;display:flex}.block-head .text-button{padding-right:0;font-size:.8125rem}.event-list{margin:.25rem 0 0;padding:0;list-style:none}.event-item{text-align:left;cursor:pointer;box-sizing:content-box;background:0 0;border:0;border-radius:8px;align-items:flex-start;gap:.625rem;width:100%;margin:0 -.5rem;padding:.5rem;display:flex}.event-item:hover{background:var(--weekend-bg)}.event-dot{background:var(--ev);border-radius:999px;flex-shrink:0;width:.625rem;height:.625rem;margin-top:.4rem}.event-text{flex-direction:column;min-width:0;display:flex}.event-notes{white-space:pre-wrap;overflow-wrap:anywhere;font-size:.8125rem}.storage-error{border-style:solid;max-width:76rem;margin:.75rem auto 0}.field{border:0;flex-direction:column;gap:.25rem;min-width:0;margin:.75rem 0 0;padding:0;display:flex}.field>span,.field>legend{color:var(--muted);font-size:.8125rem;font-weight:600}.field input,.field textarea{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--fg);font:inherit;border-radius:8px;padding:.5rem .625rem;font-size:max(1rem,16px)}.field textarea{resize:vertical}.field input[aria-invalid=true]{border-color:var(--cn-off)}.field-row{gap:.75rem;display:flex}.field-row .field{flex:1}.field-narrow{max-width:12rem}.field-error{color:var(--cn-off);margin:.25rem 0 0;font-size:.8125rem}.swatches{flex-wrap:wrap;gap:.5rem;display:flex}.swatch{cursor:pointer;position:relative}.swatch input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.swatch-dot{background:var(--ev);width:1.75rem;height:1.75rem;box-shadow:inset 0 0 0 2px var(--surface);border-radius:999px;display:block}.swatch input:checked+.swatch-dot{outline:2px solid var(--accent);outline-offset:1px}.swatch input:focus-visible+.swatch-dot{outline:2px solid var(--fr-holiday);outline-offset:2px}.form-actions{justify-content:flex-end;gap:.75rem;margin-top:1.25rem;display:flex}.primary-button,.danger-button{cursor:pointer;border-radius:999px;height:2.5rem;padding:0 1.25rem;font-weight:600}.primary-button{border:1px solid var(--accent);background:var(--accent);color:var(--surface)}.danger-button{border:1px solid var(--border);color:var(--cn-off);background:0 0;margin-right:auto}.button-row{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.button-row .danger-button{margin-right:0}.secondary-button{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:999px;height:2.25rem;padding:0 1rem;font-size:.875rem;font-weight:600}.secondary-button:hover{border-color:var(--muted)}.import-box{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);margin-top:.75rem;padding:.75rem}.import-box p{margin:0 0 .375rem}.success-text{color:var(--term);margin:.5rem 0 0;font-size:.8125rem}.install-hint{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);align-items:flex-start;gap:.75rem;max-width:76rem;margin:.75rem auto 0;padding:.625rem .75rem;font-size:.8125rem;display:flex}.install-hint p{flex:1;margin:0}@media (width<=640px){.install-hint,.storage-error{margin-inline:.5rem}}
