:root{color:#1f2933;background:#eef2f5;font-family:Inter,PingFang SC,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;padding:20px}.workspace{display:grid;grid-template-columns:minmax(380px,460px) minmax(0,1fr);gap:16px;max-width:1440px;min-height:calc(100vh - 40px);margin:0 auto}.control-panel,.map-panel{min-width:0}.control-panel{display:flex;flex-direction:column;gap:14px;overflow:hidden}.title-block{padding:4px 2px 0}.eyebrow{margin:0 0 6px;color:#687789;font-size:12px}h1,h2,h3,p{margin-top:0}.title-block h1{margin-bottom:8px;color:#15202b;font-size:28px;line-height:1.15}.title-block p:last-child{margin-bottom:0;color:#536272;font-size:14px;line-height:1.55}.notice{border:1px solid #d8b85d;border-radius:8px;padding:11px 12px;background:#fff8df;color:#6a4d00;font-size:13px;line-height:1.45}.search-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;border:1px solid #d9e1e8;border-radius:8px;padding:12px;background:#fff}.field{display:flex;min-width:0;flex-direction:column;gap:6px}.field-wide{grid-column:1 / -1}.field span{color:#526170;font-size:12px}input{width:100%;min-height:40px;border:1px solid #cbd6df;border-radius:7px;padding:0 11px;color:#1f2933;background:#fff;outline:none}input:focus{border-color:#267c7c;box-shadow:0 0 0 3px #267c7c24}.input-with-button{display:grid;grid-template-columns:minmax(0,1fr) 72px;gap:8px}.search-grid button,.actions-row button{min-height:40px;border:0;border-radius:7px;padding:0 12px;background:#237a7a;color:#fff;white-space:nowrap}.search-grid button.secondary,.actions-row button.secondary{border:1px solid #cbd6df;background:#f7fafb;color:#23313f}.radius-tabs{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.radius-tabs button{min-width:0;padding:0 6px;overflow:hidden;text-overflow:ellipsis}.radius-tabs button.active{background:#e5f4f2;color:#146463;box-shadow:inset 0 0 0 1px #3e9a97}.actions-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.status-line{min-height:38px;border:1px solid #d9e1e8;border-radius:8px;padding:10px 12px;background:#fff;color:#536272;font-size:13px}.status-line.error{border-color:#e4a1a1;background:#fff1f1;color:#8a2e2e}.status-line.loading{color:#146463}.results-header{display:flex;justify-content:space-between;gap:12px;color:#536272;font-size:13px}.results-header strong{color:#15202b}.hotel-list{display:flex;min-height:260px;flex:1;flex-direction:column;gap:10px;overflow:auto;padding-right:3px}.hotel-card{width:100%;border:1px solid #d9e1e8;border-radius:8px;padding:13px;background:#fff;color:inherit;text-align:left}.hotel-card.selected{border-color:#237a7a;box-shadow:0 0 0 3px #237a7a21}.hotel-card-top,.hotel-meta,.room-title,.room-group-head,.offer-row,.map-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.hotel-card h2{margin-bottom:0;overflow-wrap:anywhere;font-size:16px;line-height:1.3}.hotel-card-top span{flex:0 0 auto;color:#146463;font-size:13px}.hotel-card p{margin:8px 0 10px;color:#607080;font-size:13px;line-height:1.45}.hotel-meta{flex-wrap:wrap;color:#617080;font-size:12px}.hotel-meta strong{margin-left:auto;color:#b74724;font-size:16px}.map-panel{display:grid;grid-template-rows:minmax(420px,1.1fr) minmax(280px,.9fr);gap:16px}.map-box,.room-panel{min-width:0;border:1px solid #d9e1e8;border-radius:8px;background:#fff}.map-box{display:flex;min-height:420px;flex-direction:column;overflow:hidden}.map-toolbar{min-height:58px;border-bottom:1px solid #e3e9ee;padding:11px 14px;color:#526170;font-size:13px}.map-toolbar strong{display:block;color:#15202b;font-size:15px}.map-toolbar span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mock-map{position:relative;flex:1;min-height:350px;overflow:hidden;background:linear-gradient(90deg,rgba(65,87,101,.08) 1px,transparent 1px),linear-gradient(rgba(65,87,101,.08) 1px,transparent 1px),#edf4ef;background-size:42px 42px}.map-road{position:absolute;z-index:1;background:#ffffffe6;box-shadow:0 0 0 1px #7d8f992e;pointer-events:none}.map-road-primary{top:47%;left:-10%;width:120%;height:30px;transform:rotate(-7deg)}.map-road-secondary{top:-20%;left:56%;width:24px;height:140%;transform:rotate(17deg)}.map-road-third{top:70%;left:-12%;width:128%;height:18px;transform:rotate(12deg)}.map-water{position:absolute;left:4%;bottom:7%;width:30%;height:34%;border-radius:48% 52% 45% 55%;padding:18px;background:#c8e4eb;color:#32717f;font-size:13px;font-weight:700}.map-district,.map-empty{position:absolute;z-index:2;color:#41576594;font-size:13px;font-weight:700;pointer-events:none}.district-west{left:18%;top:31%}.district-east{right:18%;top:34%}.district-north{left:47%;top:17%}.map-empty{left:50%;top:64%;transform:translate(-50%)}.range-circle{position:absolute;z-index:2;top:50%;left:50%;width:min(68vw,430px);max-width:78%;aspect-ratio:1;border:1px dashed #237a7a;border-radius:50%;background:#237a7a0f;transform:translate(-50%,-50%)}.center-pin{position:absolute;z-index:4;top:50%;left:50%;max-width:180px;min-width:56px;border-radius:999px;padding:7px 10px;background:#15202b;color:#fff;font-size:12px;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transform:translate(-50%,-50%)}.map-pin{position:absolute;z-index:3;min-width:54px;border:2px solid #ffffff;border-radius:999px;padding:7px 9px;background:#237a7a;color:#fff;font-weight:700;font-size:12px;box-shadow:0 8px 18px #1f29332e;transform:translate(-50%,-50%)}.map-pin.selected{background:#b74724;transform:translate(-50%,-50%) scale(1.08)}.room-panel{overflow:auto;padding:16px}.room-title{align-items:flex-start;border-bottom:1px solid #e3e9ee;padding-bottom:14px}.room-title p{margin-bottom:4px;color:#237a7a;font-size:12px}.room-title h2{margin-bottom:6px;overflow-wrap:anywhere;font-size:20px}.room-title span{color:#607080;font-size:13px;line-height:1.4}.room-title strong{flex:0 0 auto;color:#b74724;font-size:20px}.room-groups{display:flex;flex-direction:column;gap:12px;margin-top:14px}.room-group{border:1px solid #e0e7ed;border-radius:8px;overflow:hidden}.room-group-head{align-items:flex-start;padding:12px;background:#f7fafb}.room-group-head h3{margin-bottom:5px;font-size:15px}.room-group-head span{color:#607080;font-size:12px}.room-group-head strong{flex:0 0 auto;color:#b74724}.offer-table{display:flex;flex-direction:column}.offer-row{min-height:44px;border-top:1px solid #edf1f4;padding:9px 12px;color:#536272;font-size:13px}.offer-row strong{color:#b74724;font-size:16px}.offer-row time{color:#738293;font-size:12px;white-space:nowrap}.platform-badge{min-width:52px;border-radius:999px;padding:5px 8px;background:#e5f4f2;color:#146463;font-size:12px;text-align:center}.empty-state{border:1px dashed #cbd6df;border-radius:8px;padding:20px;background:#fff;color:#607080;font-size:14px;line-height:1.55;text-align:center}.skeleton-stack{display:flex;flex-direction:column;gap:10px}.skeleton-stack div{height:104px;border-radius:8px;background:linear-gradient(90deg,#fff,#e8eef3,#fff);background-size:200% 100%;animation:loading 1.15s infinite linear}@keyframes loading{0%{background-position:200% 0}to{background-position:-200% 0}}@media(max-width:900px){.app-shell{padding:12px}.workspace{display:flex;min-height:0;flex-direction:column}.control-panel{display:contents;overflow:visible}.title-block{order:1}.notice{order:2}.search-grid{order:3}.status-line{order:4}.hotel-list{order:7;max-height:none;overflow:visible}.results-header{order:6}.map-panel{display:contents}.map-box{order:5;min-height:340px}.mock-map{min-height:280px}.room-panel{order:8;max-height:none}}@media(max-width:560px){.title-block h1{font-size:24px}.search-grid,.input-with-button,.actions-row{grid-template-columns:1fr}.radius-tabs{grid-template-columns:repeat(3,1fr)}.results-header,.room-title,.hotel-card-top,.room-group-head{align-items:flex-start;flex-direction:column}.hotel-meta strong{width:100%;margin-left:0}.offer-row{display:grid;grid-template-columns:64px 1fr auto;align-items:center}.offer-row span:nth-child(3){grid-column:2}.offer-row time{grid-column:1 / -1}}
