:root {
  --scroll-paper: #f7f5ef;
  --scroll-ink: #20211f;
  --scroll-muted: #73756f;
  --scroll-line: #d9d8d1;
  --scroll-accent: #315b4c;
  --scroll-range: #e0ebe5;
  --scroll-row-height: 68px;
}

.scroll-calendar-page { min-width: 0; color: var(--scroll-ink); background: #fcfcfa; }
.scroll-skip { position: fixed; top: 8px; left: 8px; z-index: 100; padding: 8px 12px; background: #fff; transform: translateY(-160%); }
.scroll-skip:focus { transform: none; }
.scroll-site-header { background: rgba(252, 252, 250, .96); }
.scroll-mobile-menu { display: none; position: relative; }
.scroll-mobile-menu summary { min-height: 44px; padding: 10px 0; list-style: none; cursor: pointer; }
.scroll-mobile-menu nav { position: absolute; top: 46px; right: 0; z-index: 20; display: grid; min-width: 180px; padding: 12px; border: 1px solid var(--scroll-line); background: #fff; box-shadow: 0 12px 30px rgba(32, 33, 31, .08); }
.scroll-mobile-menu a { padding: 8px; }
.scroll-breadcrumb { padding-top: 26px; }
.scroll-breadcrumb ol { display: flex; margin: 0; padding: 0; gap: 8px; color: var(--scroll-muted); font-size: .76rem; list-style: none; }
.scroll-breadcrumb li + li::before { margin-right: 8px; content: "/"; }
.scroll-hero { padding-top: 46px; padding-bottom: 42px; }
.scroll-hero .eyebrow { margin-bottom: 12px; letter-spacing: .12em; }
.scroll-hero h1 { margin-bottom: 12px; font-size: clamp(2rem, 5vw, 3.65rem); font-weight: 560; line-height: 1.08; letter-spacing: -.045em; }
.scroll-hero > p:last-child { color: var(--scroll-muted); font-size: clamp(1.05rem, 2.2vw, 1.32rem); }
.scroll-workspace { padding-bottom: 78px; }

.scroll-controls { position: sticky; top: 8px; z-index: 10; display: flex; align-items: end; gap: 10px; padding: 10px; border: 1px solid rgba(217, 216, 209, .9); border-radius: 8px; background: rgba(252, 252, 250, .95); box-shadow: 0 8px 26px rgba(32, 33, 31, .05); backdrop-filter: blur(12px); }
.scroll-controls label { display: grid; min-width: 118px; gap: 2px; color: var(--scroll-muted); font-size: .7rem; font-weight: 650; }
.scroll-controls select, .scroll-controls button, .scroll-result button, .scroll-share button { min-height: 40px; padding: 8px 12px; border: 1px solid var(--scroll-line); border-radius: 6px; background: #fff; color: var(--scroll-ink); font: inherit; font-size: .82rem; font-weight: 620; }
.scroll-controls select:focus-visible, .scroll-controls button:focus-visible, .scroll-result button:focus-visible, .scroll-share button:focus-visible { outline: 3px solid rgba(49, 91, 76, .2); outline-offset: 1px; border-color: var(--scroll-accent); }
.scroll-navigation { display: flex; gap: 5px; }
.scroll-navigation #scroll-today { min-width: 74px; border-color: var(--scroll-accent); color: var(--scroll-accent); }
.scroll-clear { margin-left: auto; }
.scroll-clear:disabled { opacity: .45; cursor: default; }

.scroll-calendar-frame { margin-top: 14px; overflow: hidden; border: 1px solid var(--scroll-line); border-radius: 10px; background: #fff; }
.scroll-weekdays { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); padding: 8px 14px; border-bottom: 1px solid var(--scroll-line); color: var(--scroll-muted); font-size: .7rem; font-weight: 650; text-align: center; }
.scroll-weekdays span:nth-last-child(-n+2) { color: #8a5a53; }
.scroll-calendar { height: min(calc(var(--visible-rows, 6) * var(--scroll-row-height)), 68vh); min-height: calc(3 * var(--scroll-row-height)); overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
.scroll-weeks { min-height: 100%; }
.scroll-week-row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); min-height: var(--scroll-row-height); padding: 0 14px; border-bottom: 1px solid #e7e6e0; }
.scroll-week-row:last-child { border-bottom: 0; }
.scroll-day { position: relative; display: flex; min-width: 0; min-height: var(--scroll-row-height); padding: 9px 7px; align-items: flex-start; justify-content: flex-end; border: 0; border-right: 1px solid #efeee9; border-radius: 0; background: transparent; color: var(--scroll-ink); font: inherit; font-size: .9rem; font-variant-numeric: tabular-nums; }
.scroll-day:last-child { border-right: 0; }
.scroll-day:nth-last-child(-n+2) { color: #84574f; }
.scroll-day:hover { background: #f5f4ef; }
.scroll-day:focus-visible { z-index: 2; outline: 2px solid var(--scroll-accent); outline-offset: -2px; }
.scroll-day.is-today .scroll-day-number { display: inline-grid; width: 28px; height: 28px; margin: -4px -4px 0 0; place-items: center; border: 1px solid var(--scroll-accent); border-radius: 50%; font-weight: 700; }
.scroll-day.is-in-range { background: var(--scroll-range); }
.scroll-day.is-range-start { box-shadow: inset 3px 0 0 var(--scroll-accent), inset 0 1px 0 var(--scroll-accent), inset 0 -1px 0 var(--scroll-accent); }
.scroll-day.is-range-end { box-shadow: inset -3px 0 0 var(--scroll-accent), inset 0 1px 0 var(--scroll-accent), inset 0 -1px 0 var(--scroll-accent); }
.scroll-day.is-range-start.is-range-end { box-shadow: inset 0 0 0 2px var(--scroll-accent); }
.scroll-month-mark { position: absolute; top: 9px; left: 7px; color: var(--scroll-muted); font-size: .62rem; font-weight: 700; letter-spacing: .02em; }
.scroll-day[data-day="1"] .scroll-month-mark { color: var(--scroll-accent); }

.scroll-result { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, 340px); margin-top: 18px; padding: 24px; gap: 28px; border-top: 1px solid var(--scroll-line); border-bottom: 1px solid var(--scroll-line); }
.scroll-result-kicker { margin-bottom: 4px; color: var(--scroll-muted); font-size: .64rem; font-weight: 700; letter-spacing: .12em; }
.scroll-result h2 { margin-bottom: 5px; font-size: .78rem; }
#scroll-range-text { display: block; font-size: clamp(1.05rem, 2.4vw, 1.35rem); font-weight: 640; }
#scroll-duration-text { margin-top: 5px; color: var(--scroll-muted); font-size: .84rem; }
.scroll-result-actions { display: grid; grid-template-columns: 1fr auto; gap: 6px; align-content: start; }
.scroll-result-actions label { grid-column: 1 / -1; color: var(--scroll-muted); font-size: .72rem; font-weight: 650; }
.scroll-result-actions input { min-width: 0; min-height: 40px; padding: 8px 10px; border: 1px solid var(--scroll-line); border-radius: 6px; font: inherit; }
.scroll-result-actions input:focus-visible { border-color: var(--scroll-accent); outline: 3px solid rgba(49, 91, 76, .16); }
.scroll-result-actions button { border-color: var(--scroll-accent); background: var(--scroll-accent); color: #fff; }
.scroll-status { min-height: 1.7em; margin-top: 8px; color: var(--scroll-muted); font-size: .78rem; }
.scroll-share, .scroll-related { padding: 30px 0; border-bottom: 1px solid var(--scroll-line); }
.scroll-share h2, .scroll-related h2 { margin-bottom: 7px; font-size: .84rem; }
.scroll-share p { margin-bottom: 12px; color: var(--scroll-muted); font-size: .84rem; }
.scroll-related > div { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.scroll-related a { display: grid; min-height: 92px; padding: 14px; gap: 3px; border: 1px solid var(--scroll-line); border-radius: 7px; background: #fff; }
.scroll-related strong { font-size: .84rem; }
.scroll-related span { color: var(--scroll-muted); font-size: .74rem; line-height: 1.55; }
.scroll-back { padding-top: 24px; font-size: .84rem; }
.scroll-back a { text-decoration: underline; text-underline-offset: 4px; }
.scroll-intent { padding: 72px 0; border-top: 1px solid var(--scroll-line); background: var(--scroll-paper); }
.scroll-intent .container { max-width: 760px; }
.scroll-intent h2 { margin-bottom: 14px; font-size: clamp(1.35rem, 3vw, 1.8rem); font-weight: 580; letter-spacing: -.025em; }
.scroll-intent p { color: #555750; }
.scroll-intent ul { display: grid; margin: 24px 0 0; padding: 0; gap: 8px; list-style: none; }
.scroll-intent li { padding-top: 8px; border-top: 1px solid #d8d4c8; font-size: .9rem; }
.scroll-intent-link { margin-top: 24px; font-size: .84rem; text-decoration: underline; text-underline-offset: 4px; }
.scroll-reform-use { margin-top: 42px; padding-top: 30px; border-top: 1px solid #d8d4c8; }
.scroll-reform-use h2 { margin-bottom: 12px; font-size: 1rem; letter-spacing: 0; }
.scroll-reform-use p + p { margin-top: 8px; }
.scroll-reform-use .scroll-intent-link { margin-top: 18px; }
.scroll-footer { padding: 38px 0; }
.scroll-footer .creator-credit { margin-top: 6px; font-size: .8rem; }
.scroll-footer .dake-network { margin-top: 18px; }

.scroll-print-root { display: none; }

@media (max-width: 720px) {
  :root { --scroll-row-height: 58px; }
  .scroll-calendar-page .container { width: min(100% - 28px, var(--container)); }
  .scroll-site-header .site-nav { display: none; }
  .scroll-mobile-menu { display: block; }
  .scroll-hero { padding-top: 34px; padding-bottom: 32px; }
  .scroll-controls { top: 4px; display: grid; grid-template-columns: 1fr auto; align-items: end; }
  .scroll-controls label { min-width: 0; }
  .scroll-navigation { grid-row: 2; grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1.2fr 1fr; }
  .scroll-clear { margin-left: 0; }
  .scroll-weekdays, .scroll-week-row { padding-right: 4px; padding-left: 4px; }
  .scroll-day { padding: 7px 4px; font-size: .79rem; }
  .scroll-month-mark { top: 7px; left: 4px; font-size: .54rem; }
  .scroll-result { grid-template-columns: 1fr; padding: 20px 4px; gap: 18px; }
  .scroll-related > div { grid-template-columns: 1fr; }
}

@media (max-width: 370px) {
  :root { --scroll-row-height: 54px; }
  .scroll-calendar-page .container { width: min(100% - 20px, var(--container)); }
  .scroll-controls select, .scroll-controls button { padding-right: 8px; padding-left: 8px; font-size: .76rem; }
  .scroll-day.is-today .scroll-day-number { width: 25px; height: 25px; }
  .scroll-result-actions { grid-template-columns: 1fr; }
  .scroll-result-actions button { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
}

@page { size: A4 portrait; margin: 14mm 14mm 13mm 14mm; }

@media print {
  html, body { width: auto; min-width: 0; margin: 0; background-color: transparent !important; background-image: none !important; color: #151515; font-family: "Noto Sans JP", "Yu Gothic", "Meiryo", sans-serif; }
  .screen-shell { display: none !important; }
  .scroll-print-root { display: block !important; }
  .scroll-print-root, .scroll-print-root * { background-color: transparent !important; background-image: none !important; box-shadow: none !important; }
  .scroll-print-page { display: flex; min-height: 268mm; flex-direction: column; break-after: page; page-break-after: always; }
  .scroll-print-page:last-child { break-after: auto; page-break-after: auto; }
  .scroll-print-header { display: grid; grid-template-columns: 1fr auto; min-height: 17mm; padding-bottom: 3.6mm; align-items: end; border-bottom: .28mm solid #303030; }
  .scroll-print-header h1 { max-width: 142mm; margin: 0 0 1.4mm; font-size: 13.5pt; font-weight: 620; line-height: 1.3; letter-spacing: -.01em; overflow-wrap: anywhere; }
  .scroll-print-header p { margin: 0; color: #333; font-size: 8.2pt; font-variant-numeric: tabular-nums; }
  .scroll-print-page-number { color: #606060; font-size: 7pt !important; font-variant-numeric: tabular-nums; }
  .scroll-print-weekdays, .scroll-print-week { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
  .scroll-print-weekdays { margin-top: 4.2mm; border-bottom: .18mm solid #666; color: #333; font-size: 7.2pt; font-weight: 620; letter-spacing: .08em; text-align: center; }
  .scroll-print-weekdays span { padding: 1.35mm 0 1.25mm; }
  .scroll-print-weekdays span:nth-last-child(-n+2) { color: #454545; font-weight: 700; }
  .scroll-print-week { min-height: 28mm; flex: 1 1 0; break-inside: avoid; page-break-inside: avoid; border-bottom: .14mm solid #a6a6a6; }
  .scroll-print-day { position: relative; padding: 2mm 1.8mm; border-right: .12mm solid #c4c4c4; color: #252525; font-size: 8.2pt; font-weight: 520; font-variant-numeric: tabular-nums; }
  .scroll-print-day:last-child { border-right: 0; }
  .scroll-print-day:nth-last-child(-n+2) { color: #444; font-weight: 620; }
  .scroll-print-day.is-in-range::after { content: ""; position: absolute; z-index: 0; top: 8.4mm; right: 0; left: 0; border-top: .15mm solid #747474; }
  .scroll-print-day.is-range-start { border-left: .35mm solid #202020; }
  .scroll-print-day.is-range-start::after { left: 1.8mm; }
  .scroll-print-day.is-range-end { border-right: .35mm solid #202020; }
  .scroll-print-day.is-range-end::after { right: 1.8mm; }
  .scroll-print-month { position: absolute; right: 1.8mm; padding-bottom: .35mm; border-bottom: .14mm solid #858585; color: #555; font-size: 6.2pt; font-weight: 600; letter-spacing: .04em; }
  .scroll-print-footer { display: flex; margin-top: 4mm; justify-content: space-between; border-top: .12mm solid #aaa; padding-top: 1.8mm; color: #666; font-size: 6.5pt; letter-spacing: .01em; }
}
