:root{--grid-committed-bg: #b6d7a8;--grid-committed-weekend-bg: #c8e6b8;--grid-possible-bg: #ffe599;--grid-possible-weekend-bg: #fff0b3;--grid-overlap-border: #e6a800;--grid-holiday-color: #cc0000;--grid-holiday-weekend-color: #cc777a;--grid-first-day-bg: #4a86c8;--grid-weekend-bg: #f5f5f5;--grid-committed-swatch: #b6d7a8;--grid-possible-swatch: #ffe599}[data-grid-contrast=high]{--grid-committed-bg: #d2e3ff;--grid-committed-weekend-bg: #c5d9f5;--grid-possible-bg: #fff8e1;--grid-possible-weekend-bg: #f5edcf;--grid-overlap-border: #222;--grid-holiday-color: #b5145a;--grid-holiday-weekend-color: #c27090;--grid-first-day-bg: #1a4fa3;--grid-committed-swatch: #d2e3ff;--grid-possible-swatch: #fff8e1}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Menlo,Consolas,Monaco,monospace;font-size:15px;padding:16px;background:#fff;color:#222}.welcome-banner{display:none;align-items:center;gap:10px;background:#fff3cd;border:1px solid #e0c36a;border-radius:4px;padding:8px 12px;margin-bottom:12px;font-size:.867em;color:#664d03}.welcome-banner.visible{display:flex}.welcome-dismiss{background:none;border:1px solid #c9a827;border-radius:3px;font-size:1.2em;line-height:1;cursor:pointer;color:#664d03;padding:2px 6px;flex-shrink:0}.welcome-dismiss:hover{background:#00000014}.help-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#0006;z-index:200;display:flex;align-items:center;justify-content:center}.help-overlay[hidden]{display:none}.help-modal{background:#fff;border-radius:6px;box-shadow:0 8px 32px #00000040;max-width:52em;max-height:80vh;width:90%;display:flex;flex-direction:column}.help-modal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid #ccc}.help-modal-header h2{margin:0;font-size:1em}.help-modal-body{padding:12px 16px;overflow-y:auto;font-size:.867em;line-height:1.5}.help-modal-body h2{font-size:1em;margin-top:16px;margin-bottom:8px}.help-modal-body dl{margin:0}.help-modal-body dt{font-weight:700;margin-top:8px}.help-modal-body dd{margin-left:0;margin-bottom:4px}.help-credits{margin-top:6px;font-size:.733em;color:#888}.help-credits a{color:#666}.controls-hint{margin:4px 0 0;font-size:.733em;color:#666}.upload-group{display:flex;align-items:center;gap:6px}.upload-group label{font-weight:700;font-size:.8em}.upload-group .color-dot{display:inline-block;width:12px;height:12px;border-radius:2px}.upload-group .color-dot.green{background:#b6d7a8}.upload-group .color-dot.yellow{background:#ffe599}.cal-name-input{font-family:inherit;font-size:.8em;padding:2px 4px;border:1px solid #ccc;border-radius:3px;width:10em}.add-cal-btn{margin-top:4px}.remove-cal-btn{padding:1px 6px;font-size:.933em;line-height:1;color:#888;background:none;border:1px solid #ccc;border-radius:3px;cursor:pointer}.remove-cal-btn:hover{color:#c00;border-color:#c00}.mode-select{font-family:inherit;font-size:.8em;padding:2px 4px;border:1px solid #ccc;border-radius:3px;background:#fff}.url-input{width:26em;font-family:inherit;font-size:.8em;padding:3px 6px;border:1px solid #ccc;border-radius:3px}.file-input{font-size:.8em}.action-btn{font-family:inherit;font-size:.8em;padding:3px 10px;cursor:pointer;border:1px solid #999;border-radius:3px;background:#f5f5f5}.action-btn:hover{background:#e0e0e0}.load-status{font-size:.733em;color:#888}.load-status.success{color:#2e7d32}.load-status.error{color:#c62828}.calendar-wrapper{display:inline-block;position:relative}.calendar-header,.calendar-legend,.settings-panel{width:0;min-width:100%}.calendar-header{display:flex;align-items:center;justify-content:space-between;background:#666;color:#fff;padding:4px 8px;margin-bottom:0;font-weight:700}.header-right{display:flex;align-items:center;gap:8px}.settings-btn{font-size:1.067em;padding:1px 6px;cursor:pointer;background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:3px;font-family:inherit}.settings-btn:hover{background:#ffffff26}.help-link{font-size:.933em;padding:1px 7px;cursor:pointer;background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:3px;font-family:inherit;font-weight:700;text-decoration:none}.help-link:hover{background:#ffffff26}.settings-panel{position:absolute;z-index:100;background:#fff;border:1px solid #ccc;border-top:none;box-shadow:0 4px 12px #00000026;padding:12px 16px;display:flex;flex-direction:column;gap:6px;max-width:50em}.settings-panel[hidden]{display:none}.settings-panel-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.settings-panel-title{font-weight:700;font-size:.867em}.settings-close{background:none;border:1px solid #ccc;border-radius:3px;font-size:1.067em;line-height:1;cursor:pointer;color:#666;padding:2px 6px}.settings-close:hover{background:#eee}.year-nav{display:flex;align-items:center;gap:6px}.year-nav button{font-size:.933em;padding:1px 7px;cursor:pointer;background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:3px;font-family:inherit}.year-nav button:hover{background:#ffffff26}.year-nav span{font-size:1em;font-weight:700;min-width:3.5em;text-align:center}.refresh-btn{font-size:1em;padding:1px 6px;cursor:pointer;background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:3px;font-family:inherit;margin-left:4px}.refresh-btn:hover{background:#ffffff26}.refresh-btn.spinning{animation:spin .6s ease}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.font-controls{display:flex;align-items:center;gap:4px}.font-controls button{font-size:.8em;padding:1px 6px;cursor:pointer;font-family:inherit;background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:3px}.font-controls button:hover{background:#ffffff26}.font-controls span{font-size:.733em;color:#ffffffb3;min-width:3.5em;text-align:center}.compact-calendar{border-collapse:collapse;white-space:nowrap}.compact-calendar th,.compact-calendar td{padding:1px 4px;text-align:center;vertical-align:middle;height:1.4em;line-height:1.4em}.compact-calendar thead th{background:#666;color:#fff;font-weight:700;font-size:.8em}.compact-calendar thead th.weekend-header{background:#888}.col-week{width:2em;text-align:right;color:#666}.col-month{width:5.5em;text-align:left;font-weight:700}.col-day{width:2em}.spacer{width:14px;border:none!important;text-align:right!important;vertical-align:top!important;padding:1px 0 1px 10px!important}.day{font-variant-numeric:tabular-nums}.day.first-day{background:var(--grid-first-day-bg);color:#fff;font-weight:700}.day.weekend{color:#999;background:var(--grid-weekend-bg)}.day.holiday{color:var(--grid-holiday-color);font-weight:700}.day.weekend-holiday{color:var(--grid-holiday-weekend-color);font-weight:700;background:var(--grid-weekend-bg)}.day.committed-event{background:var(--grid-committed-bg)}.day.possible-event{background:var(--grid-possible-bg)}.day.committed-event.possible-event{background:var(--grid-committed-bg);color:#222;border:3px solid var(--grid-overlap-border)}.day.first-day.committed-event{background:var(--grid-committed-bg);color:#fff}.day.first-day.possible-event{background:var(--grid-possible-bg);color:#222}.day.weekend.committed-event{background:var(--grid-committed-weekend-bg);color:#999}.day.weekend.possible-event{background:var(--grid-possible-weekend-bg);color:#999}.day.holiday.committed-event{background:var(--grid-committed-bg);color:var(--grid-holiday-color)}.day.holiday.possible-event{background:var(--grid-possible-bg);color:var(--grid-holiday-color)}.day.holiday.committed-event.possible-event{background:var(--grid-committed-bg);color:var(--grid-holiday-color);border:3px solid var(--grid-overlap-border)}.day.weekend-holiday.committed-event{background:var(--grid-committed-weekend-bg);color:var(--grid-holiday-weekend-color)}.day.weekend-holiday.possible-event{background:var(--grid-possible-weekend-bg);color:var(--grid-holiday-weekend-color)}.day.weekend.committed-event.possible-event{background:var(--grid-committed-weekend-bg);color:#999;border:3px solid var(--grid-overlap-border)}.day.weekend-holiday.committed-event.possible-event{background:var(--grid-committed-weekend-bg);color:var(--grid-holiday-weekend-color);border:3px solid var(--grid-overlap-border)}.col-event-name{text-align:left!important;width:16em}.col-event-date{text-align:center!important;width:4.5em}.event-name-col{text-align:left!important;font-size:.8em;padding-left:8px!important;vertical-align:top!important;width:16em;max-width:16em;overflow:hidden;text-overflow:ellipsis}.event-date-col{text-align:center!important;font-size:.8em;vertical-align:top!important;width:4.5em}.event-date-chip,.event-chip{white-space:nowrap}.event-dot{display:inline-block;width:7px;height:7px;margin-right:4px;vertical-align:middle}.event-dot.committed{border-radius:1px}.event-dot.possible{border-radius:50%}.event-more{cursor:pointer;-webkit-user-select:none;user-select:none;color:#666;font-size:1em;background:none;border:none;padding:0;font-family:inherit;line-height:inherit}.event-more:hover{color:#333}.event-name-col .event-overflow,.event-date-col .event-overflow{display:none;padding-top:1px}.event-overflow .event-chip{display:block}.event-chip.continuation-dim{color:#aaa}.calendar-legend{display:flex;gap:14px;padding:6px 8px;background:#f5f5f5;border-bottom:1px solid #ccc;font-size:.8em;flex-wrap:wrap}.legend-item{display:flex;align-items:center;gap:4px}.legend-dot{width:10px;height:10px;display:inline-block}.legend-dot.committed{border-radius:2px}.legend-dot.possible{border-radius:50%}.legend-separator{color:#ccc;margin:0 2px}.legend-grid-key{display:flex;gap:14px;flex-wrap:wrap;width:100%}.legend-swatch{display:inline-block;width:14px;height:14px;border-radius:2px;font-size:.75em;text-align:center;line-height:14px;font-weight:700}.holiday-swatch{background:#f0f0f0;color:var(--grid-holiday-color)}.holiday-swatch:after{content:"1"}.first-day-swatch{background:#dde3f0;color:#222}.first-day-swatch:after{content:"1"}.committed-swatch{background:var(--grid-committed-swatch)}.possible-swatch{background:var(--grid-possible-swatch)}.overlap-swatch{background:var(--grid-committed-swatch);border:2px solid var(--grid-overlap-border)}.holiday-reference{margin-top:8px}.holiday-toggle{background:none;border:none;cursor:pointer;font-family:inherit;font-size:.867em;font-weight:700;color:#444;padding:4px 0}.holiday-toggle:hover{color:#000}.holiday-reference ul{list-style:none;margin-top:4px}.holiday-reference li{font-size:.85em;padding:1px 0;color:var(--grid-holiday-color)}@media print{.no-print{display:none!important}body{padding:0;font-size:.733em}.compact-calendar th,.compact-calendar td{padding:0 2px}.compact-calendar{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
