/* PANNA Ops — application stylesheet (self-contained, no Tailwind). Palette: ink #12302C · teal #0E7C74 · paper #F2F5F3 */

:root{--ink:#12302C;--teal:#0E7C74;--teal-dark:#0B625C;--teal-light:#E3F1EF;--paper:#F2F5F3;--line:#D9E1DD;--pass:#1F8A4C;--fail:#C8352E;--warn:#D98E04;--muted:#5B716D;--ease:cubic-bezier(.23,1,.32,1)}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:Figtree,"Segoe UI",system-ui,-apple-system,sans-serif;background:var(--paper);color:var(--ink);font-size:16px;line-height:1.4}
[x-cloak]{display:none!important}
button{font:inherit;color:inherit}
input,select,textarea{font:inherit;color:inherit}

/* ---------- App bar ---------- */
.appbar{position:sticky;top:0;z-index:40;background:var(--ink);color:#fff}
.appbar-in{max-width:56rem;margin:0 auto;padding:.625rem 1rem;display:flex;align-items:center;gap:.75rem}
.brand{font-weight:600;letter-spacing:0;font-size:1.0625rem;white-space:nowrap}.brand span{color:#8FD3CB;font-weight:900;letter-spacing:.01em}
.appbar-title{flex:1;font-size:.875rem;color:#C9DAD6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lang{display:inline-flex;border:1px solid rgba(255,255,255,.25);border-radius:.5rem;overflow:hidden}
.lang button{background:transparent;border:0;color:#C9DAD6;font-weight:700;font-size:.75rem;padding:.375rem .625rem;cursor:pointer}
.lang button.on{background:#fff;color:var(--ink)}
.ribbon{background:#FFF4D6;color:#7A5200;font-size:.75rem;text-align:center;padding:.25rem .75rem;font-weight:600}

.wrap{max-width:56rem;margin:0 auto;padding:1rem 1rem 6.5rem}
@media(min-width:768px){.wrap{padding:1.5rem 1.5rem 4rem}}

/* ---------- Primitives ---------- */
.card{background:#fff;border:1px solid var(--line);border-radius:1rem}
.lbl{display:block;font-size:.6875rem;font-weight:700;color:var(--muted);margin-bottom:.25rem;text-transform:uppercase;letter-spacing:.05em}
.in{width:100%;min-height:2.625rem;padding:.375rem .625rem;border:1px solid var(--line);border-radius:.625rem;background:#fff;font-size:1rem;transition:border-color 120ms,box-shadow 120ms}
.in:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(14,124,116,.18)}
textarea.in{min-height:5rem;line-height:1.45;resize:vertical}
select.in{appearance:none;-webkit-appearance:none;padding-right:2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235B716D' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center}
.in.ok{border-color:var(--pass);color:var(--pass);background:#F1FAF4}
.in.bad{border-color:var(--fail);color:var(--fail);background:#FFF3F2}
.in.warn{border-color:var(--warn);color:#8A5A00;background:#FFF8E8}
.in.sm{min-height:2.375rem;font-size:.9375rem}

/* ---------- Visit header ---------- */
.hdr{padding:1rem;margin-bottom:.75rem}
.hdr-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.hdr-grid>.span2{grid-column:1/-1}
@media(min-width:640px){.hdr-grid{grid-template-columns:1.2fr 1.1fr 1.1fr .9fr}.hdr-grid>.span2{grid-column:auto}}
.seg{display:flex;border:1px solid var(--line);border-radius:.625rem;overflow:hidden;min-height:2.625rem;background:#fff}
.seg button{flex:1;border:0;background:transparent;font-weight:700;font-size:.8125rem;cursor:pointer;color:var(--muted);padding:0 .25rem}
.seg button+button{border-left:1px solid var(--line)}
.seg button.on{background:var(--teal);color:#fff}
.static{min-height:2.625rem;display:flex;align-items:center;padding:.375rem .625rem;border-radius:.625rem;background:var(--paper);font-weight:600;font-size:.9375rem}

/* ---------- Sticky score bar ---------- */
.scorebar{position:sticky;top:3.0625rem;z-index:30;margin:0 -1rem .75rem;padding:.5rem 1rem .4375rem;background:rgba(242,245,243,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
@media(min-width:768px){.scorebar{margin:0 0 1rem;padding:.625rem 1rem;border:1px solid var(--line);border-radius:.875rem;background:rgba(255,255,255,.94)}}
.sb-row{display:flex;align-items:center;gap:.625rem}
.progress{flex:1;height:.4375rem;background:var(--line);border-radius:999px;overflow:hidden;min-width:3rem}
.progress>span{display:block;height:100%;background:var(--teal);border-radius:999px;transition:width 200ms var(--ease)}
.sb-stat{font-size:.75rem;font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--muted)}
.sb-stat b{color:var(--ink);font-size:.9375rem;font-weight:800}
.grade{display:inline-flex;align-items:center;justify-content:center;width:2.125rem;height:2.125rem;border-radius:.5rem;font-weight:800;font-size:1.0625rem;flex:none}
.grade.A{background:#E6F4EA;color:var(--pass)}.grade.B{background:#E3F1EF;color:var(--teal)}.grade.C{background:#FFF4D6;color:#8A5A00}.grade.F{background:#FBEAE9;color:var(--fail)}.grade.none{background:var(--line);color:var(--muted)}
.sb-btn{display:inline-flex;align-items:center;gap:.25rem;height:2.125rem;padding:0 .625rem;border-radius:.5rem;border:1px solid var(--line);background:#fff;font-size:.75rem;font-weight:700;cursor:pointer;white-space:nowrap;color:var(--teal);flex:none}
.sb-btn:hover{background:var(--teal-light)}
.sb-btn svg{width:.875rem;height:.875rem}
.sb-scale{font-size:.6875rem;color:var(--muted);margin-top:.3125rem;display:flex;gap:.75rem;flex-wrap:wrap}
.sb-edit{font-weight:700;color:var(--teal);text-decoration:none}
.sb-edit:hover{text-decoration:underline}

/* ---------- Instructions ---------- */
.instr{margin-bottom:.75rem}
.instr summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;font-weight:700;font-size:.9375rem}
.instr summary::-webkit-details-marker{display:none}
.instr summary::after{content:"";width:.5rem;height:.5rem;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);margin-left:auto;transition:transform 150ms;flex:none}
.instr[open] summary::after{transform:rotate(-135deg)}
.instr-body{padding:0 1rem 1rem;font-size:.875rem;color:#2B4642}
.instr-body ol{margin:.25rem 0 .5rem;padding-left:1.25rem}.instr-body li{margin:.3125rem 0}
.instr-body h4{margin:.75rem 0 .25rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.instr-body p{margin:.25rem 0}

/* ---------- Question card ---------- */
.q{background:#fff;border:1px solid var(--line);border-radius:1rem;padding:.875rem;margin-bottom:.625rem;scroll-margin-top:7.75rem;transition:border-color 150ms,box-shadow 300ms}
@media(min-width:768px){.q{padding:1.125rem 1.25rem;scroll-margin-top:8.75rem}}
.q.is-pass{border-color:#BFE3CC}.q.is-fail{border-color:#F0C2BE}
.q.flash{box-shadow:0 0 0 4px rgba(14,124,116,.28)}
.q-head{display:flex;gap:.75rem;align-items:flex-start}
.q-num{flex:none;width:2.125rem;height:2.125rem;border-radius:.625rem;background:var(--paper);display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:.875rem;color:var(--muted);font-variant-numeric:tabular-nums}
.q.is-pass .q-num{background:#E6F4EA;color:var(--pass)}.q.is-fail .q-num{background:#FBEAE9;color:var(--fail)}
.q-main{min-width:0;flex:1}
.q-text{margin:0;font-size:.9375rem;line-height:1.45}
.q-std{display:inline-flex;align-items:center;gap:.3125rem;margin-top:.4375rem;font-size:.75rem;font-weight:600;color:#3D5652;background:var(--paper);border-radius:999px;padding:.1875rem .625rem}
.q-std svg{width:.8125rem;height:.8125rem;flex:none}
.q-body{margin-top:.75rem}
.q-foot{display:flex;align-items:center;gap:.5rem;margin-top:.875rem;flex-wrap:wrap}
.res{display:inline-flex;border:1px solid var(--line);border-radius:.75rem;overflow:hidden;background:#fff}
.res button{min-height:2.75rem;padding:0 .875rem;font-weight:700;font-size:.875rem;background:transparent;border:0;display:inline-flex;gap:.375rem;align-items:center;color:var(--muted);cursor:pointer;transition:background-color 120ms,color 120ms,transform 120ms var(--ease)}
.res button+button{border-left:1px solid var(--line)}
.res button:active{transform:scale(.97)}
.res button svg{width:1rem;height:1rem}
.res button.on-pass{background:var(--pass);color:#fff}.res button.on-fail{background:var(--fail);color:#fff}
.auto-tag{font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);display:inline-flex;align-items:center;gap:.375rem}
.auto-tag button{border:0;background:transparent;color:var(--teal);font-weight:700;font-size:.6875rem;cursor:pointer;text-transform:none;letter-spacing:0;padding:0;text-decoration:underline}
.note-btn{margin-left:auto;display:inline-flex;align-items:center;gap:.3125rem;min-height:2.25rem;padding:0 .625rem;border-radius:.5rem;border:1px solid transparent;background:transparent;font-size:.8125rem;font-weight:700;color:var(--muted);cursor:pointer}
.note-btn svg{width:.9375rem;height:.9375rem}
.note-btn:hover,.note-btn.has{color:var(--teal);background:var(--teal-light)}
.note{margin-top:.625rem}
@media(max-width:420px){.res button{padding:0 .75rem;font-size:.8125rem}.note-btn span{display:none}.note-btn{min-width:2.25rem;padding:0}}

/* ---------- Sub-tables ---------- */
.sub+.sub{margin-top:1rem;padding-top:1rem;border-top:1px dashed var(--line)}
.sub-head{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem;font-size:.8125rem;font-weight:700;color:#2B4642}
.sub-head .k{flex:none;width:1.5rem;height:1.5rem;border-radius:.375rem;background:var(--paper);display:inline-flex;align-items:center;justify-content:center;font-size:.6875rem;color:var(--muted)}
.sub-head label{margin-left:auto;font-weight:600;color:var(--muted);display:inline-flex;align-items:center;gap:.375rem;font-size:.75rem;cursor:pointer}
.sub-head input[type=checkbox]{width:1rem;height:1rem;accent-color:var(--teal)}
.tbl-head{display:none}
.tbl-row{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(5.5rem,1fr));gap:.5rem .625rem;padding:.625rem 2.125rem .625rem .625rem;background:var(--paper);border-radius:.75rem;margin-bottom:.5rem}
.tbl-row.no-del{padding-right:.625rem}
.cell{min-width:0}
.cell-wide{grid-column:1/-1}
.cell-span2{grid-column:span 2}
.cell-label{display:block;font-size:.6875rem;font-weight:700;color:var(--muted);margin-bottom:.25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-del{position:absolute;top:.375rem;right:.375rem;width:1.75rem;height:1.75rem;border-radius:.5rem;border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:1.25rem;line-height:1;display:inline-flex;align-items:center;justify-content:center}
.row-del:hover{background:#FBEAE9;color:var(--fail)}
@media(min-width:640px){
  .tbl-head{display:grid;grid-template-columns:var(--cols) 1.75rem;gap:.625rem;padding:0 .375rem .375rem;font-size:.6875rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
  .tbl-row{grid-template-columns:var(--cols) 1.75rem;align-items:center;padding:.375rem .375rem;background:transparent;border-radius:0;margin:0;border-top:1px solid #EEF2F0}
  .tbl-row.no-del{padding-right:.375rem}
  .cell-wide{grid-column:auto}
  .cell-span2{grid-column:auto}
  .cell-label{display:none}
  .row-del{position:static}
}
.numwrap .in{font-variant-numeric:tabular-nums}
@media(min-width:640px){.numwrap{max-width:9rem}}
.cell .seg button{font-size:.75rem;padding:0}
@media(max-width:639px){
  .tbl.compact .tbl-head{display:grid;grid-template-columns:1fr auto;gap:.5rem;padding:0 2.5rem .25rem .625rem;font-size:.6875rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
  .tbl.compact.no-del .tbl-head{padding-right:.625rem}
  .tbl.compact .tbl-head>div:nth-last-child(2){text-align:right;min-width:5.5rem}
  .tbl.compact .tbl-head>div:last-child{display:none}
  .tbl.compact .tbl-row{grid-template-columns:1fr auto;align-items:center;padding:.5rem 2rem .5rem .5rem;margin-bottom:.375rem}
  .tbl.compact .tbl-row.no-del{padding-right:.5rem}
  .tbl.compact .cell-wide{grid-column:auto}
  .tbl.compact .cell-label{display:none}
  .tbl.compact .numwrap{width:6.5rem}
  .tbl.compact .row-del{top:50%;transform:translateY(-50%)}
}
.fixed-lbl{min-height:2.625rem;display:flex;align-items:center;font-weight:600;font-size:.9375rem}
.yn{display:inline-flex;border:1px solid var(--line);border-radius:.625rem;overflow:hidden;height:2.625rem;background:#fff;max-width:100%}
.yn button{min-width:2.625rem;padding:0 .5rem;border:0;background:transparent;font-weight:800;font-size:.8125rem;color:#9AAAA6;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.25rem;transition:background-color 120ms,color 120ms}
.yn button+button{border-left:1px solid var(--line)}
.yn button.y.on{background:var(--pass);color:#fff}.yn button.n.on{background:var(--fail);color:#fff}
.equip{display:flex;flex-direction:column;gap:.375rem}
.add{margin-top:.5rem;display:inline-flex;align-items:center;gap:.375rem;min-height:2.25rem;padding:0 .75rem;border-radius:.5rem;border:1px dashed #B9C9C5;background:#fff;font-size:.8125rem;font-weight:700;color:var(--teal);cursor:pointer}
.add:hover{background:var(--teal-light);border-style:solid}
.chk-list{display:flex;flex-direction:column;gap:.375rem}
.chk{display:flex;align-items:center;gap:.75rem;padding:.5rem .625rem;border-radius:.625rem;background:var(--paper);flex-wrap:wrap}
.chk-name{flex:1;font-weight:600;font-size:.9375rem;min-width:8rem}
.chk .in{flex-basis:100%}
@media(min-width:640px){.chk .in{flex-basis:auto;flex:1.5}}

/* ---------- Comments ---------- */
.cm{padding:1rem;margin-top:1rem}
.cm h3{margin:0 0 .25rem;font-size:1rem}
.cm p.hint{margin:0 0 .75rem;font-size:.8125rem;color:var(--muted)}
.fu-head{display:grid;grid-template-columns:1fr 8.75rem 1.75rem;gap:.5rem;margin-top:1rem;font-size:.6875rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;padding:0 .125rem}
.fu-row{display:grid;grid-template-columns:1fr 8.75rem 1.75rem;gap:.5rem;margin-top:.5rem;align-items:center}
@media(max-width:480px){.fu-head{grid-template-columns:1fr 7.25rem 1.75rem}.fu-row{grid-template-columns:1fr 7.25rem 1.75rem}}

/* ---------- Area tabs ---------- */
.eval-tabs{position:fixed;left:0;right:0;bottom:0;z-index:35;background:#fff;border-top:1px solid var(--line);display:grid;grid-auto-flow:column;grid-auto-columns:1fr;padding-bottom:env(safe-area-inset-bottom)}
.eval-tab{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.625rem .25rem .5rem;font-size:.6875rem;font-weight:700;color:var(--muted);position:relative;border:0;background:transparent;cursor:pointer}
.eval-tab svg{width:1.375rem;height:1.375rem}
.eval-tab.is-active{color:var(--teal)}
.eval-tab.is-active::after{content:"";position:absolute;top:0;left:20%;right:20%;height:3px;background:var(--teal);border-radius:0 0 3px 3px}
@media(min-width:768px){
  .eval-tabs{position:static;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;grid-template-columns:none;border:1px solid var(--line);border-radius:.875rem;padding:.25rem;gap:.25rem;margin-bottom:1rem;background:#fff}
  .eval-tab{flex-direction:row;justify-content:center;gap:.5rem;padding:.625rem 1rem;font-size:.875rem;border-radius:.625rem}
  .eval-tab.is-active{background:var(--teal-light)}.eval-tab.is-active::after{display:none}
}

/* ---------- Footer actions ---------- */
.actions{display:flex;gap:.75rem;margin-top:1rem;align-items:center;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:3rem;padding:0 1.25rem;border-radius:.75rem;font-weight:700;font-size:.9375rem;border:1px solid transparent;cursor:pointer;transition:background-color 120ms,transform 120ms var(--ease)}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--teal);color:#fff}.btn-primary:hover{background:var(--teal-dark)}
.btn-secondary{background:#fff;color:var(--ink);border-color:var(--line)}.btn-secondary:hover{background:var(--paper)}
.btn-danger{background:#fff;color:var(--fail);border-color:#F1C9C6}.btn-danger:hover{background:#FBEAE9}
.autosave{font-size:.75rem;color:var(--muted);display:inline-flex;align-items:center;gap:.375rem;margin-left:auto}
.dot{width:.5rem;height:.5rem;border-radius:999px;background:var(--pass)}
.toast{position:fixed;left:50%;bottom:5.25rem;transform:translateX(-50%);background:var(--ink);color:#fff;padding:.625rem 1rem;border-radius:.75rem;font-size:.875rem;font-weight:600;z-index:50;box-shadow:0 8px 24px rgba(0,0,0,.2);white-space:nowrap;max-width:92vw}
@media(min-width:768px){.toast{bottom:2rem}}
.footer{margin-top:1.5rem;text-align:center;font-size:.6875rem;color:var(--muted)}
/* ---------- Service timing block ---------- */
.ptsb{flex:none;margin-left:auto;align-self:flex-start;font-size:.6875rem;font-weight:800;color:var(--muted);background:var(--paper);border-radius:999px;padding:.25rem .5625rem;white-space:nowrap;font-variant-numeric:tabular-nums}
.ptsb.two{color:#7A4B00;background:#FFF1D0}
.ptsb.got{color:var(--pass);background:#E6F4EA}
.cx{display:inline-flex;align-items:center;margin-top:.4375rem;margin-right:.375rem;font-size:.75rem;font-weight:700;color:#7A4B00;background:#FFF1D0;border-radius:999px;padding:.1875rem .625rem}
.tm-hint{font-size:.8125rem;color:var(--muted);margin:.25rem 0 .75rem}
.tm .tbl-row{grid-template-columns:1fr 1fr}
.sw{display:flex;align-items:center;gap:.5rem;min-height:2.625rem}
.sw-digits{font-variant-numeric:tabular-nums;font-weight:800;font-size:1.5rem;letter-spacing:-.02em;min-width:4.75rem;line-height:1}
.sw-digits.run{color:var(--teal);animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.6}}
.sw-btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;min-height:2.625rem;padding:0 .875rem;border-radius:.625rem;border:1px solid transparent;font-weight:800;font-size:.875rem;cursor:pointer;white-space:nowrap;transition:transform 120ms var(--ease),background-color 120ms}
.sw-btn:active{transform:scale(.96)}
.sw-btn svg{width:.9375rem;height:.9375rem}
.sw-start{background:var(--teal);color:#fff;flex:1}.sw-start:hover{background:var(--teal-dark)}
.sw-stop{background:var(--fail);color:#fff;flex:1}
.sw-reset{background:#fff;color:var(--muted);border-color:var(--line);min-width:2.625rem;padding:0}
.sw-time{width:5.5rem;text-align:center;font-weight:800;font-size:1.125rem;font-variant-numeric:tabular-nums}
.sw-time.dark{border-color:var(--pass);color:var(--pass);background:#E6F4EA}.sw-time.light{border-color:#7BC393;color:#14532D;background:#EEF8F1}.sw-time.yellow{border-color:#E6B800;color:#713F12;background:#FFF6D6}.sw-time.red{border-color:var(--fail);color:var(--fail);background:#FFF3F2}
@media(min-width:640px){.tm .tbl-row{grid-template-columns:var(--cols) 1.75rem}.sw-start,.sw-stop{flex:none}}
.adds{display:flex;gap:.5rem;flex-wrap:wrap}
.avgs{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem;margin-top:1rem}
.avg{border-radius:.75rem;padding:.625rem .375rem;text-align:center;background:var(--paper);color:var(--muted)}
.avg .l{font-size:.625rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;line-height:1.2}
.avg .v{font-size:1.375rem;font-weight:800;font-variant-numeric:tabular-nums;margin:.25rem 0 .125rem;line-height:1}
.avg .s{font-size:.625rem;font-weight:600;opacity:.85}
.avg.dark{background:#1F8A4C;color:#fff}.avg.light{background:#CDEBD6;color:#14532D}.avg.yellow{background:#FDE68A;color:#713F12}.avg.red{background:#C8352E;color:#fff}
.avg.has-red{box-shadow:inset 0 0 0 2px var(--fail)}
.avg .s.alert{font-weight:800;opacity:1;margin-top:.125rem}
.avg.light .s.alert,.avg.yellow .s.alert,.avg:not(.dark):not(.red):not(.light):not(.yellow) .s.alert{color:var(--fail)}
.tile-h.warnh{color:#8A5A00;font-weight:700}
.legend{display:flex;gap:.625rem;flex-wrap:wrap;margin-top:.5rem;font-size:.6875rem;color:var(--muted)}
.legend i{display:inline-block;width:.625rem;height:.625rem;border-radius:.1875rem;margin-right:.25rem;vertical-align:-1px}
.speed{display:flex;align-items:center;gap:.625rem;margin-top:.75rem;padding:.625rem .75rem;border-radius:.75rem;background:var(--teal-light);font-size:.8125rem;color:#1F3F3B}
.speed b{font-size:1.25rem;color:var(--teal);font-variant-numeric:tabular-nums}
.tres{padding:.875rem 0 0;margin-top:.875rem;border-top:1px solid #EEF2F0}
.tres .q-foot{margin-top:.625rem}

/* ---------- Per-cashier timing blocks ---------- */
.blk{position:relative;background:var(--paper);border-radius:.875rem;padding:.75rem;margin-bottom:.625rem}
.blk-head{display:grid;grid-template-columns:1fr;gap:.5rem;padding-right:1.75rem}
@media(min-width:640px){.blk-head{grid-template-columns:1fr 1fr 1fr}}
.blk .cell-label{display:block}
.blk .row-del{position:absolute;top:.5rem;right:.5rem}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.625rem}
@media(min-width:640px){.tiles{grid-template-columns:repeat(4,1fr)}}
.tile{background:#fff;border:1px solid var(--line);border-radius:.75rem;padding:.625rem;display:flex;flex-direction:column;gap:.3125rem;min-height:8.25rem;min-width:0}
.tiles>*{min-width:0}
.tile.run{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}
.tile.done{border-color:#BFE3CC}
.tile.wait{background:#F7F9F8;border-style:dashed}
.tile-l{font-size:.6875rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--ink)}
.tile-h{font-size:.6875rem;color:var(--muted);line-height:1.25;min-height:2.5em}
.tile-d{font-variant-numeric:tabular-nums;font-weight:800;font-size:1.75rem;letter-spacing:-.02em;line-height:1;margin-top:auto;color:var(--ink)}
.tile-d.idle{color:#B7C4C0}
.tile-d.wait{color:#B7C4C0}
.tile-d.run{color:var(--teal);animation:pulse 1.6s ease-in-out infinite}
.tile-a{display:flex;gap:.375rem;align-items:center;margin-top:.125rem}
.tile-a .sw{width:100%}
.tile-a .sw-time{padding-left:.25rem;padding-right:.25rem;font-size:1rem}
.tile-w{font-size:.75rem;font-weight:700;color:#B7C4C0;text-transform:uppercase;letter-spacing:.05em;min-height:2.625rem;display:flex;align-items:center}
.avgs-4{grid-template-columns:1fr 1fr}
@media(min-width:640px){.avgs-4{grid-template-columns:repeat(4,1fr)}}
/* ---------- Home / visits / hub ---------- */
.login{min-height:100vh;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:1.5rem;padding-top:max(1.5rem,env(safe-area-inset-top));padding-bottom:max(1.5rem,env(safe-area-inset-bottom));background:var(--ink)}
@supports(-webkit-touch-callout:none){.login{min-height:-webkit-fill-available}}
.login-card{background:#fff;border-radius:1.25rem;padding:1.75rem 1.5rem;width:100%;max-width:22rem;margin:auto;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.login-sub{color:var(--muted);font-size:.875rem}
.login-note{font-size:.75rem;color:var(--muted);margin:.75rem 0 0;text-align:center}
.who{font-size:.75rem;color:#C9DAD6;white-space:nowrap;display:none}
@media(min-width:640px){.who{display:block}}
.h1{margin:0;font-size:1.375rem;font-weight:800;letter-spacing:-.01em}
.h2{font-size:1rem;font-weight:800;margin:1.25rem 0 .625rem}
.h3{font-size:.9375rem;font-weight:800;margin:0 0 .625rem}
.sub{margin:.125rem 0 0;color:var(--muted);font-size:.875rem}
.row-between{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.btn-ghost{background:transparent;color:var(--teal);border-color:transparent}.btn-ghost:hover{background:var(--teal-light)}
.btn-sm{min-height:2.25rem;padding:0 .75rem;font-size:.8125rem;border-radius:.5rem}
.btn:disabled{opacity:.45;cursor:not-allowed}
.chips{display:flex;gap:.375rem;flex-wrap:wrap}
.chip{min-height:2rem;padding:0 .75rem;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:.8125rem;font-weight:700;color:var(--muted);cursor:pointer}
.chip.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.filters{display:flex;gap:.625rem;align-items:center;flex-wrap:wrap;margin:.75rem 0}
.badge{display:inline-flex;align-items:center;padding:.1875rem .5625rem;border-radius:999px;font-size:.6875rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.badge.big{font-size:.75rem;padding:.3125rem .75rem}
.st-open{background:#FFF1D0;color:#7A4B00}.st-done{background:#E6F4EA;color:var(--pass)}
.vgrid{display:grid;grid-template-columns:1fr;gap:.625rem}
@media(min-width:768px){.vgrid{grid-template-columns:1fr}}
.vcard{text-align:left;background:#fff;border:1px solid var(--line);border-radius:1rem;padding:.875rem 1rem;width:100%;transition:border-color 120ms,box-shadow 120ms}
.vcard:hover{border-color:var(--teal);box-shadow:0 4px 16px rgba(14,124,116,.12)}
.vcard-link{cursor:pointer}.vcard-link:hover .vstore{color:var(--teal)}
.vcard-top{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}
.vstore{font-weight:800;font-size:1rem}
.vmeta{font-size:.8125rem;color:var(--muted);margin-top:.125rem}
.vareas{margin-top:.75rem;display:flex;flex-direction:column;gap:.375rem}
.varea{display:grid;grid-template-columns:4.5rem 1fr 3rem;align-items:center;gap:.5rem;font-size:.75rem}
.varea-l{font-weight:700;color:var(--muted)}
.varea-n{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}
.vcta{margin-top:.625rem;font-size:.8125rem;font-weight:800;color:var(--teal)}
.vcard-foot{margin-top:.75rem;display:flex;gap:.375rem;align-items:center;justify-content:flex-end}
.vcard-foot form{margin:0}
.kpis{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin-top:.75rem}
@media(min-width:768px){.kpis{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1024px){.kpis{grid-template-columns:repeat(6,1fr)}}
.kpi{background:#fff;border:1px solid var(--line);border-radius:.875rem;padding:.75rem}
.kpi-l{font-size:.6875rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.kpi-v{font-size:1.5rem;font-weight:800;letter-spacing:-.02em;margin-top:.25rem;font-variant-numeric:tabular-nums}
.kpi-s{font-size:.6875rem;color:var(--muted);margin-top:.25rem}
.two-col{display:grid;grid-template-columns:1fr;gap:.75rem;margin-top:.75rem}
@media(min-width:900px){.two-col{grid-template-columns:1fr 1fr}}
.card-pad{padding:1rem}
.chart{width:100%;height:auto;display:block;margin-top:.25rem}
.legend{display:flex;gap:.75rem;flex-wrap:wrap;font-size:.75rem;color:var(--muted)}
.legend i{display:inline-block;width:.625rem;height:.625rem;border-radius:.1875rem;margin-right:.25rem;vertical-align:-1px}
.table{width:100%;border-collapse:collapse;font-size:.875rem}
.table th{text-align:left;font-weight:700;color:var(--muted);padding:.375rem .5rem;border-bottom:1px solid var(--line);font-size:.6875rem;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.table td{padding:.5rem .5rem;border-bottom:1px solid #EEF2F0;vertical-align:middle}
.table td.num{white-space:nowrap}
.table tr:last-child td{border-bottom:0}
.table-wrap{overflow-x:auto}
.mini{display:flex;align-items:center;gap:.5rem;min-width:7rem}.mini .progress{flex:1}
.grade.sm{width:1.75rem;height:1.75rem;font-size:.875rem;border-radius:.4375rem}
.grade.grade-lg{width:3.25rem;height:3.25rem;font-size:1.625rem;border-radius:.875rem}
.flist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.375rem}
.flist li{display:flex;align-items:center;gap:.625rem;padding:.5rem .625rem;border-radius:.625rem;background:var(--paper);font-size:.8125rem}
.fcode{flex:none;font-size:.6875rem;font-weight:800;padding:.1875rem .4375rem;border-radius:.375rem;min-width:2.5rem;text-align:center}
.ftext{flex:1;min-width:0}
.fcount{flex:none;text-align:right;display:flex;flex-direction:column;line-height:1.1}
.fcount b{font-variant-numeric:tabular-nums}
.fcount span{font-size:.6875rem;color:var(--muted)}
.fcount.late b{color:var(--fail)}.fcount.late span{color:var(--fail)}
.vlist{display:flex;flex-direction:column}
.vrow{display:flex;align-items:center;gap:.5rem .75rem;padding:.75rem .25rem;border-bottom:1px solid #EEF2F0;flex-wrap:wrap}
.vrow:last-child{border-bottom:0}
.vrow-link{display:flex;align-items:center;gap:.75rem;flex:1;min-width:0;text-align:left;cursor:pointer}
.vrow-link:hover .vstore{color:var(--teal)}
.vrow-main{flex:1;min-width:0}
.vrow-actions{display:flex;align-items:center;gap:.375rem;width:100%;justify-content:flex-end}
.vrow-actions form{margin:0}
@media(min-width:640px){.vrow-actions{width:auto}}
.vgrades{display:flex;gap:.25rem}
.back{border:0;background:transparent;color:var(--teal);font-weight:800;font-size:.875rem;cursor:pointer;padding:0;margin-bottom:.75rem}
.hub-head{padding:1rem}
.result{margin-top:1rem;padding:1rem;border-radius:.875rem;background:var(--paper);text-align:center}
.result-l{font-size:.6875rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.result-g{display:flex;justify-content:center;gap:1rem;margin:.625rem 0}
.rg{display:flex;flex-direction:column;align-items:center;gap:.25rem}
.rg-l{font-size:.6875rem;font-weight:700;color:var(--muted)}
.result-s{font-size:.75rem;color:var(--muted)}
.steps{display:flex;flex-direction:column;gap:.5rem}
.step{display:grid;grid-template-columns:2.25rem 1fr auto;gap:.75rem;align-items:center;background:#fff;border:1px solid var(--line);border-radius:1rem;padding:.875rem}
.step.active{border-color:var(--teal);box-shadow:0 0 0 3px rgba(14,124,116,.12)}
.step.done{border-color:#BFE3CC}
.step-n{width:2.25rem;height:2.25rem;border-radius:.625rem;display:inline-flex;align-items:center;justify-content:center;font-weight:800}
.step-n svg{width:1.125rem;height:1.125rem}
.step-main{min-width:0}
.step-a{display:flex;flex-direction:column;gap:.375rem;align-items:stretch}
.step-a .btn{justify-content:center}
@media(min-width:640px){.step-a{flex-direction:row;align-items:center}}
.step-t{font-weight:800;font-size:.9375rem;display:flex;gap:.5rem;align-items:baseline;flex-wrap:wrap}
.step-q{font-size:.6875rem;font-weight:700;color:var(--muted)}
.step-p{display:flex;align-items:center;gap:.5rem;margin-top:.375rem;font-size:.75rem;color:var(--muted)}
.step-p .progress{flex:1}
.step-s{font-size:.75rem;color:var(--muted);margin-top:.25rem}
.step.summary{background:var(--paper)}
.hint-box{font-size:.8125rem;color:#2B4642;background:var(--teal-light);border-radius:.75rem;padding:.75rem .875rem;margin:.875rem 0 0;line-height:1.45}
.modal-bg{position:fixed;inset:0;background:rgba(18,48,44,.55);z-index:60;display:flex;align-items:flex-end;justify-content:center;padding:0}
@media(min-width:640px){.modal-bg{align-items:center;padding:1.5rem}}
.modal{background:#fff;width:100%;max-width:26rem;border-radius:1.25rem 1.25rem 0 0;padding:1.25rem 1.25rem calc(1.25rem + env(safe-area-inset-bottom))}
@media(min-width:640px){.modal{border-radius:1.25rem}}

/* ---------- App shell additions ---------- */
.appbar-in{max-width:64rem}
.wrap{max-width:64rem}
.user-menu{position:relative}
.user-btn{display:inline-flex;align-items:center;gap:.375rem;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);color:#fff;border-radius:.5rem;padding:.3125rem .625rem;font-size:.75rem;font-weight:700;cursor:pointer;white-space:nowrap}
.user-btn:hover{background:rgba(255,255,255,.14)}
.menu{position:absolute;right:0;top:calc(100% + .375rem);background:#fff;border:1px solid var(--line);border-radius:.75rem;box-shadow:0 12px 32px rgba(0,0,0,.18);min-width:12rem;padding:.375rem;z-index:50;color:var(--ink)}
.menu a,.menu button{display:block;width:100%;text-align:left;padding:.5rem .625rem;border-radius:.5rem;font-size:.875rem;font-weight:600;color:var(--ink);text-decoration:none;background:transparent;border:0;cursor:pointer}
.menu a:hover,.menu button:hover{background:var(--paper)}
.menu .muted{font-size:.6875rem;color:var(--muted);padding:.375rem .625rem .125rem;text-transform:uppercase;letter-spacing:.05em;font-weight:800}
.flash{border-radius:.75rem;padding:.75rem 1rem;font-size:.875rem;font-weight:600;margin-bottom:.75rem;display:flex;gap:.5rem;align-items:center}
.flash.success{background:#E6F4EA;color:var(--pass)}.flash.error{background:#FBEAE9;color:var(--fail)}.flash.info{background:var(--teal-light);color:var(--teal)}
.eval-tab{text-decoration:none}

.form-grid{display:grid;grid-template-columns:1fr;gap:.75rem}
@media(min-width:640px){.form-grid{grid-template-columns:1fr 1fr}.form-grid .span2{grid-column:1/-1}}
.field label,.lbl{display:block}
.help{font-size:.75rem;color:var(--muted);margin-top:.25rem}
.checks{display:flex;flex-wrap:wrap;gap:.5rem .875rem}
.checks label{display:inline-flex;align-items:center;gap:.375rem;font-size:.875rem;font-weight:600;cursor:pointer}
.checks input{width:1rem;height:1rem;accent-color:var(--teal)}
.tbl-actions{display:flex;gap:.375rem;flex-wrap:wrap}
.xp{display:inline-flex;gap:.375rem}
.xp-btn{display:inline-flex;align-items:center;gap:.25rem;height:1.875rem;padding:0 .5rem;border-radius:.5rem;border:1px solid var(--line);background:#fff;font-size:.6875rem;font-weight:800;letter-spacing:.02em;text-decoration:none;color:var(--ink);transition:background-color 120ms,border-color 120ms}
.xp-btn svg{width:1rem;height:1rem;flex:none}
.xp-pdf{color:var(--fail)}.xp-pdf:hover{background:#FBEAE9;border-color:#F1C9C6}
.xp-xls{color:var(--pass)}.xp-xls:hover{background:#E6F4EC;border-color:#BFE0CC}
.pill{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:999px;font-size:.6875rem;font-weight:800;white-space:nowrap}
.pill.ok{background:#E6F4EA;color:var(--pass)}.pill.no{background:#FBEAE9;color:var(--fail)}.pill.muted{background:var(--paper);color:var(--muted)}.pill.warn{background:#FFF1D0;color:#7A4B00}
.hidden{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.admin-tabs{display:flex;gap:.375rem;flex-wrap:wrap;margin-bottom:1rem}
.admin-tabs a{text-decoration:none}
.link-btn{background:none;border:0;color:var(--teal);font-weight:700;cursor:pointer;padding:0;font-size:.8125rem}
.danger-text{color:var(--fail)}
.summary-grid{display:grid;grid-template-columns:1fr;gap:.75rem}
@media(min-width:900px){.summary-grid{grid-template-columns:1fr 1fr}}
.export-bar{display:flex;gap:.5rem;flex-wrap:wrap}
.print-body{background:#fff}
.q .q-num.tp{background:#E3F1EF;color:var(--teal)}
.mini-grades{display:inline-flex;gap:.25rem;vertical-align:middle}
.tres .q-head{margin-bottom:.25rem}
.pending-note{font-size:.8125rem;color:var(--muted)}
.tile .sw-time{min-width:0}
@media(prefers-reduced-motion:reduce){*{transition:none!important}.sw-digits.run,.tile-d.run{animation:none}}
@media print{.appbar,.ribbon,.eval-tabs,.scorebar,.no-print,.toast{display:none!important}.wrap{padding:0;max-width:none}body{background:#fff}}

/* ---------- Late additions ---------- */
.hide-sm{display:none}
@media(min-width:640px){.hide-sm{display:inline}}
.save-dot{display:inline-block;width:.5rem;height:.5rem;border-radius:999px;background:var(--line);transition:background-color 150ms ease}
.save-dot.is-saving{background:var(--warn)}.save-dot.is-saved{background:var(--pass)}.save-dot.is-error{background:var(--fail)}
.res button:disabled,.yn button:disabled,.seg button:disabled{cursor:default}
.in:disabled{background:var(--paper);color:var(--ink)}
.btn-block{width:100%}

/* ---------- Utilities (replace inline styles in views) ---------- */
.m-0{margin:0}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}
.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}
.p-0{padding:0}.pad-list{padding:.25rem .75rem}.pad-y{padding:.75rem 0}
.flex{display:flex}.flex-1{flex:1}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.gap-2{gap:.5rem}.block{display:block}
.muted{color:var(--muted)}.t-center{text-align:center}.strong{font-weight:700}.small{font-size:.8125rem}.text-pass{color:var(--pass);font-weight:700}
.plain{color:inherit;text-decoration:none}.white{color:#fff}
.chip-link{text-decoration:none;display:inline-flex;align-items:center}
.select-inline{width:auto;min-height:2.25rem;padding:.25rem 2rem .25rem .625rem;font-size:.875rem}
.card-narrow{padding:1.25rem;max-width:28rem;margin:0 auto}
.error-card{padding:1.5rem;text-align:center;max-width:32rem;margin:2rem auto}
.error-code{font-size:2.5rem;font-weight:800;color:var(--muted)}
.error-msg{margin:.5rem 0 1rem}
.brand-link{text-decoration:none;color:#fff}
.appbar-title strong{color:#fff}
.list-empty{color:var(--muted);padding:1rem .25rem}
.vcard-link{text-decoration:none;color:inherit;display:block}
.row-between.items-start{align-items:flex-start}
.form-auto{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr))}
.form-sign{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))}
.filters-actions{display:flex;align-items:flex-end;gap:.5rem}
/* area colours */
.area-quality{color:#0E7C74;background:#E3F1EF}.area-service{color:#D98E04;background:#FFF1D0}.area-cleaning{color:#3B6FB6;background:#E4ECF7}
.progress>span.bar-quality{background:#0E7C74}.progress>span.bar-service{background:#D98E04}.progress>span.bar-cleaning{background:#3B6FB6}
.step-n.summary-n{background:#fff;color:var(--ink)}
.cm-title{margin:0 0 .5rem;font-size:1rem;padding-left:.5rem;border-left:3px solid var(--line)}
.cm-title.quality{border-left-color:#0E7C74}.cm-title.service{border-left-color:#D98E04}.cm-title.cleaning{border-left-color:#3B6FB6}
/* login */
.login-brand{font-size:1.75rem;margin-bottom:.25rem;color:var(--ink);text-align:center;font-weight:600}
.login-brand span{color:var(--teal);font-weight:900}
.login-sub{text-align:center}
.login-lang{display:flex;margin:1.25rem auto 0;width:max-content;border-color:var(--line)}
.login-lang button{color:var(--muted)}.login-lang button.on{background:var(--ink);color:#fff}
/* evaluation form */
.q-text.strong{font-weight:700}
.sw-flex{flex:1}
.sw-time-fluid{flex:1 1 0;width:0;min-width:0}
.tabular{font-variant-numeric:tabular-nums}
.is-off{opacity:.25;cursor:default}
.legend i.b-dark{background:#1F8A4C}.legend i.b-light{background:#CDEBD6}.legend i.b-yellow{background:#FDE68A}.legend i.b-red{background:#C8352E}
/* summary */
.fail-note{margin-top:.125rem;color:#7A2E29;font-size:.8125rem}
.fu-item{display:flex;gap:.5rem;align-items:flex-start;font-size:.875rem}
.fu-item input{margin-top:.25rem;accent-color:var(--teal)}
.fu-row.done{opacity:.6}.fu-row.done .fu-text{text-decoration:line-through}
.fu-date{font-size:.8125rem;text-align:center}.fu-date.overdue{color:var(--fail);font-weight:700}
.fu-add{margin:0;min-height:2.375rem;padding:0 .5rem}
.row-del.static{position:static}
.autosave.left{margin:.75rem 0 0;justify-content:flex-start}
.dot.saving{background:var(--warn)}.dot.error{background:var(--fail)}
.hint-lead{margin:-.25rem 0 .625rem}
.cm.mt-0{margin-top:0}
.two-col.one-col{grid-template-columns:1fr;gap:1rem}
.checks.check-tall{min-height:2.625rem;align-items:center}
tr.is-inactive{opacity:.55}
.settings-area{font-weight:800;font-size:.8125rem;margin:.5rem 0 .25rem}
.hint-box.m-0{margin:0}

/* ---------- Reports filters ---------- */
.btn{white-space:nowrap;text-decoration:none}
.report-filters{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.report-filters .span2,.report-filters .filters-actions{grid-column:1/-1}
.report-filters .filters-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.report-filters .filters-actions .btn{flex:1 1 auto;justify-content:center}
@media(min-width:768px){
  .report-filters{grid-template-columns:1fr 1fr 1.4fr auto;align-items:end}
  .report-filters .span2,.report-filters .filters-actions{grid-column:auto}
  .report-filters .filters-actions .btn{flex:none}
}
/* iOS Safari: native date inputs have an intrinsic min width that overflows grid cells */
input[type=date],input[type=datetime-local],input[type=time]{-webkit-appearance:none;appearance:none;min-width:0;width:100%;display:block}
input::-webkit-date-and-time-value{text-align:left;min-height:1.4em}
.report-filters>div,.form-grid>div,.hdr-grid>div,.fu-row>*{min-width:0}
@media(max-width:360px){.report-filters{grid-template-columns:1fr}.report-filters .span2,.report-filters .filters-actions{grid-column:auto}}
