:root{--bg:#f4f5f2;--card:#fff;--ink:#1d2320;--muted:#6a726d;--line:#dfe3dd;--brand:#2f7d4f;--brand-ink:#fff;--brand-soft:#e5f1e8;--accent:#13224f;--danger:#b3261e;--danger-soft:#fbe9e7;--info-soft:#e8eefb;--radius:12px;color:var(--ink);background:var(--bg);-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:17px;line-height:1.45}*{box-sizing:border-box}body{background:var(--bg);margin:0}h1{margin:0 0 .6rem;font-size:1.6rem}h2{margin:0 0 .8rem;font-size:1.1rem}a{color:var(--brand)}.muted{color:var(--muted)}.small{font-size:.85rem}.mt{margin-top:1.4rem}.mt-s{margin-top:.7rem}.center{place-items:center;min-height:50vh;display:grid}.topbar{z-index:5;background:var(--card);border-bottom:1px solid var(--line);align-items:center;gap:1.2rem;padding:.7rem 1.2rem;display:flex;position:sticky;top:0}.topbar nav{flex:1;align-items:center;gap:.8rem;display:flex}.topbar nav a:not(.btn){color:var(--ink);padding:.4rem .2rem;text-decoration:none}.topbar nav a.active:not(.btn){box-shadow:inset 0 -2px var(--brand);font-weight:600}.topbar .user{align-items:center;gap:.6rem;font-size:.85rem;display:flex}.brand{letter-spacing:.02em;color:var(--accent);font-size:1.15rem;font-weight:800;text-decoration:none}.brand span{color:var(--brand);font-weight:400}.brand.big{margin-bottom:.4rem;font-size:1.8rem}.content{max-width:1100px;margin:0 auto;padding:1.2rem}label{flex-direction:column;gap:.3rem;font-size:.9rem;font-weight:600;display:flex}input,select,textarea{font:inherit;border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:10px;width:100%;min-height:48px;padding:.7rem .8rem;font-weight:400}input:focus,select:focus,textarea:focus{outline:2px solid var(--brand);outline-offset:0;border-color:#0000}textarea{resize:vertical}.btn{border:1px solid var(--line);min-height:48px;color:var(--ink);font:inherit;cursor:pointer;white-space:nowrap;background:#fff;border-radius:10px;justify-content:center;align-items:center;gap:.4rem;padding:.6rem 1.1rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.btn.ghost{background:0 0;border-color:#0000}.btn.small{min-height:38px;padding:.35rem .8rem;font-size:.9rem}.btn.big{min-height:58px;padding:.8rem 1.4rem;font-size:1.05rem}.inline{align-items:center;gap:.6rem;display:flex}.inline input{flex:1}.toggle{white-space:nowrap;flex-direction:row;align-items:center;gap:.5rem;font-weight:500}.toggle input,.check input{width:24px;height:24px;min-height:0;accent-color:var(--brand)}.check{flex-direction:row;align-items:flex-start;gap:.7rem;margin:.5rem 0;font-weight:400}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:1rem;padding:1.3rem}.alert{border-radius:10px;padding:.7rem .9rem;font-size:.92rem}.alert.error{background:var(--danger-soft);color:var(--danger)}.alert.info{background:var(--info-soft);color:var(--accent)}.grid2{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.span2{grid-column:1/-1}.seg{border:1px solid var(--line);background:#fff;border-radius:10px;display:inline-flex;overflow:hidden}.seg button{font:inherit;cursor:pointer;border:0;border-right:1px solid var(--line);background:0 0;min-height:46px;padding:.6rem 1rem}.seg button:last-child{border-right:0}.seg button.on{background:var(--brand);color:#fff;font-weight:600}.seg.small button{min-height:40px;padding:.3rem .7rem}.login{place-items:center;min-height:100vh;padding:1rem;display:grid}.login-card{flex-direction:column;gap:1rem;width:min(420px,100%);display:flex}.page-head{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.toolbar input{flex:1;min-width:220px}.list .row{align-items:center;gap:1rem;margin-bottom:.6rem;padding:.9rem 1.1rem;display:flex}.row-main{flex:1;min-width:0}.row-title{color:var(--ink);font-size:1.05rem;font-weight:600;text-decoration:none}.pill{text-transform:capitalize;background:#eee;border-radius:99px;padding:.2rem .6rem;font-size:.78rem;font-weight:600}.pill.activa{background:var(--brand-soft);color:var(--brand)}.pill.programada{background:var(--info-soft);color:var(--accent)}.pill.finalitzada{color:#5c574c;background:#eceae4}.empty{text-align:center;color:var(--muted)}.wizard{max-width:900px;margin:0 auto}.steps{gap:.4rem;margin:0 0 1rem;padding:0;list-style:none;display:flex;overflow-x:auto}.steps li{flex:1}.steps button{width:100%;font:inherit;color:var(--muted);cursor:pointer;border:0;border-bottom:3px solid var(--line);text-align:left;background:0 0;align-items:center;gap:.5rem;padding:.5rem;display:flex}.steps button:disabled{cursor:default}.steps .num{background:var(--line);border-radius:50%;flex:none;place-items:center;width:28px;height:28px;font-size:.85rem;font-weight:700;display:inline-grid}.steps li.on button{color:var(--ink);border-color:var(--brand);font-weight:600}.steps li.on .num{background:var(--brand);color:#fff}.steps li.done .num{background:var(--brand-soft);color:var(--brand)}.wizard-nav{background:linear-gradient(transparent, var(--bg) 30%);justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 0;display:flex;position:sticky;bottom:0}.wizard-nav .right{text-align:right;align-items:center;gap:1rem;display:flex}.bicis{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.6rem;max-height:380px;margin-top:.8rem;display:grid;overflow:auto}.bici{text-align:left;border:1px solid var(--line);font:inherit;cursor:pointer;background:#fff;border-radius:10px;flex-direction:column;gap:.15rem;padding:.8rem;display:flex}.bici.on{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand)}.bici.selected{background:var(--brand-soft);border-color:var(--brand);cursor:default}.elements{flex-direction:column;gap:.6rem;margin-bottom:.8rem;display:flex}.element{grid-template-columns:1.1fr 1.6fr 1fr auto auto;align-items:center;gap:.5rem;display:grid}.element.ret{border-bottom:1px solid var(--line);grid-template-columns:1fr auto 1fr 1.3fr 1.3fr;padding-bottom:.6rem}.fotos-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.6rem;display:grid}.foto{aspect-ratio:1;border:1px solid var(--line);background:#fff;border-radius:10px;position:relative;overflow:hidden}.foto img{object-fit:cover;width:100%;height:100%}.foto .x{color:#fff;cursor:pointer;background:#0009;border:0;border-radius:50%;width:32px;height:32px;font-size:1.2rem;position:absolute;top:4px;right:4px}.foto.add{cursor:pointer;color:var(--brand);border-style:dashed;flex-direction:row;place-items:center;font-weight:600;display:grid}.sigs{grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem;display:grid}.sig{border:1px solid var(--line);background:#fff;border-radius:10px;padding:.7rem;position:relative}.sig-head{justify-content:space-between;align-items:flex-start;margin-bottom:.4rem;display:flex}.sig-canvas{touch-action:none;background:repeating-linear-gradient(0deg,#fafbf9,#fafbf9 37px,#eef0ec 38px);border-radius:8px;width:100%;height:190px;display:block}.sig-hint{text-align:center;color:#b7bdb8;pointer-events:none;font-size:1.1rem;position:absolute;bottom:45%;left:0;right:0}.resum{grid-template-columns:max-content 1fr;gap:.35rem 1rem;margin:0;display:grid}.resum dt{color:var(--muted)}.resum dd{margin:0}.manifest{margin-top:1rem;font-size:.92rem}.manifest summary{cursor:pointer;font-weight:600}.done-card{text-align:center}.done-icon{background:var(--brand-soft);width:64px;height:64px;color:var(--brand);border-radius:50%;place-items:center;margin:0 auto .6rem;font-size:2rem;font-weight:700;display:grid}.actions{flex-wrap:wrap;justify-content:center;gap:.7rem;margin:1rem 0;display:flex}.pdf-preview{border:1px solid var(--line);border-radius:var(--radius);background:#fff;width:100%;height:75vh}.docs{flex-direction:column;gap:.5rem;display:flex}.doc{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:.7rem 0;display:flex}.chips{flex-wrap:wrap;gap:.4rem;display:flex}@media (width<=760px){.grid2,.sigs{grid-template-columns:1fr}.element,.element.ret{grid-template-columns:1fr 1fr}.topbar .user .muted,.steps .txt{display:none}.list .row{flex-wrap:wrap}}
