*{box-sizing:border-box}body{margin:0;background:#f6f6f3;color:#24342d;font:15px/1.55 Arial,sans-serif}a{color:#23523e}button,.button{background:#234a39;color:#fff;border:0;border-radius:9px;padding:11px 17px;cursor:pointer;text-decoration:none;display:inline-block;font:inherit}button:hover{opacity:.87}.danger{background:#a44843}.wrap{max-width:1160px;margin:auto;padding:0 20px}header.sitehead{background:#fff;border-bottom:1px solid #e3e6e1;position:relative;z-index:1}.headtop{display:flex;justify-content:space-between;align-items:center;padding:18px 0}.brand{font-size:24px;font-weight:800;letter-spacing:-.04em}.muted{color:#758178;font-size:13px}.tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:13px}.tabs button{background:white;color:#294034;border:1px solid #d9dfda;border-radius:28px;white-space:nowrap}.tabs button.active{background:#234a39;color:white}.hero{padding:35px 0 22px}.eyebrow{font-size:12px;letter-spacing:.15em;text-transform:uppercase;color:#668273;font-weight:bold}.hero h1{font-size:clamp(34px,5vw,58px);line-height:1.1;margin:9px 0}.hero p{color:#718077}.mainphoto{width:100%;aspect-ratio:4/3;max-height:none;border-radius:18px;overflow:hidden;background:#e5ebe6;display:grid;place-items:center;cursor:pointer}.mainphoto img{width:100%;height:100%;object-fit:contain}.thumbs{display:flex;gap:10px;overflow-x:auto;margin-top:12px;padding-bottom:8px}.thumbs button{padding:0;border:3px solid transparent;border-radius:10px;background:#ddd;flex:0 0 112px;height:77px;overflow:hidden}.thumbs button.active{border-color:#234a39}.thumbs img{width:100%;height:100%;object-fit:cover}.emptyphoto{color:#849188;text-align:center;padding:35px}.layout{display:grid;grid-template-columns:1.3fr 1fr;gap:18px;margin:25px 0}.panel{background:white;border:1px solid #e4e9e4;border-radius:17px;padding:25px;margin-bottom:18px}.panel h2{margin:0 0 15px}.map{width:100%;height:260px;border:0;border-radius:10px}.months{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:20px 0 55px}.month{background:white;border:1px solid #e2e8e1;border-radius:13px;padding:15px}.month h3{margin:0 0 13px;text-transform:capitalize}.days{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.day{aspect-ratio:1;display:grid;place-items:center;border-radius:5px;font-size:12px}.day.free{background:#dcefe0;color:#23523a}.day.busy{background:#f0c6c2;color:#842e2e}.day.blank{background:none}.dow{text-align:center;font-size:11px;color:#8b978d}.legend{display:flex;gap:18px}.legend span:before{content:'';display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;background:#dcefe0}.legend .red:before{background:#f0c6c2}.lightbox{position:fixed;inset:0;background:rgba(10,16,12,.96);z-index:99;display:none;align-items:center;justify-content:center}.lightbox.open{display:flex}.lightbox img{max-width:92vw;max-height:88vh;object-fit:contain}.lightbox button{position:absolute;background:rgba(255,255,255,.2);font-size:28px}.lbprev{left:12px}.lbnext{right:12px}.lbclose{top:12px;right:12px}.lbcounter{position:absolute;bottom:12px;color:white}footer{padding:30px 0;border-top:1px solid #e2e5e0;color:#88948b}.admin{max-width:1080px;margin:20px auto;padding:0 16px}.adminhead{display:flex;justify-content:space-between;align-items:center}.admin .panel{margin:20px 0}.formgrid{display:flex;flex-wrap:wrap;gap:12px;align-items:end}.formgrid label{flex:1;min-width:180px}label{display:block;font-weight:600}input,select{display:block;width:100%;padding:11px;border:1px solid #ccd8cd;border-radius:8px;margin-top:5px;font:inherit}.login{max-width:420px;margin:10vh auto;padding:35px;background:#fff;border-radius:16px}.login button{margin-top:18px;width:100%}.ok,.error{padding:12px;border-radius:8px;background:#e0f3e4}.error{background:#f8dedb}.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%;white-space:nowrap}td,th{padding:10px;border-bottom:1px solid #e4e9e4;text-align:left}.photo-admin{display:flex;flex-wrap:wrap;gap:10px}.photo-admin>div{width:130px}.photo-admin img{width:130px;height:95px;object-fit:cover;border-radius:8px}.photo-admin button{width:100%;padding:5px;font-size:12px}@media(max-width:760px){.layout{grid-template-columns:1fr}.months{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.months{grid-template-columns:1fr}.headtop{padding:12px 0}.brand{font-size:21px}}
.calendar-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.year-nav{display:flex;gap:13px;align-items:center}.year-nav button{padding:4px 14px;font-size:24px}.booking-rows,.photo-upload-rows{display:grid;gap:14px}.booking-row,.photo-upload-row{border:1px solid #e2e8e1;border-radius:12px;padding:15px;display:grid;gap:12px}.booking-row h3{margin:0}.booking-row textarea{display:block;width:100%;padding:11px;border:1px solid #ccd8cd;border-radius:8px;margin-top:5px;font:inherit;resize:vertical}.booking-row>button,.photo-upload-row>button{justify-self:start}.photo-upload-row{grid-template-columns:150px 1fr auto;align-items:center}.photo-upload-row input{margin:0}.range-wrap{position:relative}.range-trigger{background:#edf5ee;color:#234a39;border:1px solid #aec9b6;text-align:left;width:100%}.range-popup{position:absolute;z-index:20;top:calc(100% + 6px);left:0;width:min(350px,calc(100vw - 72px));padding:12px;background:white;border:1px solid #ccd8cd;box-shadow:0 8px 30px #0002;border-radius:12px}.range-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.range-head button{padding:4px 12px}.range-days{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}.range-days button{padding:8px 0;border-radius:5px;background:#e4f2e7;color:#234a39;font-size:13px}.range-days button.chosen{background:#234a39;color:white}.range-days button.between{background:#a5d5b4;color:#153a22}.range-days button:disabled{background:#f2c9c5;color:#8d3d35;opacity:.8;cursor:not-allowed}.range-days .dow{align-self:center}.range-help{font-size:12px;color:#718077;margin-top:8px}.note-cell{white-space:normal;min-width:150px;max-width:320px}@media(max-width:680px){.photo-upload-row{grid-template-columns:1fr}.photo-upload-row>button{width:100%}.booking-row>button{width:100%}}

.range-popup[hidden]{display:none!important}.range-actions{display:flex;justify-content:flex-end;margin-top:10px}.range-actions button{font-size:13px;padding:7px 10px}

/* v1.5 */
[hidden]{display:none!important}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.section-head h2,.section-head h3{margin:10px 0}.modal-overlay{position:fixed;inset:0;z-index:100;background:#14281dcc;display:flex;justify-content:center;align-items:center;padding:16px;overflow:auto}.modal-card{background:#fff;border-radius:16px;padding:22px;width:min(560px,100%);max-height:92vh;overflow:auto;box-shadow:0 20px 70px #0004}.close-modal{background:#e6ece7;color:#243d2c;font-size:22px;padding:4px 12px}.apartment-choices{display:flex;flex-wrap:wrap;gap:8px}.apt-choice{background:#eef4ef;color:#244c34;border:1px solid #a5c1ad}.apt-choice.active{background:#24543a;color:#fff}.modal-card textarea{display:block;width:100%;padding:10px;border:1px solid #cbd7cd;border-radius:8px;font:inherit;margin:6px 0 16px}.wide-action{width:100%;margin-top:14px}.modal-actions{display:flex;justify-content:space-between;gap:10px}.inline-calendar{border:1px solid #d6e2d9;border-radius:12px;padding:10px;margin:10px 0}.inline-calendar .range-head{margin:0 0 10px}.photo-move{display:flex;align-items:center;justify-content:center;gap:6px;margin:5px 0}.photo-move form{margin:0}.photo-move button{width:auto!important;min-width:36px!important;padding:5px!important}.photo-item{width:130px}.photo-item img{object-fit:contain;background:#f2f2f2}.photo-stage{position:relative}.photo-stage .mainphoto img{object-fit:contain}.photo-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;background:#15261ac7;color:white;font-size:32px;padding:2px 14px;border-radius:50%}.photo-nav.prev{left:10px}.photo-nav.next{right:10px}#uploadBar{width:100%;height:18px}.modal-card #bookingStatus:not(:empty),.modal-card #uploadStatus:not(:empty){margin-top:12px;color:#a12d27}.modal-card button:disabled{opacity:.45;cursor:not-allowed}@media(max-width:600px){.modal-card{padding:14px}.photo-nav{font-size:25px;padding:2px 10px}}

#uploadProgress progress{width:100%}#uploadPhase{min-height:1.5em}#uploadStatus:not(:empty){font-weight:600}

.apartment-booking-head{margin-top:24px;gap:12px}.apartment-booking-head h3{margin:0}.booking-table{min-width:690px}.booking-table td{vertical-align:middle}.booking-table .note-cell{max-width:380px;overflow-wrap:anywhere}

/* v1.8: booking search */
.booking-search-label{display:block;margin:12px 0 6px;font-weight:600}#bookingSearch{width:100%;max-width:560px;box-sizing:border-box;padding:12px;border:1px solid #cbd5e1;border-radius:10px;font:inherit;margin-bottom:14px}.booking-apartment-group{margin-bottom:22px}.booking-record[hidden],.booking-apartment-group[hidden],#bookingSearchEmpty[hidden]{display:none!important}

/* v1.9: responsive administration */
.booking-mobile-cards{display:none}.booking-actions{display:flex;gap:6px;align-items:center}.booking-actions form{margin:0}.booking-actions button{white-space:nowrap;padding:8px 10px}.booking-table .note-cell{white-space:pre-line}.admin .panel{min-width:0}.booking-card-note p{white-space:pre-wrap;overflow-wrap:anywhere;margin:5px 0}.booking-mobile-card{border:1px solid #dce5dc;border-radius:12px;padding:14px;background:#fafcf9;margin:10px 0}.booking-card-dates{display:grid;grid-template-columns:1fr 1fr;gap:12px}.booking-card-dates div{display:grid;gap:3px}.booking-mobile-card small{font-size:12px;color:#708077}.booking-nights{font-weight:700;margin:10px 0}.booking-card-note{padding:10px 0;border-top:1px solid #e0e7df;border-bottom:1px solid #e0e7df}.booking-card-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:5px;margin:10px 0}.booking-card-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.booking-card-actions form,.booking-card-actions button{width:100%}.booking-card-actions button{padding:10px 5px}.cancelled-panel .tablewrap{max-width:100%}
@media(max-width:767px){.admin{margin:8px auto;padding:0 10px}.admin .panel{padding:14px;margin:12px 0;border-radius:12px}.adminhead h1{font-size:21px}.admin .panel h2{font-size:20px}.apartment-booking-head h3{font-size:17px}.apartment-booking-head button{padding:9px 10px;font-size:13px}.booking-apartment-group>.tablewrap{display:none}.booking-mobile-cards{display:block}.photo-admin{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.photo-admin>div,.photo-item{width:100%}.photo-admin img{width:100%;height:auto;aspect-ratio:4/3}.modal-overlay{padding:8px;align-items:center}.modal-card{width:100%;max-height:95dvh;padding:14px}.modal-actions button{flex:1}.admin .panel>.section-head{align-items:flex-start}.admin .panel>.section-head button{max-width:100%}.cancelled-panel .tablewrap{overflow-x:auto}.cancelled-panel table{min-width:760px}.admin button,.admin .button{max-width:100%}}
@media(max-width:380px){.photo-admin{grid-template-columns:repeat(2,minmax(0,1fr))}.booking-card-actions{grid-template-columns:1fr}.apartment-booking-head{align-items:flex-start}}

@media(max-width:767px){.cancelled-panel .tablewrap{overflow:visible}.cancelled-panel table{min-width:0;display:block;white-space:normal}.cancelled-panel table>tbody{display:block}.cancelled-panel table>tbody>tr{display:grid;gap:6px;border:1px solid #dce5dc;border-radius:12px;padding:12px;margin:10px 0}.cancelled-panel table>tbody>tr:first-child{display:none}.cancelled-panel td{display:block;padding:3px 0;border:0;white-space:pre-wrap;overflow-wrap:anywhere}.cancelled-panel td:before{display:block;font-size:11px;color:#718077}.cancelled-panel td:nth-child(1):before{content:'Квартира'}.cancelled-panel td:nth-child(2):before{content:'Заезд'}.cancelled-panel td:nth-child(3):before{content:'Выезд'}.cancelled-panel td:nth-child(4):before{content:'Примечание'}.cancelled-panel td:nth-child(5):before{content:'Создал'}.cancelled-panel td:nth-child(6):before{content:'Когда создано'}.cancelled-panel td:nth-child(7):before{content:'Отменил'}.cancelled-panel td:nth-child(8):before{content:'Когда отменено'}}

/* v2.0 booking layout */
.booking-created strong,.booking-created small{display:block;white-space:nowrap}
.booking-created small{color:#708077;font-size:12px;margin-top:4px}
.booking-note-row td{padding:0 12px 14px!important;border-top:0!important}
.booking-note-row[hidden]{display:none!important}
.booking-note-full{padding:10px 12px;background:#f5f8f5;border-radius:9px;overflow-wrap:anywhere}
.note-entry{margin:5px 0;white-space:pre-wrap;overflow-wrap:anywhere}
.booking-card-meta{display:flex;align-items:flex-start;flex-direction:column;gap:2px}
.booking-card-meta strong{font-size:14px}
.booking-card-note{margin-top:12px}
.booking-card-note .note-entry{margin:9px 0;font-size:14px}
.booking-table{min-width:570px}

/* v2.1: no created column; note history newest first */
.booking-table{min-width:440px}
.booking-note-full,.booking-card-note{font-weight:400}
.booking-note-full .note-entry,.booking-card-note .note-entry{font-weight:400}
