:root{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:#292b30;background:#f7f6f3;font-synthesis:none;--red:#df393d;--green:#388665}*{box-sizing:border-box}body{margin:0}a{color:inherit;text-decoration:none}button,select{font:inherit}button,select,a{-webkit-tap-highlight-color:transparent}button,select{cursor:pointer}button:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #e4a024;outline-offset:3px}.site-header{max-width:1200px;margin:auto;padding:28px 32px;display:flex;justify-content:space-between;font-size:14px}.site-header>a:first-child{font-weight:700}.site-header span{font-weight:400;color:#91918d;margin-left:12px}.site-header>a:last-child{color:#777}main{max-width:1200px;margin:28px auto;padding:0 32px}.intro{display:flex;align-items:end;justify-content:space-between;margin-bottom:30px}.eyebrow{font-size:12px;letter-spacing:3px;color:#9b7467;margin:0 0 12px}h1{font-size:34px;letter-spacing:3px;margin:0;font-weight:650}.intro>p{color:#95928c;font-size:14px}.calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:stretch}.calendar,.detail{background:#fff;border:1px solid #ebe7e2;border-radius:20px;overflow:hidden;box-shadow:0 8px 32px #30282004}.toolbar{padding:20px 22px;background:var(--red);color:white;display:flex;justify-content:space-between;align-items:center;gap:8px}.month-controls{display:flex;align-items:center;gap:12px}.toolbar button{border:1px solid #ffffff50;background:transparent;color:white;border-radius:8px;height:38px;min-width:38px;font-size:26px}.toolbar button:hover{background:#ffffff20}.toolbar button:disabled{opacity:.3;cursor:default}.toolbar #today{font-size:14px;padding:0 14px}.selects{display:flex;gap:4px}.toolbar select{color:white;background:var(--red);border:0;font-size:21px;font-weight:600;padding:4px}.weekdays,.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekdays{padding:22px 16px 10px;text-align:center;color:#8b8b8b;font-size:14px}.weekdays span:first-child,.weekdays span:last-child{color:#c75b5d}.days{padding:0 14px 14px;gap:5px 3px}.day{position:relative;min-width:0;height:86px;display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid transparent;border-radius:13px;background:transparent;color:#2c2d30;padding:9px 1px;gap:4px}.day:hover{background:#faf3f0}.day .number{font-size:29px;font-weight:550;line-height:1.15;font-variant-numeric:tabular-nums}.day .label{font-size:12px;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#8a8c89}.day.weekend .number,.day.festival .label{color:#cf4549}.day.term .label{color:var(--green)}.day.outside{opacity:.3}.day.selected{border-color:var(--red);background:#fff6f4;opacity:1}.day.today .number:after{content:"";position:absolute;bottom:4px;left:calc(50% - 2px);width:4px;height:4px;border-radius:50%;background:var(--red)}.badge{position:absolute;top:5px;right:5px;font-size:10px;font-weight:500;border-radius:4px;padding:1px 3px}.badge.rest{color:var(--green);background:#e9f4ed}.badge.work{color:#b57144;background:#faf0e6}.legend{border-top:1px solid #f0ece8;display:flex;justify-content:center;gap:22px;padding:17px;color:#92908b;font-size:11px}.legend span{display:flex;align-items:center;gap:5px}.today-dot{width:5px;height:5px;background:var(--red);border-radius:50%}.rest-key{color:var(--green)}.work-key{color:#b57144}.term-key{color:var(--green)}.detail{padding:30px 26px;display:flex;flex-direction:column}.detail-date{font-size:13px;color:#85847f;margin:0}.detail-number{font-size:92px;line-height:1.2;letter-spacing:-5px;font-weight:600;color:var(--red);margin:16px 0 0}.detail h2{font-size:27px;letter-spacing:2px;margin:5px 0 18px;font-weight:550}.festivals{display:flex;flex-wrap:wrap;gap:7px;min-height:30px;margin-bottom:24px}.pill{font-size:12px;color:#be5557;background:#fff1ee;padding:6px 9px;border-radius:5px}.pill.green{color:var(--green);background:#edf5ef}.detail dl{border-top:1px solid #eeeae6;margin:0;padding:17px 0 0;font-size:13px}.detail dl>div{display:flex;justify-content:space-between;gap:8px;padding:9px 0}.detail dt{color:#92908b;flex-shrink:0}.detail dd{margin:0;text-align:right}.upcoming{margin-top:auto;padding-top:22px;font-size:12px;color:#88867e;line-height:1.9}.upcoming strong{color:var(--green);font-weight:500}.data-note{text-align:center;font-size:12px;color:#96928b;margin:23px 0 0;line-height:1.8}footer{text-align:center;font-size:11px;color:#aaa59c;line-height:2;margin:18px 0 28px}footer a:hover{text-decoration:underline}@media(min-width:1100px){.day{height:94px}}@media(max-width:850px){.calendar-layout{grid-template-columns:minmax(0,1fr) 260px;gap:15px}main{padding:0 20px}.toolbar{padding:17px 12px}.month-controls{gap:4px}.toolbar select{font-size:17px}.day .number{font-size:25px}.detail{padding:24px 20px}}@media(max-width:680px){.site-header{padding:20px}.site-header span{display:none}main{margin:18px auto;padding:0 12px}.intro{margin:0 8px 22px}h1{font-size:28px}.intro>p{font-size:12px}.eyebrow{font-size:10px;letter-spacing:2px}.calendar-layout{grid-template-columns:1fr;gap:14px}.calendar,.detail{border-radius:16px}.toolbar{padding:17px 15px}.toolbar select{font-size:20px}.month-controls{gap:8px}.weekdays{padding:18px 8px 9px}.days{padding:0 6px 10px;gap:4px 1px}.day{height:73px;border-radius:11px}.day .number{font-size:27px}.day .label{font-size:11px}.badge{top:3px;right:1px;font-size:9px}.detail{padding:23px}.detail-number{display:none}.detail h2{font-size:30px;margin:16px 0}.festivals{margin-bottom:15px}.detail dl{display:grid;grid-template-columns:1fr 1fr;column-gap:25px}.detail dl>div{font-size:12px}.upcoming{padding-top:14px}.legend{padding:14px;gap:19px}}@media(prefers-reduced-motion:no-preference){.day{transition:background .12s,border-color .12s}}

/* Daily almanac: allow long activity lists to wrap on small screens. */
.almanac { border-top: 1px solid #eeeae6; margin-top: 16px; padding-top: 16px; font-size: 13px; line-height: 1.9; }
.almanac-row { display: grid; grid-template-columns: 24px minmax(0, 1fr); gap: 10px; margin: 0 0 12px; }
.almanac-row > span:last-child { overflow-wrap: anywhere; }
.almanac-yi, .almanac-ji { text-align: center; border-radius: 5px; align-self: start; font-weight: 600; }
.almanac-yi { color: var(--green); background: #edf5ef; }
.almanac-ji { color: var(--red); background: #fff1ee; }
.almanac-summary { margin: 0; color: #85847f; }
