:root{--blue:#0033a1;--green:#81bd00;--teal:#29ad85;--grey:#5c85a5;--deep:#1e8f80;--sky:#82c6d9;--mint:#6ac09d;--mist:#7c9da6;--ink:#16232b;--paper:#f2f6f8;--line:#dbe4ea;--radius:.45rem}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font:16px/1.45 "Avenir Next",Avenir,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--paper)}h1{font-size:1.5rem;margin:0 0 1.2rem;color:var(--blue);display:flex;flex-direction:column}h1 span{font-size:.8rem;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:var(--teal)}h2{font-size:1.1rem;margin:0}.card{max-width:22rem;margin:12vh auto;padding:2rem;background:#fff;border:1px solid var(--line);border-top:.3rem solid var(--blue);border-radius:var(--radius);box-shadow:0 1px 2px rgba(0,51,161,.06)}.note{min-height:1.2rem;margin:.8rem 0 0;font-size:.85rem;color:var(--deep)}.note.bad{color:#b3261e}label{display:block;margin-bottom:.7rem;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;color:var(--grey)}input,select,textarea,button{font:inherit;width:100%;margin-top:.25rem;padding:.45rem .6rem;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:var(--radius)}input:focus,select:focus,textarea:focus{outline:2px solid var(--sky);outline-offset:-1px}textarea{resize:vertical}button{cursor:pointer;background:var(--teal);border-color:var(--teal);color:#fff;font-weight:600}button:hover{background:var(--deep);border-color:var(--deep)}button.danger{background:#b3261e;border-color:#b3261e;color:#fff}button.danger:hover{background:#8c1d17;border-color:#8c1d17}button.plain{background:none;border-color:var(--line);color:var(--grey);font-weight:400;width:auto}button.plain:hover{background:var(--paper);color:var(--blue)}button.icon{display:none;width:auto;background:none;border:0;color:var(--blue);font-size:1.3rem;padding:0 .3rem}#app{display:grid;grid-template-columns:15rem 1fr;min-height:100%}#side{background:var(--blue);color:#fff;padding:1.4rem 1rem}.brand{display:block;font-size:1.2rem;font-weight:600;letter-spacing:.02em;padding:0 .6rem 1.2rem;border-bottom:1px solid rgba(255,255,255,.18)}#tabs{display:flex;flex-direction:column;margin-top:1rem}#tabs button{background:none;border:0;border-radius:var(--radius);color:rgba(255,255,255,.78);text-align:left;font-weight:400;padding:.55rem .6rem}#tabs button:hover{background:rgba(255,255,255,.1);color:#fff}#tabs button[aria-current="true"]{background:var(--green);color:var(--blue);font-weight:600}#tabs button .badge{margin-left:.45rem;padding:0 .4rem;border-radius:1rem;background:var(--green);color:#fff;font-size:.75rem;font-weight:700}#tabs button[aria-current="true"] .badge{background:var(--blue);color:#fff}#body{display:flex;flex-direction:column;min-width:0}#top{display:flex;align-items:center;gap:.8rem;padding:.9rem 1.4rem;background:#fff;border-bottom:1px solid var(--line)}#where{display:none;font-weight:600;color:var(--blue)}#who{flex:1;color:var(--grey);font-size:.9rem}#view{padding:1.4rem;display:grid;gap:1.2rem;grid-template-columns:minmax(16rem,22rem) 1fr;align-items:start}#view>.note{grid-column:1/-1;margin:0}#view>.note:empty{display:none}.chart-row{display:grid;grid-template-columns:3.5rem 1fr;gap:.5rem;align-items:end;margin-bottom:.4rem}.chart{display:flex;align-items:flex-end;gap:2px;height:6rem;padding:0 2px;background:var(--paper);border-radius:var(--radius)}.chart .day{flex:1;min-height:2px;border-radius:2px 2px 0 0;background:var(--line)}.chart .day.people{background:var(--teal)}.chart .day.bots{background:var(--mist)}.chart .day.zero{background:var(--line)}.line{display:grid;grid-template-columns:minmax(0,11rem) 1fr auto;gap:.6rem;align-items:center;padding:.18rem 0;font-size:.9rem}.line .name{overflow-wrap:anywhere;color:var(--blue);text-decoration:none}a.name:hover{text-decoration:underline}.line .track{display:block;height:.65rem;background:var(--paper);border-radius:1rem;overflow:hidden}.line .track i{display:block;height:100%;background:var(--teal);border-radius:1rem}.line .count{font-variant-numeric:tabular-nums;color:var(--grey);white-space:nowrap}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.panel>header{display:flex;align-items:center;gap:.6rem;padding:.7rem .9rem;border-bottom:1px solid var(--line)}.panel>header h2{flex:1;color:var(--blue)}.panel>header button{width:auto}.items{max-height:calc(100vh - 12rem);overflow:auto}.item{display:block;width:100%;text-align:left;padding:.6rem .9rem;background:none;border:0;border-bottom:1px solid var(--line);border-radius:0;color:var(--ink);font-weight:400}.item:hover{background:var(--paper)}.item[aria-current="true"]{box-shadow:inset .2rem 0 0 var(--green);background:var(--paper)}.item strong{display:block;font-weight:600}.item span{color:var(--mist);font-size:.85rem}.form{padding:1.1rem;display:grid;gap:1rem .9rem;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));align-items:start}.form .wide{grid-column:1/-1}.actions{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:.6rem;padding-top:.6rem}.actions button{width:auto}.actions button.remove{background:#b3261e;border-color:#b3261e;color:#fff;margin-left:auto}.actions button.remove:hover{background:#8c1d17;border-color:#8c1d17}.label{display:block;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--grey);margin-bottom:.2rem}.hint{display:block;margin-top:.25rem;color:var(--grey);font-size:.82rem;line-height:1.35;letter-spacing:0;text-transform:none}.form .tick{padding-top:1.2rem}.tick{display:flex;align-items:center;gap:.5rem}.tick input{width:auto;margin:0}.tick .label,.tick .hint{margin:0}.measure{display:flex;align-items:baseline;gap:.35rem}.measure input{flex:1;margin:0}.measure .unit{color:var(--grey);font-size:.9rem}.chips{display:flex;flex-wrap:wrap;gap:.4rem}.chip{display:inline-flex;align-items:center;gap:.35rem;margin:0;padding:.25rem .6rem;font-size:.85rem;letter-spacing:0;text-transform:none;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:2rem}.chip input{width:auto;margin:0}.keyline{display:flex;align-items:baseline;gap:.5rem;padding:.45rem .6rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius)}.keyline .label,.keyline .hint{margin:0}.keyline .value{font-weight:600;color:var(--blue)}.keyline .hint{margin-left:auto;text-align:right;font-size:.78rem}.rows{display:grid;gap:.4rem}.row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.rows .row{padding:.3rem .4rem;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius)}.row select,.row input{width:auto;margin:0}.row>label{margin:0}.rows .row>select,.rows .row>input{flex:1;min-width:7rem}.rows .value{overflow-wrap:anywhere;flex:1;min-width:8rem;color:var(--ink)}.movers{display:flex;gap:.15rem;margin-left:auto}button.arrow,button.drop{width:1.8rem;height:1.8rem;padding:0;line-height:1;font-size:.95rem;background:#fff;border:1px solid var(--line);color:var(--grey);font-weight:400}button.arrow:hover,button.drop:hover{border-color:var(--blue);color:var(--blue);background:#fff}button.arrow:disabled{opacity:.35;cursor:default}button.drop{border-radius:50%;color:#b3261e}button.drop:hover{border-color:#b3261e;color:#b3261e;background:#fff}.parts{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.6rem;margin-top:.3rem;padding:.7rem .6rem;background:var(--paper);border:1px dashed var(--line);border-radius:var(--radius)}.parts select,.parts input,.parts label{width:auto;margin:0}.parts input[type="number"]{width:6rem}.rows+button,.row.add{margin-top:.1rem}.rooms .row{display:grid;grid-template-columns:1fr auto;gap:1rem;align-items:end}.rooms input[type="number"]{width:6rem}.gps .pair{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;max-width:28rem}.gps .row{margin-top:.5rem}.gps .row input{flex:1;min-width:14rem}.gps .plain{display:inline-block;width:auto;margin:0;padding:.45rem 0;color:var(--blue);font-size:.88rem}.stats .row{display:grid;grid-template-columns:7rem 1fr 7rem}#said{grid-column:1/-1;margin:0;min-height:1.2rem}.photos{grid-column:1/-1;border-top:1px solid var(--line);padding-top:.9rem}.thumbs{display:flex;flex-wrap:wrap;gap:.5rem;margin:.6rem 0}.thumb{position:relative;width:8rem;height:6.5rem;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--paper)}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(7rem,1fr));gap:.5rem;max-height:20rem;overflow:auto;padding:.6rem;border:1px dashed var(--line);border-radius:var(--radius)}.picker .thumb{width:100%;height:6rem;cursor:pointer}.picker .thumb[aria-pressed="true"]{outline:3px solid var(--green);outline-offset:-3px}.picker .thumb .meta,.gallery .thumb .meta{position:absolute;inset:auto 0 0 0;padding:.1rem .3rem;background:rgba(255,255,255,.88);color:var(--grey);font-size:.7rem;text-align:center}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.7rem;padding:1rem}.gallery.over{outline:2px dashed var(--green);outline-offset:-6px;background:#f6fbf1}.gallery .thumb{width:100%;height:9.5rem}.gallery .thumb .name{position:absolute;inset:0 0 auto 0;width:100%;padding:.15rem .3rem;background:rgba(255,255,255,.88);color:var(--blue);font-size:.72rem;font-weight:400;text-align:left;border:0;border-radius:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.gallery .thumb .name:hover{background:var(--green);color:var(--blue)}.gallery .thumb .meta{inset:auto 0 1.6rem 0}.gallery .thumb .drop{position:absolute;top:1.5rem;right:.25rem}.panel>header{flex-wrap:wrap;align-items:center;color:var(--grey)}.panel>header .hint{width:100%;margin:0}.empty{color:var(--grey);font-size:.9rem;padding:.3rem 0}#view>.panel:only-child{grid-column:1/-1;max-width:34rem}@media(max-width:62rem){#app{grid-template-columns:1fr}#side{display:none}#side.open{display:block;position:absolute;inset:0 auto 0 0;width:15rem;z-index:5;box-shadow:0 0 2rem rgba(0,33,101,.35)}button.icon{display:block}#where{display:block;flex:1;text-align:center}#who{display:none}#top{position:sticky;top:0;z-index:4;gap:.6rem}#out{margin-left:auto}#view{grid-template-columns:1fr}.items{max-height:none}}