@font-face{font-family:Luxia;src:url(/fonts/Luxia-Display.otf) format("opentype");font-weight:400 700;font-display:swap}@font-face{font-family:Euclid Circular A;src:url(/fonts/EuclidCircularA-Regular.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:Euclid Circular A;src:url(/fonts/EuclidCircularA-Medium.ttf) format("truetype");font-weight:500;font-display:swap}@font-face{font-family:Euclid Circular A;src:url(/fonts/EuclidCircularA-SemiBold.ttf) format("truetype");font-weight:600 700;font-display:swap}:root{--velvet:#470054;--velvet-deep:#2f0038;--bg:#f5f1f7;--panel:#ffffff;--panel-2:#f3edf6;--border:#e6dced;--text:#2a1633;--text-dim:#7c6a89;--accent:#470054;--accent-soft:rgba(71,0,84,0.1);--on-accent:#ffffff;--ring:rgba(71,0,84,0.28);--shadow-sm:0 2px 8px rgba(47,0,56,0.1);--shadow-md:0 6px 20px rgba(47,0,56,0.14);--shadow-lg:0 16px 44px rgba(47,0,56,0.2);--chiropractic:#f76e5c;--physiotherapy:#4f8ef7;--tcm:#f2b134;--pharmacy:#3ecf8e;--danger:#d64545}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font-family:Euclid Circular A,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);overscroll-behavior:none;overflow:hidden}h1,h2,h3{font-family:Luxia,Euclid Circular A,Georgia,serif;text-transform:none;letter-spacing:.01em}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}input,select,textarea{font:inherit;color:var(--text);background:#fff;border:1px solid var(--border);border-radius:8px;padding:8px 10px;transition:border-color .16s ease,box-shadow .16s ease}input::placeholder,textarea::placeholder{color:var(--text-dim)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.app{display:flex;flex-direction:column;height:100dvh;overflow:hidden}.topbar{gap:8px;padding:10px 16px;background:linear-gradient(100deg,var(--velvet-deep),var(--velvet));border-bottom:1px solid var(--velvet-deep);box-shadow:var(--shadow-sm);z-index:1001;flex-wrap:wrap}.brandmark,.topbar{display:flex;align-items:center}.brandmark{gap:10px;min-width:0}.brandmark img{height:26px;width:auto;display:block}.brandmark .brandsub{font-family:Luxia,Euclid Circular A,Georgia,serif;font-size:14px;color:rgba(255,255,255,.82);padding-left:10px;border-left:1px solid rgba(255,255,255,.28)}.brandmark .brandsub,.topbar h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar h1{font-size:15px;font-weight:700;min-width:0}.topbar .meta{color:rgba(255,255,255,.72)}.topbar .spacer{flex:1 1}.iconbtn{padding:8px 13px;border-radius:999px;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);color:#fff;font-size:13px;font-weight:500;white-space:nowrap;transition:background .16s ease,border-color .16s ease,transform .16s ease}.iconbtn:hover{background:rgba(255,255,255,.18);transform:translateY(-1px)}.iconbtn.active{background:#fff;border-color:#fff;color:var(--velvet);font-weight:600}.iconbtn.hasbadge{position:relative;overflow:visible}.badge{position:absolute;top:-7px;right:-7px;min-width:19px;height:19px;padding:0 5px;border-radius:999px;background:#e5383b;color:#fff;font-size:11px;font-weight:700;line-height:19px;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;box-shadow:0 0 0 2px var(--velvet);animation:badge-pop .28s cubic-bezier(.22,1,.36,1)}@keyframes badge-pop{0%{transform:scale(0)}to{transform:scale(1)}}.main{position:relative;flex:1 1;min-height:0}.map-container{position:absolute;inset:0}.locate-control a{display:flex;align-items:center;justify-content:center;color:var(--accent);cursor:pointer}.locate-control a svg{width:18px;height:18px}.locate-control a.locating svg{animation:locate-spin .9s linear infinite}@keyframes locate-spin{to{transform:rotate(1turn)}}.mylocation{display:flex;align-items:center;justify-content:center;background:transparent;border:0}.mylocation-dot{position:relative;width:14px;height:14px;border-radius:50%;background:#1a73e8;border:3px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.4)}.mylocation-dot:after{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid rgba(26,115,232,.55);animation:mylocation-pulse 1.8s ease-out infinite}@keyframes mylocation-pulse{0%{transform:scale(1);opacity:.7}to{transform:scale(2.6);opacity:0}}.fualert{background:transparent;border:0}.fualert-dot{justify-content:center;width:16px;height:16px;border-radius:50%;background:#e5383b;color:#fff;font-size:11px;font-weight:800;line-height:1;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.45)}.fualert-dot,.locate-error{display:flex;align-items:center}.locate-error{position:absolute;left:50%;bottom:24px;transform:translateX(-50%);z-index:1200;max-width:90vw;gap:10px;padding:10px 12px;background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-md);font-size:13px;color:var(--text)}.locate-error-x{color:var(--text-dim);font-size:16px;line-height:1;padding:0 2px}.filterbar{position:absolute;top:10px;left:10px;right:10px;z-index:1000;display:flex;flex-direction:column;gap:8px;pointer-events:none}.filterbar>*{pointer-events:auto}.filterbar .searchrow{display:flex;align-items:stretch;gap:8px;width:100%;max-width:460px}.filterbar .search{flex:1 1;min-width:0}.filterbar .search,.pinbtn{box-shadow:var(--shadow-sm)}.pinbtn{flex:none;width:42px;border-radius:10px;background:var(--panel);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;color:var(--velvet);transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease,background .16s ease}.pinbtn:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.pinbtn.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.chiprow{display:flex;gap:6px;flex-wrap:wrap}.chip{padding:6px 12px;border-radius:999px;background:var(--panel);border:1px solid var(--border);font-size:12px;box-shadow:var(--shadow-sm);transition:transform .14s ease,box-shadow .14s ease,border-color .14s ease,background .14s ease}.chip:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.chip.on{border-color:currentColor}.letter{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 4px;border-radius:4px;background:var(--panel-2);border:1px solid var(--border);font-size:10px;font-weight:700;flex:none}.chip .letter{margin-right:6px}.chip.on .letter{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.legend{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:0;background:transparent;border:none;box-shadow:none;align-self:flex-start;max-width:100%;max-height:58vh;overflow-y:auto;text-shadow:0 1px 2px rgba(255,255,255,.9),0 0 2px rgba(255,255,255,.9)}.legend,.legenditem{font-size:11px;color:var(--text-dim)}.legenditem{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;padding:3px 7px 3px 4px;border-radius:999px;border:1px solid transparent;opacity:.5;transition:opacity .15s ease,background .15s ease,border-color .15s ease}.legenditem.on{opacity:1;color:var(--text);border-color:var(--border);background:var(--panel-2)}.legenditem.reset{opacity:1;color:var(--accent);border-color:var(--accent)}.legenditem.on .swatch{border-color:rgba(47,0,56,.35)}.swatch{display:inline-block;width:10px;height:10px;border-radius:50%;border:1px solid rgba(47,0,56,.2);flex:none}.asidebar{flex:none;display:flex;align-items:stretch}.asidebar,.asidepin{position:relative}.asidebadge{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--accent);color:#fff;font-size:10px;font-weight:700;line-height:17px;text-align:center;box-shadow:0 0 0 2px var(--panel)}.asidelist{position:absolute;top:calc(100% + 6px);right:0;z-index:1001;width:260px;max-width:78vw;max-height:46vh;overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-md);padding:6px}.asidehead{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 6px;border-bottom:1px solid var(--border);margin-bottom:4px}.asidetitle{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-dim)}.asideempty{padding:6px 4px}.asideitems{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}.asideitem{display:flex;align-items:center;gap:7px;width:100%;padding:5px 6px;border-radius:7px;text-align:left;font-size:12px;color:var(--text);transition:background .12s ease}.asideitem:hover{background:var(--panel-2)}.asidename{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asidetier{flex:none;font-size:10px;color:var(--text-dim)}.drawer{position:absolute;z-index:1002;background:var(--panel);border-top:1px solid var(--border);box-shadow:var(--shadow-lg);left:0;right:0;bottom:0;max-height:72dvh;border-radius:18px 18px 0 0;display:flex;flex-direction:column;animation:drawer-up .28s cubic-bezier(.22,1,.36,1)}@media (min-width:768px){.drawer{left:auto;top:0;bottom:0;width:400px;max-height:none;border-radius:0;border-left:1px solid var(--border);border-top:none;animation:drawer-in .28s cubic-bezier(.22,1,.36,1)}}.drawer-head{display:flex;align-items:flex-start;gap:10px;padding:14px 16px 10px;border-bottom:1px solid var(--border)}.drawer-head h2{font-size:16px;line-height:1.3}.drawer-head .cat{font-size:12px;color:var(--text-dim);margin-top:2px}.drawer-body{padding:14px 16px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}.field label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em}.statusgrid{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px}.statusbtn{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:8px;background:var(--panel-2);border:1px solid var(--border);font-size:13px;text-align:left;transition:background .14s ease,border-color .14s ease,transform .14s ease}.statusbtn:hover{border-color:var(--accent);transform:translateY(-1px)}.drawersection{border:1px solid var(--border);border-radius:14px;background:var(--panel-2);padding:12px;display:flex;flex-direction:column;gap:10px}.sectiontitle{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--accent);padding-bottom:6px;border-bottom:1px solid var(--border)}.collsection{gap:0}.colhead{display:flex;align-items:center;gap:8px;width:100%;text-align:left;cursor:pointer;transition:color .15s ease}.colhead:hover{color:color-mix(in srgb,var(--accent) 70%,var(--text))}.colhead .colcaret{font-size:10px;line-height:1}.colhead .colheadtitle{flex:1 1}.colcount{text-transform:none;letter-spacing:0;font-size:10px;font-weight:700;color:var(--text-dim);background:var(--panel);border:1px solid var(--border);padding:1px 8px;border-radius:999px}.colbody{display:flex;flex-direction:column;gap:12px;padding-top:12px}.drawersection .savebtn{margin-top:2px}.drawersection>input{width:100%}.wafallback{text-align:center;margin-top:6px}.wahelp{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--panel-2)}.wahelp,.waok{margin-top:8px}.waok{padding:10px 12px;border:1px solid #2eb872;border-radius:8px;background:rgba(46,184,114,.12);color:var(--text)}.pasteembed{display:flex;flex-direction:column;gap:12px}.pasteundo{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:2px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--panel-2)}.plannedlist{margin-bottom:10px}.plannedrow{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:6px 10px;margin-bottom:4px;border-radius:8px;background:var(--panel-2);font-size:13px}.wamessage{min-height:150px;margin:8px 0}.walink{display:block;margin-top:8px;text-decoration:none;background:#25d366;color:#06301a}.visitrow{padding:10px 12px;margin-bottom:8px;border-radius:10px;background:var(--panel);border:1px solid var(--border)}.visitmain,.visitrow{display:flex;align-items:flex-start;gap:10px}.visitmain{flex:1 1;min-width:0;text-align:left;font-size:14px}.visitmain .swatch{margin-top:5px}.visitmain .pickermain{overflow-wrap:anywhere}.visitactions{flex:none;gap:6px}.visitactions,.visitdatelabel{display:flex;flex-direction:column;align-items:flex-end}.visitdatelabel{gap:2px}.visitdatelabel .fieldlabel{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-dim)}.visitdate{padding:4px 6px;font-size:12px;border:1px solid var(--border);border-radius:7px;background:var(--panel);color:var(--text)}.dayhead{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}.dayhead h3{margin-bottom:0}.routebtn{flex:none;display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;border:1px solid var(--accent);color:var(--accent);background:var(--accent-soft);font-size:12px;font-weight:600;text-decoration:none;white-space:nowrap;transition:background .14s ease,color .14s ease}.routebtn:hover{background:var(--velvet);color:#fff;border-color:var(--velvet)}.fuadd{flex-direction:column;margin:6px 0 12px;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--panel-2)}.fuadd,.fuaddrow{display:flex;gap:8px}.fuaddrow{align-items:stretch}.fuaddinput{flex:1 1;min-width:0}.fuaddbtn{flex:none;padding:8px 16px}.fuaddcentre{position:relative}.fuaddcentreinput{width:100%;font-size:13px}.fuchip{display:inline-flex;align-items:center;gap:8px;padding:5px 6px 5px 10px;border-radius:999px;background:var(--panel);border:1px solid var(--border);font-size:13px}.fuaddresults{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:5;margin:0;max-height:260px;overflow-y:auto;box-shadow:var(--shadow-md)}.futable{width:100%;border-collapse:collapse;font-size:13px;margin:4px 0 8px}.futable th{text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim);padding:4px 8px}.futable td,.futable th{border-bottom:1px solid var(--border)}.futable td{padding:8px;vertical-align:top}.futable tbody tr:last-child td{border-bottom:none}.futable td.fucheck,.futable th.fucheck{width:28px;text-align:center;padding-left:4px;padding-right:4px}.fucheck input{width:17px;height:17px;padding:0;cursor:pointer;accent-color:var(--accent)}.futable th.fucentre{width:26%}.fucentre .linkbtn{color:var(--text);text-decoration:none;text-align:left}.fucentre .linkbtn:hover{color:var(--accent);text-decoration:underline}.fudetails{overflow-wrap:anywhere}.futable td.fudays,.futable th.fudays{width:46px;text-align:right;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-dim)}.futable td.fuactions,.futable th.fuactions{width:1%;white-space:nowrap;text-align:right;vertical-align:middle}.fuactions .confirmrow{gap:8px}.fuedit{width:100%;min-width:90px;padding:5px 7px;font-size:13px}.furow.done td{opacity:.5}.furow.done .fudetails{text-decoration:line-through}.furow td{transition:opacity .2s ease}.futable td.fudeadline,.futable th.fudeadline{width:132px;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.fudateinput{width:100%;max-width:130px;padding:4px 6px;font-size:12px;border:1px solid var(--border);border-radius:7px;background:var(--panel);color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.fudateinput:hover{border-color:var(--accent)}.deadlineset{display:inline-flex;align-items:center;gap:4px;color:var(--text)}.deadlineclear{color:var(--text-dim);font-size:15px;line-height:1;padding:0 2px}.deadlineclear:hover{color:var(--danger)}.futable td .empty{color:var(--text-dim)}.futable td.fudays.duesoon{color:var(--accent);font-weight:600}.futable td.fudays.overdue{color:var(--danger);font-weight:600}.furow[draggable=true]{cursor:-webkit-grab;cursor:grab}.furow.dragging{opacity:.5}.fucal-head-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:14px 0 6px}.fucal-head-row .sectiontitle{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text)}.fucal{border:1.5px solid color-mix(in srgb,var(--accent) 32%,var(--border));border-radius:10px;overflow:hidden;background:color-mix(in srgb,var(--accent) 24%,var(--border))}.fucal-dow-row{background:var(--accent)}.fucal-dow-row,.fucal-grid{display:grid;grid-template-columns:repeat(7,1fr)}.fucal-grid{grid-gap:1px;gap:1px;padding-top:1px}.fucal-dow{padding:4px 0;text-align:center;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#fff}.fucal-cell{position:relative;min-height:26px;padding:2px 5px;background:var(--panel-2);font-size:11px;color:var(--text-dim);transition:background .12s ease}.fucal-cell.curmonth{background:var(--panel);color:var(--text);font-weight:600}.fucal-cell.weekend{background:color-mix(in srgb,var(--accent) 8%,var(--panel-2))}.fucal-cell.curmonth.weekend{background:color-mix(in srgb,var(--accent) 9%,var(--panel))}.fucal-cell.today{box-shadow:inset 0 0 0 2px var(--accent);background:var(--accent-soft)}.fucal-cell.today .fucal-day{color:var(--accent);font-weight:800}.fucal-cell.over{background:var(--accent-soft)}.fucal-cell.has{background:color-mix(in srgb,var(--accent) 7%,var(--panel))}.fucal-cell.curmonth.has{background:color-mix(in srgb,var(--accent) 9%,var(--panel))}.fucal-cell.inevent{background:color-mix(in srgb,#e0871e 16%,var(--panel))}.fucal-cell.inevent.curmonth{background:color-mix(in srgb,#e0871e 20%,var(--panel))}.fucal-day{display:block;line-height:1.25}.fucal-marks{position:absolute;right:3px;bottom:3px;display:flex;gap:2px}.cmark{display:inline-block;width:7px;height:7px;border-radius:50%;flex:none}.cmark.followup{background:var(--accent)}.cmark.task{background:#2f6df6}.cmark.event{background:#e0871e}.cmark.visit{background:#1f9e57}.callegend{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 0 6px}.clegend{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:var(--text-dim)}.eventcard{border:1px solid var(--border);border-radius:10px;background:var(--panel);margin-bottom:10px;overflow:hidden}.eventhead{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--panel-2);border-bottom:1px solid var(--border)}.eventname{flex:1 1;min-width:0;font-size:14px;font-weight:600;padding:5px 8px;border:1px solid transparent;background:transparent;border-radius:7px}.eventname:hover{border-color:var(--border);background:var(--panel)}.eventname:focus{border-color:var(--accent);background:var(--panel)}.eventdates{display:flex;align-items:flex-end;flex-wrap:wrap;gap:8px;padding:8px 10px;border-bottom:1px solid var(--border)}.eventdatefield{display:flex;flex-direction:column;gap:2px}.eventdatefield .fieldlabel{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-dim)}.eventdateto{padding-bottom:5px;color:var(--text-dim)}.eventdateto,.eventdrag{align-self:center;font-size:12px}.eventdrag{display:inline-flex;align-items:center;gap:5px;margin-left:auto;padding:4px 9px;border-radius:999px;border:1px solid var(--border);background:var(--panel);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;cursor:-webkit-grab;cursor:grab;white-space:nowrap}.eventdrag.unset{color:var(--text-dim);border-style:dashed}.eventdrag.dragging{opacity:.5}.eventtasks{padding:8px 10px;display:flex;flex-direction:column;gap:4px}.evttaskcount{margin-bottom:2px}.evtask{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:7px;font-size:13px;cursor:-webkit-grab;cursor:grab}.evtask:hover{background:var(--panel-2)}.evtask.dragging{opacity:.5}.evtask input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);flex:none}.evtask.done .evtask-text{text-decoration:line-through;color:var(--text-dim)}.evtask-text{flex:1 1;min-width:0;overflow-wrap:anywhere}.evtask-due{flex:none;display:inline-flex;align-items:center;gap:3px;font-size:11px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-dim)}.evtask-due.duesoon{color:var(--accent);font-weight:600}.evtask-due.overdue{color:var(--danger);font-weight:600}.evtask-due.empty{font-style:italic;opacity:.7}.evtask-count{flex:none;font-size:11px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-dim)}.evtask-count.duesoon{color:var(--accent);font-weight:600}.evtask-count.overdue{color:var(--danger);font-weight:600}.evtask-dateinput{flex:none;width:128px}.eventaddrow{display:flex;gap:8px;margin-top:4px}.centrelogs{margin-top:12px}.centrelogs .logentry{background:var(--panel-2);margin-bottom:6px;font-size:13px}.statusbtn.on{border-color:var(--accent);background:var(--accent-soft)}.tagrow{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.tag{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:var(--panel-2);border:1px solid var(--border);font-size:12px}.tag button{color:var(--text-dim);font-size:14px;line-height:1}textarea.note{width:100%;min-height:70px;resize:vertical}.savebtn{padding:10px;border-radius:10px;background:var(--accent);color:var(--on-accent);font-weight:600;text-align:center;transition:transform .14s ease,box-shadow .14s ease,filter .14s ease}.savebtn:hover:not(:disabled){filter:brightness(1.12);box-shadow:var(--shadow-md);transform:translateY(-1px)}.savebtn:active:not(:disabled){transform:translateY(0)}.savebtn:disabled{opacity:.45}.meta{font-size:12px;color:var(--text-dim)}.meta a{color:var(--accent)}.logs{position:absolute;inset:0;z-index:1003;background:var(--bg);display:flex;flex-direction:column;animation:panel-fade .24s ease}.logs-head{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--panel)}.logs-head h2{font-size:15px;flex:1 1}.logs-body{flex:1 1;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:14px}.embedframe{flex:1 1;width:100%;border:0;background:var(--bg)}.logform{flex-direction:column;padding:12px 16px;border-top:1px solid var(--border);background:var(--panel)}.logform,.logform .row{display:flex;gap:8px}.logform textarea{flex:1 1;min-height:44px;resize:none}.logday h3{font-size:13px;color:var(--text-dim);margin-bottom:8px}.logentry{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:8px;font-size:14px}.logentry,.prewrap{white-space:pre-wrap;overflow-wrap:anywhere}.logentry .centre{font-size:12px;color:var(--accent);margin-top:4px}.contactcard{margin-top:8px;display:flex;flex-direction:column;gap:3px}.contactrow{display:flex;gap:8px;font-size:12px}.contactrow dt{color:var(--text-dim);min-width:92px;flex:none}.contactrow dd{overflow-wrap:anywhere}.contactrow .missing{color:var(--danger)}.contactcard.editing{gap:6px}.contactcard.editing .contactrow{align-items:center}.contactcard.editing label{color:var(--text-dim);min-width:92px;flex:none}.contactcard.editing input{flex:1 1;min-width:0;padding:5px 8px;font-size:12px}.contactactions{display:flex;gap:12px;margin-top:4px}.phoneflag{margin-left:8px;font-size:11px}.phoneflag.restore{display:block;margin:4px 0 0}.personstyles{display:flex;flex-direction:column;gap:6px;margin:2px 0 4px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--panel)}.personstyle{display:flex;align-items:center;justify-content:space-between;gap:10px}.personstyle .personname{min-width:0;overflow-wrap:anywhere;font-size:13px}.stylecontrols{display:flex;align-items:center;gap:5px;flex:none}.swatchbtn{width:18px;height:18px;border-radius:50%;border:2px solid var(--border);padding:0;cursor:pointer}.swatchbtn.plain{background:var(--panel-2)}.swatchbtn.blue{background:#2f83d6}.swatchbtn.green{background:#1a8a50}.swatchbtn.on{border-color:var(--velvet);box-shadow:0 0 0 2px var(--accent-soft)}.logentry .contactcard{margin:4px 0 8px;padding:8px 10px;border-radius:8px;background:var(--panel-2);white-space:normal}.logentry-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:4px}.linkbtn{font-size:12px;color:var(--text-dim);text-decoration:underline;flex:none}.linkbtn.danger{color:var(--danger)}.confirmrow{display:inline-flex;gap:10px}.picker{margin:6px 0 10px;padding:8px 10px;border-radius:8px;background:var(--panel-2);border:1px solid var(--border);white-space:normal}.picker input{width:100%;margin-bottom:6px}.pickeritem{display:flex;align-items:flex-start;gap:8px;width:100%;text-align:left;padding:6px 8px;border-radius:6px;font-size:13px}.pickeritem:hover{background:var(--panel)}.pickeritem.on{border:1px solid var(--accent)}.pickermain{display:flex;flex-direction:column;min-width:0}.conflict{margin-top:8px;padding:8px;border:1px solid var(--danger);border-radius:8px}.conflictrow{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}.choicebtn{display:flex;flex-direction:column;gap:2px;flex:1 1 140px;padding:6px 10px;border-radius:8px;background:var(--panel-2);border:1px solid var(--border);font-size:13px;text-align:left;overflow-wrap:anywhere}.choicebtn.on{border-color:var(--accent);background:var(--accent-soft)}.pastebox{min-height:160px}.matchrow{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;margin-bottom:6px;border-radius:10px;background:var(--panel);border:1px solid var(--border);font-size:13px}.matchrow.skipped{opacity:.45}.blockhead{display:flex;align-items:center;gap:8px;font-weight:600;margin-bottom:4px}.blockfields{display:grid;grid-template-columns:auto 1fr;grid-gap:2px 10px;gap:2px 10px;margin-top:6px}.blockfields dt{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.blockfields dd{font-size:13px;min-width:0;overflow-wrap:anywhere}.matchmain{flex:1 1;min-width:0}.checkrow{display:flex;align-items:center;gap:8px;margin:12px 0;font-size:13px;color:var(--text-dim)}.checkrow input{width:16px;height:16px;padding:0}.drawersection .row{display:flex;gap:8px;margin-top:8px}.dangerbtn{padding:8px 12px;border-radius:8px;background:rgba(229,83,75,.15);border:1px solid var(--danger);color:var(--danger);font-size:13px}.statgrid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:8px;gap:8px;margin-bottom:4px}@media (min-width:768px){.statgrid{grid-template-columns:repeat(3,1fr)}.logs-body{max-width:720px;width:100%;margin:0 auto}}@media (min-width:1024px){.logs{left:auto;width:min(760px,62vw);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);animation:panel-in .28s cubic-bezier(.22,1,.36,1)}.logs.dirpanel,.logs.logpanel,.logs.plannedpanel,.logs.progresspanel{left:0;width:auto;border-left:none;box-shadow:none}.dirpanel .logs-body,.logpanel .logs-body,.plannedpanel .logs-body,.progresspanel .logs-body{max-width:none;margin:0}.drawer{width:440px}}.stat{display:flex;flex-direction:column;gap:2px;padding:12px;border-radius:10px;background:var(--panel-2);border:1px solid var(--border)}.rangebar .chip.on{border-color:var(--accent);color:var(--accent)}.customrange{display:flex;align-items:center;gap:8px}.dirpanel .logs-body .colpicker{animation:none;opacity:1}.colpicker{margin:6px 0 10px}.colpicker-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.colgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:6px 18px;gap:6px 18px;margin-top:4px}.colgrid .checkrow{margin:0;flex:none;padding:3px 0}.statnum{font-size:24px;font-weight:700;line-height:1.1}.statlabel{font-size:11px;color:var(--text-dim)}.statsub{font-size:11px;color:var(--accent)}.barrow{gap:10px}.barlabel,.barrow{display:flex;align-items:center}.barlabel{gap:6px;width:128px;flex:none;font-size:12px;color:var(--text-dim)}.bartrack{flex:1 1;height:12px;border-radius:4px;background:rgba(47,0,56,.08);overflow:hidden}.barfill{display:block;height:100%;border-radius:0 4px 4px 0;min-width:0}.barfill.accentfill{background:var(--accent)}.barcount{min-width:26px;text-align:right;font-size:13px;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chart{display:flex;align-items:flex-end;gap:4px;height:110px;padding-top:4px}.chartcol{flex:1 1;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:3px}.chartbar{display:block;width:100%;max-width:22px;border-radius:4px 4px 0 0;background:var(--accent)}.chartval{color:var(--text)}.chartday,.chartval{font-size:10px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chartday{color:var(--text-dim)}.meter{height:12px;border-radius:6px;background:var(--accent-soft);overflow:hidden}.meterfill{display:block;height:100%;border-radius:0 6px 6px 0;background:var(--accent)}.trainrow{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border-radius:8px;background:var(--panel-2)}.trainmain{display:flex;flex-direction:column;gap:2px;flex:1 1;min-width:0;font-size:13px}.trainhead{font-weight:600;display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.trainkind{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:1px 7px;border-radius:999px;color:#fff}.trainkind.training{background:var(--accent)}.trainkind.event{background:#e0871e}.trainform{flex-direction:column;margin-top:4px;padding-top:10px;border-top:1px solid var(--border)}.trainform,.trainform .row{display:flex;gap:8px}.trainform .row>*{flex:1 1;min-width:0}.trainform .attendees{flex:0 0 92px}.meta.error{color:var(--danger)}.sectionhead{font-size:13px;color:var(--text-dim);margin:16px 0 8px}.breakdown{border:1px solid var(--border);border-radius:10px;overflow:hidden}.breakrow{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--panel);font-size:13px}.breakrow+.breakrow{border-top:1px solid var(--border)}.breaklabel{flex:1 1}.breakcount{font-weight:700}.partnerrow{display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;padding:10px 12px;margin-bottom:8px;border-radius:10px;background:var(--panel);border:1px solid var(--border);transition:border-color .14s ease,box-shadow .14s ease,transform .14s ease}.partnerrow:hover{border-color:var(--accent);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.partnerrow .swatch{margin-top:4px}.partnermain{display:flex;flex-direction:column;gap:2px;min-width:0}.partnername{font-size:14px}.gate{height:100dvh;display:flex;align-items:center;justify-content:center;padding:20px;background:radial-gradient(1200px 600px at 50% -10%,rgba(71,0,84,.12),transparent 60%),var(--bg)}.gate form{width:100%;max-width:360px;background:var(--panel);border:1px solid var(--border);border-radius:18px;padding:30px 26px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow-lg);animation:gate-in .4s cubic-bezier(.22,1,.36,1)}.gate .gatelogo{width:176px;max-width:70%;height:auto;margin:0 auto 6px;display:block}.gate h1{font-size:19px;text-align:center}.gate p{color:var(--text-dim)}.gate .error,.gate p{font-size:13px;text-align:center}.gate .error{color:var(--danger)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:var(--panel);color:var(--text)}.fieldgrid{display:grid;grid-template-columns:1fr 1fr;grid-gap:4px 14px;gap:4px 14px;margin-top:10px}.fieldgrid .fieldwide{grid-column:1/-1}@media (max-width:640px){.fieldgrid{grid-template-columns:1fr}}.dirsearch{width:100%;margin:10px 0}.dirhint{margin-top:10px}.dirrowactions{display:flex;align-items:center;gap:10px;margin-bottom:8px}.tierbadge{display:inline-block;margin-left:8px;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;color:#fff;vertical-align:middle}.dirtablewrap{overflow-x:auto;flex:none;margin-top:4px;border:1px solid var(--border);border-radius:8px}.dirtable{border-collapse:collapse;font-size:12.5px;white-space:nowrap;min-width:100%}.dirtable th{position:-webkit-sticky;position:sticky;top:0;z-index:1;background:var(--panel);color:var(--text-dim);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;text-align:left;padding:8px 10px}.dirtable td,.dirtable th{border-bottom:1px solid var(--border)}.dirtable td{padding:7px 10px;vertical-align:top}.dirtable tbody tr{cursor:pointer}.dirtable tbody tr:hover td{background:var(--accent-soft)}.dirtable tbody tr:last-child td{border-bottom:none}.dirtable .cellbrand{max-width:240px;overflow:hidden;text-overflow:ellipsis;font-weight:600}.dirtable .cellwide{max-width:220px;overflow:hidden;text-overflow:ellipsis}.dirtable .cellmid{max-width:160px;overflow:hidden;text-overflow:ellipsis}.statuspill{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;color:#0f1420}.tierbadge-cell{margin-left:0}.dirtable th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.dirtable th.sortable:hover{color:var(--text)}.dirtable th .sortcaret{margin-left:5px;font-size:9px;opacity:.35}.dirtable th.sortable:hover .sortcaret{opacity:.7}.dirtable th.sorted .sortcaret{opacity:1;color:var(--accent)}.pastebox{min-height:220px;width:100%;font-family:ui-monospace,monospace;font-size:12.5px}.pastepreview{border:1px solid var(--border);border-radius:8px;overflow:hidden}.pasterow{display:grid;grid-template-columns:180px 1fr;grid-gap:10px;gap:10px;padding:6px 10px;font-size:13px;border-bottom:1px solid var(--border)}.pasterow:last-child{border-bottom:none}.pastelabel{color:var(--text-dim);font-size:12px}@media (max-width:640px){.pasterow{grid-template-columns:1fr;gap:2px}}@keyframes panel-fade{0%{opacity:0}to{opacity:1}}@keyframes panel-in{0%{opacity:0;transform:translateX(24px)}to{opacity:1;transform:translateX(0)}}@keyframes drawer-up{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@keyframes drawer-in{0%{opacity:0;transform:translateX(28px)}to{opacity:1;transform:translateX(0)}}@keyframes gate-in{0%{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.drawer-body>*,.logs-body>*,.statgrid .stat{animation:rise-in .32s ease both}.statgrid .stat:nth-child(2){animation-delay:.04s}.statgrid .stat:nth-child(3){animation-delay:.08s}.statgrid .stat:nth-child(4){animation-delay:.12s}.statgrid .stat:nth-child(5){animation-delay:.16s}.statgrid .stat:nth-child(6){animation-delay:.2s}.drawer-body>:nth-child(2){animation-delay:.05s}.drawer-body>:nth-child(3){animation-delay:.1s}.drawer-body>:nth-child(4){animation-delay:.15s}.barfill,.meterfill{transition:width .5s cubic-bezier(.22,1,.36,1)}.legenditem,.linkbtn,.pickeritem,.statuspill,.tierbadge{transition:color .14s ease,background .14s ease,opacity .14s ease,border-color .14s ease}.logmonthbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;margin:4px 0 2px;padding:12px 16px;border-radius:12px;background:linear-gradient(100deg,var(--velvet-deep),var(--velvet));color:#fff;box-shadow:var(--shadow-md)}.logmonth{font-size:22px;font-weight:700;color:#fff;line-height:1.1}.logpick{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.logpick select{padding:6px 10px;background:rgba(255,255,255,.95);border-color:transparent}.logpick .meta{color:rgba(255,255,255,.85)}.logempty{padding:18px;border:1px dashed var(--border)}.logbatchbar,.logempty{border-radius:12px;background:var(--panel)}.logbatchbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px 14px;margin:8px 0 2px;padding:10px 14px;border:1px solid rgba(71,0,84,.22);box-shadow:var(--shadow-sm);animation:logexpand-in .16s ease}.logbatchbar .batchcount{font-weight:700;color:var(--velvet)}.logbatchbar .batchmove{display:flex;align-items:center;gap:8px}.logbatchbar .batchmove input{padding:6px 8px}.logbatchbar .linkbtn{font-size:13px}.logbatchbar .batchclear{margin-left:auto}.logtablewrap{margin-top:6px}.logcolhead{display:flex;gap:12px;position:-webkit-sticky;position:sticky;top:0;z-index:2;padding:2px 0;background:var(--bg)}.logbadge-spacer{width:84px;flex:none}.logtablewrap .logday{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px}.logbadge{width:84px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:10px 6px 12px;border-radius:12px;background:linear-gradient(160deg,var(--accent-soft),rgba(71,0,84,.02));border:1px solid rgba(71,0,84,.16);box-shadow:var(--shadow-sm)}.logbadge .dnum{font-family:Luxia,Euclid Circular A,Georgia,serif;font-size:32px;font-weight:700;line-height:1;color:var(--velvet)}.logbadge .dweek{margin-top:4px;font-size:11px;letter-spacing:.03em;color:var(--text-dim)}.logcols{flex:1 1;min-width:0}.logtable{width:100%;table-layout:fixed;border-collapse:collapse;font-size:12.5px;background:var(--panel);border:1px solid rgba(71,0,84,.16);border-radius:12px;overflow:hidden;box-shadow:var(--shadow-sm)}.logcolhead .logtable{box-shadow:none}.logtable thead th{text-align:left;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--velvet);padding:9px 12px}.logtable td{padding:9px 12px;border-top:1px solid var(--border);vertical-align:top;overflow-wrap:anywhere}.logcols .logtable tbody:first-child .logrow:first-child td{border-top:none}.logrow{cursor:pointer;transition:background .14s ease}.logrow.hasfu td{background:rgba(242,201,76,.2)}.logrow.selected td{background:rgba(71,0,84,.08)}.logrow:hover td{background:rgba(71,0,84,.06)}.logrow.open td{background:var(--accent-soft)}.logtable td.logcheck,.logtable th.logcheck{text-align:center;padding-left:6px;padding-right:6px}.logtable td.logcheck input,.logtable th.logcheck input{cursor:pointer;accent-color:var(--accent)}.logtext.fuhighlight{background:rgba(242,201,76,.35);border-radius:8px;padding:10px 12px;box-shadow:inset 3px 0 0 #e0a92a}.logtable .caret{display:inline-block;width:12px;margin-right:5px;color:var(--accent)}.logtable td.logcentre{font-weight:600}.logtable td.logphone{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.logtable .empty{color:var(--text-dim)}.logexpand>td{padding:0;background:var(--panel-2);border-left:3px solid var(--velvet)}.logexpandinner{display:flex;flex-direction:column;gap:12px;padding:14px 16px;animation:logexpand-in .18s ease}.logexpandinner .logtext{font-size:14px;line-height:1.5}.logtextblock{align-items:flex-start;gap:6px}.logtextblock,.logtextedit{display:flex;flex-direction:column}.logtextedit{gap:8px}.logtextedit textarea{width:100%;min-height:90px;font-size:14px;line-height:1.5}@keyframes logexpand-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.logclassify{border-top:1px solid var(--border);padding-top:10px;display:flex;flex-direction:column;gap:10px}.logkinds{display:flex;flex-wrap:wrap;gap:8px 18px}.kindtoggle{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--text);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.kindtoggle input{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.kindtoggle.on{color:var(--accent)}.logfuadd{display:flex;gap:8px}.logfuinput{flex:1 1;min-width:0;padding:7px 9px;font-size:13px}.trainfields{display:grid;grid-template-columns:2fr 1fr;grid-gap:10px;gap:10px;padding:10px 12px;border-radius:8px;background:color-mix(in srgb,var(--accent) 6%,var(--panel));border:1px solid color-mix(in srgb,var(--accent) 18%,var(--border))}.trainfield{display:flex;flex-direction:column;gap:4px}.trainfield .fieldlabel{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-dim)}.trainfield input{width:100%;padding:6px 8px;font-size:13px}.traintag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:10px;background:var(--accent);color:#fff;font-size:10px;font-weight:700;letter-spacing:.02em;vertical-align:middle}.traintag.eventtag{background:#e0871e}.logkindfilter{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:2px 0 4px}.logkindfilter .fieldlabel{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--text-dim);margin-right:2px}.kindchip{padding:4px 12px;border-radius:999px;background:var(--panel);border:1px solid var(--border);font-size:12px;color:var(--text-dim);opacity:.7;transition:opacity .15s ease,border-color .15s ease,color .15s ease,background .15s ease}.kindchip.on{opacity:1;color:var(--text);border-color:var(--accent);background:var(--accent-soft)}@media (max-width:640px){.trainfields{grid-template-columns:1fr}}@media (max-width:900px){.logtablewrap{overflow-x:auto}.logcolhead,.logtablewrap .logday{min-width:660px}.logbadge,.logbadge-spacer{width:68px}.logbadge .dnum{font-size:26px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;animation-delay:0s!important;transition-duration:.001ms!important}}