/* Pink and lavender, scoped to the calendar. Existing timetable styles stay intact. */
.calendar-page {
  --cal-rose:#aa597e; --cal-plum:#795b8f; --cal-soft:#f4e7f1;
  --cal-paper:#fff9fc; --cal-ink:var(--text); --cal-muted:var(--muted);
  --cal-line:var(--line); --cal-fill:#efd4e6;
  --cal-action-bg:#efd4e6; --cal-action-ink:#754c69; --cal-action-border:#e7c5dc;
  color:var(--cal-ink);
}
.calendar-page button {font-family:inherit;color:var(--cal-plum);border:1px solid var(--cal-line);background:var(--cal-paper);box-shadow:none;font-size:14px;min-height:42px;border-radius:14px;}
.calendar-page h2,.calendar-page h3 {font-family:inherit;color:var(--cal-ink);letter-spacing:.02em;}
.calendar-page .cal-status {font-size:13px;line-height:1.7;color:var(--cal-muted);margin:6px 0;overflow-wrap:anywhere;}
.calendar-page .cal-status:empty {display:none;}
.calendar-page .cal-status[data-error=true] {color:#ac4166;background:#fff0f4;border-radius:12px;padding:12px;}
.calendar-page .cal-tabs {display:flex;gap:10px;margin:4px 0 20px;}
.calendar-page .cal-tabs button {border:0;border-radius:99px;padding:12px 23px;color:var(--cal-muted);background:#faf2f8;font-size:15px;}
.calendar-page .cal-tabs button[aria-pressed=true] {background:var(--cal-fill);color:var(--cal-rose);font-weight:600;}
.calendar-page .cal-month-tools {display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px;}
.calendar-page .cal-month-tools button {background:transparent;border:0;font-size:12px;min-height:36px;padding:4px 6px;}
.calendar-page .cal-month-pick {display:flex;align-items:center;gap:8px;font-size:12px;color:var(--cal-muted);}
.calendar-page .cal-month-pick input {font:inherit;font-size:12px;background:transparent;border:0;color:var(--cal-muted);padding:4px;width:134px;min-width:0;}
.calendar-page .cal-month-sheet {padding:2px 0 22px;}
.calendar-page .cal-monthbar {display:flex;align-items:center;justify-content:space-between;gap:10px;margin:10px 0 25px;}
.calendar-page .cal-monthbar h2 {font-size:25px;font-weight:650;margin:0;letter-spacing:.01em;}
.calendar-page .cal-monthbar button {background:var(--cal-soft);border:0;border-radius:50%;font-size:27px;width:42px;height:42px;min-height:42px;padding:0;line-height:1;}
.calendar-page .cal-week,.calendar-page .cal-grid {display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;}
.calendar-page .cal-week {font-size:12px;text-align:center;color:var(--cal-muted);margin:0 0 14px;}
.calendar-page .cal-date {position:relative;min-width:0;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:#fffafea8;border:1px solid #fff7fd;border-radius:14px;font-variant-numeric:tabular-nums;}
.calendar-page .cal-date strong {font-family:inherit;font-size:15px;font-weight:600;line-height:1;color:var(--cal-ink);}
.calendar-page .cal-record-dot {display:block;width:4px;height:4px;border-radius:50%;background:var(--cal-rose);opacity:.55;}
.calendar-page .cal-date.is-today strong {color:var(--cal-rose);}
.calendar-page .cal-date.is-today:after {content:"";position:absolute;inset:2px;border-radius:12px;border:1.5px solid #e3b7d3;pointer-events:none;}
.calendar-page .cal-month-sheet .cal-grid {grid-auto-rows:48px;align-items:stretch;}
.calendar-page .cal-month-sheet .cal-date {height:100%;min-height:0;display:grid;grid-template-rows:15px 28px;align-content:center;justify-items:center;gap:2px;padding:0;overflow:visible;}
.calendar-page .cal-date-art {display:grid;place-items:center;width:28px;height:28px;position:relative;z-index:1;}
.calendar-page .cal-mood-art.cal-date-mood {width:28px;height:28px;margin:0;transform:rotate(-4deg) translateY(3px);filter:drop-shadow(0 0 1px #fffdfd) drop-shadow(0 0 1px #fffdfd) drop-shadow(0 2px 2px #b98ab452);}
.calendar-page .cal-month-sheet .cal-date:nth-child(odd) .cal-mood-art.cal-date-mood {transform:rotate(3deg) translateY(3px);}
.calendar-page .cal-grid .cal-date:active {transform:none;}
.calendar-page .cal-day-mood {font-family:Arial,sans-serif;font-size:9px;letter-spacing:-.7px;white-space:nowrap;line-height:1.3;color:var(--cal-plum);min-height:12px;}
.calendar-page .cal-legend {display:flex;justify-content:center;align-items:center;gap:13px;flex-wrap:wrap;font-size:11px;color:var(--cal-muted);line-height:1.8;margin:20px 0 0;}
.calendar-page .cal-legend i {display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--cal-rose);margin-right:5px;}
.calendar-page .cal-legend i.estimate {background:none;border:1px dashed var(--cal-rose);}
.calendar-page .cal-legend i.course {width:5px;height:5px;}
.calendar-page .cal-sheet {padding:20px;margin:18px 0;}
.calendar-page .cal-sheet h3 {font-size:18px;font-weight:600;margin:0;}
.calendar-page .cal-subtitle {font-size:12px;color:var(--cal-muted);line-height:1.85;}
.calendar-page .cal-centered {text-align:center;}
.calendar-page .cal-note {font-size:14px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;margin:12px 0;}
.calendar-page .cal-item {padding:19px 0;border-bottom:1px solid var(--cal-line);}
.calendar-page .cal-item:last-child {border:0;padding-bottom:0;}
.calendar-page .cal-item-head {display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;}
.calendar-page .cal-item-head b {font-size:14px;font-weight:600;}
.calendar-page .cal-small-actions,.calendar-page .cal-actions {display:flex;gap:8px;align-items:center;flex-wrap:wrap;}
.calendar-page .cal-small-actions button {font-size:12px;min-height:36px;padding:5px 10px;}
.calendar-page .cal-day-cards {margin:16px 0 0;}
.calendar-page .cal-day-card {display:flex;align-items:center;gap:13px;padding:18px;margin:0;}
.calendar-page .cal-day-card .cal-card-copy {min-width:0;flex:1;}
.calendar-page .cal-day-card .cal-note {margin:7px 0;font-size:14px;}
.calendar-page .cal-card-date {font-size:16px;font-weight:650;}
.calendar-page .cal-card-face {font-size:13px;font-weight:400;margin-left:10px;color:var(--cal-plum);white-space:nowrap;}
.calendar-page .cal-day-card button {background:none;border:0;font-size:21px;padding:0;width:36px;flex-shrink:0;}
.calendar-page .cal-day-card .cal-card-reminder {font-size:12px;color:var(--cal-plum);line-height:1.7;margin-top:6px;overflow-wrap:anywhere;}
.calendar-page .cal-weather-art {display:block;width:72px;height:72px;background-image:url('/panel-assets/calendar-weather-v2.png');background-size:400% 200%;background-repeat:no-repeat;flex-shrink:0;}
.calendar-page .cal-mood-art {display:block;width:55px;height:55px;background-image:url('/panel-assets/calendar-moods-v1.png');background-size:500% 200%;background-repeat:no-repeat;flex-shrink:0;}
.calendar-page .cal-mood-art.cal-card-mood {width:52px;height:52px;}
.calendar-page .cal-card-weather {font-size:12px;font-weight:400;color:var(--cal-muted);margin-left:12px;}
.calendar-page .cal-day-card .cal-weather-art {width:45px;height:45px;}
.calendar-page .cal-nearby .cal-item-head button {border:0;background:var(--cal-soft);font-size:20px;min-height:34px;width:34px;padding:0;border-radius:50%;}
.calendar-page .cal-fold {padding:16px;}
.calendar-page .cal-fold summary {display:flex;align-items:center;justify-content:space-between;gap:12px;list-style:none;font-family:var(--serif);font-size:18px;font-weight:400;color:var(--text);cursor:pointer;padding:0;line-height:1.7;}
.calendar-page .cal-fold summary::-webkit-details-marker {display:none;}
.calendar-page .cal-fold summary::marker {content:"";}
.calendar-page .cal-fold summary:after {content:"展开";font-family:"Noto Sans SC",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:11px;color:var(--muted);flex-shrink:0;}
.calendar-page .cal-fold[open] summary:after {content:"收起";}
.calendar-page .cal-fold[open] summary {margin-bottom:14px;}
.calendar-page .cal-fold-heading {display:flex;align-items:center;gap:9px;min-width:0;}
.calendar-page .cal-fold-heading>.icon {width:20px;height:20px;flex:none;color:#b49aaf;}
.calendar-page .cal-fold-copy {display:grid;gap:4px;min-width:0;}
.calendar-page .cal-upcoming-label {font-family:"Noto Sans SC",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:11px;line-height:1.7;overflow-wrap:anywhere;}
.calendar-page .cal-nested-days {display:grid;gap:10px;}
.calendar-page .cal-nested-days .cal-day-card {padding:13px 15px;background:#fdf7fb;border:1px solid #f2e4f1;border-radius:20px;box-shadow:none;}
.calendar-page .cal-nested-days .cal-day-card .cal-card-date {font-size:14px;}
.calendar-page .cal-nested-days .cal-mood-art.cal-card-mood {width:42px;height:42px;}
.calendar-page .cal-nested-days .cal-day-card button {font-size:18px;width:30px;}
.calendar-page .cal-nested-days .cal-day-card .cal-note {font-size:13px;margin:4px 0;}
.calendar-page .cal-nested-days .cal-day-card .cal-card-reminder {font-size:11px;margin-top:4px;}
.calendar-page .cal-cycle-card {padding:30px 23px;margin-top:0;overflow:visible;}
.calendar-page .cal-cycle-title {display:flex;align-items:center;justify-content:center;gap:20px;font-size:20px;margin:6px 0 29px;}
.calendar-page .cal-cycle-title:before,.calendar-page .cal-cycle-title:after {content:"";height:1px;width:54px;background:var(--cal-line);}
.calendar-page .cal-cycle-eyebrow {font-size:11px;letter-spacing:6px;color:#ba8aa6;display:block;text-align:center;}
.calendar-page .cal-period-state {text-align:center;}
.calendar-page .cal-period-state .cal-period-headline {display:block;font-size:24px;color:var(--cal-ink);font-weight:550;margin:28px 0 15px;}
.calendar-page .cal-period-number {display:flex;align-items:baseline;justify-content:center;gap:10px;font-family:var(--serif);color:var(--cal-rose);margin:10px 0 18px;font-size:20px;}
.calendar-page .cal-period-number strong {font-size:82px;line-height:1.1;font-weight:500;}
.calendar-page .cal-period-state .cal-period-date {font-size:14px;line-height:1.8;color:var(--cal-muted);margin:12px 0 20px;}
.calendar-page .cal-estimate-pill {display:inline-block;border:1px solid #ddb6cd;background:#f8e6f0;border-radius:99px;padding:9px 15px;font-size:12px;color:var(--cal-rose);line-height:1.6;margin:6px 0;}
.calendar-page .cal-primary-cta {display:block;background:var(--cal-action-bg);color:var(--cal-action-ink);border-color:var(--cal-action-border);border-radius:99px;font-size:19px;min-height:59px;width:218px;max-width:100%;margin:27px auto 12px;box-shadow:0 6px 18px #c898b51a;}
.calendar-page .cal-text-button {border:0;background:transparent;min-height:36px;font-size:12px;color:var(--cal-muted);}
.calendar-page .cal-cycle-reference {display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px dashed #d8b9cd;padding-top:20px;margin-top:22px;text-align:left;color:var(--cal-muted);font-size:12px;}
.calendar-page .cal-cycle-reference strong {font-family:var(--serif);font-size:22px;color:var(--cal-rose);}
.calendar-page .cal-cycle-calendar .cal-monthbar {margin:23px 0;}
.calendar-page .cal-round-grid {row-gap:14px;}
.calendar-page .cal-round-grid .cal-date {height:auto;min-height:0;aspect-ratio:1;padding:0;border:0;border-radius:50%;background:transparent;}
.calendar-page .cal-round-grid .cal-date strong {font-family:var(--serif);font-size:19px;font-weight:400;color:var(--cal-muted);}
.calendar-page .cal-round-grid .cal-date.is-period {background:var(--cal-rose);}
.calendar-page .cal-round-grid .cal-date.is-period strong {color:#fff;}
.calendar-page .cal-round-grid .cal-date.is-estimate {border:1.5px dashed #be8aa9;background:#f8edf4;}
.calendar-page .cal-round-grid .cal-date.is-today:after {inset:2px;border-radius:50%;border-color:#d8a8c6;}
.calendar-page .cal-round-grid .cal-date.is-period.is-today:after {border-color:#ffffffc9;}
.calendar-page .cal-drawer {position:fixed;inset:auto 0 0;margin:0 auto;width:min(500px,100%);max-width:100%;max-height:91dvh;padding:0;border:1px solid var(--cal-line);border-bottom:0;border-radius:30px 30px 0 0;background:#fcf7fd;color:var(--cal-ink);box-shadow:0 -10px 70px #6f457c26;overflow-y:auto;overscroll-behavior:contain;}
.calendar-page .cal-drawer::backdrop {background:#47334c55;backdrop-filter:blur(3px);}
.calendar-page .cal-drawer-inner {padding:12px 22px max(30px,env(safe-area-inset-bottom));}
.calendar-page .cal-drawer-handle {width:42px;height:4px;background:#d5bfd8;border-radius:99px;margin:0 auto 25px;}
.calendar-page .cal-drawer h2 {font-size:20px;margin:0;line-height:1.5;font-weight:650;}
.calendar-page .cal-drawer h3 {font-size:18px;margin:0 0 15px;font-weight:600;}
.calendar-page .cal-drawer .cal-item-head>button {border:0;background:none;font-size:25px;padding:0;min-height:36px;width:36px;}
.calendar-page .cal-form {display:grid;gap:22px;margin:22px 0 4px;}
.calendar-page .cal-form label {display:grid;gap:9px;font-size:14px;line-height:1.6;color:var(--cal-plum);}
.calendar-page .cal-form input,.calendar-page .cal-form select,.calendar-page .cal-form textarea {font:inherit;font-size:16px;line-height:1.6;color:var(--cal-ink);background:#fffafde8;border:1px solid #d7bdd8;border-radius:16px;width:100%;min-width:0;padding:12px;}
.calendar-page .cal-form textarea {min-height:111px;resize:vertical;padding:17px;border-radius:22px;}
.calendar-page .cal-form input[type=hidden] {display:none;}
.calendar-page .cal-form .cal-row {display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.calendar-page .cal-form .cal-check {display:flex;align-items:center;gap:10px;}
.calendar-page .cal-check input {width:19px;height:19px;min-height:19px;flex:none;accent-color:var(--cal-rose);}
.calendar-page .cal-form .primary {background:var(--cal-action-bg);color:var(--cal-action-ink);border-color:var(--cal-action-border);font-size:16px;min-height:52px;border-radius:18px;padding:12px 20px;}
.calendar-page .cal-selection {margin-bottom:5px;}
.calendar-page .cal-weather-choices {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 7px;}
.calendar-page .cal-weather-choices button {display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 0 12px;font-size:13px;min-height:115px;border:1.5px solid transparent;background:transparent;border-radius:20px;}
.calendar-page .cal-mood-choices {display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:15px 3px;}
.calendar-page .cal-mood-choices button {display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:12px 0;border:1.5px solid transparent;background:transparent;border-radius:17px;font-size:13px;min-height:99px;min-width:0;}
.calendar-page .cal-mood-face {font:12px Arial,sans-serif;letter-spacing:-.7px;white-space:nowrap;}
.calendar-page .cal-weather-choices button[aria-pressed=true],.calendar-page .cal-mood-choices button[aria-pressed=true] {background:#ecd7ec;border-color:#bc8bb4;color:var(--cal-plum);}
.calendar-page .cal-reminder-section {border-top:1px solid var(--cal-line);padding-top:22px;}
.calendar-page .cal-reminder-section .cal-item-head {align-items:baseline;margin-bottom:10px;}
.calendar-page .cal-reminder-add {display:grid;grid-template-columns:minmax(0,1fr) 65px;gap:10px;}
.calendar-page .cal-reminder-add button {background:var(--cal-action-bg);color:var(--cal-action-ink);border-color:var(--cal-action-border);font-size:14px;padding:8px;}
.calendar-page .cal-reminder-item {display:flex;align-items:center;justify-content:space-between;gap:10px;background:#f0e6f2;border-radius:13px;padding:11px 12px;margin:8px 0 12px;font-size:14px;line-height:1.7;overflow-wrap:anywhere;}
.calendar-page .cal-reminder-item button {border:0;background:none;font-size:20px;padding:0;min-height:30px;width:30px;flex-shrink:0;}
.calendar-page .cal-save-actions {justify-content:space-between;margin-top:8px;}
.calendar-page .cal-save-actions .primary {margin-left:auto;}
.calendar-page button:focus-visible,.calendar-page input:focus-visible,.calendar-page textarea:focus-visible,.calendar-page select:focus-visible {outline:2px solid var(--cal-plum);outline-offset:3px;}
.calendar-page button:active {transform:translateY(1px);}
.calendar-page [hidden] {display:none!important;}
html.night .calendar-page {--cal-rose:#d89abd;--cal-plum:#c4a9d9;--cal-soft:#352738;--cal-paper:#281f2d;--cal-ink:#ede0ee;--cal-muted:#b09bb7;--cal-line:#493349;--cal-fill:#4c324b;--cal-shadow:0 12px 36px #00000018;--cal-action-bg:#51354b;--cal-action-ink:#f1d9e9;--cal-action-border:#74516b;}
html.night .calendar-page .cal-date {background:#2e2333;border-color:#352939;}
html.night .calendar-page .cal-date.is-today:after {border-color:#8f5f85;}
html.night .calendar-page .cal-round-grid .cal-date.is-today:after {border-color:#8f5f85;}
html.night .calendar-page .cal-mood-art.cal-date-mood {filter:drop-shadow(0 0 1px #2e2333) drop-shadow(0 0 1px #2e2333) drop-shadow(0 2px 2px #00000073);}
html.night .calendar-page .cal-estimate-pill {background:#4b3142;border-color:#7c516c;}
html.night .calendar-page .cal-round-grid .cal-date {background:transparent;border:0;}
html.night .calendar-page .cal-round-grid .cal-date.is-period {background:#aa638c;}
html.night .calendar-page .cal-round-grid .cal-date.is-estimate {border:1.5px dashed #b983a7;background:#392737;}
html.night .calendar-page .cal-drawer {background:#261e2e;}
html.night .calendar-page .cal-nested-days .cal-day-card {background:#312436;border-color:#463350;}
html.night .calendar-page .cal-form input,html.night .calendar-page .cal-form select,html.night .calendar-page .cal-form textarea {background:#302538;border-color:#614363;}
html.night .calendar-page .cal-weather-choices button[aria-pressed=true],html.night .calendar-page .cal-mood-choices button[aria-pressed=true],html.night .calendar-page .cal-reminder-item {background:#4a324c;border-color:#936a91;}
html.night .calendar-page .cal-status[data-error=true] {background:#442934;color:#efa8be;}
@media(max-width:360px) {.calendar-page .cal-drawer-inner{padding-left:15px;padding-right:15px;}.calendar-page .cal-weather-art{width:63px;height:63px;}.calendar-page .cal-mood-face{font-size:10px;}.calendar-page .cal-date{border-radius:13px;}.calendar-page .cal-day-mood{font-size:8px;}.calendar-page .cal-monthbar h2{font-size:23px;}.calendar-page .cal-month-sheet .cal-grid{grid-auto-rows:42px;}.calendar-page .cal-month-sheet .cal-date{grid-template-rows:13px 24px;}.calendar-page .cal-date-art{width:24px;height:24px;}.calendar-page .cal-mood-art.cal-date-mood{width:24px;height:24px;}}
@media(prefers-reduced-motion:reduce) {.calendar-page button:active{transform:none;}}
