:root { --ink:#17343c; --forest:#1f625c; --paper:#fffdf8; --mist:#edf2ee; --line:#c9d4cf; --coral:#c4614a; }
* { box-sizing:border-box; } body { margin:0; color:var(--ink); background:#e7ece7; font-family:Georgia, 'Times New Roman', serif; }
.login-screen { position:fixed; z-index:10; inset:0; display:grid; place-items:center; padding:20px; background:linear-gradient(135deg,#d9e5dd,#f5f1e9); }.login-screen.hidden { display:none; }.login-card { display:grid; gap:12px; width:min(390px,100%); padding:34px; border:1px solid var(--line); border-radius:10px; background:var(--paper); box-shadow:0 20px 70px #17343c26; }.login-card .brand-mark { margin-bottom:4px; }.login-card h1 { margin:0; color:var(--forest); font-size:32px; font-weight:normal; }.login-card label { display:grid; gap:5px; color:#596c66; font:700 11px Arial,sans-serif; letter-spacing:.06em; text-transform:uppercase; }.login-error { min-height:16px; margin:0; color:#a33d2d; font:13px Arial,sans-serif; }
main { max-width:1400px; margin:0 auto; padding:22px; }.toolbar { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:12px; font-family:Arial,sans-serif; }.brand { display:flex; align-items:center; font:600 19px/1 Arial,sans-serif; letter-spacing:-.04em; white-space:nowrap; }.brand-mark { display:grid; place-items:center; width:30px; height:30px; margin-right:8px; border-radius:50%; color:#fff; background:var(--forest); font:italic 22px Georgia; }.controls { display:flex; align-items:end; justify-content:flex-end; gap:9px; flex-wrap:wrap; }.controls label,.feed-form label { display:grid; gap:4px; color:#5c6d6a; font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; } select,input { min-height:34px; padding:6px 8px; color:var(--ink); border:1px solid #b9c6c0; border-radius:5px; background:#fff; font:14px Arial,sans-serif; } input[type=color] { width:46px; padding:3px; }.button { min-height:34px; padding:0 12px; border:1px solid var(--forest); border-radius:5px; background:var(--forest); color:#fff; cursor:pointer; font:600 13px Arial,sans-serif; }.button.secondary { color:var(--forest); background:transparent; }.text-button { padding:3px; border:0; color:var(--forest); background:transparent; cursor:pointer; font:600 13px Arial,sans-serif; text-decoration:underline; }.status { min-height:18px; margin:0 0 8px; color:#63726d; font:13px Arial,sans-serif; }.status.error { color:#a33d2d; }.calendar { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:18px; }.month { min-width:0; overflow:hidden; border:1px solid var(--line); background:var(--paper); box-shadow:0 2px 8px #33483b12; }.month-heading { display:flex; justify-content:space-between; align-items:baseline; padding:14px 15px 10px; border-bottom:2px solid var(--forest); }.month-heading h1 { margin:0; color:var(--forest); font-size:25px; font-weight:normal; letter-spacing:-.04em; }.month-heading span { color:#73837d; font:700 11px Arial,sans-serif; letter-spacing:.12em; }.weekdays,.month-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }.weekdays div { padding:7px 2px; text-align:center; color:#677974; font:700 9px Arial,sans-serif; letter-spacing:.08em; }.day { position:relative; min-width:0; min-height:83px; padding:6px 5px; border-top:1px solid var(--line); border-right:1px solid var(--line); }.day:nth-child(7n) { border-right:0; }.day.empty { background:#fafbf8; }.date-number { display:block; margin-bottom:4px; color:#52645e; font:700 11px Arial,sans-serif; }.today .date-number { display:grid; place-items:center; width:19px; height:19px; margin-top:-2px; border-radius:50%; background:var(--coral); color:#fff; }.event { display:block; width:100%; margin:2px 0; padding:2px 4px; border:0; border-left:3px solid var(--event-color); background:color-mix(in srgb, var(--event-color) 12%, white); color:#203b3c; cursor:pointer; text-align:left; font:11px/1.2 Arial,sans-serif; overflow-wrap:anywhere; }.event-time { color:#566a68; font-weight:bold; }.more { margin:3px 0 0; padding:0; border:0; background:none; color:var(--forest); cursor:pointer; font:700 10px Arial,sans-serif; } dialog { width:min(620px,calc(100vw - 28px)); padding:24px; border:0; border-radius:9px; color:var(--ink); background:var(--paper); box-shadow:0 16px 48px #17343c55; } dialog::backdrop { background:#153d4766; }.dialog-heading { display:flex; justify-content:space-between; align-items:start; gap:16px; }.dialog-heading h2 { margin:0; color:var(--forest); font-size:28px; font-weight:normal; }.eyebrow { margin:0 0 3px; color:#74847e; font:700 10px Arial,sans-serif; letter-spacing:.13em; }.icon-button { border:0; background:none; color:var(--ink); cursor:pointer; font-size:27px; line-height:1; }.muted { color:#65746f; font:14px/1.45 Arial,sans-serif; }.feed-form { display:grid; grid-template-columns:1fr 2fr auto auto; gap:10px; align-items:end; margin:20px 0; }.feed-list { border-top:1px solid var(--line); }.feed-row,.hidden-row { display:flex; align-items:center; gap:10px; padding:12px 2px; border-bottom:1px solid var(--line); font:14px Arial,sans-serif; }.swatch { width:12px; height:12px; border-radius:50%; flex:0 0 auto; }.feed-url { min-width:0; flex:1; color:#71807b; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; }.row-action { margin-left:auto; border:0; background:none; color:#a1493a; cursor:pointer; font:600 12px Arial,sans-serif; }.hidden-section { margin-top:24px; }.hidden-section h3 { margin:0; font-size:19px; font-weight:normal; }.day-event { padding:12px 0; border-bottom:1px solid var(--line); font:14px/1.35 Arial,sans-serif; }.day-event strong { display:block; }.day-event small { color:#687974; }
@media (max-width:950px) { .calendar { grid-template-columns:repeat(2,minmax(0,1fr)); }.toolbar { align-items:flex-start; flex-direction:column; }.controls { justify-content:flex-start; }.feed-form { grid-template-columns:1fr 1fr; } }
@media (max-width:600px) { main { padding:12px; }.calendar { grid-template-columns:1fr; }.day { min-height:76px; }.month-heading h1 { font-size:23px; } }
@page { size:letter landscape; margin:.28in; } @media print { body { background:#fff; } main { max-width:none; padding:0; }.no-print { display:none !important; }.calendar { display:block; }.month { height:7.9in; margin:0; box-shadow:none; break-after:page; break-inside:avoid; }.month:last-child { break-after:auto; }.month-heading { padding:12px 14px 9px; }.month-heading h1 { font-size:25pt; }.weekdays div { padding:7px 2px; font-size:9pt; }.month-grid { grid-auto-rows:1fr; height:calc(100% - 67px); }.day { min-height:0; padding:5px; }.date-number { font-size:10pt; }.event { margin:2px 0; padding:2px 4px; font-size:9pt; }.more { display:none; } }
.calendar-legend { display:flex; align-items:center; gap:14px; min-height:25px; margin:0 0 8px; color:#4d625c; font:600 12px Arial,sans-serif; }.legend-item { display:inline-flex; align-items:center; gap:6px; }.legend-item i { width:10px; height:10px; border-radius:50%; }.rule-form { display:grid; grid-template-columns:1.1fr 1fr 1.2fr 1.2fr auto; gap:9px; align-items:end; margin:14px 0; }.rule-form label { display:grid; gap:4px; color:#5c6d6a; font:700 10px Arial,sans-serif; letter-spacing:.06em; text-transform:uppercase; }.rules-section { margin-top:24px; }.rules-section h3 { margin:0; font-size:19px; font-weight:normal; } @media (max-width:950px) { .rule-form { grid-template-columns:1fr 1fr; } } @media print { .calendar-legend { margin:0 0 .08in; font-size:9pt; } }
.event-time { display:block; color:#566a68; font-weight:bold; }.event-title { display:block; margin-top:1px; }
.month-feed-key { display:flex; justify-content:center; align-items:center; gap:10px; min-width:0; padding:0 8px; color:#536862; font:600 10px Arial,sans-serif; }.month-feed-key > span { display:inline-flex; align-items:center; gap:4px; min-width:0; white-space:nowrap; }.month-feed-key i { width:8px; height:8px; border-radius:50%; flex:0 0 auto; }
@media (max-width:600px) { .month-feed-key { display:none; } }
@media print { * { -webkit-print-color-adjust:exact; print-color-adjust:exact; } .month-feed-key { font-size:8pt; gap:12px; } .month-feed-key i { width:7px; height:7px; } }
