/* System stack keeps the free Hobby deploy tiny (no self-hosted webfont). */
:root{
--ink:#111111; --ink-2:#3d3d3d; --muted:#666666;
--line:#dcdcdc; --line-2:#ececec; --line-strong:#bdbdbd;
--panel:#f7f7f7; --panel-2:#efefef; --hover:#f3f3f3;
--accent:#7d2f3f;
--r:8px; --r-lg:10px;
--ease:120ms ease;
--fs-xs:.75rem; --fs-sm:.8125rem; --fs-base:.9063rem; --fs-md:1rem; --fs-lg:1.125rem; --fs-xl:1.5rem;
--head-h:64px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--head-h) + 12px)}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;font-size:var(--fs-base);line-height:1.5;color:var(--ink);background:#fff;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3{line-height:1.25;margin:0 0 .5rem;font-weight:600;color:var(--ink)}
h1{font-size:var(--fs-xl);letter-spacing:-.02em}
h2{font-size:var(--fs-md);letter-spacing:-.01em}
h3{font-size:var(--fs-base)}
p{margin:0 0 .75rem}
a{color:var(--ink);text-underline-offset:3px;text-decoration-thickness:1px;text-decoration-color:var(--line-strong);transition:text-decoration-color var(--ease)}
a:hover{text-decoration-color:var(--ink)}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:4px}
.muted{color:var(--muted)} .small{font-size:var(--fs-sm)} .tiny{font-size:var(--fs-xs)}
.nowrap{white-space:nowrap}
.sr{position:absolute;left:-9999px}
.skip{position:absolute;left:-9999px;top:0;background:#fff;padding:.5rem 1rem;z-index:99}
.skip:focus{left:0}
[hidden]{display:none !important}
.top{position:sticky;top:0;z-index:30;background:#fff;border-bottom:1px solid var(--line)}
.top-in{max-width:1360px;margin:0 auto;padding:0 28px;display:flex;align-items:center;gap:32px;height:var(--head-h)}
.brand{display:flex;align-items:center;color:var(--ink);text-decoration:none;flex:none}
.brand img{display:block;height:54px;width:auto}
.mainnav{display:flex;gap:4px;align-self:stretch;align-items:stretch}
.mainnav a{position:relative;display:flex;align-items:center;padding:0 12px;color:var(--muted);text-decoration:none;font-weight:500;font-size:var(--fs-base);transition:color var(--ease)}
.mainnav a:hover{color:var(--ink)}
.mainnav a::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;background:transparent;transition:background var(--ease)}
.mainnav a[aria-current="page"]{color:var(--ink);font-weight:600}
.mainnav a[aria-current="page"]::after{background:var(--accent)}
.mainnav .n{font-weight:500;font-size:var(--fs-xs);color:var(--ink-2);background:var(--panel-2);border-radius:999px;min-width:20px;padding:0 6px;line-height:20px;text-align:center;margin-left:7px}
.top-right{margin-left:auto}
main{max-width:1360px;margin:0 auto;padding:24px 28px 56px}
.foot{max-width:1360px;margin:0 auto;padding:16px 28px 32px;border-top:1px solid var(--line-2);color:var(--muted);font-size:var(--fs-sm);display:flex;gap:20px;flex-wrap:wrap}
.foot a{color:var(--muted);text-decoration:none}
.foot a:hover{color:var(--ink);text-decoration:underline}
.pagehead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.pagehead h1{margin:0}
.pagehead .sub{color:var(--muted);margin:4px 0 0}
.back{margin:0 0 6px;font-size:var(--fs-sm)}
.back a{color:var(--muted);text-decoration:none}
.back a:hover{color:var(--ink);text-decoration:underline}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:36px;padding:6px 14px;border-radius:var(--r);border:1px solid var(--line-strong);background:#fff;color:var(--ink);font:inherit;font-weight:500;font-size:var(--fs-base);text-decoration:none;cursor:pointer;line-height:1.2;transition:background var(--ease),border-color var(--ease),color var(--ease)}
.btn:hover{background:var(--hover);border-color:var(--ink-2)}
.btn:active{background:var(--panel-2)}
.btn.primary,.btn.dark{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.primary:hover,.btn.dark:hover{background:#2b2b2b;border-color:#2b2b2b}
.btn.sm{min-height:30px;padding:3px 11px;font-size:var(--fs-sm)}
.btn.block{display:flex;width:100%}
.btn.danger{color:var(--ink);border-color:var(--ink-2)}
.btn.quiet{border-color:transparent;background:transparent;color:var(--ink-2)}
.btn.quiet:hover{background:var(--hover)}
.linkbtn{background:none;border:0;padding:0;color:var(--ink);font:inherit;text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px;cursor:pointer}
.linkbtn:hover{text-decoration-color:var(--ink)}
form.inline{display:inline}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line-2);min-height:48px}
.card-h h2,.card-h h3{margin:0}
.card-h small{color:var(--muted);font-size:var(--fs-sm)}
.card-b{padding:16px}
details.card>summary.card-h{border-bottom:0;list-style:none;cursor:pointer}
details.card[open]>summary.card-h{border-bottom:1px solid var(--line-2)}
details.card>summary::-webkit-details-marker{display:none}
.card + .card{margin-top:20px}
.grid2>.card + .card,.grid-side>.card + .card,.grid-side-l>.card + .card{margin-top:0}
.stack>*+*{margin-top:20px}
.grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start}
.grid-side{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:24px;align-items:start}
.grid-side-l{display:grid;grid-template-columns:340px minmax(0,1fr);gap:24px;align-items:start}
.kv{display:grid;grid-template-columns:120px minmax(0,1fr);gap:10px 16px;margin:0}
.kv dt{color:var(--muted);font-size:var(--fs-sm);padding-top:2px}
.kv dd{margin:0;overflow-wrap:anywhere}
.empty{color:var(--muted);padding:22px 16px;text-align:center;font-size:var(--fs-base)}
.empty a{color:var(--ink)}
.card-b>.empty:only-child{padding:6px 0;text-align:left}
.count{font-weight:500;color:var(--muted);margin-left:6px;font-size:var(--fs-sm)}
.flash{padding:10px 14px;margin-bottom:16px;border:1px solid var(--line-strong);border-left:3px solid var(--ink);border-radius:var(--r);background:var(--panel);font-weight:500}
.flash.warn{border-left-color:var(--accent)}
.alert{padding:12px 16px;margin-bottom:16px;border:1px solid var(--line-strong);border-radius:var(--r);background:var(--panel)}
.alert.bad,.alert.warn{border-color:var(--ink);background:#fff;border-left-width:3px}
.alert ul{margin:.25rem 0 0 1.1rem;padding:0}
.pill{display:inline-flex;align-items:center;padding:0 8px;border-radius:6px;font-size:var(--fs-xs);font-weight:600;border:1px solid var(--ink);background:#fff;color:var(--ink);white-space:nowrap;line-height:20px;letter-spacing:.01em}
.pill.confirmed,.pill.ok{background:var(--ink);color:#fff}
.pill.tentative{border-style:dashed;background:var(--panel)}
.pill.request,.pill.info{background:#fff}
.pill.cancelled{background:var(--panel);border-color:var(--line-strong);color:var(--muted);text-decoration:line-through}
.pill.completed,.pill.neutral{background:var(--panel-2);border-color:var(--line-strong);color:var(--ink-2)}
.pill.recheck,.pill.warn,.pill.bad{border-width:1px;border-color:var(--accent);color:var(--ink);background:#fff;text-decoration:underline;text-underline-offset:2px}
.pill.checked,.pill.unchecked{font-weight:500;border-color:var(--line-strong);color:var(--ink-2)}
.pill.unchecked{border-style:dotted}
label{display:block;font-weight:500;font-size:var(--fs-sm);margin-bottom:5px;color:var(--ink-2)}
input:not([type]),input[type=datetime-local],input[type=text],input[type=password],input[type=email],input[type=tel],input[type=date],input[type=time],input[type=number],input[type=search],input[type=url],input[type=file],select,textarea{display:block;width:100%;max-width:100%;box-sizing:border-box;font:inherit;color:var(--ink);background:#fff;border:1px solid var(--line-strong);border-radius:var(--r);padding:7px 11px;min-height:38px;transition:border-color var(--ease),outline-color var(--ease)}
input[type=file]{padding:5px 8px}
input:hover,select:hover,textarea:hover{border-color:var(--ink-2)}
textarea{min-height:88px;resize:vertical;line-height:1.45}
input:focus,select:focus,textarea:focus{outline:2px solid var(--ink);outline-offset:0;border-color:var(--ink)}
input[readonly]{background:var(--panel);color:var(--ink-2)}
::placeholder{color:#8a8a8a}
.field{margin-bottom:14px}
.help{color:var(--muted);font-size:var(--fs-sm);margin-top:5px}
.row{display:grid;gap:14px}
.row.c2{grid-template-columns:1fr 1fr} .row.c3{grid-template-columns:1fr 1fr 1fr} .row.c4{grid-template-columns:repeat(4,1fr)}
.row>*{min-width:0}
.check{display:flex;align-items:center;gap:10px;font-weight:500;font-size:var(--fs-base);margin:0 0 6px;min-height:30px;color:var(--ink);cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--ink);flex:none;margin:0}
fieldset{border:1px solid var(--line);border-radius:var(--r);padding:12px 16px;margin:0 0 14px}
legend{font-weight:600;font-size:var(--fs-sm);padding:0 6px}
.formbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.copyrow{display:flex;gap:8px;align-items:stretch}
.copyrow input{flex:1;min-width:0;font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:var(--fs-sm)}
.tablewrap{overflow-x:auto}
table.t{width:100%;border-collapse:collapse}
table.t th{text-align:left;font-size:var(--fs-xs);font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:9px 14px 9px 0;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--panel)}
table.t td{padding:9px 14px 9px 0;border-bottom:1px solid var(--line-2);vertical-align:top;transition:background var(--ease)}
table.t tr:last-child td{border-bottom:0}
table.t tbody tr:hover td{background:var(--hover)}
table.t th:first-child,table.t td:first-child{padding-left:16px}
table.t th:last-child,table.t td:last-child{padding-right:16px}
table.t .num{text-align:right;white-space:nowrap}
table.t td.empty{text-align:center}
.seg,.tabs{display:inline-flex;gap:2px;padding:3px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);max-width:100%}
.seg a,.tabs a{display:flex;align-items:center;min-height:30px;padding:0 13px;border-radius:6px;border:1px solid transparent;text-decoration:none;color:var(--muted);font-weight:500;font-size:var(--fs-base);white-space:nowrap;transition:background var(--ease),color var(--ease)}
.seg a:hover:not([aria-current]),.tabs a:hover:not([aria-current]){color:var(--ink);background:var(--panel-2)}
.seg a[aria-current="page"],.tabs a[aria-current="page"]{background:#fff;color:var(--ink);border-color:var(--line-strong);font-weight:600}
.tabs{margin-bottom:18px;flex-wrap:wrap}
.tabs .count{margin-left:6px;font-weight:500}
.sched-bar{display:flex;align-items:center;justify-content:space-between;gap:12px 16px;margin-bottom:16px;flex-wrap:wrap}
.datenav{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.datenav h1{margin:0 8px;font-size:1.25rem;white-space:nowrap}
.iconbtn{display:inline-flex;width:36px;height:36px;align-items:center;justify-content:center;border:1px solid var(--line-strong);border-radius:var(--r);background:#fff;color:var(--ink);text-decoration:none;font-size:1.15rem;line-height:1;transition:background var(--ease),border-color var(--ease)}
.iconbtn:hover{background:var(--hover);border-color:var(--ink-2)}
.datenav input[type=date]{width:auto;min-height:36px}
.daygrid-wrap{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}
.agenda{display:none}
.daygrid{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:auto}
.dg-head{display:grid;grid-template-columns:72px repeat(var(--cols),minmax(140px,1fr));border-bottom:1px solid var(--line);background:var(--panel);min-width:max-content;width:100%}
.dg-head div{padding:9px 12px;font-weight:600;border-left:1px solid var(--line)}
.dg-head div:first-child,.dg-head .dg-corner{border-left:0;padding:9px 8px}
.dg-head small{display:block;font-weight:400;color:var(--muted);font-size:var(--fs-xs)}
.dg-body{display:grid;grid-template-columns:72px repeat(var(--cols),minmax(140px,1fr));position:relative;min-width:max-content;width:100%}
.dg-times{position:relative;border-right:1px solid var(--line-2)}
.dg-times span{position:absolute;left:0;right:6px;transform:translateY(-50%);font-size:var(--fs-xs);color:var(--muted);text-align:right;line-height:1.2;white-space:nowrap;padding:0 2px}
.dg-times span:first-child{transform:none}
.dg-col{position:relative;border-left:1px solid var(--line);background:
  repeating-linear-gradient(to bottom, transparent 0, transparent 55px, var(--line-2) 55px, var(--line-2) 56px)}
.dg-col .hl{position:absolute;left:0;right:0;height:0;border-top:1px solid var(--line-2);pointer-events:none}
.blk{position:absolute;padding:4px 8px;overflow:hidden;text-decoration:none;color:var(--ink);background:#fff;border:1px solid var(--line-strong);border-left:3px solid var(--ink);border-radius:6px;font-size:var(--fs-sm);line-height:1.3;display:flex;flex-direction:column;gap:1px;box-sizing:border-box;z-index:2;transition:background var(--ease),border-color var(--ease)}
.blk:hover{background:var(--hover);border-color:var(--ink-2);border-left-color:var(--ink);color:var(--ink);z-index:5}
.blk .n{font-weight:600;font-size:var(--fs-sm);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.blk .s{display:block;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--fs-xs)}
.blk>*{flex-shrink:0}
.blk .fl{display:flex;gap:6px;margin-top:2px;flex-wrap:nowrap}
.blk.compact .fl,.blk.short .location{display:none}
.daygrid-wrap .qlist li{display:block}
.daygrid-wrap .qlist .btns{justify-content:flex-start}
.blk .tag{font-weight:600;font-size:.6875rem;letter-spacing:.04em}
.blk.tentative{border:1px dashed var(--ink-2);border-left:3px dashed var(--ink);background:var(--panel)}
.blk.completed{background:var(--panel-2);border-color:var(--line-strong);border-left-color:#777}
.blk.cancelled{background:var(--panel);border-color:var(--line);border-left-color:var(--line-strong);color:var(--muted)}
.blk.cancelled .n{text-decoration:line-through}
.blk.cancelled .s{color:var(--muted)}
.blk .buf{position:absolute;left:-1px;right:-1px;top:100%;height:var(--bh);background:var(--panel-2);border:1px dotted var(--line-strong);border-top:0;pointer-events:none}
.blk.flag-recheck{outline:1px solid var(--accent);outline-offset:1px}
.nowline{position:absolute;left:0;right:0;height:2px;background:var(--accent);z-index:6;pointer-events:none}
.side-list{list-style:none;margin:0;padding:0}
.side-list li{padding:11px 16px;border-bottom:1px solid var(--line-2)}
.side-list li:last-child{border-bottom:0}
.side-list li.empty{padding:16px;text-align:left}
.side-list .who{font-weight:600}
.side-list .what{color:var(--muted);font-size:var(--fs-sm);margin:2px 0 8px}
.agenda{display:none}
.ag-list{list-style:none;margin:0;padding:0}
.ag-list li{border-bottom:1px solid var(--line-2)}
.ag-list li:last-child{border-bottom:0}
.ag-list li.empty{padding:14px 16px;text-align:left}
.ag-item{display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:10px;align-items:center;padding:10px 16px;text-decoration:none;color:var(--ink);transition:background var(--ease)}
.ag-item:hover{background:var(--hover)}
.ag-item .tm{font-weight:600;font-size:var(--fs-sm);white-space:nowrap}
.ag-item .main{min-width:0}
.ag-item .main b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-item .main span{display:block;color:var(--muted);font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-item.cancelled .main b{text-decoration:line-through;color:var(--muted)}
.ag-item.completed{background:var(--panel)}
.week{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.wk-day{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);min-height:200px;overflow:hidden}
.wk-day.today{border-color:var(--ink)}
.wk-h{padding:10px 12px;border-bottom:1px solid var(--line);background:var(--panel);display:flex;justify-content:space-between;align-items:baseline;gap:8px;text-decoration:none;color:var(--ink);transition:background var(--ease)}
.wk-h:hover{background:var(--panel-2)}
.wk-day.today .wk-h{background:var(--ink);color:#fff}
.wk-day.today .wk-h span{color:#ddd}
.wk-h b{font-size:var(--fs-base)}
.wk-h span{font-size:var(--fs-xs);color:var(--muted)}
.wk-item{display:block;padding:8px 12px 8px 10px;border-bottom:1px solid var(--line-2);text-decoration:none;color:var(--ink);border-left:3px solid var(--ink);font-size:var(--fs-sm);line-height:1.35;transition:background var(--ease)}
.wk-item:hover{background:var(--hover);color:var(--ink)}
.wk-item.tentative{border-left-style:dashed;background:var(--panel)}
.wk-item.cancelled{border-left-color:var(--line-strong);color:var(--muted);background:var(--panel)}
.wk-item.cancelled .nm{text-decoration:line-through}
.wk-item.completed{border-left-color:#777;background:var(--panel-2)}
.wk-item .tm{font-weight:600;display:block}
.wk-item .nm{font-weight:500;display:block}
.wk-item .sv{color:var(--ink-2);display:block;font-size:var(--fs-xs)}
.wk-item .fl{margin-top:4px;display:flex;flex-wrap:wrap;gap:4px}
.wk-day .empty{padding:14px 12px;text-align:left;font-size:var(--fs-sm)}
.timeline{list-style:none;margin:0;padding:0}
.timeline li{padding:7px 0 7px 16px;border-left:1px solid var(--line);margin-left:4px;position:relative}
.timeline li::before{content:"";position:absolute;left:-4px;top:13px;width:7px;height:7px;border-radius:50%;background:#fff;border:1px solid var(--ink-2)}
.timeline .when{font-size:var(--fs-xs);color:var(--muted)}
.timeline .act{font-weight:600}
.note{padding:10px 14px;background:var(--panel);border:1px solid var(--line-2);border-left:3px solid var(--ink);border-radius:var(--r);margin-bottom:10px}
.note .meta{font-size:var(--fs-xs);color:var(--muted);margin-bottom:3px}
.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.photos figure{margin:0}
.photos img{width:100%;aspect-ratio:4/3;object-fit:cover;border:1px solid var(--line);border-radius:var(--r);display:block;background:var(--panel)}
.photos figcaption{font-size:var(--fs-xs);color:var(--muted);margin-top:4px}
.check-panel{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 16px;border:1px solid var(--line);border-radius:var(--r-lg);background:#fff}
.check-panel.needs{border-color:var(--accent);background:var(--panel)}
.check-panel .txt{flex:1;min-width:200px}
.calbox{display:flex;flex-direction:column;gap:8px}
.msgprev{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.msgprev .hdr{background:var(--panel);padding:12px 20px;border-bottom:1px solid var(--line)}
.msgprev .hdr dl{display:grid;grid-template-columns:64px 1fr;gap:4px 12px;margin:0;font-size:var(--fs-sm)}
.msgprev .hdr dt{color:var(--muted)} .msgprev .hdr dd{margin:0;overflow-wrap:anywhere}
.msgprev .brandbar{background:#fff;padding:12px 24px;border-bottom:1px solid var(--line-2)}
.msgprev .brandbar img{display:block;height:72px;width:auto}
.msgprev .bodytxt{padding:20px 24px;font-size:var(--fs-md);line-height:1.55;max-width:680px;overflow-wrap:anywhere}
.msgprev .bodytxt p{margin:0 0 .9rem}
.instr-block{border:1px solid var(--line-strong);border-left:3px solid var(--ink);border-radius:var(--r);background:var(--panel);padding:12px 16px;margin:0 0 1rem}
.instr-title{font-weight:600;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}
.instr-block p{margin:0 !important}
.mono{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-size:var(--fs-sm)}
.chip{display:inline-block;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:1px 7px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:var(--fs-xs);margin:2px 4px 2px 0;cursor:pointer;transition:background var(--ease)}
.chip:hover{background:var(--panel-2)}
.qlist{list-style:none;margin:0;padding:0}
.qlist li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;padding:11px 16px;border-bottom:1px solid var(--line-2);align-items:center}
.qlist li:last-child{border-bottom:0}
.qlist li>.empty{grid-column:1/-1;padding:10px 0;text-align:left}
.qlist .ttl{font-weight:600}
.qlist .sub{color:var(--muted);font-size:var(--fs-sm)}
.qlist .btns{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.big-search{display:flex;gap:8px;margin-bottom:14px}
.big-search input{min-height:42px}
.big-search .btn{min-height:42px}
.appliance{border-top:1px solid var(--line-2);padding:12px 0}
.appliance:first-child{border-top:0;padding-top:0}
.appliance h3{margin:0 0 2px}
details.edit summary{cursor:pointer;font-weight:500;font-size:var(--fs-sm);margin-top:8px;text-decoration:underline;text-decoration-color:var(--line-strong);text-underline-offset:3px}
.overdue{font-weight:600;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--accent)}
hr.soft{border:0;border-top:1px solid var(--line-2);margin:14px 0}
.steps{margin:0 0 .75rem;padding-left:1.25rem}
.steps li{margin-bottom:4px}
.statusline{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ink)}
.dot.off{background:#fff;border:1px solid var(--ink-2)}
.feedrow{padding:14px 0;border-top:1px solid var(--line-2)}
.feedrow:first-of-type{border-top:0;padding-top:0}
.feedrow .lab{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.feedrow .lab b{font-weight:600}
.doc{max-width:760px}
.doc h2{margin-top:32px;padding-top:14px;border-top:1px solid var(--line);font-size:var(--fs-lg)}
.doc h3{margin:16px 0 4px;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.doc ul{margin:0 0 .5rem;padding-left:1.2rem}
.doc li{margin-bottom:4px}
.doc .lead{font-size:var(--fs-md)}
.doc table.t th:first-child,.doc table.t td:first-child{padding-left:0}
.doc table.t th:last-child,.doc table.t td:last-child{padding-right:0}
.doc .card table.t th:first-child,.doc .card table.t td:first-child{padding-left:16px}
.doc .card table.t th:last-child,.doc .card table.t td:last-child{padding-right:16px}
.print-page{background:#fff}
.sheet{max-width:8.5in;margin:0 auto;padding:.3in .45in;background:#fff;color:#000;font-size:9.5pt;line-height:1.25}
.sheet h1{font-size:16pt;margin:0;letter-spacing:0}
.sheet .sh-head{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid #000;padding-bottom:6px;margin-bottom:8px;gap:16px}
.sheet .sh-head img{display:block;height:.85in;width:auto}
.sheet .sh-head .b{font-size:9.5pt;text-align:right}
.sheet h2{font-size:11pt;border-bottom:1px solid #000;padding:2px 0;margin:10px 0 4px;letter-spacing:0}
.sheet .job{border:1px solid #000;border-left-width:6px;margin-bottom:4px;padding:2px 10px;page-break-inside:avoid;break-inside:avoid}
.sheet .job.tentative{border-style:dashed;border-left-style:dashed}
.sheet .job.cancelled{color:#444;border-color:#777}
.sheet .job .l1{display:flex;justify-content:space-between;gap:10px;font-size:10pt}
.sheet .job .l2{font-size:9pt}
.sheet .job dl{display:grid;grid-template-columns:70px 1fr;gap:0 8px;margin:2px 0 0;font-size:8.5pt;line-height:1.2}
.sheet .job dt{font-weight:700} .sheet .job dd{margin:0}
.sheet .bk{font-size:8.5pt;font-weight:400;margin-left:8px;white-space:nowrap}
.sheet .tag{display:inline-block;border:1px solid #000;padding:0 5px;font-size:8.5pt;font-weight:700;margin-left:4px}
.sheet .box{display:inline-block;width:12px;height:12px;border:1.5px solid #000;vertical-align:-2px;margin-right:4px}
.sheet .foot-note{border-top:1px solid #000;margin-top:8px;padding-top:4px;font-size:8.5pt}
.printbar{max-width:8.5in;margin:0 auto;padding:12px .5in 0;display:flex;gap:10px;align-items:center;flex-wrap:wrap}
@media print{
@page{size:letter portrait;margin:.4in}
body{background:#fff !important}
.noprint,.top,.foot,.printbar{display:none !important}
.sheet{padding:0;max-width:none}
a{color:#000;text-decoration:none}
}
body.field{background:#fff;font-size:1.0625rem;line-height:1.45}
.f-top{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--line);padding:6px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.f-top .brand img{height:48px}
.f-wrap{padding:16px;max-width:560px;margin:0 auto 48px}
.f-btn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:10px 16px;border-radius:var(--r-lg);border:1px solid var(--ink);background:#fff;color:var(--ink);font:inherit;font-weight:600;font-size:1rem;text-decoration:none;width:100%;cursor:pointer;line-height:1.2;transition:background var(--ease)}
.f-btn.primary,.f-btn.dark,.f-btn.green{background:var(--ink);color:#fff}
.f-btn:hover{background:var(--hover)}
.f-btn.primary:hover,.f-btn.dark:hover,.f-btn.green:hover{background:#2b2b2b}
.f-btn.quiet{border-color:var(--line-strong);font-weight:500}
.f-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.f-btns .wide{grid-column:1/-1}
.f-card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px 12px;margin-bottom:12px}
.f-card h2{font-size:1.0625rem;margin:0 0 8px}
.f-label{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;margin-bottom:2px}
.f-job{display:block;text-decoration:none;color:var(--ink);background:#fff;border:1px solid var(--line-strong);border-left:4px solid var(--ink);border-radius:var(--r-lg);padding:13px 16px;margin-bottom:10px;min-height:64px;transition:background var(--ease)}
.f-job:hover{color:var(--ink);background:var(--hover)}
.f-job.completed{border-left-color:#777;background:var(--panel)}
.f-job.tentative{border-style:dashed;border-left-style:dashed}
.f-job .tm{font-weight:600;font-size:1.0625rem}
.f-job .nm{font-weight:600}
.f-job .ad{color:var(--ink-2);font-size:.9375rem}
.f-inst{border:1px solid var(--ink);border-radius:var(--r-lg);padding:12px 14px;margin-bottom:12px}
.f-deb{background:var(--panel);border:1px solid var(--line-2);border-left:3px solid var(--ink);border-radius:var(--r-lg);padding:12px 14px;margin-bottom:12px}
.f-photos{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.f-photos img{width:100%;aspect-ratio:4/3;object-fit:cover;border:1px solid var(--line);border-radius:var(--r)}
body.field textarea{min-height:120px;font-size:1.0625rem}
body.field input[type=text],body.field input[type=date],body.field input[type=file],body.field select{min-height:50px;font-size:1.0625rem}
body.field label{font-size:.9375rem}
.f-date{display:flex;gap:10px;align-items:center;justify-content:space-between;padding:4px 0 12px}
.f-date a{display:inline-flex;width:52px;height:52px;border:1px solid var(--line-strong);border-radius:var(--r-lg);background:#fff;align-items:center;justify-content:center;font-size:1.5rem;text-decoration:none;color:var(--ink);transition:background var(--ease)}
.f-date a:hover{background:var(--hover)}
.f-tabs{display:flex;gap:4px;margin-bottom:14px;padding:3px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg)}
.f-tabs a{flex:1;text-align:center;min-height:46px;display:flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:8px;text-decoration:none;color:var(--muted);font-weight:500;padding:0 10px;transition:background var(--ease)}
.f-tabs a[aria-current="page"]{background:#fff;color:var(--ink);border-color:var(--line-strong);font-weight:600}
@media (max-width:1100px){
.daygrid-wrap,.grid-side,.grid-side-l{grid-template-columns:minmax(0,1fr);gap:20px}
.week{grid-template-columns:minmax(0,1fr)}
.grid2{grid-template-columns:minmax(0,1fr)}
.row.c3,.row.c4{grid-template-columns:1fr 1fr}
.top-in{gap:20px;padding:0 20px}
main{padding:20px 20px 48px}
}
@media (max-width:720px){
:root{--head-h:auto}
.top-in{flex-wrap:wrap;height:auto;padding:6px 14px 0;gap:0 12px}
.brand img{height:44px}
.top-right{order:2;margin-left:auto}
.mainnav{order:3;flex:1 0 100%;gap:0;margin:4px -6px 0;justify-content:space-between}
.mainnav a{flex:1;justify-content:center;padding:0 4px;min-height:42px;font-size:.875rem}
.mainnav a::after{left:8px;right:8px}
.mainnav .n{margin-left:5px;min-width:18px;line-height:18px;padding:0 5px}
main{padding:16px 14px 40px}
.foot{padding:14px 14px 28px;gap:10px 18px}
h1{font-size:1.3125rem}
.daygrid-wrap{display:none}
.agenda{display:block}
.agenda .card+.card{margin-top:14px}
.sched-bar{gap:10px}
.datenav{width:100%}
.datenav h1{flex:1;min-width:0;white-space:normal;font-size:1.0625rem;margin:0 4px}
.datenav form.inline{display:none}
.actions .btn{flex:1 1 auto}
.sched-bar .actions{width:100%}
.sched-bar .seg{flex:none}
.row.c2,.row.c3,.row.c4{grid-template-columns:minmax(0,1fr)}
.kv{grid-template-columns:minmax(0,1fr);gap:2px 0}
.kv dt{padding-top:8px}
.kv dt:first-child{padding-top:0}
.btn{min-height:40px}
.btn.sm{min-height:36px}
.iconbtn{width:40px;height:40px}
.card-b{padding:14px}
.tabs{display:flex;width:100%;overflow-x:auto}
.tabs a{flex:1 0 auto;justify-content:center}
.qlist li{grid-template-columns:minmax(0,1fr)}
.qlist .btns{justify-content:flex-start}
.msgprev .bodytxt{padding:16px}
.msgprev .brandbar{padding:10px 16px}
.check-panel{flex-direction:column;align-items:stretch}
.big-search{flex-wrap:nowrap}
table.t.stack-m thead{display:none}
table.t.stack-m,table.t.stack-m tbody,table.t.stack-m tr,table.t.stack-m td{display:block;width:100%}
table.t.stack-m tr{padding:10px 16px;border-bottom:1px solid var(--line-2)}
table.t.stack-m tr:last-child{border-bottom:0}
table.t.stack-m td{padding:2px 0 !important;border:0}
table.t.stack-m td.num{text-align:left}
table.t.stack-m tbody tr:hover td{background:transparent}
table.t.stack-m td[data-l]::before{content:attr(data-l) ": ";color:var(--muted);font-size:var(--fs-xs)}
table.t.stack-m td.empty{text-align:left}
.copyrow{flex-direction:column}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none !important;animation:none !important;scroll-behavior:auto !important}}
.auth-card{width:100%;max-width:400px;margin:0}
body.auth{min-height:100vh;display:flex;flex-direction:column;background:
  radial-gradient(1200px 500px at 50% -10%, #f3e6e8 0%, transparent 55%),
  linear-gradient(180deg, #fafafa 0%, #fff 40%, #f5f5f5 100%)}
body.auth main{flex:1;display:flex;flex-direction:column;gap:16px;align-items:center;justify-content:center;max-width:none;width:100%;margin:0;padding:32px 16px 48px}
body.auth main>.flash{width:100%;max-width:400px;margin:0;box-sizing:border-box}
.auth-card .card{box-shadow:0 10px 30px rgba(17,17,17,.06)}
.auth-card .card-b{padding:28px 24px 24px}
.auth-card .logo-wrap{display:flex;justify-content:center;margin:0 0 18px}
.auth-card img.logo,.auth-card .logo{display:block;width:200px;max-width:100%;height:auto;margin:0 auto}
.auth-card h1{text-align:center;font-size:1.35rem;margin:0 0 18px}
.auth-card form{display:flex;flex-direction:column;align-items:stretch;width:100%}
.auth-card form label{width:100%}
.auth-card form input{width:100%;box-sizing:border-box}
.auth-card form .btn{display:flex;width:100%;box-sizing:border-box;margin-top:16px}
.auth-recovery{margin:14px 0 0;text-align:center}
.auth-recovery a{display:inline-flex;align-items:center;min-height:44px}
.public-links{display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px}
.public-links a{display:inline-flex;align-items:center;min-height:44px;white-space:nowrap}
.auth-card .public-links{justify-content:center;margin-top:16px;padding-top:12px;border-top:1px solid var(--line-2)}
.brand img{height:52px;width:auto;max-width:168px;object-fit:contain}
.brand img,.auth-card .logo{image-rendering:auto}
.flash.ok{border-left-color:#1f7a3f;background:#f3faf5}
.sysbar{background:#111;color:#f3f3f3;font-size:var(--fs-sm)}
.sysbar-in{max-width:1360px;margin:0 auto;padding:7px 28px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sysbar-label{color:#9a9a9a;font-weight:600;letter-spacing:.04em;text-transform:uppercase;font-size:var(--fs-xs)}
.sysbar-spacer{flex:1}
.sysbar-meta{color:#9a9a9a;font-size:var(--fs-xs)}
.sys-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;background:#2a2a2a;color:#eee;text-decoration:none;font-weight:500}
.sys-chip .dot{width:7px;height:7px;border-radius:50%;background:#777}
.sys-chip.on .dot{background:#3dbe6c}
.sys-chip.off{opacity:.72}
.sys-chip:hover{background:#333;color:#fff}
.status-dot{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm);font-weight:600;color:var(--ink-2)}
.status-dot::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--line-strong)}
.status-dot.on::before{background:#1f7a3f}
.status-dot.off::before{background:#b4533c}
.stat-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:20px}
.stat{border:1px solid var(--line);border-radius:var(--r-lg);padding:14px 16px;background:linear-gradient(180deg,#fff,#fafafa)}
.stat-k{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600}
.stat-v{font-size:1.35rem;font-weight:700;letter-spacing:-.02em;margin-top:4px}
.integ .card-h{align-items:flex-start}
.integ-title{display:flex;gap:12px;align-items:center}
.brand-mark{display:inline-flex;width:36px;height:36px;border-radius:8px;align-items:center;justify-content:center;font-weight:800;color:#fff}
.brand-mark.square{background:#000}
.brand-mark.google{background:linear-gradient(135deg,#4285f4,#34a853 55%,#fbbc05)}
.tag-mini{display:inline-flex;align-items:center;padding:0 6px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.03em;border:1px solid var(--line-strong);margin-right:4px;line-height:16px;text-transform:uppercase}
.tag-mini.square{background:#111;color:#fff;border-color:#111}
.tag-mini.google{background:#e8f0fe;color:#1a73e8;border-color:#c5d7f5}
.tag-mini.pay{background:#eef7f0;color:#1f7a3f;border-color:#b9dcc4}
.evt-meta{margin-top:4px}
.pay-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:8px}
.pay-fig{font-size:1.25rem;font-weight:700;letter-spacing:-.02em}
.pill.unpaid{background:var(--panel);color:var(--muted)}
.pill.partial{border-color:var(--accent)}
.pill.paid,.pill.ok{background:var(--ink);color:#fff}
@media (max-width:720px){
.stat-strip,.pay-summary{grid-template-columns:1fr}
.sysbar-in{padding:8px 14px}
}

/* Disabled actions should read as unavailable, including provider setup buttons. */
.btn:disabled,.btn[aria-disabled="true"]{opacity:.48;cursor:not-allowed;box-shadow:none}
