.task-calendar{--tc-line:var(--color-gray-200,#e5e5e5);--tc-muted:var(--color-gray-500,#737373);font-size:13px;color:inherit;min-width:0}.tc-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 18px}.tc-toolbar h2{font-size:16px;font-weight:600;margin:0}.tc-navigation{display:flex;gap:5px}.tc-navigation a,.tc-month-label{border:1px solid var(--tc-line);border-radius:6px;padding:5px 10px}.tc-month-label{color:var(--tc-muted)}.tc-layout{display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:18px}.tc-month{align-self:start;border:1px solid var(--tc-line);border-radius:10px;overflow:hidden;min-width:0}.tc-weekdays,.tc-days,.tc-bars{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.tc-weekdays{color:var(--tc-muted);font-size:11px;text-align:center;padding:9px 0}.tc-week{position:relative;min-height:120px;height:calc(45px + var(--lanes)*30px);border-top:1px solid var(--tc-line)}.tc-days{position:absolute;inset:0}.tc-day{border-right:1px solid var(--tc-line);min-width:0;padding:5px}.tc-day:last-child{border:0}.tc-outside{color:var(--tc-muted);background:color-mix(in srgb,currentColor 2%,transparent)}.tc-date{display:inline-flex;justify-content:center;align-items:center;width:25px;height:25px;font-size:12px}.tc-today{background:#dc2626;color:white;border-radius:50%}.tc-bars{position:relative;top:35px;gap:4px 0;pointer-events:none;grid-auto-rows:26px}.tc-card{position:relative;pointer-events:auto;min-width:0;margin:0 3px;border-radius:4px;border-left:3px solid var(--task-color,#737373);background:color-mix(in srgb,var(--task-color,#737373) 12%,white);color:var(--text-primary,#171717)}.dark .tc-card{background:color-mix(in srgb,var(--task-color,#737373) 24%,#171717);color:#eee}.tc-card-open{display:flex;align-items:center;gap:4px;width:100%;height:100%;padding:3px 6px;text-align:left;cursor:pointer;min-width:0}.tc-card-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1}.tc-card-status{flex-shrink:0}.tc-card-status svg{width:12px;height:12px}.tc-card small{font-size:10px;color:var(--tc-muted)}.tc-completed{opacity:.6}.tc-completed .tc-card-title{text-decoration:line-through}.tc-resize{position:absolute;top:0;bottom:0;width:6px;z-index:2;cursor:ew-resize}.tc-resize-start{left:-2px}.tc-resize-end{right:0}.tc-extra{display:none}.tc-expanded .tc-extra{display:block}.tc-more{position:absolute;bottom:1px;right:5px;font-size:10px;color:var(--tc-muted);background:white;z-index:3;padding:0 4px;border-radius:3px}.tc-unscheduled{min-width:0;min-height:0;display:flex;flex-direction:column;align-self:start;max-height:var(--tc-month-height,640px)}.tc-unscheduled h3{font-size:13px;display:flex;justify-content:space-between;font-weight:600;margin:0 0 8px}.tc-unscheduled p{font-size:11px;color:var(--tc-muted);margin-bottom:12px}.tc-unscheduled .tc-card{margin:0;min-height:56px}.tc-unscheduled .tc-card-open{flex-wrap:wrap}.tc-unscheduled .tc-card-title{flex-basis:75%}.tc-unscheduled small{width:100%;padding-left:16px}.tc-drop{background:color-mix(in srgb,var(--accent-fill) 20%,transparent)}.tc-ghost{position:fixed;z-index:10000;background:var(--accent-fill);color:var(--accent-fg);border-radius:6px;padding:8px 12px;max-width:280px;pointer-events:none;box-shadow:0 4px 15px #0003;font-size:12px}.tc-drag-source{opacity:.4}.tc-feedback{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:100;background:#202020;color:white;border-radius:8px;padding:12px 16px;box-shadow:0 4px 18px #0003;max-width:90vw}.tc-feedback button{margin-left:16px;text-decoration:underline}.tc-card:focus-within{outline:2px solid var(--accent-fill);outline-offset:1px}@media(max-width:1100px){.tc-layout{grid-template-columns:1fr}}@media(max-width:600px){.tc-toolbar{flex-wrap:wrap}.tc-toolbar h2{font-size:14px}.tc-month-label{display:none}.tc-card-open{padding:3px 2px;gap:1px;font-size:10px}.tc-card-status,.tc-bars small{display:none}.tc-day{padding:2px}.tc-week{min-height:110px}.tc-resize{display:none}}

.dark .tc-dialog,.dark .tc-more{background:#171717;color:#eee}

.tc-card{padding-left:20px}.tc-status-button{position:absolute;left:3px;top:4px;z-index:2;cursor:pointer;border-radius:3px}.tc-status-button:hover{background:#0001}.tc-status-button svg{width:13px;height:13px}.tc-unscheduled small{padding-left:0}@media(max-width:600px){.tc-card{padding-left:15px}.tc-status-button{left:1px}.tc-status-button svg{width:11px;height:11px}}

.tc-unplanned-search{grid-column:1/-1;display:flex;align-items:center;gap:6px;margin-bottom:10px;border:1px solid var(--tc-line);border-radius:6px;padding:6px 8px;background:transparent;color:var(--tc-muted)}
.tc-unplanned-search:focus-within{outline:2px solid var(--accent-fill);outline-offset:1px}
.tc-unplanned-search>svg{width:15px;height:15px;flex-shrink:0}
.tc-unplanned-search input{width:100%;min-width:0;border:0;padding:0;background:transparent;color:inherit;font:inherit;outline:none;box-shadow:none}
.tc-unplanned-search input:focus{outline:none;box-shadow:none}
.tc-unplanned-search input::-webkit-search-cancel-button{display:none}
.tc-unplanned-search button{flex-shrink:0;line-height:1;font-size:18px;color:var(--tc-muted)}
.tc-unscheduled [hidden]{display:none!important}

/* Calendar task editor: content must never set the dialog's minimum width. */
.tc-dialog {
  width: min(560px, calc(100vw - 24px)); max-width: calc(100vw - 24px);
  max-height: calc(100dvh - 32px); padding: 0; margin: auto;
  border: 1px solid var(--tc-line); border-radius: 16px;
  background: white; color: inherit; box-shadow: 0 24px 80px #0002; overflow: auto;
}
.tc-dialog::backdrop { background: #0005; }
.tc-editor, .tc-editor fieldset, .tc-editor-dates > *, .tc-editor-field > div { min-width: 0; }
.tc-editor header, .tc-editor footer {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 16px 24px; background: white;
}
.tc-editor header { position: sticky; top: 0; z-index: 1; border-bottom: 1px solid var(--tc-line); }
.tc-editor h2 { margin: 0; font-size: 14px; font-weight: 600; }
.tc-editor header button {
  display: grid; place-items: center; width: 28px; height: 28px;
  border-radius: 6px; color: var(--tc-muted); font-size: 22px; line-height: 1;
}
.tc-editor header button:hover { background: var(--color-gray-100, #f5f5f5); }
.tc-editor fieldset { display: grid; gap: 16px; padding: 20px 24px; border: 0; margin: 0; }
.tc-editor label, .tc-field-label { display: block; margin: 0; font-size: 12px; line-height: 18px; color: var(--tc-muted); }
.tc-field-label { margin-bottom: 6px; }
.tc-editor input:not([type=checkbox]), .tc-editor select, .tc-editor .task-status-field {
  display: block; box-sizing: border-box; width: 100%; min-width: 0; max-width: 100%; height: 40px;
  margin: 6px 0 0; padding: 8px 10px; border: 1px solid var(--tc-line); border-radius: 7px;
  background: transparent; color: var(--color-gray-900, #171717); font-size: 13px; line-height: 20px;
}
.tc-editor .task-status-field { display: flex; }
.tc-editor-field .task-status-field, .tc-editor-field select { margin-top: 0; }
.tc-editor input:not([type=checkbox]):focus-visible { outline: 2px solid var(--accent-fill); outline-offset: -1px; box-shadow: none; }
.tc-editor-dates { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.tc-editor-properties { padding-top: 4px; }
.tc-scheduling-note { display: grid; gap: 6px; }
.tc-editor .tc-keep { display: flex; gap: 8px; align-items: flex-start; color: inherit; }
.tc-keep input { width: 14px; height: 14px; margin-top: 2px; flex-shrink: 0; accent-color: var(--accent-fill); }
.tc-duration { margin: 0 0 0 22px; color: var(--tc-muted); font-size: 11px; line-height: 16px; }
.tc-editor-warning, .tc-editor-error:not(:empty) { margin: 0; padding: 0 24px 16px; font-size: 12px; line-height: 18px; }
.tc-editor-warning { color: var(--tc-muted); }
.tc-editor-error { color: #dc2626; }
.tc-editor-error:empty { display: none; }
.tc-editor footer { position: sticky; bottom: 0; border-top: 1px solid var(--tc-line); }
.tc-editor footer a { color: var(--tc-muted); font-size: 13px; }
.tc-editor footer a:hover { color: inherit; text-decoration: underline; }
.tc-save { padding: 9px 14px; border-radius: 7px; background: var(--accent-fill); color: var(--accent-fg); font-size: 13px; font-weight: 500; }
.tc-save:hover { background: var(--accent-hover); }
.tc-save:disabled { opacity: .6; }
.dark .tc-dialog, .dark .tc-editor header, .dark .tc-editor footer { background: #171717; color: #eee; }
.dark .tc-editor input:not([type=checkbox]), .dark .tc-editor select, .dark .tc-editor .task-status-field { color: #eee; }
@media (max-width: 600px) {
  .tc-editor header, .tc-editor footer { padding: 12px 16px; }
  .tc-editor fieldset { padding: 16px; }
  .tc-editor-properties { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .tc-editor-warning, .tc-editor-error:not(:empty) { padding-right: 16px; padding-left: 16px; }
}

.tc-unscheduled > h3, .tc-unscheduled > .tc-unplanned-search, .tc-unscheduled > p { flex-shrink: 0; }
.tc-unscheduled-list {
  display: grid; grid-template-columns: minmax(0, 1fr); align-content: start; gap: 8px;
  min-height: 0; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable;
  padding: 3px;
}
.tc-unscheduled-list:focus-visible { outline: 2px solid var(--accent-fill); outline-offset: -2px; border-radius: 6px; }
.tc-unscheduled-list > p { grid-column: 1 / -1; margin: 0; }
@media (min-width: 601px) and (max-width: 1100px) {
  .tc-unscheduled-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
