/* Preserved source70 auxiliary read-only components; current approved palette/layout remain authoritative. */
.visual-blocked-reason{display:block;font-size:calc(14px * var(--font-scale));line-height:1.5;color:var(--muted);margin-top:8px;white-space:normal;overflow-wrap:anywhere}
.visual-square{display:inline-flex;justify-content:center;align-items:center;width:22px;height:22px;flex-shrink:0;border:2px solid var(--control-border);border-radius:4px;background:var(--white);color:var(--on-primary)}
.visual-square svg{width:17px;height:17px}
.visual-square.is-checked{background:var(--primary);border-color:var(--primary)}
.visual-square.is-blocked{background:var(--surface-soft);border-style:dashed}
.visual-completion{align-self:start;color:var(--green)}
.visual-completion:hover{background:var(--surface-soft)!important}
.visual-square.is-checked{background:Highlight;color:HighlightText}
.visual-square.is-blocked{border-style:dashed}
.visual-draft-completion{gap:10px!important;font-size:calc(14px * var(--font-scale))}
.visual-task-progress{font-size:calc(14px * var(--font-scale));color:var(--muted);margin:10px 0}
.visual-calendar-detail{position:fixed;inset:auto;margin:0;width:400px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto;padding:24px;border:1px solid var(--control-border);border-radius:calc(16px * var(--radius-scale));background:var(--white);color:var(--ink);box-shadow:0 12px 32px rgba(23,38,40,.20)}
.visual-calendar-detail::backdrop{background:rgba(23,38,40,.20)}
.visual-calendar-head{display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.visual-calendar-head h2{font-size:calc(24px * var(--font-scale));line-height:1.35;overflow-wrap:anywhere}.visual-calendar-head .icon-button{flex-shrink:0}.visual-calendar-project{color:var(--muted);font-size:calc(14px * var(--font-scale));margin:12px 0 24px}.visual-calendar-properties{display:grid;gap:12px}.visual-calendar-properties>div{display:grid;grid-template-columns:72px minmax(0,1fr);gap:12px}.visual-calendar-properties dt{color:var(--muted)}.visual-calendar-properties dd{margin:0}.visual-calendar-properties small{display:block;color:var(--muted);font-size:calc(14px * var(--font-scale));margin-top:4px}.visual-calendar-description{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:20px}.visual-calendar-children{border-top:1px solid var(--line);padding-top:20px;margin-top:20px}.visual-calendar-children h3{font-size:calc(16px * var(--font-scale))}.visual-calendar-children ul{list-style:none;padding:0;margin:12px 0}.visual-calendar-children li{display:flex;gap:12px;padding:10px 0;align-items:flex-start}.visual-calendar-children small{display:block;color:var(--muted);font-size:calc(14px * var(--font-scale))}.visual-calendar-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:12px;margin-top:24px}.visual-calendar-actions .button{flex:1}
@media(max-width:700px){.visual-calendar-detail{inset:auto 0 0!important;width:100%;max-width:none;max-height:85dvh;margin:0;border-radius:16px 16px 0 0;padding:24px 20px calc(24px + env(safe-area-inset-bottom))}.visual-calendar-detail::before{content:"";display:block;width:36px;height:4px;background:var(--line);border-radius:2px;margin:-12px auto 20px}.visual-calendar-head h2{font-size:calc(24px * var(--font-scale))}}
.visual-calendar-project,.visual-calendar-properties dd,.visual-calendar-children li>span:last-child{min-width:0;overflow-wrap:anywhere}.visual-calendar-properties .due{max-width:100%;white-space:normal}.visual-calendar-children .visual-square{flex-shrink:0}
/* Dashboard presentation only. Existing appearance tokens and saved palettes win. */
:root{--dashboard-space:24px;--dashboard-complete:#456f45;--dashboard-on-complete:#ffffff}
[data-density="compact"]{--dashboard-space:16px}
[data-density="spacious"]{--dashboard-space:32px}
.topbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
.topbar .breadcrumbs{display:contents}.topbar .search-anchor{grid-column:2;grid-row:1;justify-self:center}.topbar .top-actions{grid-column:3;grid-row:1;justify-self:end}
.topbar .mobile-menu{grid-column:1;grid-row:1}
/* Natural content rows must win over legacy stacked and enlarged-text fixed tracks, in both Dashboard and Arrange. */
.unified-widget-grid,.unified-widget-grid.is-stacked,:root[data-text-size] .unified-widget-grid{grid-auto-rows:auto;align-items:start;gap:var(--dashboard-space)}
.unified-widget-grid>.dash-widget{grid-row:auto;min-width:0;height:auto;overflow:visible}
.dash-widget .widget-body{min-width:0;overflow:visible}.dash-widget button{max-width:100%;overflow-wrap:anywhere}
.widget-heading{flex-wrap:wrap}.widget-heading h2{min-width:0;overflow-wrap:anywhere}
.dashboard-task-list{display:grid;gap:12px}.dashboard-task-row{display:grid;grid-template-columns:44px minmax(0,1fr);gap:8px;min-width:0;border-inline-start:3px solid var(--project-accent);border-radius:12px;padding:8px 10px 8px 5px}
.dashboard-task-row:focus-within{background:var(--nav-active,#dde8f5)}
.dashboard-check{width:44px;min-height:44px;display:grid;place-items:center;background:transparent;border:0;color:var(--ink)}
.dashboard-check>span{display:grid;place-items:center;width:22px;height:22px;border:2px solid currentColor;border-radius:4px;font-weight:700}
.is-complete .dashboard-check{color:var(--dashboard-complete)}.is-complete .dashboard-check>span{background:var(--dashboard-complete);border-color:var(--dashboard-complete);color:var(--dashboard-on-complete)}
.dashboard-task-open{border:0;background:transparent;text-align:start;color:var(--ink);min-height:44px;display:grid;gap:4px;padding:2px;min-width:0;white-space:normal}
.dashboard-task-open strong{font-size:1rem;line-height:1.5;overflow-wrap:anywhere}.dashboard-task-open>span{font-size:.875rem;line-height:1.5;color:var(--muted)}
.dashboard-task-open .due{background:none;justify-self:start}.dashboard-task-open .due.today{color:var(--danger)}.dashboard-task-open .due.overdue{color:var(--danger)}.is-complete .dashboard-task-open strong{text-decoration:line-through;color:var(--dashboard-complete)}.is-complete .dashboard-task-open .due{color:var(--dashboard-complete)}
.dashboard-prerequisite{grid-column:2;margin:0;font-size:.875rem;color:var(--muted);line-height:1.5;overflow-wrap:anywhere}
/* D8 (2026-10-23, owner choice B) + Balanced system (2026-10-23): soft-tinted canvas (#f3f3f9, cool palette in app.js) behind white cards, plus a light tinted two-layer shadow on cards and tiles on every page. */
:root{--shadow-card:0 1px 2px rgba(30,30,70,.05),0 8px 20px -8px rgba(30,30,70,.12);--panel-shadow:var(--shadow-card)}
:root[data-theme=dark]{--shadow-card:0 0 0 1px rgba(255,255,255,.04),0 8px 20px -8px rgba(0,0,0,.55)}
@media(forced-colors:active){:root{--shadow-card:none}}
.dashboard-note-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:16px}
.dashboard-note-tile{display:flex;flex-direction:column;gap:10px;min-width:0;border:0;border-inline-start:3px solid var(--project-accent);border-radius:12px;background:var(--white);color:var(--ink);text-align:start;padding:16px;white-space:normal}
.dashboard-note-tile strong{font-size:1rem;line-height:1.5}.dashboard-note-tile small{color:var(--muted);font-size:.875rem}.dashboard-note-tile>span{font-size:.875rem;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
.dashboard-week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.dashboard-week-strip>button{min-width:0;min-height:76px;padding:8px 2px;display:flex;flex-direction:column;gap:5px;align-items:center;white-space:normal}
.dashboard-week-strip small{font-size:.75rem}.week-desktop-previews{display:grid;gap:5px;max-width:100%;font-size:.875rem;line-height:1.4}.week-desktop-previews>span{overflow-wrap:anywhere;max-width:100%}
.dashboard-week-strip>button[aria-pressed="true"],.dashboard-month>button[aria-pressed="true"]{background:var(--nav-active,#dde8f5);color:var(--ink);outline:2px solid var(--primary);outline-offset:-2px}
.week-selected-preview{margin-top:16px}.dashboard-month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px;min-width:0}
.dashboard-month>button{min-width:0;min-height:36px;border:0;background:transparent;color:var(--ink);padding:3px;display:flex;flex-direction:column;align-items:center;justify-content:center;font:inherit}
.month-weekday{font-size:.75rem;color:var(--muted);text-align:center;padding-block:8px}.dashboard-month button>span{height:6px;line-height:6px}
.widget-note-form textarea{min-height:120px}.dash-widget[data-widget-size="standard"] .widget-note-form textarea{min-height:180px}.dash-widget[data-widget-size="expanded"] .widget-note-form textarea,.dash-widget[data-widget-size="wide"] .widget-note-form textarea{min-height:280px}
.widget-note-save{display:flex;flex-wrap:wrap;gap:8px}.widget-note-save p{flex-basis:100%}.widget-note-save button,.widget-view-all,.dashboard-agenda-row{min-height:44px;white-space:normal}
.widget-body h3,.widget-body p{overflow-wrap:anywhere}.widget-body h3{font-size:1rem}.dashboard-agenda-row strong{white-space:normal;overflow-wrap:anywhere}
.dash-widget :focus-visible{outline:2px solid var(--primary);outline-offset:3px;scroll-margin-block:20px}
@media(max-width:767px){.sidebar{transition:none!important}.topbar{grid-template-columns:auto minmax(0,1fr) auto;gap:8px}.topbar .search-anchor{justify-self:center;min-width:0}.unified-widget-grid{grid-template-columns:minmax(0,1fr)}.unified-widget-grid>.dash-widget{grid-column:1!important}.dashboard-note-tiles{grid-template-columns:minmax(0,1fr)}.week-desktop-previews{display:none}.dashboard-week-strip>button{font-size:.75rem}.dashboard-week-strip small{font-size:.75rem}.widget-body{padding-inline:0}.dashboard-task-row{padding-inline-end:2px}.dashboard-note-tile{padding:12px}}
@media(prefers-reduced-motion:reduce){.dash-widget *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(forced-colors:active){.dashboard-task-row,.dashboard-note-tile{border:1px solid CanvasText}.is-complete .dashboard-check>span{background:Highlight;color:HighlightText}.dashboard-week-strip>button[aria-pressed="true"],.dashboard-month>button[aria-pressed="true"]{outline-color:Highlight}.dash-widget :focus-visible{outline-color:Highlight}}

[data-theme="dark"]{--dashboard-complete:#9ccc97;--dashboard-on-complete:#1c2936}

@media(max-width:767px){.week-count-unit{display:none}.dashboard-week-strip small{font-size:.875rem}}

.dashboard-week-navigation{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.dashboard-week-navigation button{min-height:44px;flex:1;min-width:0;padding:8px;white-space:normal;font-size:.875rem}
@media(max-width:600px){#editor.widget-customization-dialog{width:calc(100vw - 16px);max-width:calc(100vw - 16px);padding:12px;box-sizing:border-box}.widget-customization-dialog .dash-widget{padding:8px}.widget-customization-dialog .dashboard-week-strip{gap:1px}.widget-customization-dialog .dashboard-week-strip>button{padding-inline:0}.widget-customization-dialog .dashboard-week-strip strong{font-size:1rem;white-space:nowrap}.widget-customization-dialog .dashboard-week-navigation{gap:4px}.widget-customization-dialog .dashboard-week-navigation button{font-size:.75rem;padding:4px}}

/* Refined Dashboard composition uses the existing appearance palette and font tokens. */
.unified-dashboard{color:var(--ink);font-family:var(--ui-font);padding-bottom:var(--dashboard-space)}
.unified-dashboard h1,.unified-dashboard h2,.unified-dashboard h3{color:var(--ink);letter-spacing:-.015em}
.unified-dashboard .dashboard-c-heading h1{font-weight:650;line-height:1.2}
.unified-dashboard .dashboard-c-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:24px 0 32px}
.unified-dashboard .dashboard-summary-tile{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 12px;align-items:center;min-width:0;padding:20px;border:1px solid var(--line);border-radius:calc(8px * var(--radius-scale,1.7));background:var(--white);box-shadow:var(--shadow-card);text-align:start;color:var(--ink)}
.unified-dashboard .dashboard-summary-tile strong{grid-column:2;font-size:2rem;line-height:1.2;font-weight:650;white-space:normal;overflow-wrap:anywhere}
.unified-dashboard .dashboard-summary-tile>span:not(.dashboard-summary-icon){font-size:1rem;color:var(--muted)}
.unified-dashboard .dashboard-summary-icon{grid-row:1/3;color:var(--primary);background:var(--surface-soft);padding:12px;border-radius:12px}
.unified-dashboard .dash-widget{border:1px solid var(--line);box-shadow:var(--shadow-card);background:var(--white)}
.unified-dashboard .widget-heading{padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:16px}
.unified-dashboard .widget-heading h2{font-size:1.25rem;line-height:1.35;font-weight:600}
.unified-dashboard .dashboard-week-strip>button{padding-block:12px}
.unified-dashboard .week-desktop-previews{padding-inline:4px;font-size:.875rem}
.widget-note-form{display:flex;flex-direction:column;gap:8px}
.widget-note-form label{font-size:.875rem;font-weight:600;color:var(--ink)}
.widget-note-form input:not([type=hidden]),.widget-note-form textarea{width:100%;box-sizing:border-box;margin:0 0 8px;min-width:0}
.widget-note-form input[type=hidden]{display:none}
.widget-note-save{align-items:center;justify-content:flex-start}
.widget-note-save [data-quick-full-editor]{border:0;background:transparent;box-shadow:none;min-height:44px;padding:8px;color:var(--green);font-weight:500}
@media(max-width:767px){.unified-dashboard .dashboard-c-summary{gap:8px;margin:20px 0 24px}.unified-dashboard .dashboard-summary-tile{grid-template-columns:minmax(0,1fr);padding:12px 8px;gap:6px}.unified-dashboard .dashboard-summary-icon{display:none}.unified-dashboard .dashboard-summary-tile strong{grid-column:1;font-size:1.375rem}.unified-dashboard .dashboard-summary-tile>span:not(.dashboard-summary-icon){font-size:.875rem}.unified-dashboard .widget-heading h2{font-size:1.125rem}}
@media(forced-colors:active){.unified-dashboard .dashboard-summary-tile,.unified-dashboard .dash-widget{border-color:CanvasText}.unified-dashboard .dashboard-summary-icon{color:CanvasText}}

/* Positive due-today metric uses the existing danger token; completed task state remains separate. */
.unified-dashboard .dashboard-summary-tile.summary-schedule.has-due-today>span:not(.dashboard-summary-icon),.unified-dashboard .dashboard-summary-tile.summary-schedule.has-due-today strong{color:var(--danger)}

/* Honor the selected layout when the actual canvas can hold two readable
   widgets. em follows enlarged text; neither the font nor saved layout changes.
   Arrange owns a separate canvas, so its narrower preview reflows independently. */
.unified-dashboard,.widget-customization-dialog{container-type:inline-size;container-name:dashboard-canvas}
:root[data-text-size] .unified-widget-grid{grid-template-columns:minmax(0,1fr)}
:root[data-text-size] .unified-widget-grid>.dash-widget{grid-column:1}
@container dashboard-canvas (min-width:52em){
  :root[data-text-size] .unified-widget-grid:not(.is-stacked){grid-template-columns:repeat(2,minmax(0,1fr))}
  :root[data-text-size] .unified-widget-grid:not(.is-stacked)>.dash-widget{grid-column:span var(--widget-columns)}
}
/* Keep the 44px header/control targets and content-led rows, with less empty
   space on either side of the heading divider. Preset detail stays unchanged. */
.unified-dashboard .widget-heading{padding-bottom:10px;margin-bottom:12px}

/* Each note is its own quiet surface. Keep the curved project edge and the
   existing whole-card selected tint separate from this permanent boundary. */
.dashboard-note-tile{border:1px solid var(--line);border-color:color-mix(in srgb,var(--primary) 30%,var(--white));border-inline-start:3px solid var(--project-accent);box-shadow:var(--shadow-card)}
.dashboard-note-tiles{gap:16px}
.notes-refined[data-notes-layout=cards] .notes-master{gap:16px}
.notes-refined[data-notes-layout=cards] .note-list-item{border:1px solid var(--line);border-color:color-mix(in srgb,var(--primary) 30%,var(--white));box-shadow:var(--shadow-card)}
.notes-refined[data-notes-layout=cards] .note-list-item.selected{border-color:var(--primary);background:var(--surface-soft)}
@media(forced-colors:active){.dashboard-note-tile,.notes-refined[data-notes-layout=cards] .note-list-item{border-color:CanvasText}.notes-refined[data-notes-layout=cards] .note-list-item.selected{border-color:Highlight}}

/* Shared pointer feedback is a translucent layer, not a replacement for the
   item's selected/project/urgency/completed surface. No geometry or animation. */
:root{--interaction-hover-layer:color-mix(in srgb,var(--primary) 8%,transparent);--interaction-pressed-layer:color-mix(in srgb,var(--primary) 14%,transparent)}
:root[data-theme="dark"]{--interaction-hover-layer:rgba(255,255,255,.09);--interaction-pressed-layer:rgba(255,255,255,.15)}
@media(hover:hover) and (pointer:fine){
  :is(button,input[type=button],input[type=submit],input[type=reset],a.button,[role=button],summary):not(:disabled):not([aria-disabled=true]):not([inert] *):hover,
  :is(.task-row,.board-card,.dashboard-task-row,.project-card,.project-row,.note-card,.note-preview,.note-list-item,.dashboard-note-tile,.widget-project,.widget-note-preview):not([aria-disabled=true]):not([inert] *):hover{background-image:linear-gradient(var(--interaction-hover-layer),var(--interaction-hover-layer))}
  :is(button,input[type=button],input[type=submit],input[type=reset],a.button,[role=button],summary):not(:disabled):not([aria-disabled=true]):not([inert] *):active{background-image:linear-gradient(var(--interaction-pressed-layer),var(--interaction-pressed-layer))}
  /* These established reference controls retain their existing token-based
     hover fill, rather than receiving a second tint on top of it. */
  :is(.nav-item,.icon-button,.button,.search-button):not(:disabled):not([aria-disabled=true]):hover:not(:active){background-image:none}
  /* Legacy button hover rules also matched disabled controls. Keep their
     original inactive fill and boundary, with no suggestion of availability. */
  .button:is(:disabled,[aria-disabled=true]):hover{background:var(--white);border-color:var(--line);color:var(--ink);background-image:none}
  .button.primary:is(:disabled,[aria-disabled=true]):hover{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}
}
@media(forced-colors:active) and (hover:hover) and (pointer:fine){
  :is(button,input[type=button],input[type=submit],input[type=reset],a.button,[role=button],summary):not(:disabled):not([aria-disabled=true]):not([inert] *):hover{outline:1px solid Highlight;outline-offset:-2px}
}

/* Let the search trigger own a real share of the header, so the existing
   anchored results algorithm receives that same useful width. No search or
   overlay-positioning behavior changes; reserved action space stays clear. */
@media(min-width:768px){
  .topbar{grid-template-columns:minmax(184px,1fr) minmax(0,2.5fr) minmax(184px,1fr);gap:24px}
  .topbar .search-anchor{width:100%;max-width:none;min-width:0}
  .topbar .search-anchor>.search-button{width:100%;max-width:none;min-height:48px;min-width:0;padding:10px 16px;gap:12px;font-size:1rem;white-space:normal}
}
@media(min-width:768px) and (max-width:1100px){
  .topbar{grid-template-columns:minmax(0,1fr) auto;row-gap:12px}
  .topbar .search-anchor{grid-column:1/-1;grid-row:2}
  .topbar .top-actions{grid-column:2;grid-row:1}
}
#search-dialog .search-top{gap:12px}
#search-dialog .search-top input{min-width:0;min-height:44px;padding:8px 0;border:0;border-radius:0;background:transparent}
#search-dialog .search-top input:focus-visible{outline:0;box-shadow:none}
#search-dialog .search-top:focus-within{box-shadow:inset 0 -2px var(--focus)}
#search-dialog{container-type:inline-size;container-name:search-panel}
#search-dialog .search-filters{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
@container search-panel (min-width:28em){#search-dialog .search-filters{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(forced-colors:active){#search-dialog .search-top:focus-within{outline:2px solid Highlight;outline-offset:-2px}}
/* Hide the requested visible keyboard-hint footer while retaining the input's
   existing aria-describedby instructions and all keyboard behavior. */
#search-dialog .search-hint{position:absolute;width:1px;height:1px;min-height:0;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.workspace-status-notice{display:none}
.workspace-status-notice:has(#save-status[data-meaningful=true]){display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin:0 var(--page-gutter) 24px;padding:12px 16px;border-inline-start:3px solid var(--primary);border-radius:8px;background:var(--surface-soft);color:var(--ink);font-size:1rem;line-height:1.5;overflow-wrap:anywhere}
.workspace-status-notice #cancel-import{min-height:44px}
.save-status-actions{display:flex;flex-wrap:wrap;gap:8px}.save-status-actions:empty{display:none}
/* Settings → Language: one tap per language, shown in its own script. */
.language-choices{display:grid;gap:8px;margin-top:16px}
.language-choice{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:12px 16px;border:1px solid var(--line);border-radius:calc(10px * var(--radius-scale,1));background:var(--white);color:var(--ink);font:inherit;text-align:start;cursor:pointer}
.language-choice:hover{background:var(--surface-hover)}
.language-choice.is-selected{border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}
.language-choice:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.language-choice .language-native{font-weight:600;font-size:1rem;unicode-bidi:isolate}
.language-choice .language-english{color:var(--muted);font-size:.875rem}
.language-choice .language-check{margin-inline-start:auto;display:grid;place-items:center;width:22px;height:22px;color:var(--primary)}
.language-choice .language-check svg{width:18px;height:18px}
.language-choices+.field-help{margin-top:12px}

/* Preferred thin outline icons and small, softly tinted square badges. Keep
   the three existing metric categories, actions and count definitions. */
.unified-dashboard .dashboard-summary-tile{grid-template-columns:36px minmax(0,1fr);align-content:start}
.unified-dashboard .dashboard-summary-icon{grid-row:1;align-self:center;width:36px;height:36px;padding:8px;border-radius:10px}
.unified-dashboard .dashboard-summary-icon svg{width:20px;height:20px}
.unified-dashboard .dashboard-summary-label{font-size:1.125rem!important;font-weight:600;color:var(--ink)!important}
.unified-dashboard .dashboard-summary-support{grid-column:2;font-size:.875rem;line-height:1.4;font-weight:400;color:var(--muted);overflow-wrap:anywhere}
.unified-dashboard .summary-projects .dashboard-summary-icon{background:#edf8f2;color:var(--dash-projects)}
.unified-dashboard .summary-tasks .dashboard-summary-icon{background:var(--surface-soft);color:var(--primary)}
.unified-dashboard .summary-schedule .dashboard-summary-icon{background:var(--surface-soft);color:var(--primary)}
.unified-dashboard .summary-schedule.has-due-today .dashboard-summary-icon{background:color-mix(in srgb,var(--white) 92%,var(--danger));color:var(--danger)}
.unified-dashboard .summary-schedule.has-due-today .dashboard-summary-label{color:var(--danger)!important}
@media(max-width:767px){.unified-dashboard .dashboard-summary-tile{grid-template-columns:minmax(0,1fr)}.unified-dashboard .dashboard-summary-label{font-size:.875rem!important}.unified-dashboard .dashboard-summary-support{grid-column:1}}
@media(forced-colors:active){.unified-dashboard .dashboard-summary-icon{background:Canvas;color:CanvasText}}

/* Retain readable full labels and target sizes instead of fragmenting a word
   into equal-width navigation tracks. The stored order/count stay unchanged. */
@media(max-width:767px){
  #mobile-nav .mobile-main{grid-template-columns:repeat(var(--mobile-destination-count,5),minmax(max-content,1fr))}
  #mobile-nav .mobile-main>#mobile-new-slot{min-width:44px}
  #mobile-nav .mobile-main .mobile-tab>span{white-space:nowrap;overflow-wrap:normal;word-break:normal}
}
/* A compact inline badge fits the wider phone cards. At 320px retain the
   text-first cards rather than crowding or shrinking their titles. */
@media(min-width:380px) and (max-width:767px){
  .unified-dashboard .dashboard-summary-tile{grid-template-columns:24px minmax(0,1fr);column-gap:6px}
  .unified-dashboard .dashboard-summary-icon{display:flex;width:24px;height:24px;padding:4px;border-radius:7px}
  .unified-dashboard .dashboard-summary-icon svg{width:16px;height:16px}
  .unified-dashboard .dashboard-summary-label{grid-column:2;overflow-wrap:normal}
  .unified-dashboard .dashboard-summary-tile strong,.unified-dashboard .dashboard-summary-support{grid-column:1/-1}
}

/* D7 (2026-10-23, owner choice B): every page shares one bounded canvas,
   --work-max:1320px (set in quiet.css/styles.css). The former dashboard-only
   1560px override at >=1600px was removed so cards keep their proportions. */
/* Keep each short weekday and date intact in the narrow seven-day strip.
   Recover inline space from gaps/padding; retain the chosen date font and
   existing tall hit areas, selected state and selected-day detail below. */
@media(max-width:600px){
  .unified-dashboard .dashboard-week-strip{gap:2px}
  .unified-dashboard .dashboard-week-strip>button{padding-inline:0}
  .unified-dashboard .dashboard-week-strip>button>span:first-child,
  .unified-dashboard .dashboard-week-strip>button>strong,
  .unified-dashboard .dashboard-week-strip>button>small{white-space:nowrap;overflow-wrap:normal;word-break:normal}
  .unified-dashboard .dashboard-week-navigation button{min-width:min-content;padding-inline:4px;overflow-wrap:normal;word-break:normal}
}

/* Desktop search follows the leading edge of the main content.
   Existing <=1100px two-row/mobile layouts and search behavior are unchanged. */
@media(min-width:1101px){
  .topbar{grid-template-columns:minmax(0,1fr) auto}
  .topbar .search-anchor{grid-column:1;grid-row:1;justify-self:start;width:100%;max-width:none;min-width:0}
  .topbar .top-actions{grid-column:2;grid-row:1;justify-self:end}
}

/* Collection actions and view controls share a compact, wrapping hierarchy.
   Keep native buttons/selects, existing filters and full-size pointer targets. */
.task-reference-tools{gap:8px;margin-bottom:16px;align-items:center}
.task-reference-tools .visual-view-switch{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;flex:none}
.task-reference-tools .visual-view-switch button{display:grid;place-items:center;min-width:44px;min-height:44px;padding:10px;border:0;background:transparent;color:var(--ink)}
.task-reference-tools .visual-view-switch button[aria-pressed=true]{background:var(--surface-soft);color:var(--primary)}
.task-reference-tools .visual-view-switch svg{width:20px;height:20px}
.task-reference-tools .task-reference-tabs{margin:0;flex:none;flex-wrap:wrap;min-width:0}
.task-reference-tools .task-reference-tabs button{min-height:44px;padding-inline:12px;flex:1 1 max-content}
.task-reference-tools .task-reference-sort{margin-inline-start:auto}
.task-reference-tools .tasks-page-more{margin:0}
.task-reference-tools summary{flex:none}
.task-reference-list .task-row.task-row-with-menu{grid-template-columns:44px minmax(0,1fr) 44px;column-gap:8px;row-gap:0;align-items:start;min-height:76px;padding:12px}
.task-reference-list .task-row.task-row-with-menu>.task-complete-action{grid-column:1;grid-row:1;min-width:44px;min-height:44px;justify-content:center;align-self:start;padding:0}
.task-reference-list .task-row.task-row-with-menu>.task-content{grid-column:2;grid-row:1;min-width:0;min-height:44px;padding-block:6px}
.task-reference-list .task-row.task-row-with-menu>.task-card-more{grid-column:3;grid-row:1}
.task-reference-list .task-row .task-meta{gap:4px 10px}
.task-reference-list .task-row .visual-blocked-reason{margin-top:6px;line-height:1.5}
/* Completion stays distinct from opening a card or reassigning its status. */
.board-card-title{display:grid;grid-template-columns:44px minmax(0,1fr);gap:8px;align-items:start}
.board-card-title>.task-complete-action{min-width:44px;min-height:44px;padding:0;justify-content:center}
.board-card .board-card-title>[data-task]{min-width:0;min-height:44px;text-align:start;padding:8px 0;font-size:calc(14px * var(--font-scale));line-height:calc(22px * var(--font-scale));font-weight:600;overflow-wrap:anywhere}
.board-card .visual-blocked-reason{max-height:none;overflow:visible}
.board-card .board-status-disclosure{margin-top:12px}
.board-card .board-status-disclosure>summary{justify-content:space-between;gap:12px;width:100%;padding:8px 12px;color:var(--muted);background:transparent;font-size:inherit;box-sizing:border-box}
.board-card .board-status-disclosure>summary svg{width:16px;height:16px}
.board-card .board-status-disclosure>div{position:static;inset:auto;width:auto;max-width:none;max-height:none;box-shadow:none;margin-top:8px}
.board-card .board-status-disclosure label{font-size:inherit}
.board-card .board-status-disclosure select{min-height:44px}
.note-overflow>div .field-help{max-width:30ch;margin:4px 12px 12px;line-height:1.5;font-size:.875rem}
/* Persistent editor chrome with a single scrolling body. Other dialogs and
   the dedicated inline note editor keep their existing layout and behavior. */
#editor[open]:has(.refined-editor-form){display:flex;flex-direction:column;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);overflow:visible;padding:0}
#editor:has(.refined-editor-form)>.dialog-header{flex:none;margin:0;padding:16px 24px;border-bottom:1px solid var(--line)}
#editor .refined-editor-form{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;padding:0;overflow:hidden}
#editor .refined-editor-form .editor-scroll-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;padding:20px 24px;scroll-padding-block:16px}
#editor .refined-editor-form>.form-actions{flex:none;display:flex;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin:0;padding:16px 24px;border-top:1px solid var(--line);background:var(--white)}
#editor .refined-editor-form>.form-actions .button{min-height:44px;flex:0 1 auto;margin:0}
#editor .refined-editor-form :is(input,textarea,select,button,summary){scroll-margin-block:16px}
.editor-section{border-top:1px solid var(--line);margin-top:16px;min-width:0}
.editor-section>summary{display:flex;justify-content:space-between;gap:12px;align-items:center;min-height:48px;cursor:pointer;list-style:none;color:var(--ink);font-weight:600}
.editor-section>summary::-webkit-details-marker{display:none}
.editor-section>summary svg{width:18px;height:18px;flex:none}
.editor-section>summary:focus-visible,.calendar-legend-disclosure>summary:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.editor-section-body{padding-block:8px 16px;min-width:0}
/* Links and Files inside the editor: quiet field groups instead of browser-default fieldsets; "Add files" is a real button over a hidden native picker. */
.item-links-editor{border:0;padding:0;margin:0;min-inline-size:0;gap:10px}
.item-links-editor>legend{float:left;width:100%;padding:0;margin:0 0 2px;font-size:.875rem;font-weight:600;color:var(--ink);line-height:1.4} /* floated legend = ordinary grid child, so it no longer straddles the group's top edge */
.item-links-editor .field-help{margin-top:0}
.item-links-editor+.item-links-editor{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.item-links-editor>.button,.item-links-editor [data-link-command="review"],.item-links-editor [data-link-command="add"]{justify-self:start}
.item-file-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.item-file-list:empty{display:none}
.item-file-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;padding:8px 8px 8px 12px;border:1px solid var(--line);border-radius:calc(8px * var(--radius-scale,1));background:var(--surface,transparent)}
.item-file-name{display:flex;align-items:center;gap:8px;min-width:0;flex:1 1 auto}
.item-file-name>svg{width:16px;height:16px;flex:none;color:var(--muted)}
.item-file-name>span{min-width:0;overflow-wrap:anywhere}
.item-file-size{color:var(--muted);font-size:.8125rem;white-space:nowrap}
.item-file-row .button.small{flex:none;min-height:36px}
.file-picker{position:relative;cursor:pointer}
.file-picker svg{width:18px;height:18px}
.file-picker-input{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.file-picker:has(.file-picker-input:focus-visible){outline:2px solid var(--focus);outline-offset:2px}
.item-links h3{font-size:.875rem;font-weight:600;margin:0 0 8px}
.editor-secondary-actions .editor-section-body{display:flex;align-items:center;flex-wrap:wrap;gap:12px}
.editor-secondary-actions #note-copy-status{flex-basis:100%;margin:0}
/* Legend is an inline disclosure, never a modal or an alternative calendar.
   All periods, navigation controls and selected-day full titles remain. */
.calendar-view-tools{display:flex;align-items:start;gap:8px 16px;flex-wrap:wrap;margin-bottom:16px}
.calendar-view-tools .calendar-period-controls{margin:0}
.calendar-legend-disclosure{min-width:0;margin-inline-start:auto}
.calendar-legend-disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;padding:8px 12px;border:1px solid var(--line);border-radius:10px;cursor:pointer;list-style:none;box-sizing:border-box}
.calendar-legend-disclosure>summary::-webkit-details-marker{display:none}
.calendar-legend-disclosure>summary svg{width:16px;height:16px}
.calendar-legend-disclosure .calendar-legend{margin:12px 0 0;max-width:28rem}
@media(max-width:600px){
  .page-heading:has(>[data-action=new-task]),.page-heading:has(>[data-action=new-project]){display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-bottom:20px}
  .page-heading:has(>[data-action=new-task])>div,.page-heading:has(>[data-action=new-project])>div{flex:1 1 130px;min-width:0}
  .page-heading>.button{min-height:44px;white-space:normal}
  .task-reference-tools .task-reference-sort{flex-basis:calc(100% - 112px);margin:0;text-align:start}
  .task-reference-tools .task-reference-tabs{flex:1 1 auto;display:flex}
  .task-reference-tools .task-reference-tabs button{flex:1 1 max-content;white-space:normal;padding-inline:8px}
  .task-reference-list .task-row.task-row-with-menu{grid-template-columns:44px minmax(0,1fr) 44px;column-gap:4px;padding:8px}
  #editor[open]:has(.refined-editor-form){width:calc(100% - 24px);max-width:none;max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px)}
  #editor:has(.refined-editor-form)>.dialog-header,#editor .refined-editor-form>.form-actions{padding:12px 16px}
  #editor .refined-editor-form .editor-scroll-body{padding:16px}
  .calendar-month .calendar-month-bar{gap:8px;margin-bottom:12px;align-items:center;flex-wrap:wrap}
  .calendar-month .calendar-month-bar h2{flex:1 1 120px;margin:0;min-width:0}
  .calendar-month-actions{gap:4px;flex-wrap:wrap}
  .calendar-month-actions .button{padding-inline:10px;min-height:44px}
  .calendar-view-tools{gap:8px;margin-bottom:12px}
  .calendar-legend-disclosure .calendar-legend{gap:8px}
}
@media(forced-colors:active){.editor-section,#editor .refined-editor-form>.form-actions,#editor:has(.refined-editor-form)>.dialog-header{border-color:CanvasText}.task-reference-tools .visual-view-switch button[aria-pressed=true]{outline:2px solid Highlight;outline-offset:-3px}}

/* Tasks alone has a contextual New action beside its title. Reserve that
   first row, then let Search lead the whole available second row and keep
   Notifications trailing. Explicit grid placement avoids the old flex/order
   interaction; the shared controls and their DOM/tab order are unchanged. */
@media(max-width:700px){
  #main>.page-heading:has(>[data-action="new-task"]):has(>.search-anchor):has(>.notification-control){display:grid;grid-template-columns:minmax(0,1fr) auto 44px;gap:12px;align-items:center}
  #main>.page-heading:has(>[data-action="new-task"])>div:first-child{grid-column:1;grid-row:1;min-width:0}
  #main>.page-heading:has(>[data-action="new-task"])>[data-action="new-task"]{grid-column:2/-1;grid-row:1;justify-self:end;max-width:100%;min-height:44px}
  #main>.page-heading:has(>[data-action="new-task"])>.search-anchor{grid-column:1/3;grid-row:2;justify-self:start;min-width:0;width:100%;max-width:none;margin:0;order:0}
  #main>.page-heading:has(>[data-action="new-task"])>.search-anchor>.search-button{width:100%;min-width:0;min-height:44px;text-align:start}
  #main>.page-heading:has(>[data-action="new-task"])>.notification-control{grid-column:3;grid-row:2;justify-self:end;align-self:center;width:44px;min-width:44px;margin:0;order:0}
}

/* D8: shared card elevation on Tasks, Projects, Calendar, Notes and Settings */
.task-reference-list .task-row,.project-card,.panel,.schedule-agenda-pane,.settings-group,.notes-refined .note-list-item{box-shadow:var(--shadow-card)}


/* ============================================================
   BALANCED SYSTEM — Precision + Bloom blend, strength 2.5-B "softer shapes" (owner choices, 2026-10-23).
   Precision bones: Geist with tabular numerals, 1 px borders, header bands,
   ruled rows, honest keyboard hints, comfortable density.
   Bloom warmth: soft-tinted canvas, 16 px corners, pill search / primary /
   nav items, light tinted shadow, larger tonal icon chips per content type,
   soft week-strip cells, butter-tinted note tiles. Colours stay Balanced.
   Palette/fonts live in app.js (cool palette, defaults) and styles.css.
   ============================================================ */
:root{
  --control-border:#7d8296;
  --due-red:#b42318;--urgency-surface:#fce8ec;--completed-mint:#24702d;--completed-surface:#e3f0d9;
  --tint-tasks:#dfebfb;--tint-projects:#fde8da;--tint-notes:#fbf1cc;--tint-calendar:#d7f0f2;
  --on-tasks:#163c6b;--on-projects:#6a2c08;--on-notes:#564000;--on-calendar:#07444c;
  --group-radius:calc(9.4px * var(--radius-scale,1.7));
  --mono-font:'Geist Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
}
:root[data-theme=dark]{
  --control-border:#7a7f94;
  --due-red:#ff9c90;--urgency-surface:#381d26;--completed-mint:#8fd694;--completed-surface:#1c3326;
  --tint-tasks:#1c2b44;--tint-projects:#3a2417;--tint-notes:#30280c;--tint-calendar:#0f3034;
  --on-tasks:#c6dcfb;--on-projects:#fcd3b9;--on-notes:#f4e1a2;--on-calendar:#aee6eb;
}
body,.shell{letter-spacing:-.006em}
.dashboard-summary-tile strong,.dashboard-c-heading time,.dashboard-week-strip,.dashboard-month,.task-meta,.due,.week-count-unit,.dashboard-agenda-row time{font-variant-numeric:tabular-nums}
/* type scale */
.dashboard-greeting{font-size:calc(34px * var(--font-scale));line-height:calc(40px * var(--font-scale));font-weight:700;letter-spacing:-.025em}
.dashboard-c-heading time{font-size:calc(13px * var(--font-scale));color:var(--muted)}
.dashboard-c-heading{margin-bottom:18px}
#main h1,.page-heading h1{font-weight:700;letter-spacing:-.02em}
.brand{font-weight:700;letter-spacing:-.6px}
/* metrics: three white tiles with a tonal chip */
.unified-dashboard .dashboard-c-summary{gap:16px;margin-bottom:16px}
.unified-dashboard .dashboard-summary-tile{grid-template-columns:minmax(0,1fr) 36px;gap:2px 10px;align-items:start;padding:16px 18px;min-height:106px;border-radius:var(--group-radius);background:var(--white);box-shadow:var(--shadow-card)}
.unified-dashboard .dashboard-summary-icon{grid-column:2;grid-row:1/span 2;width:36px;height:36px;border-radius:12px;align-self:start}
.unified-dashboard .summary-tasks .dashboard-summary-icon{background:var(--tint-tasks);color:var(--on-tasks)}
.unified-dashboard .summary-projects .dashboard-summary-icon{background:var(--tint-projects);color:var(--on-projects)}
.unified-dashboard .summary-schedule .dashboard-summary-icon{background:var(--urgency-surface);color:var(--due-red)}
.unified-dashboard .dashboard-summary-icon svg{width:18px;height:18px}
.unified-dashboard .dashboard-summary-label{grid-column:1;grid-row:1;font-size:calc(13px * var(--font-scale));font-weight:500;color:var(--muted)}
.unified-dashboard .dashboard-summary-tile strong{grid-column:1;grid-row:2;font-size:calc(34px * var(--font-scale));line-height:1.125;font-weight:700;letter-spacing:-.03em}
.unified-dashboard .dashboard-summary-support{grid-column:1/-1;font-size:calc(12px * var(--font-scale));color:var(--muted)}
.unified-dashboard .has-due-today .dashboard-summary-label,.unified-dashboard .has-due-today strong{color:var(--due-red)}
/* widgets: header band, soft radius, light shadow */
.unified-dashboard .dash-widget{border-radius:var(--group-radius);padding:0;overflow:hidden}
.unified-dashboard .widget-heading{min-height:48px;padding:0 14px;margin:0;border-bottom:1px solid var(--line);gap:10px;align-items:center;flex-wrap:nowrap}
.unified-dashboard .widget-heading h2{font-size:calc(14px * var(--font-scale));font-weight:600;letter-spacing:-.006em}
.unified-dashboard .widget-symbol{width:30px;height:30px;border-radius:10px}
.unified-dashboard .widget-symbol svg{width:16px;height:16px}
.dash-widget[data-dashboard-widget=week] .widget-symbol,.dash-widget[data-dashboard-widget=calendar] .widget-symbol{background:var(--tint-calendar);color:var(--on-calendar)}
.dash-widget[data-dashboard-widget=priorities] .widget-symbol,.dash-widget[data-dashboard-widget=tasks] .widget-symbol,.dash-widget[data-dashboard-widget=summary] .widget-symbol,.dash-widget[data-dashboard-widget=metrics] .widget-symbol{background:var(--tint-tasks);color:var(--on-tasks)}
.dash-widget[data-dashboard-widget=notes] .widget-symbol,.dash-widget[data-dashboard-widget=capture] .widget-symbol{background:var(--tint-notes);color:var(--on-notes)}
.dash-widget[data-dashboard-widget=projects] .widget-symbol{background:var(--tint-projects);color:var(--on-projects)}
.unified-dashboard .widget-body{padding:12px 14px}
.unified-dashboard .widget-view-all{padding:8px 14px;border-top:1px solid var(--line);margin:0}
/* rows: ruled, project spine kept, comfortable */
.unified-dashboard .dashboard-task-row{border-radius:0;box-shadow:none;border-bottom:1px solid var(--line);background:transparent;padding-block:10px;border-inline-start-width:3px}
.unified-dashboard .dashboard-task-row:last-child{border-bottom:0}
.dashboard-check>span,.visual-square{border-radius:7px;width:22px;height:22px;border-width:1.5px;border-color:var(--control-border)}
.unified-dashboard .dashboard-agenda-row{border-radius:12px;padding:8px 12px}
.dashboard-note-tile{border-radius:12px;border:1px solid var(--line);border-inline-start:3px solid var(--project-accent);background:var(--tint-notes);padding:12px;box-shadow:none}
.dashboard-note-tile span{color:var(--muted)}
/* week strip */
.dashboard-week-strip{gap:6px}
.dashboard-week-strip>button{border:1px solid transparent;border-radius:12px;background:var(--surface-soft);padding:8px 4px}
.dashboard-week-strip>button strong{font-size:calc(18px * var(--font-scale));font-weight:600;line-height:1.2}
.dashboard-week-strip>button[aria-pressed=true]{background:var(--white);border-color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}
.dashboard-week-navigation .button{border-radius:999px;background:var(--surface-soft);border-color:transparent}
.dashboard-month>button[aria-pressed=true],.dashboard-month>button.today{border-radius:8px}
/* controls */
.search-button{border-radius:999px;min-height:38px;padding:6px 14px;background:var(--white);border-color:transparent;box-shadow:var(--shadow-card)}
.search-button:focus-visible{border-color:var(--primary)}
.button{border-radius:8px}
.button.primary{border-radius:999px;min-height:40px;padding:8px 18px}
.nav-item{min-height:36px;padding:6px 14px;margin:2px 0;border-radius:999px;gap:10px}
.nav-item svg{width:16px;height:16px}
.nav-item.active{background:var(--nav-active);box-shadow:0 1px 2px rgba(30,30,70,.06)}
.topbar{min-height:64px;padding-top:20px;padding-bottom:12px}
.sidebar{padding-top:24px}
/* honest keyboard hints: Ctrl/Cmd K (search) and Alt N (New) exist in app.js */
kbd.shortcut-hint{display:none;margin-left:auto;font:500 11px/16px var(--mono-font);letter-spacing:0;color:var(--muted);background:var(--surface-soft);border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:1px 6px;white-space:nowrap}
kbd.shortcut-hint-primary{margin-left:8px;color:var(--on-primary);background:transparent;border-color:color-mix(in srgb,var(--on-primary) 35%,transparent)}
@media (min-width:768px) and (any-pointer:fine){kbd.shortcut-hint{display:inline-block}}
/* D9 (owner choice B, 2026-10-23): side-by-side widgets share one bottom edge; the taller card sets the row (no fixed heights); "View all" links pin to the bottom. Stacked / single-column layouts are unaffected because each row holds one card. */
.unified-widget-grid,.unified-widget-grid.is-stacked,:root[data-text-size] .unified-widget-grid{align-items:stretch}
.unified-dashboard .widget-body:has(>.widget-view-all){display:flex;flex-direction:column}
.unified-dashboard .widget-body>.widget-view-all{margin-top:auto}
/* tasks page: one bordered list per group */
.task-list-page .task-reference-group{border:1px solid var(--line);border-radius:var(--group-radius);background:var(--white);overflow:hidden;box-shadow:var(--shadow-card)}
.task-list-page .task-reference-group>h3{padding:10px 14px;margin:0;border-bottom:1px solid var(--line);font-size:calc(12px * var(--font-scale));text-transform:uppercase;letter-spacing:.04em}
.task-list-page .task-reference-list .task-row{border:0;border-left:3px solid var(--muted);border-bottom:1px solid var(--line);border-radius:0;margin-bottom:0;min-height:60px;padding:10px 12px;background:transparent;box-shadow:none}
/* Approved status rule (verified defect fixed 2026-10-23): the left accent is the task's project colour; "Due today" is a red label only; the accent turns red only when overdue; completed = green. */
.task-list-page .task-reference-list .task-row,.task-list-page .task-reference-list .task-row.today,.task-list-page .task-reference-list .task-row.soon,.task-list-page .task-reference-list .task-row.upcoming{border-left-color:var(--project-accent,var(--muted))}
.task-list-page .task-reference-list .task-row.overdue{border-left-color:var(--due-red)}
.task-list-page .task-reference-list .task-row.completed{border-left-color:var(--completed-mint)}
.task-list-page .task-reference-list .task-row:last-child{border-bottom:0}
/* mobile */
@media (max-width:700px){
  .dashboard-greeting{font-size:calc(26px * var(--font-scale));line-height:calc(32px * var(--font-scale))}
  .unified-dashboard .dashboard-c-summary{gap:8px}
  .unified-dashboard .dashboard-summary-tile{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px;min-height:0;border-radius:12px}
  .unified-dashboard .dashboard-summary-tile>*{grid-area:auto;margin:0}
  .unified-dashboard .dashboard-summary-icon{order:0;width:28px;height:28px;border-radius:9px;margin-bottom:4px}
  .unified-dashboard .dashboard-summary-label{order:1;font-size:calc(12px * var(--font-scale))}
  .unified-dashboard .dashboard-summary-tile strong{order:2;font-size:calc(22px * var(--font-scale));white-space:nowrap;overflow-wrap:normal}
  .unified-dashboard .dashboard-summary-support{order:3;font-size:calc(11px * var(--font-scale));white-space:normal}
}
/* D10 (owner choice B, 2026-10-23): 12 px minimum for labels on phones (≤700 px); day-count numerals 11 px. */
@media (max-width:700px){
  .unified-dashboard .dashboard-summary-support{font-size:calc(12px * var(--font-scale))}
  .dashboard-week-strip>button,.dashboard-week-strip small,.month-weekday,.calendar-weekday,.calendar-grid-head span{font-size:calc(12px * var(--font-scale))}
  #mobile-nav .mobile-tab,#mobile-nav #new-menu-button,#navigation-edit[open] .mobile-tab{font-size:calc(12px * var(--font-scale,1))}
  .calendar-day-count{font-size:calc(11px * var(--font-scale))}
  .calendar-weekdays,.calendar-scope,.calendar-detail-item small{font-size:calc(12px * var(--font-scale))}
}
@media (forced-colors:active){.unified-dashboard .widget-symbol,.unified-dashboard .dashboard-summary-icon{border:1px solid CanvasText}}

/* ============================================================
   RHYTHM — one spacing scale for every page (owner request, 2026-10-24: "spacing needs to be unified").
   Page gutter stays --page-gutter. Vertical rhythm: --stack between sections, --heading-bottom under
   page titles, --card-pad inside cards. Phones (≤700 px) use the tighter column.
   ============================================================ */
:root{--stack:24px;--heading-gap:16px;--heading-bottom:24px;--card-pad:16px;--card-pad-lg:20px;--row-pad:12px 14px}
@media(max-width:700px){:root{--stack:16px;--heading-gap:12px;--heading-bottom:16px;--card-pad:14px;--card-pad-lg:16px;--row-pad:12px 14px}}
main{padding-top:var(--stack)}
.page-heading,.dashboard-c-heading{margin-top:0;margin-bottom:var(--heading-bottom);gap:var(--heading-gap)}
.notes-page-heading{margin-bottom:var(--heading-bottom);gap:var(--heading-gap)}
.notes-page-heading>.page-heading{margin-bottom:0;flex:1 1 auto}
.notes-page-heading>.page-heading>.button.primary{margin-left:auto}
@media(min-width:701px){.notes-page-heading{align-items:flex-start}.notes-page-heading .notes-view-actions{margin-bottom:0;margin-left:16px}}
.dashboard-c-summary,.dashboard-summary{margin:0 0 var(--stack)}
.unified-widget-grid,.project-grid,.projects-grid,.settings-content,.notes-layout,.schedule-layout{gap:var(--stack)}
.task-reference-tools,.schedule-mode,.notes-view-actions,.calendar-toolbar{margin-bottom:var(--stack)}
.notes-count{margin:0 0 var(--heading-gap)}
.project-card,.note-reader,.notes-empty,.settings-panel{padding:var(--card-pad-lg)}
.task-row,.calendar-detail-item{padding:var(--row-pad)}
.dashboard-note-tile{padding:var(--card-pad)}
.settings-content h2,.settings-section>h2{padding-inline:4px;margin:0 0 8px;font-size:calc(14px * var(--font-scale,1));color:var(--muted);font-weight:600;letter-spacing:.01em}
.schedule-agenda-pane h2,.panel>h2,.calendar-detail h2{font-size:calc(16px * var(--font-scale,1));margin:0 0 12px}
.page-heading h1{font-size:calc(32px * var(--font-scale,1));line-height:1.15;margin:0 0 4px}
.page-heading p{margin:0}
@media(max-width:700px){
  main{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
  /* One header pattern on phones: title block + primary action + bell on the first row, search on its own row. (Overrides per-page grid/flex rules in quiet.css.) */
  .page-heading{display:flex!important;flex-wrap:wrap!important;align-items:center!important;row-gap:12px!important;column-gap:10px!important}
  .page-heading>div:first-child{order:0!important;flex:1 1 0!important;min-width:0!important}
  .page-heading>.button.primary{order:1!important;flex:0 0 auto!important;margin:0!important}
  .page-heading>.notification-control{order:2!important;flex:0 0 auto!important;width:auto!important;margin:0!important;align-self:center!important}
  .page-heading>.search-anchor{order:3!important;flex:1 1 100%!important;width:100%!important;margin:0!important}
  .page-heading>.widget-customize-action{order:4!important}
  .page-heading .subtitle{display:none} /* phones: title + actions only; the subtitle returns at tablet widths */
  .page-heading h1{font-size:calc(26px * var(--font-scale,1))}
  /* Project page: first row = copy block (eyebrow, title, progress) + bell, like every other page; Reminder / Edit project take their own row beneath instead of squeezing the title into a sliver. */
  .page-heading.project-page-heading>.project-heading-copy{flex:1 1 0!important;min-width:0!important;max-width:100%}
  .page-heading.project-page-heading>.notification-control{order:1!important;align-self:flex-start!important;margin-top:18px!important}
  .page-heading.project-page-heading>.project-heading-actions{order:2!important;flex:1 1 100%!important;min-width:0}
  .page-heading.project-page-heading .project-completion .progress-caption{white-space:nowrap}
  .dashboard-c-heading h1,.dashboard-greeting{font-size:calc(28px * var(--font-scale,1))}
  .dashboard-summary{gap:10px}
  .unified-dashboard .dashboard-summary-tile{padding:12px 10px;gap:6px 8px}
  .unified-dashboard .dashboard-summary-tile strong{font-size:1.5rem}
  .dashboard-week-strip>button{min-height:0}
}

/* ============================================================
   COLOUR ACCENTS — content-type colour on cards and blocks (owner request, 2026-10-24:
   "I like the colour accents on cards/blocks from previous iterations"). Brought forward from blend 2.5-A:
   tinted Tasks / Projects metric tiles with solid icon chips, calendar-tinted agenda rows, soft week-strip
   cells with a solid selected day. Due-today tile stays white with the red rule. Dark tokens already exist.
   ============================================================ */
.unified-dashboard .dashboard-summary-tile{border-color:transparent}
.unified-dashboard .summary-tasks{background:var(--tint-tasks);color:var(--on-tasks)}
.unified-dashboard .summary-projects{background:var(--tint-projects);color:var(--on-projects)}
.unified-dashboard .summary-tasks .dashboard-summary-label,.unified-dashboard .summary-projects .dashboard-summary-label,
.unified-dashboard .summary-tasks>span:not(.dashboard-summary-icon),.unified-dashboard .summary-projects>span:not(.dashboard-summary-icon){color:inherit;opacity:.82}
.unified-dashboard .summary-tasks .dashboard-summary-icon{background:#2b67b5;color:#fff;border-color:transparent}
.unified-dashboard .summary-projects .dashboard-summary-icon{background:#b0521c;color:#fff;border-color:transparent}
.unified-dashboard .summary-schedule .dashboard-summary-icon{background:#b42318;color:#fff;border-color:transparent}
.unified-dashboard .dashboard-agenda-row{background:var(--tint-calendar);color:var(--on-calendar);border:0;border-radius:10px;margin-bottom:6px;padding-inline:12px}
.unified-dashboard .dashboard-agenda-row time,.unified-dashboard .dashboard-agenda-row small{color:inherit;opacity:.8}
.dashboard-week-strip>button{background:color-mix(in srgb,var(--ink) 5%,var(--white));border-color:transparent}
.dashboard-week-strip>button[aria-pressed="true"],.dashboard-month>button[aria-pressed="true"]{background:var(--primary);color:#fff;outline:0}
.dashboard-week-strip>button[aria-pressed="true"] *,.dashboard-month>button[aria-pressed="true"] *{color:#fff}
.dashboard-week-navigation .button{background:color-mix(in srgb,var(--ink) 5%,var(--white));border-color:transparent;color:var(--ink)}
.dashboard-note-tile{background:var(--tint-notes);color:var(--on-notes);border-inline-start-color:var(--project-accent)}
.dashboard-note-tile small,.dashboard-note-tile>span{color:inherit;opacity:.8}
@media(forced-colors:active){.unified-dashboard .dashboard-summary-tile,.unified-dashboard .dashboard-agenda-row,.dashboard-week-strip>button{border:1px solid CanvasText}}

/* COLOUR ACCENTS · depth 2 (owner choice, 2026-10-24): a soft wash of the project colour on project cards, task rows and note rows on every page.
   Selected / hover / completed states keep their own stronger surfaces (declared later or with higher specificity). */
.project-card{background:var(--white);background:color-mix(in srgb,var(--accent) 9%,var(--white));border-color:color-mix(in srgb,var(--accent) 22%,var(--line))}
.task-row,.dashboard-task-row{background:var(--white);background:color-mix(in srgb,var(--project-accent,var(--line)) 7%,var(--white))}
.task-row.completed,.dashboard-task-row.is-complete{background:color-mix(in srgb,var(--completed-mint) 9%,var(--white))}
.note-preview,.note-card{background:var(--white);background:color-mix(in srgb,var(--project-accent,var(--accent)) 8%,var(--white));border-inline-start:3px solid var(--project-accent,var(--accent))}
.note-preview:hover,.note-card:hover{background:color-mix(in srgb,var(--project-accent,var(--accent)) 14%,var(--white))}
.note-preview[aria-current="true"],.note-preview.is-current,.note-preview.is-active{background:color-mix(in srgb,var(--project-accent,var(--accent)) 18%,var(--white))}
.task-reference-list .task-row.is-current,.task-reading-master .task-row.is-current{background:color-mix(in srgb,var(--project-accent,var(--line)) 16%,var(--white))}

/* ============================================================
   PAUSED SESSION — owner decision 2026-10-24 ("between A and B" → blend 1): the workspace stays in view, dimmed and
   blurred, behind one compact centred card with a single action. See reports/session-lapse-2026-10-24.md.
   ============================================================ */
body.product-paused{overflow:hidden}
body.product-paused .shell{filter:saturate(.6) blur(3px);opacity:.55;pointer-events:none;user-select:none;transition:opacity .2s ease,filter .2s ease}
#product-session-stop{position:fixed;inset:0;z-index:120;min-height:0;display:grid;place-items:center;padding:clamp(16px,4vw,48px);background:color-mix(in srgb,var(--bg) 58%,transparent);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);overflow:auto;overscroll-behavior:contain}
#product-session-stop .product-pause-card{width:min(100%,420px);padding:26px 28px 24px;border:1px solid var(--line);border-radius:16px;background:var(--white);box-shadow:0 18px 48px rgba(27,28,42,.16);text-align:center}
#product-session-stop h1{margin:0 0 8px;font-size:calc(20px * var(--font-scale,1));line-height:1.3;font-weight:650;color:var(--ink)}
#product-session-stop .product-pause-copy{margin:0 0 18px;font-size:calc(14px * var(--font-scale,1));line-height:1.55;color:var(--muted)}
#product-session-stop .product-pause-card>.button.primary{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:42px;padding:0 18px;border-radius:999px}
#product-session-stop .product-reconnect .google-mark{flex:none;background:#fff;border-radius:50%;padding:3px;box-sizing:content-box}
#product-session-stop #product-google-pause-status{margin:12px 0 0;font-size:calc(13px * var(--font-scale,1));color:var(--muted);min-height:1.2em}
#product-session-stop #product-google-pause-status:empty{margin:0;min-height:0}
#product-session-stop .product-pause-options{margin-block-start:18px;padding-block-start:12px;text-align:start}
#product-session-stop .product-pause-options summary{font-size:calc(13px * var(--font-scale,1));color:var(--muted);min-height:36px}
#product-session-stop .product-pause-options p{font-size:calc(13px * var(--font-scale,1));color:var(--muted)}
#product-session-stop .product-pause-actions .button{min-height:36px;font-size:calc(13px * var(--font-scale,1))}
#product-session-stop [data-product-recovery]{margin-top:10px}
#product-session-stop[data-pause-kind="checking"] .product-pause-card{border-color:transparent}
@media(prefers-reduced-motion:reduce){body.product-paused .shell{transition:none}}
@media(forced-colors:active){body.product-paused .shell{filter:none;opacity:1}#product-session-stop{background:Canvas}#product-session-stop .product-pause-card{border:1px solid CanvasText}}
@media(max-width:700px){#product-session-stop{padding:16px;align-items:end}#product-session-stop .product-pause-card{padding:22px 20px 20px;border-radius:16px;margin-bottom:calc(16px + env(safe-area-inset-bottom,0px))}}

/* Dark-mode pass (2026-10-24): "upcoming" due chips had no dark tokens and rendered as pale boxes on dark cards (Projects footer, Calendar labels). */
:root[data-theme=dark]{--upcoming-ink:#b9cdea;--upcoming-surface:#243249}

/* Smallest phones (≤340 px, e.g. 320 px): the month grid fits without sideways scrolling (7 × 40 px). */
@media(max-width:340px){.calendar-grid{min-width:280px}.calendar-week{grid-template-columns:repeat(7,minmax(40px,1fr))}.calendar-day{min-width:40px;padding-inline:4px}}

/* Calendar widgets (2026-10-24, Zev): no date heading, empty-state sentence or scope footnote — the highlighted day and its count already say it. */
.dashboard-day-agenda:empty{display:none}
.project-files{margin-top:28px}
.project-files .item-file-list{margin:0;padding:0;list-style:none}
.project-files .file-picker{display:inline-flex;align-items:center;gap:6px}
.item-file-actions{display:inline-flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.item-file-name>span:first-of-type{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:700px){.project-files .item-file-row{flex-wrap:wrap}.project-files .item-file-actions{flex:1 0 100%;justify-content:flex-end}}

/* ---- Calendar page, option A (Zev, 2026-10-24): month grid + day list, one card, no legend/agenda/footnotes ---- */
.calendar-page .calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,340px);gap:0;align-items:stretch;background:var(--white);border:1px solid var(--line);border-radius:var(--group-radius,calc(8px * var(--radius-scale)));overflow:hidden;box-shadow:var(--shadow-card,none)}
.calendar-page .calendar-month,.calendar-page .calendar-day-detail{border:0;border-radius:0;background:transparent;box-shadow:none;min-width:0}
.calendar-page .calendar-day-detail{border-inline-start:1px solid var(--line);padding:18px 20px 22px}
.calendar-page .calendar-month-bar{padding:14px 16px 6px;gap:10px 16px;flex-wrap:wrap;justify-content:space-between}
.calendar-month-nav{display:flex;align-items:center;gap:2px;min-width:0}
.calendar-month-nav h2{margin-inline-end:10px;font-size:calc(1.15rem * var(--font-scale));white-space:nowrap}
.calendar-month-nav .icon-button{width:36px;height:36px;min-width:36px}
.calendar-month-nav .button{min-height:36px;padding:4px 12px}
.calendar-page .calendar-period-controls{margin:0;gap:2px;padding:3px;background:var(--surface-soft);border-radius:10px}
.calendar-page .calendar-period-controls button{min-height:32px;padding:4px 12px;border:0;border-radius:8px;font-size:calc(.85rem * var(--font-scale))}
.calendar-page .calendar-period-controls button[aria-pressed=true]{background:var(--white);color:var(--ink);box-shadow:0 1px 2px #18293814}
.calendar-page .calendar-weekdays{text-align:start;padding:10px 10px 8px;border-top:0;font-size:calc(.75rem * var(--font-scale));font-weight:500}
.calendar-page .calendar-week>[role=gridcell]{border-color:var(--line)}
.calendar-page .calendar-week:last-child>[role=gridcell]{border-bottom:0}
.calendar-page .calendar-day{min-height:92px;padding:8px 8px 10px;gap:3px;border-radius:0}
.calendar-page .calendar-day.outside{background:transparent;color:var(--ink)}
.calendar-page .calendar-day.outside .calendar-day-number{color:var(--muted);opacity:.6}
.calendar-page .calendar-day.selected{box-shadow:none;background:var(--surface-soft)}
.calendar-page .calendar-day:hover{background:var(--surface-hover,var(--surface-soft))}
.calendar-page .calendar-day-number{width:26px;height:26px;display:grid;place-items:center;border-radius:50%;font-weight:500;font-size:calc(.85rem * var(--font-scale));margin:-3px 0 2px -5px;min-width:0}
.calendar-page .calendar-day[aria-current=date] .calendar-day-number{background:var(--green);color:var(--white);opacity:1}
.calendar-day-count{display:none}
.calendar-page .calendar-day-items{gap:2px;font-size:calc(.74rem * var(--font-scale));color:var(--ink)}
.calendar-dot-label{display:flex;align-items:center;gap:5px;max-width:100%;border:0;padding:0;min-width:0}
.calendar-dot-label i{width:7px;height:7px;border-radius:50%;background:var(--project-accent,var(--muted));flex:none}
.calendar-dot-label em{font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.calendar-dot-label.completed em{text-decoration:line-through;color:var(--muted)}
.calendar-dot-label.completed i{opacity:.4}
.calendar-dot-label.overdue em,.calendar-dot-label.today em{color:var(--due-red)}
.calendar-dot-label.project em{font-weight:600}
.calendar-more-label{font-size:calc(.7rem * var(--font-scale));color:var(--muted)}
.calendar-day-dots{display:none;gap:3px;justify-content:center;min-height:6px}
.calendar-day-dots i{width:5px;height:5px;border-radius:50%;background:var(--project-accent,var(--muted))}
.calendar-day-dots i.completed{opacity:.35}
/* day panel */
.calendar-page .calendar-day-detail>h2{font-size:calc(1.02rem * var(--font-scale));line-height:1.4;margin:0}
.calendar-day-summary{color:var(--muted);font-size:calc(.82rem * var(--font-scale));margin:2px 0 4px}
.calendar-coming-heading{margin:22px 0 2px;font-size:calc(.72rem * var(--font-scale));font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.calendar-rows{display:flex;flex-direction:column}
.calendar-row{display:flex;align-items:flex-start;gap:10px;padding:11px 0;border-top:1px solid var(--line)}
.calendar-rows>.calendar-row:first-child{border-top:0}
.calendar-row .visual-completion{margin-top:1px;align-self:flex-start}
.calendar-row-content{flex:1;min-width:0;text-align:start;background:none;border:0;padding:0;display:flex;flex-direction:column;gap:2px;color:inherit;font:inherit;cursor:pointer;border-radius:6px}
.calendar-row-content:focus-visible{outline:2px solid var(--green);outline-offset:3px}
.calendar-row-title{font-weight:500;font-size:calc(.95rem * var(--font-scale));line-height:1.4;overflow-wrap:anywhere}
.calendar-row.completed .calendar-row-title{text-decoration:line-through;color:var(--muted)}
.calendar-row-meta{display:flex;align-items:center;gap:4px 10px;flex-wrap:wrap;color:var(--muted);font-size:calc(.8rem * var(--font-scale));min-width:0}
.calendar-row-project{display:inline-flex;align-items:center;gap:6px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calendar-row-meta i{width:7px;height:7px;border-radius:50%;flex:none}
.calendar-row-meta .due{font-size:inherit}
.calendar-row-mark{width:20px;height:22px;display:grid;place-items:center;flex:none}
.calendar-row-mark i{width:10px;height:10px;border-radius:50%}
.calendar-rows-empty{color:var(--muted);font-size:calc(.88rem * var(--font-scale));padding:8px 0;margin:0}
/* week / day boards */
.calendar-page .calendar-period-board{border-radius:var(--group-radius,calc(8px * var(--radius-scale)))}
.calendar-page .calendar-period-days{border-top:1px solid var(--line)}
.calendar-page .calendar-period-days.is-week{grid-template-columns:repeat(7,minmax(0,1fr))}
.calendar-page .calendar-period-day{padding:0 10px 12px;border-top:0;min-height:300px}
.calendar-page .is-week .calendar-period-day{border-right:1px solid var(--line)}
.calendar-page .is-week .calendar-period-day:last-child{border-right:0}
.calendar-page .calendar-period-date{display:flex;align-items:center;gap:6px;width:100%;padding:12px 0 8px;margin-bottom:6px;border:0;border-bottom:1px solid var(--line);background:none;color:inherit;font:inherit;border-radius:0;min-height:0;text-align:start}
.calendar-period-number{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-weight:500;font-size:calc(.85rem * var(--font-scale));flex:none}
.calendar-page .calendar-period-date[aria-current=date] .calendar-period-number{background:var(--green);color:var(--white)}
.calendar-period-weekday{color:var(--muted);font-size:calc(.8rem * var(--font-scale))}
.calendar-page .calendar-period-day.selected .calendar-period-date{color:inherit}
.calendar-page .calendar-period-day .calendar-row{padding:8px 0}
.calendar-page .is-week .calendar-row-title{font-size:calc(.88rem * var(--font-scale))}
.calendar-page .is-week .calendar-row-meta{white-space:normal}
.calendar-page .is-week .calendar-row-meta .due:not(.today):not(.overdue){display:none}
.calendar-page .calendar-period-date,.calendar-page .calendar-period-date:hover{text-decoration:none}
@media(max-width:1100px){
 .calendar-page .calendar-layout{grid-template-columns:minmax(0,1fr);background:transparent;border:0;box-shadow:none;overflow:visible;gap:16px}
 .calendar-page .calendar-month,.calendar-page .calendar-day-detail{background:var(--white);border:1px solid var(--line);border-radius:var(--group-radius,calc(8px * var(--radius-scale)));box-shadow:var(--shadow-card,none)}
 .calendar-page .calendar-day-detail{border-inline-start:1px solid var(--line)}
}
@media(max-width:700px){
 .calendar-page .calendar-month-bar{padding:12px 12px 4px}
 .calendar-month-nav h2{font-size:calc(1.05rem * var(--font-scale));margin-inline-end:6px}
 .calendar-page .calendar-period-controls{width:100%;display:flex}
 .calendar-page .calendar-period-controls button{flex:1;text-align:center}
 .calendar-page .calendar-weekdays{text-align:center;padding:8px 0 6px}
 .calendar-page .calendar-day{min-height:54px;padding:6px 2px 7px;align-items:center;gap:4px}
 .calendar-page .calendar-day-number{margin:0}
 .calendar-page .calendar-day-items{display:none}
 .calendar-page .calendar-day-dots{display:flex}
 .calendar-page .calendar-day-detail{padding:14px 14px 16px}
 .calendar-page .calendar-period-days.is-week{grid-template-columns:minmax(0,1fr)}
 .calendar-page .calendar-period-day{min-height:0;display:grid;grid-template-columns:48px minmax(0,1fr);gap:0 10px;padding:0 12px;border-top:1px solid var(--line)}
 .calendar-page .calendar-period-day:first-child{border-top:0}
 .calendar-page .is-week .calendar-period-day{border-right:0}
 .calendar-page .calendar-period-date{flex-direction:column;align-items:center;gap:0;border-bottom:0;padding:12px 0 10px;margin:0}
 .calendar-page .calendar-period-date .calendar-period-weekday{order:-1;font-size:calc(.72rem * var(--font-scale))}
 .calendar-page .calendar-period-day .calendar-rows,.calendar-page .calendar-period-day .calendar-rows-empty{grid-column:2;grid-row:1;padding-block:4px;align-self:center}
 .calendar-page .calendar-period-day .calendar-rows:empty{display:none}
 .calendar-page .calendar-period-date{min-height:0;padding:10px 0}
}
@media(forced-colors:active){.calendar-dot-label i,.calendar-day-dots i,.calendar-row-meta i,.calendar-row-mark i{forced-color-adjust:none;outline:1px solid CanvasText}}
[dir=rtl] .calendar-page .calendar-day-number{margin:-3px -5px 2px 0}

/* Dashboard widgets, option 3 "Tiles" (owner choice 2026-10-24: "3 but with better spacing options").
   One shared grammar: header = icon chip + title + one text action at the right; body = tiles with the same radius, padding and gap.
   Spacing follows the Appearance → Density setting (compact / comfortable / spacious). */
:root{--widget-pad:14px;--tile-pad:10px 12px;--tile-gap:8px;--tile-radius:12px}
:root[data-density=compact]{--widget-pad:10px;--tile-pad:8px 10px;--tile-gap:6px}
:root[data-density=spacious]{--widget-pad:18px;--tile-pad:14px 16px;--tile-gap:12px}
.unified-dashboard .widget-heading{padding:0 var(--widget-pad);min-height:48px;gap:10px}
.unified-dashboard .widget-heading .widget-view-all{margin-inline-start:auto;padding:0 2px;border:0;min-height:0;font-size:calc(13px * var(--font-scale));color:var(--primary);background:transparent;white-space:nowrap;flex:none;display:inline-flex;align-items:center;gap:4px}
.unified-dashboard .widget-heading .widget-view-all svg{width:14px;height:14px}
.unified-dashboard .widget-body{padding:var(--widget-pad);display:flex;flex-direction:column;gap:var(--tile-gap)}
.unified-dashboard .widget-body>p{margin:0;color:var(--muted);font-size:calc(13px * var(--font-scale))}
.unified-dashboard .widget-body>h3,.unified-dashboard .dashboard-week-navigation h3{margin:0;font-size:calc(14px * var(--font-scale));font-weight:600;line-height:1.35}
/* tasks → tiles (project wash + spine kept, depth 2 / D11) */
.unified-dashboard .dashboard-task-list{display:flex;flex-direction:column;gap:var(--tile-gap)}
.unified-dashboard .dashboard-task-row{border-radius:var(--tile-radius);border:0;border-inline-start:3px solid var(--project-accent);background:color-mix(in srgb,var(--project-accent,var(--line)) 10%,var(--white));padding:var(--tile-pad);padding-inline-start:calc(var(--tile-pad-x,12px) - 3px);grid-template-columns:36px minmax(0,1fr);column-gap:4px;margin:0}
.unified-dashboard .dashboard-task-row:last-child{border-bottom:0}
.unified-dashboard .dashboard-task-row .dashboard-task-open{padding-block:2px;gap:2px}
.unified-dashboard .dashboard-task-row .dashboard-task-open strong{font-size:calc(14px * var(--font-scale));line-height:1.35}
.unified-dashboard .dashboard-task-row .dashboard-task-open>span{font-size:calc(12.5px * var(--font-scale))}
/* notes → same tile metrics */
.unified-dashboard .dashboard-note-tiles{gap:var(--tile-gap);grid-template-columns:repeat(auto-fill,minmax(min(100%,200px),1fr))}
.unified-dashboard .dashboard-note-tile{border-radius:var(--tile-radius);padding:var(--tile-pad);gap:4px;border:0;border-inline-start:3px solid var(--project-accent);background:var(--tint-notes);color:var(--on-notes)}
.unified-dashboard .dashboard-note-tile strong{font-size:calc(14px * var(--font-scale));line-height:1.35}
.unified-dashboard .dashboard-note-tile small{font-size:calc(12px * var(--font-scale))}
.unified-dashboard .dashboard-note-tile>span{font-size:calc(13px * var(--font-scale));line-height:1.45;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.dash-widget[data-widget-size=compact] .dashboard-note-tile>span{-webkit-line-clamp:2}
/* calendar + week: day items as calendar-tinted pills */
.unified-dashboard .dashboard-day-agenda{display:flex;flex-direction:column;gap:var(--tile-gap)}
.unified-dashboard .dashboard-agenda-row{margin:0;border-radius:var(--tile-radius);padding:var(--tile-pad);min-height:40px;display:flex;align-items:center;gap:10px;background:var(--tint-calendar);color:var(--on-calendar);width:100%;text-align:start;border:0}
.unified-dashboard .dashboard-agenda-row>span{font-size:calc(12px * var(--font-scale));opacity:.8;flex:none}
.unified-dashboard .dashboard-agenda-row strong{font-size:calc(14px * var(--font-scale));font-weight:600;min-width:0;overflow-wrap:anywhere}
.unified-dashboard .week-selected-preview{margin:0;display:flex;flex-direction:column;gap:var(--tile-gap)}
.unified-dashboard .week-selected-preview>.text-link,.unified-dashboard .dashboard-day-agenda+.text-link{align-self:flex-start;padding:2px 0;min-height:0;font-size:calc(13px * var(--font-scale))}
.unified-dashboard .dashboard-empty-day{margin:0;color:var(--muted);font-size:calc(13px * var(--font-scale))}
/* week strip: light day pills, number circle, dots */
.unified-dashboard .dashboard-week-navigation{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0;flex-wrap:nowrap}
.dashboard-week-nav-controls{display:inline-flex;align-items:center;gap:2px;flex:none}
.dashboard-week-nav-controls .icon-button{width:30px;height:30px;min-height:30px;min-width:30px;border-radius:8px;border:0;background:transparent;color:var(--muted);padding:0;display:inline-grid;place-items:center}
.dashboard-week-nav-controls .icon-button svg{width:16px;height:16px}
.dashboard-week-nav-controls .icon-button:hover{background:var(--surface-soft);color:var(--ink)}
.dashboard-week-nav-controls .button{min-height:30px;padding:0 10px;border-radius:8px;font-size:calc(12.5px * var(--font-scale));font-weight:500;background:var(--white);border:1px solid var(--line);color:var(--ink)}
.unified-dashboard .dashboard-week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.unified-dashboard .dashboard-week-strip>button{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:0;padding:6px 0 5px;border:0;border-radius:10px;background:transparent;color:var(--muted);box-shadow:none}
.unified-dashboard .dashboard-week-strip>button>span:first-child{font-size:calc(11.5px * var(--font-scale));line-height:1.2;font-weight:500}
.unified-dashboard .dashboard-week-strip>button>strong{font-size:calc(15px * var(--font-scale));font-weight:500;line-height:28px;width:28px;height:28px;border-radius:50%;color:var(--ink);font-variant-numeric:tabular-nums}
.unified-dashboard .dashboard-week-strip>button:hover{background:var(--surface-soft)}
.unified-dashboard .dashboard-week-strip>button[aria-current=date]>strong{box-shadow:inset 0 0 0 1.5px var(--primary)}
.unified-dashboard .dashboard-week-strip>button[aria-pressed="true"]{background:transparent;color:var(--muted)}
.unified-dashboard .dashboard-week-strip>button[aria-pressed="true"]>strong{background:var(--primary);color:#fff;box-shadow:none}
.unified-dashboard .dashboard-week-strip>button[aria-pressed="true"] *{color:inherit}
.unified-dashboard .dashboard-week-strip>button[aria-pressed="true"]>strong{color:#fff}
.dashboard-day-dots{display:flex;gap:3px;justify-content:center;align-items:center;min-height:5px;height:5px}
.dashboard-day-dots i{width:4px;height:4px;border-radius:50%;background:var(--project-accent,var(--muted))}
.dashboard-week-strip>button[aria-pressed="true"] .dashboard-day-dots i,.dashboard-month>button[aria-pressed="true"] .dashboard-day-dots i{background:var(--project-accent,var(--muted))}
/* mini month */
.unified-dashboard .dashboard-month{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));row-gap:0;column-gap:0;margin:0}
.unified-dashboard .month-weekday{font-size:calc(11px * var(--font-scale));padding-block:2px 6px}
.unified-dashboard .dashboard-month>button{display:flex;flex-direction:column;align-items:center;gap:1px;min-height:0;padding:2px 0 3px;border:0;border-radius:8px;background:transparent;color:var(--ink);font-size:calc(13px * var(--font-scale));font-variant-numeric:tabular-nums}
.unified-dashboard .dashboard-month>button>span:first-child{width:26px;height:26px;line-height:26px;border-radius:50%;text-align:center}
.unified-dashboard .dashboard-month>button:hover{background:var(--surface-soft)}
.unified-dashboard .dashboard-month>button[aria-current=date]>span:first-child{box-shadow:inset 0 0 0 1.5px var(--primary)}
.unified-dashboard .dashboard-month>button[aria-pressed="true"]{background:transparent;color:var(--ink)}
.unified-dashboard .dashboard-month>button[aria-pressed="true"]>span:first-child{background:var(--primary);color:#fff;box-shadow:none}
/* quick note: quiet labels, full-width fields, action right */
.unified-dashboard .widget-note-form{display:flex;flex-direction:column;gap:var(--tile-gap)}
.unified-dashboard .widget-note-form label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.unified-dashboard .widget-note-form input:not([type=hidden]),.unified-dashboard .widget-note-form textarea{margin:0;border-radius:10px;padding:9px 12px;font-size:calc(14px * var(--font-scale))}
.unified-dashboard .widget-note-form textarea{min-height:88px;flex:1}
.dash-widget[data-widget-size=standard] .widget-note-form textarea{min-height:88px}
.unified-dashboard .widget-note-save{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin:0}
.unified-dashboard .widget-note-save p{flex-basis:100%;margin:0}
.unified-dashboard .widget-note-save p:empty{display:none}
.unified-dashboard .widget-note-save .button.primary{min-height:36px;padding:0 14px;border-radius:9px;font-size:calc(13px * var(--font-scale));margin-inline-start:auto}
.unified-dashboard .widget-note-save [data-quick-full-editor]{min-height:0;padding:0}
/* paired heights (D9): let the tiles column breathe, pin the footer link */
.unified-dashboard .widget-body:has(>.widget-view-all){display:flex}
.unified-dashboard .dashboard-task-list,.unified-dashboard .dashboard-note-tiles{align-content:start}
@media(max-width:767px){
  :root{--widget-pad:12px}
  .unified-dashboard .dashboard-week-strip>button>span:first-child{font-size:calc(11px * var(--font-scale))}
  .unified-dashboard .dashboard-week-strip>button>strong{width:30px;height:30px;line-height:30px;font-size:calc(15px * var(--font-scale))}
  .unified-dashboard .dashboard-note-tiles{grid-template-columns:minmax(0,1fr)}
}
@media(forced-colors:active){.unified-dashboard .dashboard-task-row,.unified-dashboard .dashboard-note-tile,.unified-dashboard .dashboard-agenda-row{border:1px solid CanvasText}.dashboard-day-dots i{background:CanvasText}}
.dashboard-week-nav-controls .button{white-space:nowrap;flex:none}
.unified-dashboard .dashboard-week-navigation h3{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.unified-dashboard .dashboard-note-tile>span{white-space:normal}
.unified-dashboard .dashboard-week-days{margin:0;overflow:visible}
.unified-dashboard .dashboard-day-agenda{margin:0}
.unified-dashboard .dashboard-week-days [aria-current=date]{text-decoration:none}
/* metric tiles: never break "4 open" mid-word; scale the figure down on narrow tiles (tablet portrait with sidebar) */
.unified-dashboard .dashboard-summary-tile strong{overflow-wrap:normal;word-break:keep-all;hyphens:none}
@media(min-width:768px) and (max-width:1023px){.unified-dashboard .dashboard-summary-tile strong{font-size:calc(24px * var(--font-scale))}.unified-dashboard .dashboard-summary-tile{padding:12px}}
