@import url('tokens.css');
*{box-sizing:border-box}html,body{overflow-x:clip}html{scroll-behavior:smooth;scroll-padding-top:var(--space-lg)}body{margin:0;background:var(--color-paper);color:var(--color-ink);font:var(--text-md)/1.6 var(--font-body)}a{color:var(--color-accent);text-underline-offset:4px}a:hover{text-decoration-thickness:2px}button,input,select,textarea{font:inherit;border:1px solid var(--color-rule);border-radius:var(--radius-sm);background:var(--color-paper);color:var(--color-ink);min-height:44px;padding:var(--space-xs) var(--space-sm);max-width:100%}button{cursor:pointer;white-space:nowrap;transition:background var(--dur-fast) var(--ease-out)}button:hover{background:var(--color-paper-2)}button:active{transform:translateY(1px)}button:disabled,input:disabled,select:disabled{opacity:.6;cursor:not-allowed}:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}h1,h2,h3{font-family:var(--font-display);font-style:normal;line-height:1.15;overflow-wrap:anywhere;min-width:0}h1{font-size:clamp(3rem,7vw,6rem);font-weight:400;letter-spacing:-.04em;margin:var(--space-md) 0}h2{font-size:clamp(1.7rem,3vw,2.4rem);font-weight:400;margin:0 0 var(--space-lg)}h3{font-size:var(--text-lg)}p{max-width:75ch}.muted,.eyebrow{color:var(--color-muted)}.eyebrow,.next>span:first-child{font-size:var(--text-sm);letter-spacing:.07em}.rail{position:fixed;width:175px;inset:0 auto 0 0;padding:var(--space-xl) var(--space-lg);border-right:1px solid var(--color-rule);display:flex;flex-direction:column;gap:var(--space-sm)}.rail b{line-height:1.4;margin-bottom:var(--space-xl)}.rail a{min-height:44px;display:flex;align-items:center;white-space:nowrap;text-decoration:none}main{margin-left:175px;padding:var(--space-xl) clamp(1rem,4vw,4rem);max-width:1550px}header{padding-bottom:var(--space-xl)}.intro{font-size:var(--text-lg);line-height:1.5}.topline{display:flex;justify-content:space-between;gap:var(--space-lg);flex-wrap:wrap}.topline span{font-size:var(--text-sm);color:var(--color-muted)}.topline a{white-space:nowrap}.next{border-block:2px solid var(--color-ink);padding:var(--space-lg) 0;display:flex;flex-direction:column;gap:var(--space-xs)}.next strong{font-size:var(--text-lg)}section{padding:var(--space-2xl) 0;border-bottom:1px solid var(--color-rule)}.toolbar{display:flex;gap:var(--space-sm);flex-wrap:wrap;align-items:end;margin:var(--space-lg) 0}.toolbar label{min-width:120px;flex:1}.toolbar label:first-child{flex:2}label{display:flex;flex-direction:column;gap:var(--space-xs);font-size:var(--text-sm)}.toolbar a,.filebutton{min-height:44px;align-content:center;white-space:nowrap}.filebutton input{width:220px}.legend{display:flex;flex-wrap:wrap;gap:var(--space-md);font-size:var(--text-sm)}.pending{--state-color:var(--color-pending);color:var(--state-color)}.progress{--state-color:var(--color-progress);color:var(--state-color)}.blocked{--state-color:var(--color-blocked);color:var(--state-color)}.done{--state-color:var(--color-done);color:var(--state-color)}.late{color:var(--color-late)}.task{border-top:1px solid var(--color-rule);padding:var(--space-lg) 0;display:grid;grid-template-columns:125px minmax(0,1fr) auto;gap:var(--space-lg)}.task .date{font-size:var(--text-sm);font-variant-numeric:tabular-nums}.task h3{margin:0 0 var(--space-xs)}.task p{margin:var(--space-xs) 0}.task-meta{display:flex;gap:var(--space-md);flex-wrap:wrap;font-size:var(--text-sm)}.badge{font-weight:700}.certainty{color:var(--color-muted)}.source-links{display:flex;flex-wrap:wrap;gap:var(--space-sm);font-size:var(--text-sm);margin-top:var(--space-sm)}.source-links a{min-height:44px;display:inline-flex;align-items:center}.task button{align-self:start}.notes{white-space:pre-wrap;border-left:3px solid var(--color-rule);padding-left:var(--space-md);overflow-wrap:anywhere}.gantt-scroll{overflow-x:auto;max-width:100%;border-block:1px solid var(--color-rule)}#chart{min-width:950px;padding:var(--space-md) 0}.gantt-row,.gantt-head{display:grid;grid-template-columns:250px minmax(0,1fr);gap:var(--space-md);min-height:44px;align-items:center}.gantt-row{border-top:1px solid var(--color-rule);font-size:var(--text-sm);text-decoration:none;color:var(--color-ink)}.gantt-row:hover{background:var(--color-paper-2)}.months{display:grid;grid-template-columns:minmax(0,31fr) minmax(0,30fr) minmax(0,31fr);font-size:var(--text-sm)}.track{position:relative;height:24px;background:var(--color-paper-2);color:var(--color-ink)}.bar{position:absolute;top:6px;height:12px;min-width:5px;background:var(--state-color);color:var(--color-paper);border:1px solid var(--state-color)}.bar.tentative{background:var(--color-paper);color:var(--color-ink);border:2px dashed var(--state-color)}.bar.personal{opacity:.75}.bar.milestone{min-width:10px;height:16px;top:4px;border-radius:0}.resource{display:grid;grid-template-columns:90px minmax(0,1fr);gap:var(--space-lg);padding:var(--space-lg) 0;border-top:1px solid var(--color-rule)}.resource h3{margin:0}.resource p{margin:var(--space-xs) 0}.resource small{display:block;overflow-wrap:anywhere;color:var(--color-muted)}#topics>label{max-width:600px}.topic{padding:var(--space-md) 0;border-bottom:1px solid var(--color-rule)}.topic p{margin:var(--space-xs) 0;color:var(--color-muted);font-size:var(--text-sm)}.spec{display:grid;grid-template-columns:180px minmax(0,1fr);gap:var(--space-md) var(--space-lg)}dt{font-weight:700}dd{margin:0}footer{padding:var(--space-xl) 0;font:var(--text-sm)/1.7 var(--font-mono);color:var(--color-muted)}dialog{position:fixed;inset:0;margin:auto;height:fit-content;max-height:85vh;overflow-y:auto;width:min(600px,calc(100% - 2rem));padding:var(--space-xl);border:1px solid var(--color-rule);background:var(--color-paper);color:var(--color-ink);box-shadow:0 10px 40px var(--color-shadow)}dialog::backdrop{background:var(--color-shadow)}dialog label{margin:var(--space-md) 0}textarea{resize:vertical}#loginError,#editError{min-height:1.6em;color:var(--color-late)}.message{position:fixed;bottom:var(--space-lg);right:var(--space-lg);max-width:calc(100vw - 2rem);background:var(--color-ink);color:var(--color-paper);padding:var(--space-md);z-index:var(--z-modal)}.skip{position:absolute;top:-100px;left:var(--space-lg);background:var(--color-paper);padding:var(--space-md)}.skip:focus{top:0}code{overflow-wrap:anywhere}#topicList{margin-top:var(--space-lg)}
@media(max-width:960px){.rail{position:static;width:auto;flex-direction:row;flex-wrap:wrap;padding:var(--space-md);border-right:0;border-bottom:1px solid var(--color-rule);gap:var(--space-xs) var(--space-lg)}.rail b{margin:0;width:100%;font-size:var(--text-sm)}.rail b br{display:none}.rail a{font-size:var(--text-sm)}main{margin:0;padding:var(--space-lg)}.topline{flex-direction:column;gap:var(--space-xs)}.task{grid-template-columns:100px minmax(0,1fr);gap:var(--space-md)}.task>button{grid-column:2;width:max-content}.spec{grid-template-columns:140px minmax(0,1fr)}}
@media(max-width:640px){main{padding:var(--space-md)}section{padding:var(--space-xl) 0}.task{grid-template-columns:minmax(0,1fr)}.task>button{grid-column:1}.task .date{display:flex;gap:var(--space-sm);flex-wrap:wrap}.resource{grid-template-columns:minmax(0,1fr);gap:var(--space-xs)}.spec{grid-template-columns:minmax(0,1fr);gap:var(--space-xs)}dd{margin-bottom:var(--space-md)}.toolbar{align-items:stretch}.toolbar label,.toolbar label:first-child{flex:1 1 100%}.toolbar button{flex:1 1 auto}.legend{gap:var(--space-xs) var(--space-sm)}dialog{padding:var(--space-lg)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Task views */
[hidden]{display:none!important}.view-switch{display:flex;gap:var(--space-xs);margin:var(--space-lg) 0}.view-switch button[aria-pressed="true"]{background:var(--color-ink);color:var(--color-paper);border-color:var(--color-ink)}.task-actions{display:flex;flex-direction:column;gap:var(--space-sm);align-self:start;min-width:175px}.quick-status select{font-weight:700;width:100%}.task-actions button{width:100%}.kanban-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-md);align-items:start}.kanban-column{min-width:0}.kanban-column>h3{font:700 var(--text-md)/1.5 var(--font-body);display:flex;justify-content:space-between;gap:var(--space-xs);border-bottom:2px solid var(--state-color);padding-bottom:var(--space-sm);margin:0 0 var(--space-md)}.column-count{font-variant-numeric:tabular-nums}.kanban-cards{display:flex;flex-direction:column;gap:var(--space-md)}.kanban-card{background:var(--color-paper-2);color:var(--color-ink);padding:var(--space-md);min-width:0}.kanban-card h4{font:700 var(--text-md)/1.4 var(--font-body);margin:var(--space-sm) 0;overflow-wrap:anywhere}.kanban-card h4 a{color:var(--color-ink);text-decoration:none}.kanban-card h4 a:hover{text-decoration:underline}.kanban-card .task-meta,.kanban-card p{font-size:var(--text-sm)}.card-date{font-variant-numeric:tabular-nums;color:var(--color-muted)}.card-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-xs);margin-top:var(--space-sm);font-size:var(--text-sm)}.card-actions a{min-height:44px;display:flex;align-items:center;white-space:nowrap}.kanban-empty{font-size:var(--text-sm);color:var(--color-muted);padding:var(--space-md) 0}.kanban-card .notes{max-height:9rem;overflow:auto}
@media(max-width:1200px){.kanban-board{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:960px){.task-actions{grid-column:2;max-width:240px}}
@media(max-width:640px){.kanban-board{grid-template-columns:minmax(0,1fr);gap:var(--space-xl)}.task-actions{grid-column:1;max-width:none}.task-actions button{width:max-content}.task-actions .quick-status{max-width:280px}}

.kanban-card{border-left:3px solid var(--state-color)}.kanban-column.over{outline:2px dashed var(--state-color);outline-offset:4px}.drag-handle{font-size:var(--text-sm);touch-action:none;cursor:grab;margin-bottom:var(--space-xs)}.dragging{opacity:.5}.view-switch{flex-wrap:wrap}.task h3 a{color:var(--color-ink);text-decoration:none}.task h3 a:hover{text-decoration:underline}.official-date{font-size:var(--text-sm);color:var(--color-muted)}
