:root{--bg:var(--k-bg);--card:var(--k-surface);--text:var(--k-text);--muted:var(--k-text-muted);--line:var(--k-border);--green:var(--k-brand);--tint:var(--k-brand-soft);--warn:var(--k-warn);--warning:var(--k-warn-soft);--danger:var(--k-danger)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:var(--k-fs-read)/var(--k-lh-read) Onest,system-ui,sans-serif}a{color:var(--green)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{border:1px solid transparent;border-radius:12px;padding:12px 18px;background:var(--green);color:var(--k-text-on-accent);cursor:pointer;font-weight:500;min-height:44px}button:disabled{opacity:.5;cursor:wait}.secondary{color:var(--green);border-color:var(--green);background:var(--card)}.subtle{background:var(--tint);color:var(--green);padding:8px 12px}.full{width:100%}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--k-brand);outline-offset:3px}header{height:76px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 4vw;background:var(--card)}header nav{display:flex;gap:24px}.brand{font-weight:700;font-size:var(--k-fs-head);line-height:var(--k-lh-head);text-decoration:none}.brand span{font-size:var(--k-fs-base);line-height:var(--k-lh-base);font-weight:400;margin-left:16px;color:var(--muted)}main{max-width:1440px;margin:auto;padding:32px 4vw}.workspace{display:grid;grid-template-columns:minmax(330px,480px) minmax(0,1fr);gap:32px}.editor{padding:28px;background:var(--card);border:1px solid var(--line);border-radius:12px}.eyebrow{font-size:var(--k-fs-cap);line-height:var(--k-lh-cap);letter-spacing:.12em;text-transform:uppercase;color:var(--green);font-weight:600}h1{font-size:var(--k-fs-head);line-height:var(--k-lh-head);font-weight:600;letter-spacing:-.04em;margin:12px 0}h2{font-size:var(--k-fs-title);line-height:var(--k-lh-title);font-weight:600;margin:0}.intro{color:var(--muted);margin-bottom:24px}label{display:block;font-size:var(--k-fs-sm);line-height:var(--k-lh-sm);font-weight:500;margin:14px 0 0}input,select,textarea{display:block;width:100%;margin-top:6px;padding:11px 12px;background:var(--card);border:1px solid var(--line);border-radius:8px;color:var(--text);min-height:44px;min-width:0}input[type=checkbox]{display:inline-block;width:18px;min-height:18px;margin-right:8px;vertical-align:middle;accent-color:var(--green)}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.times{display:grid;grid-template-columns:1fr 1fr;gap:10px}.times input{font-size:var(--k-fs-sm);line-height:var(--k-lh-sm)}.point-box{border:1px solid var(--line);padding:0 14px 14px;border-radius:12px;margin:20px 0}.note{font-size:var(--k-fs-cap);line-height:var(--k-lh-cap);color:var(--muted);margin:8px 0 12px}.section-label{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:24px 0 12px}.section-label span{font-size:var(--k-fs-cap);line-height:var(--k-lh-cap);color:var(--muted)}.errand{border:1px solid var(--line);border-radius:12px;margin:12px 0;padding:16px}.errand-head{display:flex;justify-content:space-between;align-items:center}.errand-head strong{font-size:var(--k-fs-sm);line-height:var(--k-lh-sm)}.errand-head button{background:none;color:var(--muted);padding:6px;min-height:40px}.errand .row label{flex:1;min-width:110px}.errand input[type=number]{max-width:100px}.candidate{font-size:var(--k-fs-sm);line-height:var(--k-lh-sm);padding:10px 0;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center}.candidate div{flex:1;min-width:0}.candidate small{display:block;color:var(--muted)}.candidate button{padding:6px;min-height:40px;background:none;color:var(--muted)}.search-results{position:relative;z-index:2}.search-results button{display:block;width:100%;text-align:left;background:var(--tint);color:var(--text);border-bottom:1px solid var(--line);border-radius:0;padding:12px;font-size:var(--k-fs-sm);line-height:var(--k-lh-sm)}.search-results small{display:block;color:var(--muted)}details{border-top:1px solid var(--line);margin-top:20px;padding-top:16px}summary{cursor:pointer;font-size:var(--k-fs-sm);line-height:var(--k-lh-sm)}.actions{display:flex;gap:10px;margin-top:24px}.actions button{flex:1}/* RU: Карта не перекрывает сохранённые планы и выбор версии при прокрутке. EN: The map must not cover saved plans or conflict choices while scrolling. */.map-wrap{position:relative;height:460px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--k-surface-2)}#plan-map{height:100%;width:100%}.map-caption{position:absolute;bottom:16px;left:16px;right:16px;z-index:2;background:var(--card);border-radius:12px;padding:12px 16px;box-shadow:0 3px 20px var(--k-border);font-size:var(--k-fs-sm);line-height:var(--k-lh-sm)}.saved{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:24px;margin-top:24px}.saved .section-label{margin-top:0}.saved-item{display:flex;gap:10px;border-top:1px solid var(--line);padding:14px 0;align-items:center}.saved-item div{flex:1;min-width:0}.saved-item strong{display:block;overflow-wrap:anywhere}.saved-item small{color:var(--muted);display:block}.saved-item button{padding:8px;min-height:40px}.notice,.error,.warning{border-radius:12px;padding:14px;margin-top:14px;font-size:var(--k-fs-sm);line-height:var(--k-lh-sm);background:var(--warning);color:var(--warn)}.error{background:var(--k-danger-soft);color:var(--danger)}.success{background:var(--tint);color:var(--green);padding:14px;border-radius:12px;margin-top:16px}.result-summary{background:var(--tint);border-radius:12px;padding:20px;margin-top:20px}.result-summary strong{font-size:var(--k-fs-head);line-height:var(--k-lh-head);display:block}.result-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:16px 0}.result-tabs button{padding:8px 12px}.visit{padding:16px 0;border-bottom:1px solid var(--line)}.visit-head{display:flex;gap:12px}.visit-time{font-weight:600;min-width:48px}.visit p{margin:6px 0}.visit .note{margin:4px 0}.visit small{color:var(--muted)}.visit label{margin-top:10px}#conflicts{border:1px solid var(--k-warn);border-radius:12px;padding:14px;margin-top:16px}footer{color:var(--muted);font-size:var(--k-fs-cap);line-height:var(--k-lh-cap);max-width:820px;margin:28px 0}.plan-pin{background:var(--green);border:2px solid var(--k-text-on-accent);color:var(--k-text-on-accent);width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;box-shadow:0 2px 7px var(--k-border)}[hidden]{display:none!important}
@media(max-width:800px){header{height:64px;padding:0 16px}header nav{gap:16px}.brand{font-size:var(--k-fs-title);line-height:var(--k-lh-title)}.brand span{display:none}main{padding:20px 16px}.workspace{display:flex;flex-direction:column;gap:20px}.editor{padding:20px;border-radius:12px}h1{font-size:var(--k-fs-head);line-height:var(--k-lh-head)}.map-wrap{position:relative;top:0;height:300px}.map-side{display:contents}.map-wrap{order:-1}.saved{margin-top:0;padding:20px}.times{grid-template-columns:1fr}input,select,textarea{font-size:var(--k-fs-title-s);line-height:var(--k-lh-title-s)}.times input{font-size:var(--k-fs-title-s);line-height:var(--k-lh-title-s)}.actions{background:var(--card);padding:8px;border:1px solid var(--line);border-radius:12px}.intro{margin-bottom:18px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* RU: Одна шкала текста и доступные цели касания по П1–П4; подписи статусов не уменьшаются. EN: One text scale and reachable touch targets follow P1–P4 without shrinking status labels. */
strong{font-weight:600}small{font-size:var(--k-fs-cap);line-height:var(--k-lh-cap)}@media(pointer:coarse){button,.candidate button,.errand-head button,.saved-item button{min-height:44px}}

/* RU: Значок шаблона остаётся читаемым в узкой карточке и при тёмной теме. EN: Template badges remain legible in narrow cards and dark mode. */
.template-badge{display:inline-block;margin-left:6px;padding:2px 7px;border-radius:6px;background:var(--tint);color:var(--green);font-size:var(--k-fs-cap);line-height:var(--k-lh-cap);font-weight:500;vertical-align:middle}
