:root{--brand-cream:#fdf6ec;--brand-cream-deep:#f6e9d9;--brand-brown:#4a2c21;--brand-brown-soft:#6b4435;--brand-rose:#a8706a;--brand-rose-light:#c99a94;--brand-line:#e3d2bf;--text:#3a2a22;--text-muted:#7a665c;--white:#fffdfa;--good:#4b7b44;--good-bg:#eef5ec;--info:#3f6480;--info-bg:#ebf1f6;--warn:#9a6b22;--warn-bg:#fbf2e3;--bad:#a33a26;--bad-bg:#fbeeec;--radius:14px;--radius-lg:24px;--shadow-sm:0 2px 8px #4a2c2112;--shadow-md:0 8px 28px #4a2c211a;--shadow-lg:0 24px 60px #4a2c212e;--sidebar:248px;color:var(--text);background-color:var(--brand-cream);font-family:Nunito,Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{background:var(--brand-cream);-webkit-font-smoothing:antialiased;min-height:100vh;margin:0;line-height:1.6}h1,h2,h3,h4{color:var(--brand-brown);margin:0 0 .4em;font-family:Georgia,Times New Roman,serif;line-height:1.2}h1{font-size:1.9rem}h2{font-size:1.35rem}h3{font-size:1.1rem}h4{font-size:.95rem}p{margin:0 0 .9rem}a{color:var(--brand-rose);text-decoration:none}a:hover{text-decoration:underline}img{max-width:100%;display:block}.shell{grid-template-columns:var(--sidebar) 1fr;min-height:100vh;display:grid}.sidebar{background:var(--brand-brown);color:var(--brand-cream);flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar__brand{border-bottom:1px solid #fdf6ec24;align-items:center;gap:.7rem;padding:1.1rem 1.1rem 1rem;display:flex}.sidebar__brand img{object-fit:cover;border-radius:50%;flex:none;width:42px;height:42px}.sidebar__brand strong{font-family:Georgia,serif;font-size:.95rem;line-height:1.2;display:block}.sidebar__brand span{color:#d8c4b4;letter-spacing:.04em;text-transform:uppercase;font-size:.72rem}.sidebar__nav{flex-direction:column;flex:1;gap:.15rem;padding:.9rem .7rem;display:flex}.sidebar__nav a{color:#eadcce;border-radius:10px;align-items:center;gap:.65rem;padding:.55rem .75rem;font-size:.93rem;font-weight:600;display:flex}.sidebar__nav a:hover{background:#fdf6ec1a;text-decoration:none}.sidebar__nav a.active{background:var(--brand-rose);color:var(--white)}.sidebar__nav .icon{text-align:center;width:1.3rem;font-size:1rem}.sidebar__count{background:var(--brand-rose);color:var(--white);text-align:center;border-radius:999px;min-width:1.3rem;margin-left:auto;padding:.05rem .45rem;font-size:.72rem;font-weight:800}.sidebar__nav a.active .sidebar__count{background:#ffffff40}.sidebar__group{text-transform:uppercase;letter-spacing:.1em;color:#b59b8a;padding:.9rem .75rem .3rem;font-size:.68rem;font-weight:800}.sidebar__foot{color:#d8c4b4;border-top:1px solid #fdf6ec24;padding:.85rem 1.1rem;font-size:.8rem}.sidebar__user{align-items:center;gap:.6rem;margin-bottom:.55rem;display:flex}.sidebar__user img,.avatar{object-fit:cover;background:var(--brand-rose-light);border-radius:50%;width:32px;height:32px}.sidebar__user strong{color:var(--brand-cream);font-size:.85rem;line-height:1.2;display:block}.linkish{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.main{flex-direction:column;min-width:0;display:flex}.topbar{background:var(--brand-cream);border-bottom:1px solid var(--brand-line);z-index:20;flex-wrap:wrap;align-items:center;gap:1rem;padding:1rem 1.6rem;display:flex;position:sticky;top:0}.topbar h1{margin:0;font-size:1.5rem}.topbar__sub{color:var(--text-muted);margin:0;font-size:.88rem}.topbar__actions{flex-wrap:wrap;align-items:center;gap:.6rem;margin-left:auto;display:flex}.content{flex:1;width:100%;max-width:1300px;padding:1.6rem}.burger{border:2px solid var(--brand-line);cursor:pointer;color:var(--brand-brown);background:0 0;border-radius:10px;padding:.3rem .6rem;font-size:1.1rem;display:none}@media (width<=900px){.shell{grid-template-columns:1fr}.sidebar{width:var(--sidebar);z-index:60;transition:transform .2s;position:fixed;inset:0 auto 0 0;transform:translate(-100%)}.sidebar--open{box-shadow:var(--shadow-lg);transform:translate(0)}.burger{display:block}.scrim{z-index:55;background:#3a2a2273;position:fixed;inset:0}.content{padding:1.1rem}}.btn{cursor:pointer;border:2px solid #0000;border-radius:999px;align-items:center;gap:.4rem;padding:.55rem 1.1rem;font-family:inherit;font-size:.92rem;font-weight:700;transition:transform .12s,background .12s,color .12s;display:inline-flex}.btn:hover:not(:disabled){text-decoration:none;transform:translateY(-1px)}.btn--primary{background:var(--brand-rose);color:var(--white)}.btn--primary:hover:not(:disabled){background:#96605a}.btn--ghost{border-color:var(--brand-line);color:var(--brand-brown);background:var(--white)}.btn--ghost:hover:not(:disabled){background:var(--brand-cream-deep)}.btn--danger{color:var(--bad);background:var(--white);border-color:#e0bdb5}.btn--danger:hover:not(:disabled){background:var(--bad-bg)}.btn--small{padding:.3rem .75rem;font-size:.82rem}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-row{flex-wrap:wrap;gap:.6rem;display:flex}.card{background:var(--white);border:1px solid var(--brand-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.3rem}.card--flush{padding:0;overflow:hidden}.card__head{border-bottom:1px solid var(--brand-line);background:var(--brand-cream);align-items:center;gap:.75rem;padding:1rem 1.3rem;display:flex}.card__head h2,.card__head h3{margin:0}.card__head .btn-row{margin-left:auto}.grid{gap:1.1rem;display:grid}.grid--stats{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.grid--2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.grid--3{grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}.stat{background:var(--white);border:1px solid var(--brand-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:1.1rem 1.25rem}.stat__label{text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted);margin:0 0 .3rem;font-size:.75rem;font-weight:800}.stat__value{color:var(--brand-brown);font-family:Georgia,serif;font-size:2rem;line-height:1}.stat__hint{color:var(--text-muted);margin:.35rem 0 0;font-size:.82rem}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.92rem}th{text-align:left;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);border-bottom:1px solid var(--brand-line);white-space:nowrap;background:var(--brand-cream);padding:.7rem 1rem;font-size:.73rem;font-weight:800}td{border-bottom:1px solid var(--brand-line);vertical-align:middle;padding:.7rem 1rem}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--brand-cream)}.row-click{cursor:pointer}td .muted,.muted{color:var(--text-muted)}.nowrap{white-space:nowrap}.num{font-variant-numeric:tabular-nums;text-align:right}.badge{letter-spacing:.02em;white-space:nowrap;border:1px solid #0000;border-radius:999px;padding:.12rem .6rem;font-size:.76rem;font-weight:800;display:inline-block}.badge--muted{background:var(--brand-cream-deep);color:var(--brand-brown-soft);border-color:var(--brand-line)}.badge--good{background:var(--good-bg);color:var(--good);border-color:#c3dcbb}.badge--info{background:var(--info-bg);color:var(--info);border-color:#c5d6e2}.badge--warn{background:var(--warn-bg);color:var(--warn);border-color:#e7d2ac}.badge--bad{background:var(--bad-bg);color:var(--bad);border-color:#e4c0ba}.pill-list{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.pill-list li{background:var(--brand-cream-deep);border:1px solid var(--brand-line);color:var(--brand-brown-soft);border-radius:999px;padding:.15rem .7rem;font-size:.82rem}.empty{text-align:center;color:var(--text-muted);padding:2.5rem 1.5rem}.empty__icon{margin-bottom:.4rem;font-size:2rem}.notice{background:var(--brand-cream-deep);border-left:4px solid var(--brand-rose);border-radius:0 var(--radius) var(--radius) 0;color:var(--brand-brown-soft);padding:.9rem 1.1rem;font-size:.92rem}.notice p:last-child{margin-bottom:0}.alert{background:var(--good-bg);color:var(--good);border-radius:var(--radius);border:1px solid #c3dcbb;margin-bottom:1rem;padding:.8rem 1.1rem;font-size:.92rem}.alert--error{background:var(--bad-bg);color:var(--bad);border-color:#e4c0ba}.field{margin-bottom:.9rem;display:block}.field>span{color:var(--brand-brown);margin-bottom:.25rem;font-size:.85rem;font-weight:700;display:block}.field input,.field textarea,.field select{border:1px solid var(--brand-line);border-radius:var(--radius);background:var(--white);width:100%;font:inherit;color:var(--text);padding:.55rem .8rem;font-size:.93rem}.field input:focus,.field textarea:focus,.field select:focus{outline:2px solid var(--brand-rose-light);outline-offset:1px;border-color:var(--brand-rose)}.field textarea{resize:vertical;min-height:90px}.field__error{color:var(--bad);margin-top:.25rem;font-size:.82rem;display:block}.field__hint{color:var(--text-muted);margin-top:.25rem;font-size:.8rem;display:block}.field input[aria-invalid=true],.field textarea[aria-invalid=true],.field select[aria-invalid=true]{border-color:#c9796a}.field-row{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.9rem;display:grid}.secret{align-items:stretch;gap:.4rem;display:flex}.secret input{letter-spacing:.08em;font-family:SFMono-Regular,Consolas,monospace}.check{cursor:pointer;align-items:flex-start;gap:.5rem;margin-bottom:.45rem;font-size:.9rem;display:flex}.check input{width:auto;accent-color:var(--brand-rose);margin:.25rem 0 0}.chips{flex-wrap:wrap;gap:.45rem;display:flex}.chip{border:1px solid var(--brand-line);background:var(--white);font:inherit;color:var(--brand-brown-soft);cursor:pointer;border-radius:999px;padding:.3rem .85rem;font-size:.85rem;font-weight:700}.chip--on{background:var(--brand-brown);border-color:var(--brand-brown);color:var(--brand-cream)}.search{min-width:200px;position:relative}.search input{border:1px solid var(--brand-line);background:var(--white);width:100%;font:inherit;border-radius:999px;padding:.45rem .8rem .45rem 2rem;font-size:.9rem}.search:before{content:"🔍";opacity:.6;font-size:.8rem;position:absolute;top:50%;left:.65rem;transform:translateY(-50%)}.filters{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.drawer-scrim{z-index:100;background:#3a2a2273;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer{background:var(--brand-cream);width:min(560px,100%);height:100%;box-shadow:var(--shadow-lg);flex-direction:column;display:flex;overflow-y:auto}.drawer--wide{width:min(760px,100%)}.drawer__head{border-bottom:1px solid var(--brand-line);background:var(--white);z-index:2;align-items:center;gap:1rem;padding:1.1rem 1.4rem;display:flex;position:sticky;top:0}.drawer__head h2{margin:0}.drawer__close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;margin-left:auto;padding:.2rem .4rem;font-size:1.4rem;line-height:1}.drawer__body{flex:1;padding:1.3rem 1.4rem}.drawer__foot{border-top:1px solid var(--brand-line);background:var(--white);gap:.6rem;padding:1rem 1.4rem;display:flex;position:sticky;bottom:0}.drawer__foot .spacer{flex:1}.signin{background:linear-gradient(180deg, var(--brand-cream) 0%, var(--brand-cream-deep) 100%);place-items:center;min-height:100vh;padding:1.5rem;display:grid}.signin__card{background:var(--white);border:1px solid var(--brand-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);text-align:center;width:100%;max-width:420px;padding:2.2rem 2rem}.signin__card img{width:110px;height:110px;box-shadow:var(--shadow-sm);border-radius:50%;margin:0 auto 1.1rem}.signin__card h1{margin-bottom:.2rem;font-size:1.5rem}.signin__card p{color:var(--text-muted);font-size:.93rem}.signin__button{justify-content:center;min-height:44px;margin:1.4rem 0 .5rem;display:flex}.round{gap:.9rem;display:grid}.visit{background:var(--white);border:1px solid var(--brand-line);border-left:5px solid var(--brand-line);border-radius:var(--radius);box-shadow:var(--shadow-sm);gap:.5rem;padding:.9rem 1.1rem;display:grid}.visit--done{border-left-color:var(--good);background:#fcfdfb}.visit--missed{border-left-color:var(--bad)}.visit--scheduled{border-left-color:var(--brand-rose)}.visit__top{flex-wrap:wrap;align-items:baseline;gap:.6rem;display:flex}.visit__time{color:var(--brand-rose);font-variant-numeric:tabular-nums;font-family:Georgia,serif;font-size:1.05rem;font-weight:700}.visit__top h3{margin:0;font-size:1.05rem}.visit__meta{color:var(--text-muted);font-size:.85rem}.visit__actions{gap:.4rem;margin-left:auto;display:flex}.visit__photo{object-fit:cover;border-radius:var(--radius);border:1px solid var(--brand-line);width:86px;height:86px}.slot-head{align-items:center;gap:.6rem;margin:1.4rem 0 .6rem;display:flex}.slot-head h2{margin:0;font-size:1.1rem}.slot-head:after{content:"";background:var(--brand-line);flex:1;height:1px}.cal{background:var(--brand-line);border:1px solid var(--brand-line);border-radius:var(--radius);grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;display:grid;overflow:hidden}.cal__dow{background:var(--brand-cream);text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);text-align:center;padding:.45rem .5rem;font-size:.72rem;font-weight:800}.cal__day{background:var(--white);text-align:left;min-height:104px;font:inherit;cursor:pointer;border:none;flex-direction:column;gap:.2rem;padding:.4rem .45rem;display:flex}.cal__day:hover{background:var(--brand-cream)}.cal__day--outside{background:var(--brand-cream-deep);color:var(--text-muted);cursor:default}.cal__day--today .cal__date{background:var(--brand-rose);color:var(--white)}.cal__date{width:1.5rem;height:1.5rem;color:var(--brand-brown);border-radius:50%;place-items:center;font-size:.8rem;font-weight:800;display:grid}.cal__item{background:var(--brand-cream-deep);text-overflow:ellipsis;white-space:nowrap;border-left:3px solid var(--brand-rose);border-radius:6px;padding:.1rem .35rem;font-size:.74rem;overflow:hidden}.cal__item--done{border-left-color:var(--good);color:var(--text-muted)}.cal__more{color:var(--text-muted);font-size:.72rem;font-weight:700}@media (width<=700px){.cal__day{min-height:72px}.cal__item{display:none}}.chart{align-items:flex-end;gap:2px;height:160px;padding-top:.5rem;display:flex}.chart__bar{background:var(--brand-rose-light);border-radius:3px 3px 0 0;flex:1;min-height:2px;position:relative}.chart__bar:hover{background:var(--brand-rose)}.chart__bar span{background:var(--brand-brown);color:var(--brand-cream);white-space:nowrap;opacity:0;pointer-events:none;border-radius:6px;padding:.1rem .45rem;font-size:.72rem;transition:opacity .12s;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.chart__bar:hover span{opacity:1}.chart__axis{color:var(--text-muted);justify-content:space-between;margin-top:.35rem;font-size:.75rem;display:flex}.stack{align-content:start;gap:1.1rem;display:grid}.inline{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.spinner{border:2px solid var(--brand-line);border-top-color:var(--brand-rose);border-radius:50%;width:1.1rem;height:1.1rem;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading{color:var(--text-muted);justify-content:center;align-items:center;gap:.6rem;padding:2rem;display:flex}.definition{grid-template-columns:minmax(110px,auto) 1fr;gap:.35rem 1rem;margin:0;font-size:.92rem;display:grid}.definition dt{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;padding-top:.1rem;font-size:.8rem;font-weight:800}.definition dd{margin:0}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}
