Plášť je kanon. .acrm-dialog + modifikátor .task, střední 640, v Reactu <Dialog size="m"> z @acrm/ui. Roste s obsahem do 80vh, pak scrolluje tělo; dock ~11vh. Mezera mezi akčními tlačítky v patičce = vždy var(--sp-3), v celé app stejná.
Jeden dialog pro celou app. Jediný host TaskDialogHost v AppShellu + openTask(); TaskForm, AddTaskForm i TaskPopup zanikají. Odtud plynou jednotné toasty, mazání i Esc.
Dva stavy, dvě třídy. Nový úkol = commit (Vytvořit ⌘↵, Esc ruší, Vytvořit další). Existující úkol = dokument (autosave, „Uloženo" v hlavičce, žádný primár). Nikdy nemíchat.
Žádný edit mód. Otevřený úkol je rovnou editovatelný — text i meta na místě, view = edit. Zavření = hotovo, nic se nepotvrzuje.
Jedno pole. Úkol nemá název a popis. Text je pravda — výpisy ho zkracují do jedné řádky, fulltext i našeptávání jedou nad ním.
Reference se píšou do textu. @ otevře referenční search (osoba · firma · obchod · projekt · schůzka · kolega). Chip v textu = relace úkolu; smazáním chipu z textu relace zaniká.
Chips řádek = relace mimo text. Kontext při založení a „Propojit" — stejný meta řádek jako u poznámky. Textové i ruční relace jsou rovnocenné, liší se jen původem.
Přílohy. Řádek dlaždic (.tk-att) pod chips řádkem — náhled · název · velikost, poslední je „Přiložit" (idiom Propojit); vkládání i Ctrl+V. Bez příloh řádek není a „Přiložit" sedí v chips řádku. Výpisy ukazují jen sponku s počtem.
Meta lišta bez labelů. Termín · Realizátor · Typ · Priorita — chip nese hodnotu, bez hodnoty název pole. Realizátor je vždy právě jeden uživatel; @kolega v textu ho nemění.
Checkbox = hotovo. Kruhový checkbox překlápí binární osu stavu (statusKind); dropdown Stav se ukazuje jen u typu s více stavy. Hotové řadí výpis na konec.
⋮ jediná položka. Smazat, destruktivní, s confirmem (malý 400) — sedí v patičce vpravo vedle Zavřít Esc, ne v hlavičce. Nic dalšího se do kebabu neschovává.
Overlaye portálované, bez nadpisů. Referenční search, datepicker, priorita i ⋮ žijí nad dialogem — jinak je ořízne overflow pláště (.acrm-popover 101 nad dialogem 80/90; bez portálu by ho ořízl overflow).
Podúkol dědí plochu. V dialogu je vnořený výpis podúkolů (anatomie DS.TaskList) s „Přidat podúkol"; podúkol se otevírá v tomtéž dialogu, rodič je entity chip v hlavičce (zóna 1).
Mobil = šuplík ze spoda. Pod 720 px se dialog prezentuje jako bottom sheet — plná šířka, zaoblení nahoře, grabber, patička nad safe-area, výška podle obsahu (strop 92 %). Commit má jediné velké CTA přes celou šířku („Vytvořit další" jen na desktopu). Gesto dolů / scrim = Esc (rozepsaný commit se ptá); overlaye = druhý šuplík nad prvním. Platí pro všechny dialogy, ne jen úkol.