*{box-sizing:border-box;margin:0}body{font-family:-apple-system,Segoe UI,Roboto,sans-serif;background:#f1f5f9;color:#0f172a}#root{max-width:480px;margin:0 auto;min-height:100vh;padding-bottom:70px}header.app{background:#2563eb;color:#fff;padding:14px 16px;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;z-index:10}header.app h1{font-size:17px;font-weight:600}header.app button{background:none;border:none;color:#bfdbfe;font-size:13px}main{padding:12px;display:flex;flex-direction:column;gap:10px}.card{background:#fff;border-radius:12px;padding:14px;box-shadow:0 1px 2px #0000000f}.card h3{font-size:15px;margin-bottom:2px}.muted{color:#64748b;font-size:13px}.row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}button.btn{border:none;border-radius:8px;padding:10px 14px;font-size:14px;font-weight:600;cursor:pointer;background:#e2e8f0;color:#0f172a}button.btn.primary{background:#2563eb;color:#fff}button.btn.success{background:#16a34a;color:#fff}button.btn.warn{background:#d97706;color:#fff}.badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;background:#e2e8f0}.badge.in{background:#dcfce7;color:#166534}.badge.out{background:#fee2e2;color:#991b1b}.badge.todo{background:#fef3c7;color:#92400e}.badge.done{background:#dcfce7;color:#166534}nav.tabs{position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid #e2e8f0;display:flex;max-width:480px;margin:0 auto}nav.tabs button{flex:1;padding:12px 4px;border:none;background:none;font-size:12px;color:#64748b;cursor:pointer}nav.tabs button.active{color:#2563eb;font-weight:700}form.login{padding:40px 24px;display:flex;flex-direction:column;gap:12px}form.login input{padding:12px;border:1px solid #cbd5e1;border-radius:8px;font-size:15px}.section-title{font-size:13px;font-weight:700;color:#475569;text-transform:uppercase;margin:8px 2px 0}.error{color:#b91c1c;font-size:13px}.photos{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.photos img{width:64px;height:64px;object-fit:cover;border-radius:8px}body[data-tab=rack] #root{max-width:none}.rack-scroll{overflow-x:auto;background:#fff;border-radius:12px;box-shadow:0 1px 2px #0000000f}table.rack{border-collapse:collapse;font-size:12px;width:max-content}table.rack th,table.rack td{border:1px solid #e2e8f0;min-width:34px;height:34px;text-align:center;padding:2px 3px;white-space:nowrap}table.rack th{background:#f8fafc;font-weight:600;position:sticky;top:0}table.rack th.we,table.rack td.we{background:#f1f5f9}.rack-prop{position:sticky;left:0;background:#fff!important;z-index:2;text-align:left!important;font-weight:600;min-width:140px!important;box-shadow:2px 0 #e2e8f0}td.occ{color:#fff;font-weight:600;overflow:visible}td.occ span{font-size:11px}.src-direct{background:#2563eb}.src-airbnb{background:#ff5a5f}.src-booking{background:#003580}.src-abritel{background:#d97706}.src-gites_de_france,.src-other{background:#64748b}.rack-legend{display:flex;gap:14px;align-items:center;font-size:12px;color:#475569;margin-top:2px}.dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px}@media(min-width:768px){#root{max-width:960px}nav.tabs{max-width:960px}main{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}main .section-title,main .error{grid-column:1 / -1}main.rack-main{display:block;max-width:none}form.login{max-width:480px;margin:0 auto}}.input{width:100%;padding:10px;border:1px solid #cbd5e1;border-radius:8px;font-size:14px;margin-top:4px;background:#fff}label{font-size:13px;font-weight:600;color:#475569}
