:root{--ink:#172522;--muted:#77837f;--line:#e7ebe7;--paper:#f7f8f5;--green:#26715d;--green-dark:#195643;--mint:#e8f1ec;--red:#a5433b;--shadow:0 8px 28px rgba(26,49,40,.045)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:14px/1.5 'DM Sans',sans-serif}h1,h2,h3,p{margin-top:0}h1,h2,h3,.brand{font-family:Manrope,'DM Sans',sans-serif}a{color:inherit;text-decoration:none}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(calc((100vw - 1120px)/2),32px)}.brand{display:flex;align-items:center;gap:11px;font-size:17px;font-weight:800;letter-spacing:-.7px}.brand-mark{width:33px;height:33px;display:grid;place-items:center;border-radius:10px;background:var(--green);color:#fff;font-size:17px}.brand small{display:block;font:700 8px/1.2 'DM Sans',sans-serif;letter-spacing:1.45px;color:#88948e;margin-top:2px}.topbar-right{display:flex;align-items:center;gap:24px}.secure{font-size:12px;color:#76827c}.secure i{width:7px;height:7px;background:#65a884;border-radius:50%;display:inline-block;margin-right:7px}.button{display:inline-flex;gap:10px;align-items:center;justify-content:center;min-height:41px;padding:0 16px;border:1px solid transparent;border-radius:7px;font:600 12px 'DM Sans',sans-serif;cursor:pointer;transition:.16s}.button-dark{background:var(--green);color:#fff}.button-dark:hover{background:var(--green-dark)}.button-light{background:#fff;border-color:var(--line);color:#45534d}.button-light:hover,.button-outline:hover{background:#f2f6f3}.button-outline{background:#fff;border-color:#cdd8d0;color:var(--green)}.button-danger-outline{background:#fff;border-color:#e9d5d2;color:var(--red);min-height:37px}.text-link{font-size:12px;color:#5e6a64}.shell{max-width:1120px;margin:auto;padding:66px 32px 20px}.intro{display:flex;justify-content:space-between;align-items:flex-end;padding:0 0 55px}.eyebrow{font-size:9px;font-weight:700;letter-spacing:1.6px;color:var(--green);margin-bottom:10px}.intro h1,.setup-wrap h1{font-size:40px;line-height:1.16;letter-spacing:-1.7px;margin-bottom:14px}.lede{color:#76817c;margin:0;font-size:14px}.intro-note{display:flex;align-items:center;gap:12px;color:#69766f;font-size:11px;line-height:1.6;margin:0 2px 4px}.note-icon{width:37px;height:37px;display:grid;place-items:center;border-radius:50%;background:#eaf1ed;color:var(--green);font-size:18px}.toolbar{display:flex;align-items:end;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 0 17px;margin-bottom:21px}.toolbar h2{font-size:18px;margin-bottom:4px;letter-spacing:-.5px}.toolbar p,.section-title p{margin:0;color:#87918b;font-size:11px}.count{display:inline-grid;place-items:center;vertical-align:middle;background:#edf1ee;color:#68756e;border-radius:20px;min-width:22px;height:22px;padding:0 7px;font:600 10px 'DM Sans',sans-serif;margin-left:4px}.search{width:300px;height:38px;display:flex;align-items:center;background:#fff;border:1px solid var(--line);border-radius:7px;padding-left:12px;color:#99a29d}.search span{font-size:20px;line-height:1}.search input{flex:1;min-width:0;border:0;outline:none;padding:0 9px;color:var(--ink);font:11px 'DM Sans',sans-serif;background:transparent}.search button{height:28px;margin-right:4px;padding:0 10px;border:0;border-radius:5px;background:#edf3ef;color:var(--green);font:600 10px 'DM Sans',sans-serif;cursor:pointer}.hotel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.hotel-card,.add-card{min-height:177px;padding:18px 19px;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:var(--shadow);transition:transform .18s,border-color .18s}.hotel-card:hover{transform:translateY(-2px);border-color:#c3d4c9}.card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.hotel-symbol{width:32px;height:32px;display:grid;place-items:center;border-radius:8px;background:#edf4ef;color:var(--green);font-size:17px}.arrow{color:#aab3ad;font-size:16px}.hotel-card h3{font-size:14px;letter-spacing:-.25px;margin:0 0 3px}.location{font-size:11px;color:#849089;margin:0}.location span{color:#98a79f;margin-right:5px}.card-meta{display:flex;gap:14px;margin-top:17px;border-top:1px solid #f0f2ef;padding-top:12px;color:#87928c;font-size:10px}.add-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;border-style:dashed;background:rgba(255,255,255,.48);box-shadow:none;color:#748078;font-size:11px}.add-card>span{display:grid;place-items:center;border:1px solid #d4ded7;background:#fff;color:var(--green);width:30px;height:30px;border-radius:50%;font-size:18px;font-weight:400}.add-card b{font-weight:600}.empty{background:#fff;text-align:center;border:1px solid var(--line);border-radius:9px;padding:58px 20px}.empty-icon{margin:0 auto 13px;display:grid;place-items:center;width:47px;height:47px;border-radius:50%;background:#edf4ef;color:var(--green);font-size:22px}.empty h3{font-size:16px;margin:0 0 5px}.empty p{color:#818c86;font-size:12px;margin:0 auto 18px;max-width:350px}.empty .button{font-size:11px}footer{text-align:center;padding:46px 0 14px;color:#9aa39d;font-size:10px}footer span{padding:0 5px;color:#bdc4bf}.notice{padding:11px 14px;border-radius:7px;margin:0 0 17px;font-size:12px}.notice.success{background:#eaf4ed;color:#346c4e;border:1px solid #d6e9da}.notice.error{background:#fbefed;color:#943e37;border:1px solid #f0d8d4}.notice ul{margin:5px 0 0;padding-left:18px}.detail-shell{width:min(850px,calc(100% - 48px));margin:0 auto;padding:27px 0 20px}.breadcrumb{display:flex;align-items:center;gap:9px;color:#9aa39e;font-size:10px;margin:2px 0 29px}.breadcrumb a{color:#64716a}.breadcrumb b{font-weight:600;color:#435149}.detail-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.detail-heading .eyebrow{margin-bottom:5px}.detail-heading h1{font-size:27px;letter-spacing:-1px;margin-bottom:4px}.detail-heading p{font-size:12px;color:#7c8781;margin:0}.panel{background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:var(--shadow)}.hotel-form{padding:21px 24px 0}.panel-heading{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid #edf0ed;padding-bottom:15px;margin-bottom:17px}.panel-heading h2{font-size:14px;letter-spacing:-.2px;margin:0 0 2px}.panel-heading p{font-size:10px;color:#8a948e;margin:0}.step{font:600 10px Manrope,sans-serif;color:#a3ada6}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px 17px}label{display:block;font-size:10px;font-weight:600;color:#57645d}label em,.form-actions em{color:#c36c5f;font-style:normal}input:not([type=file]),textarea{font:11px 'DM Sans',sans-serif;color:var(--ink)}label>input,label>textarea,.input-prefix,.input-suffix{width:100%;height:37px;margin-top:6px;border:1px solid #e4e9e4;border-radius:6px;background:#fff}label>input{padding:0 10px;outline:none}label>input:focus,label>textarea:focus,.input-prefix:focus-within,.input-suffix:focus-within{border-color:#8fb5a1;box-shadow:0 0 0 2px #e8f2ec}.span-2{grid-column:span 2}.input-prefix,.input-suffix{display:flex;align-items:center;overflow:hidden}.input-prefix>span,.input-suffix>span{height:100%;display:grid;place-items:center;min-width:33px;color:#8b9790;background:#f7f9f7;border-right:1px solid #e8ece8;font-size:11px}.input-suffix>span{border-right:0;border-left:1px solid #e8ece8}.input-prefix input,.input-suffix input{min-width:0;width:100%;height:100%;border:0;outline:0;padding:0 9px;background:transparent}.input-suffix input{order:-1}.input-suffix>span{order:1}.field-section{display:flex;align-items:center;gap:10px;border-top:1px solid #edf0ed;padding-top:14px;margin-top:1px}.field-section b{font-size:10px}.field-section span,.muted{color:#98a19b;font-size:9px;font-weight:400}.form-grid textarea{height:auto;min-height:69px;resize:vertical;padding:9px 10px;outline:none}.form-actions{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #edf0ed;margin-top:19px;padding:13px 0 15px}.form-actions>span{font-size:9px;color:#929c95}.form-actions .button{min-height:36px}.rooms-section{margin-top:32px}.section-title{margin-bottom:14px}.section-title .eyebrow{margin-bottom:5px}.section-title h2{font-size:17px;margin:0 0 3px;letter-spacing:-.5px}.room-list{display:grid;gap:12px}.room-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:16px 18px;box-shadow:var(--shadow)}.room-card-heading{display:flex;justify-content:space-between;align-items:flex-start}.room-card-heading h3{font-size:14px;margin:4px 0 2px}.room-card-heading p{font-size:10px;color:#7d8982;margin:0}.room-tag{font-size:8px;font-weight:700;letter-spacing:1px;color:#809086}.room-card-heading .button{min-height:30px;font-size:10px}.rate-strip{display:flex;gap:0;background:#f8faf8;border:1px solid #edf0ed;border-radius:6px;padding:9px 11px;margin-top:13px}.rate-strip>div{flex:1;border-right:1px solid #e6ebe6;padding-left:12px}.rate-strip>div:first-child{padding-left:0}.rate-strip>div:last-child{border:0}.rate-strip small,.rate-strip b{display:block}.rate-strip small{font-size:9px;color:#929c95}.rate-strip b{font-size:11px;font-weight:600;margin-top:2px}.photo-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.photo{width:90px;height:68px;border-radius:5px;overflow:hidden;position:relative;background:#edf1ee}.photo img{width:100%;height:100%;object-fit:cover}.photo form{position:absolute;right:4px;top:4px}.photo button,.icon-button{width:21px;height:21px;display:grid;place-items:center;border:0;border-radius:50%;background:rgba(28,43,36,.72);color:#fff;font-size:15px;cursor:pointer}.room-edit-form{margin-top:13px;padding-top:13px;border-top:1px solid #edf0ed}.room-edit-form .form-grid,.new-room-form .form-grid{gap:13px}.upload-field input[type=file]{display:block;width:100%;height:auto;padding:10px;background:#fafbfa;border:1px dashed #d9e0da;border-radius:6px;margin-top:7px;font:10px 'DM Sans',sans-serif}.upload-field .muted{margin-left:7px}.room-form-actions{display:flex;justify-content:space-between;align-items:center;margin-top:14px;padding-top:11px;border-top:1px solid #edf0ed}.room-form-actions .button{min-height:34px;font-size:10px}.add-room{width:100%;margin-top:12px;height:42px;border-style:dashed}.new-room-form{margin-top:13px;padding:18px 20px 0}.new-room-form .panel-heading{align-items:center}.icon-button{background:#eff3f0;color:#63736a;width:25px;height:25px;font-size:18px}.hidden{display:none!important}.setup-wrap{width:min(480px,calc(100% - 40px));margin:74px auto}.setup-wrap .eyebrow{margin-bottom:8px}.setup-wrap h1{font-size:30px;margin-bottom:9px}.setup-wrap .lede{font-size:12px;line-height:1.7;margin-bottom:22px}.setup-form{padding:20px;display:grid;gap:14px}.setup-form label>input{display:block}.setup-form .button{margin-top:4px;width:100%;justify-content:space-between}.help{font-size:10px;color:#8d9891;margin-top:13px}.login-wrap{margin-top:92px}.user-panel,.users-list{padding:20px 22px;margin-bottom:14px}.user-create{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:14px}.user-create label>input{display:block}.user-create label small{display:block;color:#939c96;font-size:9px;font-weight:400;margin-top:5px}.user-create .button{height:37px}.users-list .panel-heading{margin-bottom:0}.user-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-top:1px solid #edf0ed}.user-avatar{width:33px;height:33px;display:grid;place-items:center;border-radius:50%;background:#edf4ef;color:var(--green);font-weight:700;font-size:12px}.user-info{flex:1;min-width:0}.user-info b,.user-info small{display:block}.user-info b{font-size:11px}.user-info small{color:#929c95;font-size:9px;margin-top:2px}.reset-form{display:flex;align-items:center;gap:7px}.reset-form input{width:155px;height:32px;border:1px solid #e4e9e4;border-radius:5px;padding:0 8px}.reset-form .button{min-height:32px;padding:0 10px;font-size:9px}@media(max-width:650px){.user-create{grid-template-columns:1fr}.user-create .button{width:100%}.user-row{align-items:flex-start;flex-wrap:wrap}.user-info{padding-top:3px}.reset-form{width:100%;padding-left:45px}.reset-form input{flex:1;min-width:0}.topbar-right{gap:9px}.topbar-right .secure{display:none}}.share-control{display:flex;gap:6px;align-items:center}.share-control .button{min-height:30px;font-size:9px;padding:0 9px}.room-card-heading{gap:10px;flex-wrap:wrap}.public-gallery{width:min(1050px,calc(100% - 36px));margin:58px auto 20px}.public-gallery h1{font-size:34px;letter-spacing:-1.2px;margin:0 0 26px}.public-topbar{justify-content:flex-start}.public-photo-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.public-photo-grid img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px;background:#e9eeea}.public-empty{text-align:left;padding:32px}.public-gallery footer{text-align:left}@media(max-width:580px){.share-control{width:100%}.public-gallery{margin-top:38px}.public-gallery h1{font-size:28px}}.input-prefix>span,.input-suffix>span{display:none}.directory-search{display:grid;grid-template-columns:1fr 1fr 1fr auto auto;gap:10px;align-items:end;background:#fff;border:1px solid var(--line);border-radius:8px;padding:13px;margin:-4px 0 20px}.directory-search label{font-size:9px}.directory-search input{display:block;width:100%;height:36px;margin-top:5px;border:1px solid #e4e9e4;border-radius:6px;padding:0 9px;outline:none}.directory-search input:focus{border-color:#8fb5a1;box-shadow:0 0 0 2px #e8f2ec}.directory-search .button{height:36px;min-height:36px;white-space:nowrap}.clear-search{font-size:10px;color:#6b7971;padding:0 3px 10px;white-space:nowrap}.matched-rooms{border-top:1px solid #edf0ed;margin-top:11px;padding-top:9px;display:grid;gap:7px}.matched-rooms>div b,.matched-rooms>div small{display:block}.matched-rooms>div b,.matched-rooms>strong{font-size:9px;color:#43534a}.matched-rooms>div small,.matched-rooms>small{font-size:9px;color:#87928c;margin-top:2px}.hotel-rate-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:12px;padding:9px 8px;background:#f7faf7;border:1px solid #edf1ed;border-radius:6px}.hotel-rate-summary>div{min-width:0}.hotel-rate-summary small,.hotel-rate-summary b{display:block}.hotel-rate-summary small{font-size:8px;color:#87938c}.hotel-rate-summary b{font-size:10px;font-weight:700;color:#31453b;overflow-wrap:anywhere;margin-top:2px}.hotel-card{min-height:0}.hotel-card .card-meta{margin-top:10px}.room-card .rate-strip b{font-size:12px;overflow-wrap:anywhere}.matched-rooms{background:#f8faf8;border-radius:5px;padding:9px;margin-top:9px}.directory-search{grid-template-columns:1fr 1fr 1fr auto auto}@media(max-width:760px){.directory-search{grid-template-columns:1fr 1fr}}@media(max-width:480px){.directory-search{grid-template-columns:1fr}}@media(max-width:760px){.directory-search{grid-template-columns:1fr 1fr}.directory-search .button{width:100%}.clear-search{padding:0 0 11px;align-self:center}}@media(max-width:480px){.directory-search{grid-template-columns:1fr}.directory-search .button{width:100%}.clear-search{padding:0;text-align:center}}@media(max-width:760px){.topbar{height:64px;padding:0 18px}.secure{display:none}.shell{padding:43px 18px 20px}.intro{padding-bottom:36px}.intro h1{font-size:33px}.intro-note{display:none}.toolbar{align-items:flex-start;gap:15px;flex-direction:column}.search{width:100%}.hotel-grid{grid-template-columns:repeat(2,1fr)}.detail-shell{width:calc(100% - 32px);padding-top:18px}.form-grid{gap:13px 12px}.hotel-form{padding:17px 16px 0}.room-card{padding:14px}.detail-heading h1{font-size:23px}}@media(max-width:480px){.brand{font-size:15px}.topbar-right .button{min-height:36px;padding:0 11px;font-size:10px}.intro h1{font-size:30px}.hotel-grid{grid-template-columns:1fr}.hotel-card{min-height:150px}.add-card{min-height:110px}.form-grid{grid-template-columns:1fr}.span-2{grid-column:span 1}.field-section{flex-wrap:wrap}.detail-heading{align-items:flex-start;gap:9px}.detail-heading .button{font-size:9px;padding:0 10px;white-space:nowrap}.rate-strip{padding:8px 6px}.rate-strip>div{padding-left:6px}.rate-strip small{font-size:8px}.rate-strip b{font-size:10px}.room-form-actions .button{padding:0 9px}.breadcrumb{margin-bottom:22px}}
/* Room-first dashboard and category date controls */
.dashboard-shell{max-width:1240px}.dashboard-shell .intro{padding-bottom:34px}.dashboard-shell .intro h1{font-size:36px}.directory-search{grid-template-columns:1fr 1fr 1fr 1fr auto;gap:12px;align-items:end;margin:0 0 30px;padding:16px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}.directory-search>label{font-size:10px}.directory-search input{display:block;width:100%;height:39px;margin-top:5px;padding:0 10px;border:1px solid #e4e9e4;border-radius:6px;background:#fff}.directory-search input:focus{outline:0;border-color:#8fb5a1;box-shadow:0 0 0 2px #e8f2ec}.search-actions{display:flex;align-items:center;gap:12px}.search-actions .button{height:39px;white-space:nowrap}.search-hint{grid-column:1/-1;margin:0;color:#87928c;font-size:10px}.results-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.results-heading .eyebrow{margin:0 0 4px}.results-heading h2{font-size:16px;margin:0;letter-spacing:-.3px}.results-heading h2 span{color:#a2aaa4;font-weight:400}.results-list{display:grid;gap:13px}.hotel-results{overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:var(--shadow)}.hotel-results-heading{min-height:66px;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:13px 17px}.hotel-results-heading>div{display:flex;align-items:center;gap:11px}.hotel-results-heading .hotel-symbol{flex:0 0 auto}.hotel-results-heading h3{font-size:13px;margin:0 0 2px}.hotel-results-heading p{font-size:10px;color:#849089;margin:0}.hotel-results-heading .button{min-height:32px;font-size:10px}.room-results{border-top:1px solid #edf0ed}.room-result{display:grid;grid-template-columns:minmax(190px,1fr) minmax(390px,2fr);align-items:center;gap:16px;padding:12px 17px;border-bottom:1px solid #f0f2ef}.room-result:last-child{border-bottom:0}.room-result-name{display:flex;align-items:flex-start;gap:9px;min-width:0}.room-dot{width:7px;height:7px;margin-top:5px;border-radius:50%;background:#79a78b;flex:0 0 auto}.room-result-name b,.room-result-name small{display:block}.room-result-name b{font-size:11px}.room-result-name small{margin-top:3px;font-size:9px;color:#7c8981}.room-result-rates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.room-result-rates>div{min-width:0;padding:7px 9px;background:#f7faf7;border:1px solid #edf1ed;border-radius:5px}.room-result-rates small,.room-result-rates b{display:block}.room-result-rates small{font-size:8px;color:#87938c}.room-result-rates b{font-size:10px;color:#31453b;margin-top:2px;overflow-wrap:anywhere}.no-room-results{padding:12px 17px;margin:0;color:#87928c;font-size:11px;border-top:1px solid #edf0ed}.date-range-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:end;padding:11px;background:#f8faf8;border:1px solid #edf0ed;border-radius:6px}.date-range-fields label input{display:block;width:100%;height:35px;margin-top:5px;padding:0 8px;border:1px solid #e3e9e3;border-radius:5px;background:#fff}.date-range-fields>small{grid-column:1/-1;color:#87928c;font-size:9px}.room-dates{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:10px}.room-dates>small{font-size:9px;color:#7f8b83;font-weight:600}.room-dates>span{display:inline-flex;align-items:center;gap:5px;padding:3px 6px 3px 9px;border:1px solid #e2ebe3;border-radius:20px;background:#f5faf6;color:#3c6650;font-size:9px}.room-dates form{display:inline-flex}.room-dates button{width:16px;height:16px;border:0;border-radius:50%;background:#e7efea;color:#536f5e;line-height:1;cursor:pointer}
@media(max-width:900px){.directory-search{grid-template-columns:repeat(2,minmax(0,1fr))}.search-actions{align-self:end}.room-result{grid-template-columns:1fr;gap:9px}.room-result-rates{margin-left:16px}}
@media(max-width:520px){.dashboard-shell .intro h1{font-size:29px}.directory-search{grid-template-columns:1fr}.search-hint{grid-column:1}.search-actions .button{flex:1}.results-heading .button{padding:0 10px}.room-result{padding:11px}.room-result-rates{margin-left:0;gap:5px}.room-result-rates>div{padding:6px}.hotel-results-heading{padding:11px;align-items:flex-start}.hotel-results-heading .button{padding:0 8px;font-size:9px}}
.date-selection{display:grid;grid-template-columns:minmax(180px,230px) auto 1fr;gap:10px;align-items:end;padding:11px;background:#f8faf8;border:1px solid #edf0ed;border-radius:6px}.date-selection>label{grid-column:1;grid-row:1}.date-selection>label input{display:block;width:100%;height:36px;margin-top:5px;padding:0 8px;border:1px solid #e3e9e3;border-radius:5px;background:#fff}.date-selection>[data-add-date]{grid-column:2;grid-row:1;height:36px;min-height:36px}.date-chip-list{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:6px}.date-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 5px 3px 9px;border:1px solid #dce9df;border-radius:20px;background:#eff7f1;color:#386247;font-size:10px}.date-chip button{width:17px;height:17px;border:0;border-radius:50%;background:#dcebe0;color:#42624c;cursor:pointer;line-height:1}.date-selection>small{grid-column:1/-1;color:#87928c;font-size:9px}
@media(max-width:520px){.date-selection{grid-template-columns:minmax(0,1fr) auto}.date-selection>[data-add-date]{grid-column:2}}

/* Installable mobile app layout */
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;padding-bottom:env(safe-area-inset-bottom)}
h1,h2,h3,.brand{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.mobile-app-nav{display:none}
.install-app-button{position:fixed;z-index:20;right:18px;bottom:calc(84px + env(safe-area-inset-bottom));min-height:42px;padding:0 16px;border:0;border-radius:24px;background:var(--green);color:#fff;box-shadow:0 8px 24px rgba(24,73,55,.25);font:600 13px -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.offline-page{min-height:100vh;display:grid;place-items:center;padding:24px}
.offline-card{width:min(370px,100%);padding:32px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);text-align:center}
.offline-card .brand-mark{width:54px;height:54px;margin:0 auto 24px;border-radius:17px;font-size:25px}
.offline-card .eyebrow{margin-bottom:7px}
.offline-card h1{margin-bottom:8px;font-size:26px}
.offline-card p{margin:0 0 20px;color:#77837f;line-height:1.6}
.public-photo-button{position:relative;display:block;width:100%;padding:0;border:0;border-radius:8px;background:#e9eeea;cursor:zoom-in;overflow:hidden}
.public-photo-button img{display:block}
.public-photo-button:focus-visible{outline:3px solid #74a98a;outline-offset:3px}
.photo-preview{position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:56px 24px 24px;border:0;background:rgba(12,18,15,.96);color:white;overflow:hidden;grid-template-rows:minmax(0,1fr) auto;place-items:center}
.photo-preview[open]{display:grid}
.photo-preview::backdrop{background:rgba(12,18,15,.94)}
.photo-preview-image{display:block;grid-row:1;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain}
.photo-preview-caption{grid-row:2;width:100%;margin:8px 0 0;padding:0 48px;color:rgba(255,255,255,.8);text-align:center;font-size:13px}
.photo-preview-close{position:absolute;z-index:1;top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));width:44px;height:44px;display:grid;place-items:center;padding:0;border:1px solid rgba(255,255,255,.3);border-radius:50%;background:#26312c;color:white;font:400 28px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;cursor:pointer;appearance:none;-webkit-appearance:none}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:760px){
  body{padding-bottom:calc(78px + env(safe-area-inset-bottom))}
  .topbar{position:sticky;top:0;z-index:10;height:60px;padding:0 16px;background:rgba(255,255,255,.96);backdrop-filter:blur(12px)}
  .topbar-right{gap:8px}
  .topbar-right .text-link,.topbar-right .secure{display:none}
  .topbar-right .button{min-height:35px;padding:0 11px;border-radius:10px;font-size:11px}
  .shell{padding:27px 15px 16px}
  .dashboard-shell .intro{padding-bottom:19px}
  .dashboard-shell .intro h1{font-size:28px;line-height:1.18;letter-spacing:-.8px;margin-bottom:8px}
  .dashboard-shell .lede{font-size:12px}
  .directory-search{gap:10px;padding:13px;margin-bottom:22px;border-radius:13px}
  .directory-search input{height:43px;border-radius:9px;font-size:16px}
  .directory-search .button,.search-actions .button{height:43px;min-height:43px;border-radius:10px}
  .search-hint{line-height:1.4}
  .results-heading{align-items:center;margin-bottom:11px}
  .results-heading h2{font-size:15px}
  .results-heading .button{min-height:35px;border-radius:9px}
  .results-list{gap:11px}
  .hotel-results{border-radius:13px}
  .hotel-results-heading{min-height:61px;padding:12px}
  .hotel-results-heading .button{min-height:34px;border-radius:9px}
  .room-result{padding:12px}
  .room-result-name b{font-size:12px}
  .room-result-rates{gap:6px}
  .room-result-rates>div{padding:8px 7px;border-radius:8px}
  .room-result-rates small{font-size:8px}
  .room-result-rates b{font-size:10px}
  .mobile-app-nav{position:fixed;z-index:15;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(4,1fr);gap:2px;padding:7px 9px calc(7px + env(safe-area-inset-bottom));border-top:1px solid rgba(225,232,226,.95);background:rgba(255,255,255,.97);backdrop-filter:blur(14px)}
  .mobile-app-nav a{min-width:0;min-height:51px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:11px;color:#839087;font-size:9px;font-weight:600}
  .mobile-app-nav a[aria-current="page"]{background:#edf5ef;color:var(--green)}
  .mobile-app-nav svg{width:20px;height:20px}
  .detail-shell{width:calc(100% - 28px);padding:15px 0 16px}
  .breadcrumb{margin-bottom:18px}
  .detail-heading{margin-bottom:17px}
  .detail-heading h1{font-size:22px}
  .detail-heading p{font-size:11px;line-height:1.5}
  .panel,.room-card{border-radius:13px}
  .hotel-form{padding:15px 14px 0}
  .form-grid{grid-template-columns:1fr;gap:12px}
  .form-grid .span-2{grid-column:auto}
  label{font-size:11px}
  label>input,.input-prefix,.input-suffix{height:43px;border-radius:9px}
  input:not([type=file]),textarea{font-size:16px}
  .input-prefix input,.input-suffix input{font-size:16px}
  .button{min-height:42px;border-radius:10px;font-size:12px}
  .form-actions{gap:10px;align-items:flex-start;flex-direction:column}
  .form-actions .button{width:100%}
  .section-title h2{font-size:17px}
  .room-card{padding:13px}
  .room-card-heading{gap:9px}
  .room-card-heading .button{min-height:36px}
  .share-control{gap:6px;flex-wrap:wrap}
  .share-control .button{min-height:35px}
  .rate-strip{border-radius:9px}
  .rate-strip>div{padding-left:8px}
  .rate-strip b{font-size:11px}
  .date-selection{grid-template-columns:minmax(0,1fr) auto;border-radius:9px}
  .date-selection>label input{height:42px;border-radius:8px;font-size:16px}
  .date-selection>[data-add-date]{min-height:42px;height:42px;padding:0 11px}
  .date-chip-list{gap:5px}
  .date-chip{font-size:10px}
  .photo{width:calc((100vw - 76px)/3);height:auto;aspect-ratio:4/3;border-radius:8px}
  .user-panel,.users-list{padding:16px 14px;border-radius:13px}
  .user-create{gap:12px}
  .user-create .button{height:43px}
  .user-row{gap:9px}
  .reset-form{padding-left:42px;gap:6px}
  .reset-form input{height:40px;font-size:15px}
  .reset-form .button{min-height:40px}
  .login-wrap{margin-top:46px}
  .setup-wrap{width:calc(100% - 32px)}
  .setup-wrap h1{font-size:27px}
  .setup-form{padding:17px;border-radius:13px}
  .setup-form .button{min-height:45px}
  .public-gallery{width:calc(100% - 28px);margin:27px auto 16px}
  .public-photo-grid{grid-template-columns:1fr 1fr;gap:7px}
  .public-photo-grid img{border-radius:9px}
  .public-photo-button{border-radius:9px}
  .photo-preview{padding:max(58px,calc(env(safe-area-inset-top) + 50px)) 10px max(18px,env(safe-area-inset-bottom))}
  .photo-preview-caption{margin-top:7px;padding:0 44px;font-size:12px}
  footer{padding-top:28px}
}
@media(min-width:761px){.install-app-button{bottom:22px}}

.share-expiry{flex:1 0 100%;color:#89958e;font-size:9px;text-align:right}

/* Modern Upload Zone & Management */
.upload-zone-container{display:grid;gap:12px;margin-top:4px}
.upload-zone-header{display:flex;align-items:center;justify-content:space-between}
.upload-zone-label{display:flex;flex-direction:column;gap:3px;font-size:11px;font-weight:700;color:var(--ink)}
.upload-zone-label small{font-weight:400;font-size:10px;color:var(--muted)}
.upload-dropzone{position:relative;display:flex;align-items:center;justify-content:center;border:1.5px dashed #c8d8cf;border-radius:10px;background:#fbfdfc;padding:24px 20px;cursor:pointer;transition:all .2s cubic-bezier(.16,1,.3,1);outline:none}
.upload-dropzone:hover{border-color:var(--green);background:#f4faf6;box-shadow:0 4px 16px rgba(38,113,93,.06)}
.upload-dropzone:focus-visible,.upload-dropzone.is-dragover{border-color:var(--green);background:#eef7f2;box-shadow:0 0 0 3px rgba(38,113,93,.18),0 8px 24px rgba(38,113,93,.1);transform:scale(1.01)}
.upload-file-input{position:absolute;inset:0;width:.1px;height:.1px;opacity:0;overflow:hidden;pointer-events:none}
.upload-dropzone-inner{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;pointer-events:none}
.upload-dropzone-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:#e8f3ed;color:var(--green);transition:transform .2s ease,background .2s,color .2s}
.upload-dropzone:hover .upload-dropzone-icon,.upload-dropzone.is-dragover .upload-dropzone-icon{transform:translateY(-2px) scale(1.06);background:var(--green);color:#fff}
.upload-dropzone-text{font-size:13px;color:#384a43}
.upload-dropzone-text strong{color:var(--green);font-weight:700}
.upload-dropzone-text small{display:block;font-size:10px;color:#7d8c85;margin-top:3px}
.upload-browse-trigger{pointer-events:auto;font-size:11px;min-height:32px;padding:0 14px}

/* Staging Tray */
.upload-staging-tray{background:#fff;border:1px solid var(--line);border-radius:9px;padding:14px;box-shadow:var(--shadow)}
.upload-staging-bar{display:flex;align-items:center;justify-content:space-between;padding-bottom:11px;border-bottom:1px solid #edf0ed;margin-bottom:12px;flex-wrap:wrap;gap:8px}
.staging-heading{font-size:11px;font-weight:700;color:#32473f}
.staging-actions{display:flex;align-items:center;gap:10px}
.staging-action-btn{background:transparent;border:0;color:#88968f;font:600 11px 'DM Sans',sans-serif;cursor:pointer;padding:4px 6px;border-radius:4px;transition:color .15s}
.staging-action-btn:hover{color:var(--red)}
.staging-upload-btn{min-height:30px!important;padding:0 12px!important;font-size:11px!important}
.upload-staging-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:11px}
.staging-item{border:1px solid #e3e8e4;border-radius:8px;overflow:hidden;background:#fdfefe;display:flex;flex-direction:column;transition:transform .15s ease,box-shadow .15s ease}
.staging-item:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.06)}
.staging-thumb{position:relative;width:100%;aspect-ratio:4/3;background:#eef2ef}
.staging-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.staging-item-remove{position:absolute;top:5px;right:5px;width:22px;height:22px;border-radius:50%;background:rgba(23,37,34,.78);color:#fff;border:0;cursor:pointer;display:grid;place-items:center;font-size:15px;line-height:1;transition:all .15s ease}
.staging-item-remove:hover{background:var(--red);transform:scale(1.12)}
.staging-meta{padding:6px 8px;display:flex;flex-direction:column;gap:2px}
.staging-name{font-size:10px;font-weight:600;color:#273630;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.staging-size{font-size:9px;color:var(--green);font-weight:600}

/* Progress Panel */
.upload-progress-panel{background:#f6faf7;border:1px solid #d4e4d9;border-radius:9px;padding:12px 14px}
.upload-progress-header{display:flex;align-items:center;justify-content:space-between;font-size:11px;color:#2d483c}
.upload-progress-title-wrap{display:flex;align-items:center;gap:8px}
.upload-spinner{width:12px;height:12px;border:2px solid #b7d6c3;border-top-color:var(--green);border-radius:50%;animation:spin .7s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.upload-progress-rate{font-weight:700;color:var(--green);font-variant-numeric:tabular-nums}
.upload-progress-bar-wrap{height:7px;background:#e1ede4;border-radius:99px;overflow:hidden;margin:9px 0 8px}
.upload-progress-fill{width:0;height:100%;background:linear-gradient(90deg,var(--green),#3ba386);border-radius:inherit;transition:width .15s linear}
.upload-progress-foot{display:flex;align-items:center;justify-content:space-between;font-size:10px;color:#6a7972}
.upload-cancel-btn{background:#fff;border:1px solid #d4ded7;border-radius:5px;padding:3px 9px;font:600 10px 'DM Sans',sans-serif;color:#4b5d53;cursor:pointer;transition:background .15s}
.upload-cancel-btn:hover{background:#f0f4f1}

/* Alert Toast */
.upload-toast-alert{padding:9px 12px;border-radius:7px;font-size:11px;font-weight:600}
.upload-toast-alert.is-success{background:#eaf4ed;color:#266b49;border:1px solid #cce5d4}
.upload-toast-alert.is-error{background:#fdf0ee;color:#a5433b;border:1px solid #f6d1cc}

/* Enhanced Photo Thumbnail Grid */
.photo{width:92px;height:69px;border-radius:6px;overflow:hidden;position:relative;background:#edf1ee;box-shadow:0 1px 3px rgba(0,0,0,.06);transition:transform .18s cubic-bezier(.16,1,.3,1),box-shadow .18s,opacity .2s}
.photo:hover{transform:translateY(-2px);box-shadow:0 6px 14px rgba(0,0,0,.12)}
.photo.is-deleting{opacity:.3;transform:scale(.85);pointer-events:none}
.photo-thumb-btn{display:block;width:100%;height:100%;padding:0;border:0;background:transparent;cursor:pointer}
.photo-thumb-btn img{width:100%;height:100%;object-fit:cover;display:block}
.photo .delete-photo-form{position:absolute;top:4px;right:4px;margin:0;z-index:2}
.photo .delete-photo-form button{width:22px;height:22px;display:grid;place-items:center;border:0;border-radius:50%;background:rgba(23,37,34,.76);color:#fff;font-size:14px;line-height:1;cursor:pointer;transition:all .15s ease}
.photo .delete-photo-form button:hover{background:var(--red);transform:scale(1.15)}
.button-sm{min-height:28px!important;font-size:10px!important;padding:0 10px!important}

@media(max-width:760px){
  .upload-dropzone{padding:18px 14px}
  .upload-dropzone-text{font-size:12px}
  .upload-staging-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:8px}
  .photo{width:calc((100vw - 76px)/3);height:auto;aspect-ratio:4/3}
}

