/* Happy Move app UI: same brand as the homepage (yellow + near-black, chunky borders). Mobile first. */
:root{--y:#FFD84D;--y2:#FFF4C2;--k:#1a1a1a;--g:#5b5b5b;--line:#e6e1cf;--ok:#1f7a3f;--bad:#b3261e;--r:20px}
*{box-sizing:border-box}html,body{margin:0}
body{font-family:"Nunito","Trebuchet MS",system-ui,sans-serif;color:var(--k);background:var(--cr,#fffdf5);line-height:1.5}
a{color:inherit}h1,h2,h3{line-height:1.15;margin:0 0 .5em}h1{font-size:clamp(1.7rem,6vw,2.4rem);letter-spacing:-.02em}
h2{font-size:1.35rem}h3{font-size:1.1rem}.muted{color:var(--g)}.small{font-size:.9rem}
.wrap{max-width:1100px;margin:0 auto;padding:0 16px}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.15rem;text-decoration:none}.brand img{width:36px;height:36px}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 0;gap:10px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 20px;border-radius:999px;font:inherit;font-weight:800;
 text-decoration:none;border:3px solid var(--k);background:#fff;color:var(--k);cursor:pointer;transition:transform .12s}
.btn:hover{transform:translateY(-1px)}.btn-y{background:var(--y);box-shadow:3px 3px 0 var(--k);color:var(--on-y,inherit)}.btn-k{background:var(--k);color:#fff}
.btn-sm{padding:6px 12px;border-width:2px;font-size:.9rem}.btn-link{border:0;background:none;padding:4px 6px;text-decoration:underline;font-weight:700}
.btn:disabled{opacity:.5;cursor:default;transform:none}
.card{border:3px solid var(--k);border-radius:var(--r);padding:18px;background:#fff}
.card+.card{margin-top:16px}.soft{border-color:var(--line);border-width:2px}
label{display:block;font-weight:700;font-size:.92rem;margin:0 0 4px}
input,select,textarea{width:100%;font:inherit;padding:10px 12px;border:2px solid var(--k);border-radius:12px;background:#fff;min-height:44px}
input:focus,select:focus,textarea:focus{outline:3px solid var(--y);outline-offset:1px}
.field{margin-bottom:12px}.row{display:grid;gap:12px}.hint{font-size:.82rem;color:var(--g);font-weight:400}
.check{display:flex;align-items:center;gap:8px;font-weight:700}.check input{width:22px;height:22px;min-height:0}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 16px}
.tab{padding:8px 14px;border:2px solid var(--k);border-radius:999px;background:#fff;font:inherit;font-weight:800;cursor:pointer;text-decoration:none}
.tab[aria-selected=true],.tab.on{background:var(--y);color:var(--on-y,inherit)}
.msg{padding:10px 14px;border-radius:12px;margin:10px 0;font-weight:700}.msg.err{background:#fde7e5;color:var(--bad)}.msg.ok{background:#e3f4e8;color:var(--ok)}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:9px 8px;border-bottom:2px solid var(--line);vertical-align:top}
th{font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;color:var(--g)}
.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.8rem;font-weight:800;border:2px solid var(--k);background:#fff}
.pill.confirmed{background:var(--y);color:var(--on-y,inherit)}.pill.done{background:#cfe9d7}.pill.cancelled{background:#eee;color:#777;border-color:#999}.pill.inquiry{background:var(--y2)}
.big{font-size:2rem;font-weight:900}.price{font-size:2.6rem;font-weight:900;letter-spacing:-.02em}
.hl{background:linear-gradient(transparent 55%,var(--y) 55%);padding:0 3px}
/* app shell */
.shell{min-height:100vh;padding-bottom:76px}
.side{position:fixed;left:0;right:0;bottom:0;background:var(--k);color:#fff;display:flex;justify-content:space-around;z-index:5;padding:6px 0 calc(6px + env(safe-area-inset-bottom))}
.side a{color:#fff;text-decoration:none;display:flex;flex-direction:column;align-items:center;font-size:.75rem;font-weight:800;padding:4px 10px;border-radius:12px}
.side a .i{font-size:1.3rem}.side a.on{background:var(--y);color:var(--on-y,var(--k))}
.side .logo,.side .who{display:none}
main.view{padding:8px 0 24px}
.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.kpi .big{font-size:1.8rem}
/* calendar */
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:3px solid var(--k);border-radius:var(--r);overflow:hidden;background:#fff}
.cal .h{background:var(--k);color:#fff;font-weight:800;font-size:.75rem;text-align:center;padding:6px 0}
.cal .d{min-width:0;min-height:78px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:4px;font-size:.78rem}
.cal .d.out{background:var(--cr,#faf8f0);color:#aaa}.cal .d.today .n{background:var(--y);border-radius:8px;padding:0 6px;color:var(--on-y,inherit)}
.cal .n{font-weight:900;display:inline-block}
.ev{display:block;margin-top:3px;padding:1px 3px;border-radius:7px;background:var(--y2);border:2px solid var(--k);font-weight:700;text-decoration:none;
 white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;font-size:.72rem}
.ev.confirmed{background:var(--y);color:var(--on-y,inherit)}.ev.done{background:#cfe9d7}.ev.cancelled{opacity:.5}
.week{display:grid;gap:10px}.week .day{border:2px solid var(--line);border-radius:12px;padding:10px;background:#fff}
.week .day.today{border-color:var(--k);box-shadow:3px 3px 0 var(--y)}
.week .ev{white-space:normal;font-size:.85rem;padding:6px 8px}
/* dialog */
dialog{border:3px solid var(--k);border-radius:var(--r);padding:0;max-width:640px;width:calc(100% - 20px);max-height:92vh}
dialog::backdrop{background:rgba(26,26,26,.55)}dialog form,dialog .dlg{padding:18px}
.dlg-h{display:flex;justify-content:space-between;align-items:center;gap:10px}
/* quote */
.steps{display:flex;gap:6px;margin:6px 0 16px;overflow-x:auto}
.steps span{flex:1;min-width:70px;text-align:center;font-weight:800;font-size:.8rem;padding:6px;border-radius:999px;border:2px solid var(--k);background:#fff}
.steps span.on{background:var(--y);color:var(--on-y,inherit)}.steps span.done{background:var(--k);color:#fff}
.sugg{border:2px solid var(--k);border-top:0;border-radius:0 0 12px 12px;background:#fff;margin-top:-6px;max-height:220px;overflow:auto}
.sugg button{display:block;width:100%;text-align:left;border:0;background:none;padding:9px 12px;font:inherit;cursor:pointer;border-bottom:1px solid var(--line)}
.sugg button:hover{background:var(--y2)}
.items{display:grid;gap:8px}.item{display:flex;align-items:center;justify-content:space-between;gap:8px;border:2px solid var(--line);border-radius:12px;padding:6px 6px 6px 12px;background:#fff}
.item.has{border-color:var(--k);background:var(--y2)}
.qty{display:flex;align-items:center;gap:4px}.qty button{width:38px;height:38px;border-radius:50%;border:2px solid var(--k);background:#fff;font-weight:900;font-size:1.1rem;cursor:pointer}
.qty output{min-width:28px;text-align:center;font-weight:900}
.hero-y{background:var(--y2);border-radius:0 0 30px 30px;padding-bottom:18px;margin-bottom:16px}
.center{min-height:100vh;display:grid;place-items:center;padding:20px}
@media(min-width:760px){
 .row.c2{grid-template-columns:1fr 1fr}.row.c3{grid-template-columns:repeat(3,1fr)}.row.c4{grid-template-columns:repeat(4,1fr)}
 .kpis{grid-template-columns:repeat(4,1fr)}.cal .d{min-height:104px;font-size:.85rem}.items{grid-template-columns:1fr 1fr}
 .week{grid-template-columns:repeat(7,1fr)}
}
@media(min-width:1000px){
 .shell{padding:0 0 0 220px}
 .side{top:0;right:auto;width:220px;flex-direction:column;justify-content:flex-start;gap:4px;padding:18px 12px}
 .side a{flex-direction:row;gap:10px;font-size:1rem;padding:10px 12px}
 .side .logo{display:flex;color:#fff;margin-bottom:18px}.side .who{display:block;margin-top:auto;font-size:.85rem;color:#bbb}
 .shell .wrap{padding:0 28px}
}
/* spreadsheet-style admin tables (Crew, Customers) */
.sheetbar{align-items:center;flex-wrap:wrap;gap:8px}
.sheet{overflow:auto;max-height:70vh;border:2px solid var(--line);border-radius:12px;margin-top:10px}
.sheet table th{position:sticky;top:0;background:var(--cr,#fffdf5);z-index:1}
.sheet td{padding:4px 6px;vertical-align:middle}
.sheet td input:not([type=checkbox]),.sheet td select{width:100%;min-width:90px;padding:6px 8px;border:2px solid transparent;border-radius:8px;background:transparent;font:inherit}
.sheet td input:not([type=checkbox]):hover,.sheet td select:hover{border-color:var(--line)}
.sheet td input:focus,.sheet td select:focus{border-color:var(--k);background:#fff;outline:none}
.sheet td input:disabled,.sheet td select:disabled{color:var(--g)}
.sheet tr.dirty td{background:var(--y2)}
.sheet .av-not_available{color:var(--bad)}.sheet .av-away{color:#8a5a00}
.nowrap{white-space:nowrap}
.hours td{vertical-align:middle}
.sheet td:nth-child(2) input{min-width:112px}.sheet td:nth-child(3) input{min-width:150px}.sheet td:nth-child(4) select{min-width:110px}
.sheet td:nth-child(5) input{min-width:125px}.sheet td:nth-child(6) input{min-width:220px}.sheet td:nth-child(7) select{min-width:140px}
#qT td:nth-child(n){min-width:0}
[hidden]{display:none!important}
input[type=checkbox]{width:20px;height:20px;min-height:0;padding:0;accent-color:var(--k);flex:none}
label:has(>input[type=checkbox]){display:flex;align-items:center;gap:8px;font-weight:700}
/* address suggestions: overlay under the input (same width), nothing below shifts */
.field:has(>.sugg){position:relative}
.field>.sugg{position:absolute;left:0;right:0;z-index:60;box-shadow:0 8px 16px rgba(0,0,0,.14)}
