:root{font-family:system-ui,sans-serif;color:#193848;background:#f2f7f8}*{box-sizing:border-box}body{margin:0}header{position:sticky;top:0;z-index:2;background:#103b48;color:white;display:flex;justify-content:space-between;gap:1rem;align-items:center;padding:1rem 3vw}header h1{font-size:1.35rem;margin:.3rem 0}header a{color:white}small{font-size:.75rem;letter-spacing:.06em}main{max-width:1500px;margin:auto;padding:1.4rem 3vw}section{background:white;border:1px solid #d6e2e6;border-radius:12px;margin:1.3rem 0;padding:1.2rem}.notice{padding:1rem;background:#fff0cf;border-radius:8px}nav,.section-head{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between}nav{justify-content:flex-start;position:sticky;top:90px;background:#f2f7f8;padding:.5rem 0;z-index:1}h2{font-size:1.1rem}label{display:grid;gap:.4rem;font-size:.86rem}input,select,textarea,button{font:inherit;padding:.65rem;border:1px solid #a5bcc4;border-radius:6px;background:white;color:inherit}button{cursor:pointer}button:hover{border-color:#087e73}button:disabled{opacity:.5;cursor:wait}#new,#save{background:#087e73;color:white}.scroll{overflow:auto;max-height:450px}table{border-collapse:separate;border-spacing:2px;width:100%;font-size:.85rem}th,td{padding:.5rem;text-align:left;white-space:nowrap}th{position:sticky;top:0;background:#f2f7f8;z-index:1}.berth{position:sticky;left:0;background:white;z-index:1}.cell{min-width:35px;min-height:36px;padding:.25rem;width:100%}.occupied{background:#116c58;color:white}.booked{background:#2863ad;color:white}.available{background:#fff0c5;color:#614d20}.blocked{background:#eee;color:#555}.legend{font-size:.8rem;line-height:2}.legend span{padding:.2rem .5rem;border-radius:4px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:.8rem}.card{border:1px solid #d6e2e6;border-radius:8px;padding:1rem}.card h3{font-size:1rem;margin:0}.card p{font-size:.86rem}.card button{margin:.3rem .3rem 0 0}dialog{border:0;border-radius:12px;max-width:660px;width:94vw;max-height:90vh;box-shadow:0 10px 50px #0004}dialog::backdrop{background:#102f3d99}.fields{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.fields .wide{grid-column:1/-1}#error{color:#a32424}.help{font-size:.8rem;color:#5e7480}textarea{min-height:80px}@media(max-width:600px){header{align-items:start}header h1{font-size:1.05rem}header a{font-size:.8rem}nav{position:static}.fields{grid-template-columns:1fr}.fields .wide{grid-column:auto}section{padding:.7rem}}
