:root{--bg:#f5f5f2;--card:#fff;--ink:#1f2933;--muted:#6b7280;--line:#d8d8d2;--accent:#334155;--accent2:#e7ecef}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic",sans-serif}.site-header{padding:14px 18px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}.brand{font-weight:800;text-decoration:none;color:inherit}.container{max-width:1100px;margin:auto;padding:20px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:9px 14px;border-radius:10px;border:1px solid var(--line);background:white;color:inherit;text-decoration:none;font-weight:700}.btn.primary{background:var(--accent);color:white;border-color:var(--accent)}.muted{color:var(--muted);font-size:13px}.town-wrap{overflow:hidden;border-radius:18px;border:1px solid var(--line);background:linear-gradient(#dcebf1 0 48%,#d7cbb8 48% 100%);min-height:430px;position:relative}.town-world{position:absolute;left:0;top:0;height:100%;min-width:1700px;transition:transform .35s ease}.road{position:absolute;left:0;right:0;bottom:0;height:160px;background:#898986}.walkway{position:absolute;left:0;right:0;bottom:160px;height:45px;background:#cbbfa9}.shop{position:absolute;bottom:205px;width:185px;height:175px;background:#fff;border:2px solid #bbb;border-radius:10px;padding:18px 10px;text-align:center}.shop-door{position:absolute;bottom:0;left:70px;width:45px;height:58px;background:#ddd0bf;border:4px solid #62564e}.walker{position:absolute;bottom:178px;font-size:36px;transition:left .45s ease;z-index:10}.walker.left{transform:scaleX(-1)}.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:10px;border-bottom:1px solid var(--line);text-align:left;font-size:14px}.flash{padding:10px 12px;border-radius:10px;background:#eef4ee;border:1px solid #ccd9cc;margin-bottom:12px}.error{padding:10px 12px;border-radius:10px;background:#fff0f0;border:1px solid #e1bcbc;margin-bottom:12px}.form-row{display:grid;gap:6px;margin-bottom:12px}.form-row input,.form-row select,.form-row textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:9px;font:inherit}.split{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px}.sidebar{background:white;border:1px solid var(--line);border-radius:14px;padding:10px;height:max-content}.sidebar a{display:block;padding:10px;border-radius:9px;color:inherit;text-decoration:none}.sidebar a:hover{background:var(--accent2)}@media(max-width:760px){.grid{grid-template-columns:1fr}.split{grid-template-columns:1fr}.container{padding:12px}.town-wrap{min-height:390px}}

/* ONEVOICE TOWN street and reception upgrade — scoped styles */
.ov-town-intro{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px}.ov-town-intro h1{font-size:clamp(24px,4vw,38px);margin:5px 0}.ov-town-intro p{margin:0;color:var(--muted)}.ov-eyebrow{font-size:11px;letter-spacing:.16em;font-weight:800;color:#697985}.ov-viewport{background:linear-gradient(#d7eaf1,#f4e9d7 66%,#d2bda0);height:480px}.ov-viewport .town-world{min-width:0;transition:transform .75s cubic-bezier(.25,.7,.2,1)}.ov-hills{position:absolute;left:0;right:0;bottom:205px;height:105px;background:linear-gradient(135deg,#c0d1bd,#adc5b2);clip-path:polygon(0 85%,8% 30%,18% 80%,28% 20%,40% 75%,52% 22%,65% 85%,76% 25%,87% 75%,100% 30%,100% 100%,0 100%);opacity:.8}.ov-viewport .road.ov-promenade{height:125px;background:linear-gradient(#c1b8a8,#b1a79a);border-top:5px solid #ede3cf}.ov-viewport .walkway{bottom:125px;height:80px;background:repeating-linear-gradient(90deg,#e9dbbd 0 42px,#e2d1b1 42px 44px)}.ov-cloud{position:absolute;z-index:1;width:100px;height:31px;background:#ffffffbd;border-radius:40px;top:50px;animation:ov-cloud 32s linear infinite;pointer-events:none}.ov-cloud:after{content:"";position:absolute;width:55px;height:50px;left:22px;bottom:0;background:inherit;border-radius:100px}.ov-cloud-a{left:15%}.ov-cloud-b{top:100px;left:60%;animation-delay:-18s;transform:scale(.75)}@keyframes ov-cloud{50%{translate:45px 0}100%{translate:0 0}}.ov-gate{position:absolute;left:48px;bottom:205px;width:245px;height:200px;border-left:22px solid #f3e7d2;border-right:22px solid #f3e7d2;border-top:26px solid #f3e7d2;border-radius:120px 120px 0 0;filter:drop-shadow(7px 8px 3px #0002);z-index:2;text-align:center;padding-top:24px}.ov-gate-top{background:#38556a;color:#fff;border-radius:7px;padding:9px 4px;font-size:13px;font-weight:900;letter-spacing:1px}.ov-gate>span{display:block;margin-top:11px;font-size:10px;letter-spacing:4px;color:#38556a}.ov-gate i,.ov-gate b{position:absolute;bottom:-8px;width:27px;height:35px;background:#e3d4ba}.ov-gate i{left:-25px}.ov-gate b{right:-25px}.ov-viewport .shop.ov-building{bottom:205px;height:185px;border:2px solid #c8baac;border-top:0;border-radius:8px 8px 2px 2px;background:#faf5ec;box-shadow:7px 10px 0 #3b33201b;padding:0;overflow:visible;transition:filter .3s,transform .3s}.ov-building.facade-modern{background:#e5edf1;border-color:#9dabb4}.ov-building.facade-natural{background:#f4e9d4;border-color:#af977e}.ov-building.facade-premium{background:#f6f0e7;border-color:#ba9f67}.ov-building.is-near{filter:drop-shadow(0 0 8px #fff9bd)}.ov-roof{position:absolute;left:-10px;right:-10px;top:-23px;height:28px;background:var(--shop-color);clip-path:polygon(7% 0,93% 0,100% 100%,0 100%)}.ov-sign{position:absolute;top:17px;left:12px;right:12px;min-height:38px;border:2px solid var(--shop-color);border-radius:5px;background:#fffef8;display:grid;place-items:center;font-size:13px;word-break:break-word;padding:5px}.ov-shop-window{position:absolute;left:15px;right:15px;top:66px;height:63px;border:5px solid #847668;background:linear-gradient(145deg,#b9d8df,#f1faf6);display:grid;place-items:center;color:#ffffffaa;font-size:38px}.ov-shop-window span{opacity:.55}.ov-building .shop-door{left:50%;bottom:0;transform:translateX(-50%);transform-origin:left center;width:43px;height:55px;background:#c8a68e;border:4px solid #6d655f;transition:transform .55s}.ov-building.ov-opening .shop-door{transform:translateX(-50%) perspective(180px) rotateY(-65deg)}.ov-shop-area{position:absolute;bottom:-29px;left:0;right:0;font-size:12px;color:#41515d}.ov-premium{position:absolute;top:-47px;right:0;background:#805f32;color:white;padding:4px 7px;border-radius:5px;font-size:10px}.ov-tree{position:absolute;bottom:205px;width:62px;height:105px;transform-origin:bottom}.ov-crown{width:63px;height:71px;background:#83a78c;border-radius:60% 50% 45% 50%;border:4px solid #71977b;animation:ov-tree-move 4s ease-in-out infinite alternate}.ov-trunk{width:12px;height:40px;background:#806c52;margin:-4px auto 0}@keyframes ov-tree-move{to{transform:rotate(4deg)}}.ov-viewport .walker.ov-person{bottom:147px;font-size:initial;width:44px;height:84px;left:125px;transform-origin:center;transition:left .75s cubic-bezier(.25,.7,.2,1),transform .15s;z-index:9}.ov-person.left{transform:scaleX(-1)}.ov-person-face{position:relative;width:44px;height:84px}.ov-head{position:absolute;top:10px;left:15px;width:18px;height:20px;background:#deb39a;border-radius:43%;z-index:4}.ov-hair{position:absolute;top:6px;left:13px;width:21px;height:13px;border-radius:60% 50% 15% 10%;background:#44413b;z-index:5}.ov-torso{position:absolute;top:30px;left:13px;width:22px;height:31px;background:#395d72;border-radius:7px 8px 3px 3px;z-index:3}.ov-arm{position:absolute;top:34px;width:7px;height:28px;background:#c48e72;border-radius:6px;transform-origin:top;z-index:2}.ov-arm-left{left:13px}.ov-arm-right{left:32px}.ov-leg{position:absolute;top:56px;width:8px;height:27px;border-radius:5px;background:#343c42;transform-origin:top}.ov-leg-left{left:16px}.ov-leg-right{left:27px}.ov-person.ov-walking .ov-arm-left,.ov-person.ov-walking .ov-leg-right{animation:ov-step-a .27s ease-in-out infinite alternate}.ov-person.ov-walking .ov-arm-right,.ov-person.ov-walking .ov-leg-left{animation:ov-step-b .27s ease-in-out infinite alternate}.ov-person.ov-walking .ov-person-face{animation:ov-person-bob .27s ease-in-out infinite alternate}@keyframes ov-step-a{from{rotate:-30deg}to{rotate:34deg}}@keyframes ov-step-b{from{rotate:32deg}to{rotate:-30deg}}@keyframes ov-person-bob{to{translate:0 -3px}}.ov-entry-overlay{position:absolute;inset:0;z-index:12;display:grid;place-items:center;background:#2135488c;transition:opacity .55s,visibility .55s;padding:18px}.ov-entry-overlay.is-hidden{opacity:0;visibility:hidden;pointer-events:none}.ov-entry-card{background:#fff9f0eF;max-width:450px;text-align:center;padding:30px 24px;border:1px solid #fff;border-radius:18px;box-shadow:0 16px 40px #0002}.ov-entry-card h2{margin:9px 0;font-size:clamp(22px,4vw,31px)}.ov-entry-card p{font-size:14px;line-height:1.8}.ov-location{border-radius:10px;border:1px solid var(--line);background:white;min-height:44px;display:inline-flex;align-items:center;padding:8px 13px;font-size:13px}.ov-controls [aria-disabled=true]{opacity:.45;pointer-events:none}.ov-help{line-height:1.7}.ov-transition{position:absolute;inset:0;z-index:15;display:grid;place-items:center;background:#f1e8d8;color:#344e62;font-size:23px;font-weight:900;letter-spacing:.2em;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .35s,visibility .35s}.ov-transition.show{opacity:1;visibility:visible}.ov-reception{--shop-color:#64748b}.ov-room-scene{position:relative;min-height:440px;overflow:hidden;border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,#efeadf 0 69%,#bea88b 69%);animation:ov-arrive .7s ease-out}.ov-reception-ceiling{position:absolute;inset:0 0 31%;background:repeating-linear-gradient(90deg,#efe7d8 0 130px,#ebe2d1 130px 133px);border-bottom:10px solid #dfd1bd}.ov-reception-logo{position:absolute;top:35px;left:50%;translate:-50% 0;text-align:center;background:#fffbf3;padding:12px 24px;min-width:205px;max-width:80%;border-top:5px solid var(--shop-color);border-radius:5px;box-shadow:0 4px 16px #0001}.ov-reception-logo small{display:block;font-size:10px;letter-spacing:.14em;color:#677}.ov-reception-logo strong{font-size:clamp(17px,3vw,26px);overflow-wrap:anywhere}.ov-room-window{position:absolute;top:90px;left:8%;height:180px;width:24%;border:10px solid #e4dacc;background:linear-gradient(#c5e5ef,#e8e5ce);overflow:hidden}.ov-room-window>span{position:absolute;right:15%;top:13%;color:#fff7cc;font-size:29px}.ov-mountain{position:absolute;bottom:-30px;left:-30%;height:100px;width:160%;background:#b5c8b2;clip-path:polygon(0 85%,30% 20%,55% 80%,78% 10%,100% 85%,100% 100%,0 100%)}.ov-room-plant{position:absolute;bottom:95px;font-size:65px}.ov-left-plant{left:25px}.ov-right-plant{right:25px}.ov-staff{position:absolute;bottom:145px;left:50%;transform:translateX(-50%);width:90px;height:160px}.ov-staff-hair{position:absolute;left:18px;top:0;width:55px;height:72px;background:#463830;border-radius:36px 36px 22px 22px}.ov-staff-head{position:absolute;left:24px;top:12px;width:44px;height:61px;border-radius:50%;background:#e1bea2;text-align:center;padding-top:24px;color:#594432}.ov-eyes{font-size:18px;line-height:12px;display:block}.ov-smile{display:block;font-size:21px}.ov-staff-body{position:absolute;bottom:0;left:9px;width:72px;height:92px;border-radius:28px 28px 2px 2px;background:#434f5d}.ov-staff-arm{position:absolute;bottom:33px;left:6px;width:20px;height:58px;background:#556370;border-radius:15px;transform-origin:bottom;animation:ov-wave 2.4s ease-in-out 2 alternate}@keyframes ov-wave{40%,80%{rotate:-18deg}}.ov-counter{position:absolute;bottom:45px;left:50%;translate:-50% 0;width:min(540px,82%);height:114px;border-radius:13px 13px 4px 4px;background:linear-gradient(120deg,#bca07f,#d8bd9c);box-shadow:0 8px 0 #8c7668;border-top:11px solid #e5d3b8;display:grid;place-items:center;color:#655240;font-size:13px;letter-spacing:.18em}.ov-greeting{position:absolute;top:135px;right:5%;width:34%;padding:13px 15px;background:#fffefaed;border:1px solid #e5dfd6;border-radius:14px;line-height:1.65;box-shadow:0 4px 20px #0001}.ov-greeting p{margin:5px 0 0;overflow-wrap:anywhere}.ov-reception-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.ov-property-section{margin-top:25px}.ov-property-section h2{font-size:20px}@keyframes ov-arrive{from{opacity:0;transform:scale(1.025)}to{opacity:1;transform:scale(1)}}
@media(max-width:700px){.ov-viewport{height:440px}.ov-greeting{top:126px;right:4%;width:48%;font-size:12px}.ov-room-window{left:4%;width:31%;height:155px}.ov-room-plant{font-size:40px}.ov-left-plant{left:8px}.ov-right-plant{right:8px}.ov-reception-actions .btn{flex:1 1 145px}.ov-entry-card{padding:22px 16px}.ov-controls{gap:7px}.ov-controls>.btn{flex:1 1 40%}.ov-location{order:-1;flex:1 1 100%}}
@media(prefers-reduced-motion:reduce){.ov-cloud,.ov-crown,.ov-person.ov-walking .ov-arm,.ov-person.ov-walking .ov-leg,.ov-person.ov-walking .ov-person-face,.ov-staff-arm,.ov-room-scene{animation:none!important}.ov-viewport .town-world,.ov-viewport .walker,.ov-entry-overlay,.ov-transition{transition:none!important}}

/* ONEVOICE TOWN: storefront property gallery */
.ov-showcase-heading{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:17px}.ov-showcase-heading h2{margin:6px 0}.ov-results-count{font-weight:700;border:1px solid var(--line);border-radius:999px;padding:7px 13px;white-space:nowrap;background:#fff}.ov-filter-bar{display:flex;flex-wrap:wrap;align-items:end;gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:20px}.ov-filter-bar label{display:grid;gap:5px;font-size:13px;font-weight:700;flex:1 1 150px;min-width:0}.ov-filter-bar select{min-height:44px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:9px 10px;color:var(--ink);font:inherit;max-width:100%}.ov-showcase-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.ov-property-card{min-width:0;border:1px solid var(--line);border-radius:16px;background:#fff;overflow:hidden;display:flex;flex-direction:column}.ov-property-card[hidden]{display:none}.ov-property-photo{aspect-ratio:4/3;background:#edf0ef;display:flex;align-items:center;justify-content:center;overflow:hidden}.ov-property-photo img{height:100%;width:100%;object-fit:contain}.ov-no-photo{display:grid;text-align:center;gap:5px;font-size:38px}.ov-no-photo small{font-size:12px;color:var(--muted)}.ov-property-content{padding:16px;display:flex;flex-direction:column;gap:9px;flex:1}.ov-property-content h3{margin:0;font-size:17px;overflow-wrap:anywhere}.ov-property-tags{display:flex;flex-wrap:wrap;gap:5px}.ov-tag{font-size:11px;padding:4px 7px;background:#f1f3f5;border-radius:6px;font-weight:700}.ov-tag-new{background:#e6edf9;color:#213f72}.ov-tag-pick{background:#fff1d9;color:#7f4c00}.ov-property-code{font-size:11px}.ov-property-price{font-size:22px}.ov-property-address{font-size:13px;margin:0;color:var(--muted);overflow-wrap:anywhere}.ov-property-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.ov-detail-btn{margin-top:auto;width:100%}@media(max-width:850px){.ov-showcase-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:540px){.ov-showcase-grid{grid-template-columns:1fr}.ov-filter-bar{gap:10px}.ov-showcase-heading{align-items:start}}

/* ONEVOICE TOWN: mobile usability supplement 2026-10 */
@media (max-width: 760px) {
  html { -webkit-text-size-adjust: 100%; }
  body { overflow-wrap: break-word; }
  .container, .container > *, .split > *, .card, .ov-property-section { min-width: 0; }
  .site-header { padding: 11px 14px; }
  .container { padding: 12px; }
  .card { padding: 14px; }
  .split { grid-template-columns: minmax(0,1fr); gap: 12px; }
  .sidebar { width: 100%; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; padding: 10px; }
  .sidebar strong { flex-basis: 100%; }
  .sidebar a { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 9px 11px; border: 1px solid var(--line); font-size: 13px; }
  .grid { grid-template-columns: minmax(0,1fr); }
  .toolbar { align-items: stretch; }
  .toolbar > .btn { min-height: 46px; }
  .form-row input, .form-row select, .form-row textarea { font-size: 16px; max-width: 100%; }
  input[type="date"], input[type="time"], input[type="email"], input[type="url"], select, textarea { max-width: 100%; }
  .table { max-width: 100%; }
  .table th, .table td { padding: 9px 7px; overflow-wrap: anywhere; }
  .ov-reception-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }
  .ov-reception-actions .btn { width: 100%; min-width: 0; white-space: normal; text-align: center; padding-inline: 7px; }
  .ov-room-scene { min-height: 400px; }
  .ov-reception-logo { max-width: 86%; padding: 10px 12px; }
  .ov-greeting { width: 48%; font-size: 12px; }
  .ov-showcase-heading { flex-wrap: wrap; }
  .ov-property-content { padding: 14px; }
  .ov-property-section .ov-filter-bar label { flex-basis: 100%; }
  .ov-controls { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
  .ov-controls > .btn { width: 100%; min-width: 0; min-height: 48px; padding: 8px; white-space: normal; }
  .ov-controls > .ov-location { grid-column: 1 / -1; order: -1; min-width: 0; }
  .ov-town-intro { align-items: flex-start; }
  .ov-entry-card { max-width: min(100%,430px); }
}
@media (max-width: 480px) {
  /* Company overview: readable two-column cells without forcing page overflow. */
  .card > .table:not(.ov-analytics-table) th { width: 36%; }
  .card > .table:not(.ov-analytics-table) td { width: 64%; }
  .ov-reception-actions { grid-template-columns: minmax(0,1fr); }
  .ov-room-scene { min-height: 370px; }
  .ov-room-window { top: 95px; height: 135px; }
  .ov-greeting { top: 130px; right: 3%; width: 51%; padding: 9px; }
  .ov-room-plant { font-size: 32px; }
  .ov-property-price { font-size: 21px; }
}

/* ONEVOICE TOWN mobile phase 2: company/admin dashboard refinements */
@media (max-width: 760px) {
  .split > section { min-width: 0; width: 100%; }
  .split > section > h1 { font-size: clamp(1.35rem, 5vw, 1.8rem); line-height: 1.35; overflow-wrap: anywhere; }
  .split .sidebar { position: static; max-width: 100%; }
  .split .sidebar a { text-align: center; white-space: normal; overflow-wrap: anywhere; }
  .split .card, .split form { max-width: 100%; min-width: 0; }
  .split .card:has(> .table), .split .card:has(> div > .table) { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .split .table:has(thead) { min-width: 620px; }
  .split .table:has(thead) th, .split .table:has(thead) td { white-space: normal; overflow-wrap: anywhere; }
  .split input:not([type="checkbox"]):not([type="radio"]):not([type="color"]),
  .split select, .split textarea { max-width: 100%; min-width: 0; font-size: 16px; }
  .split input[type="file"] { width: 100%; overflow: hidden; }
  .split .toolbar { display: flex; flex-wrap: wrap; gap: 10px; }
  .split .toolbar > label { flex: 1 1 145px; min-width: 0; }
  .split .toolbar > label input[type="date"] { display: block; width: 100%; margin-top: 5px; }
  .split .toolbar > .btn, .split form > .btn { min-height: 46px; }
  .split .card h2 { overflow-wrap: anywhere; }
  .split .error, .split .flash { overflow-wrap: anywhere; }
  .split img { max-width: 100%; height: auto; }
}
@media (max-width: 480px) {
  .split .sidebar { gap: 7px; }
  .split .sidebar a { flex: 1 1 calc(50% - 7px); }
  .split .toolbar > .btn { flex: 1 1 100%; }
  .split form > .btn { width: 100%; }
}

/* ONEVOICE TOWN 2026-10-10: homepage gate and compact mobile street */
.ov-home-gate-page{max-width:800px;margin:0 auto;text-align:center;}
.ov-home-gate-page h1{font-size:clamp(25px,5.5vw,42px);margin:12px 0 6px;}
.ov-home-gate-page p{line-height:1.7;}
.ov-home-gate-art{position:relative;height:260px;max-width:540px;margin:22px auto 20px;display:grid;place-items:center;overflow:hidden;border-radius:18px;background:linear-gradient(#dcebf1 0%,#f5ead9 76%,#cdbfa7 76%);}
.ov-home-gate-art .ov-gate{position:relative;left:auto;bottom:auto;height:195px;width:254px;padding-top:24px;filter:drop-shadow(6px 8px 3px #0002);}
.ov-home-gate-art .ov-gate-top{font-size:13px;}
.ov-home-enter{min-width:210px;font-size:18px;}
.ov-town .ov-viewport .ov-gate{display:none;}
@media(max-width:760px){
 .ov-town .ov-town-intro{margin-bottom:10px;gap:8px;}
 .ov-town .ov-town-intro h1{font-size:clamp(22px,6vw,29px);}
 .ov-town .ov-viewport{height:365px;min-height:365px;}
 .ov-town .ov-viewport .road.ov-promenade{height:68px;}
 .ov-town .ov-viewport .walkway{height:62px;bottom:68px;}
 .ov-town .ov-viewport .ov-hills{bottom:130px;}
 .ov-town .ov-viewport .shop.ov-building{bottom:130px;}
 .ov-town .ov-viewport .ov-tree{bottom:130px;}
 .ov-town .ov-viewport .walker.ov-person{bottom:76px;}
 .ov-town .ov-controls{margin-top:8px;}
 .ov-town .ov-help{margin-top:8px;}
 .ov-home-gate-art{height:245px;}
}
@media(max-width:390px){.ov-town .ov-viewport{height:350px;min-height:350px}.ov-home-gate-art{height:225px}}

/* 2026-10-10 iPhone: controls visible before the street and reduced road */
@media (max-width:760px){
 .ov-town{display:flex;flex-direction:column;min-width:0}
 .ov-town-intro{order:0;margin-bottom:8px!important}
 .ov-town .ov-controls{order:1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:0 0 9px!important}
 .ov-town .ov-controls .ov-location{grid-column:1/-1;order:-1;min-height:34px;padding:5px 10px}
 .ov-town .ov-controls>.btn{min-height:43px;padding:7px 6px;font-size:13px}
 .ov-town .ov-viewport{order:2;height:310px!important;min-height:310px!important;max-height:310px!important}
 .ov-town .ov-viewport .road.ov-promenade{height:40px!important}
 .ov-town .ov-viewport .walkway{height:50px!important;bottom:40px!important}
 .ov-town .ov-viewport .ov-hills{bottom:90px!important}
 .ov-town .ov-viewport .shop.ov-building{bottom:90px!important}
 .ov-town .ov-viewport .ov-tree{bottom:90px!important}
 .ov-town .ov-viewport .walker.ov-person{bottom:47px!important}
 .ov-town .ov-help{order:3}
 .ov-town .ov-controls [data-enter-shop]{font-weight:800}
}
@media (max-width:390px){.ov-town .ov-viewport{height:286px!important;min-height:286px!important;max-height:286px!important}}

/* 2026-10-10: current location above scene, actions below scene. */
.ov-town .ov-current-location{display:flex;align-items:center;width:100%;min-height:38px;margin:0 0 9px;font-weight:700;}
.ov-town .ov-controls-below{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:100%;margin:10px 0 0;}
.ov-town .ov-controls-below>.btn{width:100%;min-width:0;min-height:52px;white-space:normal;text-align:center;padding:10px 8px;}
@media(max-width:760px){
 .ov-town{display:flex;flex-direction:column;}
 .ov-town .ov-town-intro{order:0!important;}
 .ov-town .ov-current-location{order:1!important;margin:0 0 8px;min-height:36px;}
 .ov-town .ov-viewport{order:2!important;}
 .ov-town .ov-controls.ov-controls-below{order:3!important;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;margin:10px 0 0!important;gap:8px!important;}
 .ov-town .ov-controls.ov-controls-below>.btn{font-size:clamp(13px,3.4vw,16px);min-height:54px;padding:10px 6px;}
 .ov-town .ov-help{order:4!important;}
}

/* ONEVOICE TOWN 2026-10-12 — conservative smartphone polish.
   Presentation only: keep town illustration height, arrows, entry handlers,
   PDF conversion, event tracking and favorites logic untouched. */
@media (max-width: 760px) {
  /* iPhone safe horizontal sizing; avoid page-width overflow. */
  .container, .container > section, .container > article,
  .ov-info-hero, .ov-info-grid, .ov-info-card,
  .ov-property-detail, .ov-property-section,
  .ov-event-detail, .ov-fav-page {
    min-width: 0;
    max-width: 100%;
  }

  /* Global header: keep the town name and common favorites side-by-side. */
  body .site-header { gap: 8px; }
  body .site-header .brand {
    flex: 1 1 auto;
    min-width: 0;
    font-size: clamp(13px, 3.8vw, 17px);
    line-height: 1.25;
  }
  body .site-header .ov-header-favorites {
    flex: 0 0 auto;
    min-height: 44px;
    line-height: 1.25;
    padding: 7px 9px;
  }

  /* Keep street movement and scene untouched; improve small-text wrapping only. */
  .ov-town .ov-help { overflow-wrap: anywhere; line-height: 1.55; }
  .ov-town .ov-controls-below > .btn { line-height: 1.35; }

  /* Information center: shorter hero, legible 2-column navigation. */
  main .ov-info-hero { padding: 15px; margin: 8px 0 12px; }
  main .ov-info-hero h1 { font-size: clamp(21px, 5.5vw, 26px); line-height: 1.3; }
  main .ov-info-hero p { line-height: 1.55; }
  main .ov-info-jump { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 10px 0; }
  main .ov-info-jump .btn { width: 100%; min-width: 0; min-height: 44px; padding: 8px; font-size: 12px; line-height: 1.35; white-space: normal; text-align: center; }
  main .ov-info-grid { grid-template-columns: minmax(0,1fr); gap: 10px; margin: 12px 0 20px; }
  main .ov-info-card { padding: 12px; }
  main .ov-info-card h3 { font-size: 17px; line-height: 1.35; margin: 4px 0 7px; }
  main .ov-info-card p { line-height: 1.5; margin: 6px 0; }
  main .ov-info-btns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; margin-top: 10px; }
  main .ov-info-btns .btn { min-height: 44px; padding: 8px 6px; font-size: 12px; white-space: normal; line-height: 1.3; text-align: center; }
  #companies, #events, #guide, #ov-shop-properties { scroll-margin-top: 82px; }

  /* Reception navigation: eliminate four tall single-column buttons. */
  main .ov-reception .ov-reception-actions { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px; }
  main .ov-reception .ov-reception-actions .btn { min-width: 0; width: 100%; min-height: 50px; padding: 8px 5px; font-size: clamp(12px, 3.2vw, 14px); line-height: 1.35; white-space: normal; text-align: center; }
  main .ov-reception [data-shop-volume] { max-width: min(135px, 28vw); }

  /* Storefront search controls: two columns when space allows. */
  main .ov-property-section .ov-filter-bar label { flex: 1 1 calc(50% - 8px); min-width: 135px; line-height: 1.35; }
  main .ov-property-section .ov-filter-bar select { width: 100%; min-width: 0; min-height: 44px; padding: 8px 7px; }
  main .ov-property-section .ov-filter-bar [data-reset-filter] { min-height: 44px; }

  /* PDF details: avoid horizontal overflow; keep the entire page preview. */
  main .ov-property-detail .ov-property-heading h1 { overflow-wrap: anywhere; }
  main .ov-property-detail .ov-property-pdf-preview { min-width: 0; max-width: 100%; }
  main .ov-property-detail .ov-property-pdf-preview img { width: auto; max-width: 100%; height: auto; object-fit: contain; }
  main .ov-property-detail .ov-property-gallery-grid { min-width: 0; }
  main .ov-property-detail .ov-gallery-trigger { min-width: 0; }

  /* Event page: addresses/booking links fit without cutting or sideways scroll. */
  main .ov-event-detail .ov-event-summary { min-width: 0; }
  main .ov-event-detail .ov-event-summary dd { min-width: 0; overflow-wrap: anywhere; }
  main .ov-event-detail .ov-event-map { max-width: 100%; }
  main .ov-event-detail .ov-event-actions .btn { min-width: 0; overflow-wrap: anywhere; min-height: 46px; }

  /* Favorites: preserve image ratio and usable touch targets. */
  main .ov-fav-page .ov-fav-item { min-width: 0; }
  main .ov-fav-page .ov-fav-info { min-width: 0; overflow-wrap: anywhere; }
  main .ov-fav-page .ov-fav-photo img { max-width: 100%; object-fit: contain; }
  main .ov-fav-page .ov-fav-actions .btn { min-height: 44px; line-height: 1.25; }
}

@media (max-width: 360px) {
  body .site-header .brand { font-size: 12px; }
  body .site-header .ov-header-favorites { font-size: 11px; padding-inline: 7px; }
  main .ov-info-jump { grid-template-columns: 1fr; }
  main .ov-info-btns .btn { font-size: 11px; }
  main .ov-property-section .ov-filter-bar label { min-width: 125px; }
  main .ov-fav-page .ov-fav-item { grid-template-columns: minmax(0, 33%) minmax(0, 1fr); gap: 7px; }
}

/* 2026-10-24: recognizable return buttons on public TOWN screens. */
main.container :is(.ov-info-hero, #guide) a.btn:is([href="index.php"], [href^="town-map.php"]),
body.ov-map-view .ov-map-heading > a.btn[href="index.php"],
body.ov-map-view a.ov-map-gate[href="index.php"],
body.ov-town-view .ov-town-actions > a.btn[href^="town-map.php"],
main.container .ov-reception-actions > a.btn[data-back-town] {
  background: #f4b544 !important;
  color: #38290f !important;
  border-color: #b77315 !important;
}
main.container :is(.ov-info-hero, #guide) a.btn:is([href="index.php"], [href^="town-map.php"]):is(:hover, :active),
body.ov-map-view .ov-map-heading > a.btn[href="index.php"]:is(:hover, :active),
body.ov-map-view a.ov-map-gate[href="index.php"]:is(:hover, :active),
body.ov-town-view .ov-town-actions > a.btn[href^="town-map.php"]:is(:hover, :active),
main.container .ov-reception-actions > a.btn[data-back-town]:is(:hover, :active) {
  background: #e9a02c !important;
}
main.container :is(.ov-info-hero, #guide) a.btn:is([href="index.php"], [href^="town-map.php"]):focus-visible,
body.ov-map-view .ov-map-heading > a.btn[href="index.php"]:focus-visible,
body.ov-map-view a.ov-map-gate[href="index.php"]:focus-visible,
body.ov-town-view .ov-town-actions > a.btn[href^="town-map.php"]:focus-visible,
main.container .ov-reception-actions > a.btn[data-back-town]:focus-visible {
  outline: 3px solid #155e75;
  outline-offset: 3px;
}
