/* 운영 지도: 실제 시설 아틀라스와 상태·작업 버튼을 같은 좌표계에 둔다. */
.farm-page:has(.owner-shell) { max-width: 1500px; padding: 14px 24px 22px; }
.owner-heading { margin-bottom: 12px; gap: 12px; }
.owner-heading .farm-back { font-size: 10px; margin-bottom: 8px; }
.owner-heading .farm-title-line { gap: 10px; }
.owner-heading h1 { font-size: 24px; letter-spacing: -1px; }
.owner-heading h1 > span { font-size: 23px; margin-left: 7px; }
.owner-heading-meta { text-align: right; }
.owner-heading-meta > span { display: block; font-size: 11px; color: #819071; margin-bottom: 6px; }
.owner-heading-meta > strong { font-size: 20px; color: #7b7b49; font-weight: 500; }
.owner-heading-meta b { font-weight: 600; color: #4f6240; }
.owner-heading-meta small { font-size: 10px; }
.owner-shell { height: calc(100svh - 185px); min-height: 620px; max-height: 940px; position: relative; display: flex; flex-direction: column; border: 1px solid #d9dfca; border-radius: 16px; overflow: hidden; background: #f5f5e9; }
.owner-topbar { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)) auto; align-items: center; gap: 18px; padding: 13px 20px; background: #fffdf4; border-bottom: 1px solid #e3e5d1; flex-shrink: 0; z-index: 2; }
.owner-stat small { display: block; font-size: 10px; color: #8d9879; margin-bottom: 5px; }
.owner-stat strong { color: #657b4e; font-weight: 500; font-size: 21px; }
.owner-stat b { font-weight: 600; }
.owner-stat strong > span { font-size: 10px; font-weight: 400; color: #929c7f; }
.owner-controls { display: flex; align-items: center; gap: 8px; }
.owner-controls .farm-clock { font-size: 18px; padding: 10px 11px; }
.owner-controls button { min-height: 40px; border-radius: 8px; padding: 10px 14px; font-size: 11px; white-space: nowrap; }
.owner-start { background: #758e55; color: #fff; }
.owner-pause { background: #e7edd9; color: #798a62; }
.owner-settle { background: #f2ebd7; color: #97865d; }
.owner-map-area.farm-stage.farm-estate { flex: 1; min-height: 0; position: relative; margin: 0; border: 0; border-radius: 0; overflow: hidden; background: radial-gradient(ellipse at 50% 30%, #faf9e9, #eef2df); }
.owner-world { position: absolute; inset: 0 0 102px; isolation: isolate; }
.owner-terrain, .owner-flows { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; }
.owner-flows { z-index: 0; }
.owner-flow { fill: none; stroke: #91aa69; stroke-width: 4; stroke-dasharray: 9 12; opacity: .65; }
.owner-running .owner-flow { animation: owner-flow-move 4s linear infinite; }
@keyframes owner-flow-move { to { stroke-dashoffset: -84; } }
.owner-map-caption { position: absolute; top: 13px; left: 22px; z-index: 1; }
.owner-map-caption > span { display: block; color: #9ba485; letter-spacing: 1.5px; font: 8px monospace; }
.owner-map-caption > strong { display: block; color: #7c8b62; font-size: 12px; font-weight: 400; margin-top: 7px; }
.owner-station { position: absolute; width: 184px; z-index: 2; }
.owner-building { display: flex; align-items: center; flex-direction: column; width: 100%; border: 0; background: transparent; color: #62754d; padding: 0; }
.owner-atlas { display: block; width: 146px; height: 146px; background-image: url('./farm-buildings-v1.png'); background-repeat: no-repeat; background-size: 200% 200%; filter: drop-shadow(0 5px 4px #5d633a15); transition: translate .15s; }
.atlas-barn { background-position: 0 0; }
.atlas-dairy { background-position: 100% 0; }
.atlas-office { background-position: 0 100%; }
.atlas-market { background-position: 100% 100%; }
.owner-building:hover .owner-atlas { translate: 0 -3px; }
.owner-station-label { display: block; width: 100%; text-align: center; border: 1px solid #c9d5ac; background: #fffdf0ee; border-radius: 8px; padding: 7px 6px; box-shadow: 0 3px 6px #5764380a; }
.owner-station-label strong { display: block; font-size: 12px; font-weight: 500; line-height: 1.5; }
.owner-station-label small { display: block; color: #8d9775; font-size: 9px; line-height: 1.7; margin-top: 3px; }
.owner-station-actions { display: flex; gap: 5px; margin-top: 5px; width: 100%; }
.owner-station-actions button { flex: 1; min-width: 0; min-height: 31px; color: #718254; background: #f6f8e9f2; border: 1px solid #d2ddbe; border-radius: 6px; padding: 6px 3px; font-size: 9px; white-space: nowrap; }
.owner-station-actions .owner-direct { background: #e2ebcd; border-color: #b9cc98; }
.owner-station-actions button:disabled { opacity: .5; }
.owner-barn { left: 13%; top: 5%; }
.owner-dairy { right: 13%; top: 5%; }
.owner-office { left: 16%; bottom: 5%; }
.owner-market { right: 12%; bottom: 4%; }
.owner-office .owner-atlas { width: 128px; height: 128px; }
.owner-office .owner-station-label { max-width: 164px; }
.has-bottleneck .owner-station-label { border-color: #d7ba70; background: #fff8de; }
.has-bottleneck .owner-station-label small { color: #a48a50; }
.owner-storage { position: absolute; top: 31%; left: 46%; width: 90px; z-index: 2; display: flex; flex-direction: column; align-items: center; color: #7a825e; padding: 0; }
.owner-tank { position: relative; display: block; height: 48px; width: 48px; background: linear-gradient(90deg,#c1d2c4,#edf2e1 55%,#a8bda9); border: 1px solid #96aa93; border-radius: 50% / 14%; box-shadow: 4px 6px 0 #6e88671a; }
.owner-tank::before { content: ''; position: absolute; left: -1px; right: -1px; top: -5px; height: 15px; background: #eef2de; border: 1px solid #9aaf91; border-radius: 50%; }
.owner-tank i { position: absolute; right: 8px; top: 17px; width: 7px; height: 22px; border: 1px solid #a6b89b; border-radius: 3px; background: #c6dfb1; }
.owner-storage strong { margin-top: 9px; font-size: 11px; font-weight: 500; }
.owner-storage small { font-size: 9px; margin-top: 4px; }
.owner-storage > span:last-child { width: 58px; height: 4px; border-radius: 4px; margin-top: 6px; background: linear-gradient(90deg,#a3bc77 var(--fill,0%),#e0e7cb var(--fill,0%)); }
.owner-storage.storage-full { color: #aa8d43; }
.owner-storage.storage-full .owner-tank { filter: sepia(.3); }
.owner-herd { position: absolute; top: 48%; left: 35%; width: 25%; display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); align-items: center; z-index: 1; transform: rotate(-3deg); }
.owner-cow { width: 62px; max-width: 100%; height: auto; animation: owner-graze 5s ease-in-out infinite alternate; }
.owner-cow:nth-child(even) { animation-delay: -2s; }
.owner-cow .estate-cow-body { transform-origin: 40px 55px; }
.owner-herd > span { grid-column: 1/-1; font-size: 10px; color: #7d8e61; text-align: center; margin-top: 2px; }
@keyframes owner-graze { to { translate: 3px -2px; } }
.owner-delivery { position: absolute; bottom: 1%; left: 44%; width: 160px; z-index: 2; }
.owner-truck { display: flex; flex-direction: column; align-items: center; width: 100%; color: #7e835f; }
.owner-truck > span { display: block; position: relative; width: 72px; height: 34px; border: 1px solid #8eab82; border-radius: 4px 12px 4px 4px; background: linear-gradient(125deg,#d6e6c7,#a7c39c); transform: skewY(-9deg); color: #ecf2da; font-size: 16px; box-shadow: 5px -3px 0 #bdd2ad; line-height: 28px; }
.owner-truck > span::before, .owner-truck > span::after { content: ''; position: absolute; bottom: -7px; width: 13px; height: 13px; border: 3px solid #6d735d; background: #d5d8bf; border-radius: 50%; }
.owner-truck > span::before { left: 8px; }
.owner-truck > span::after { right: 8px; }
.owner-truck strong { font-size: 11px; font-weight: 500; margin-top: 11px; }
.owner-truck small { font-size: 9px; margin-top: 4px; background: #fffdf0d9; border-radius: 4px; padding: 3px; }
.owner-worker { position: absolute; z-index: 3; width: 13px; height: 21px; background: #ae9068; border-radius: 5px 5px 3px 3px; box-shadow: 0 3px 0 #73654d; pointer-events: none; animation: owner-worker-walk 6s ease-in-out infinite alternate; }
.owner-worker > i { position: absolute; width: 12px; height: 12px; background: #f4d8ae; border-top: 4px solid #a38f66; border-radius: 50%; top: -9px; left: 0; }
.owner-worker b { font-size: 6px; color: #ded8a9; position: absolute; top: 6px; left: 4px; }
.owner-worker.worker-milker { top: 46%; left: 32%; }
.owner-worker.worker-artisan { top: 42%; right: 30%; background: #b19dc1; }
.owner-worker.worker-seller { bottom: 28%; right: 28%; background: #a8bc8e; }
.owner-worker.worker-courier { bottom: 19%; left: 49%; background: #9cafb8; }
@keyframes owner-worker-walk { to { translate: 12px 5px; } }
.estate-resting .owner-worker, .estate-resting .owner-cow { animation-play-state: paused; }
.owner-event { position: absolute; top: 15px; right: 18px; max-width: 270px; display: flex; align-items: center; gap: 7px; background: #fffaf0df; border: 1px solid #e3dcc1; border-radius: 8px; padding: 8px 11px; color: #93876a; z-index: 3; }
.owner-event strong { font-size: 10px; font-weight: 400; }
.owner-event small { font-size: 8px; }
.owner-event:disabled { opacity: .65; }
.owner-progression { position: absolute; left: 20px; bottom: 7px; display: flex; align-items: center; gap: 7px; color: #a0a78b; font-size: 9px; }
.owner-progression small { font-size: 9px; }
.owner-alerts { position: absolute; bottom: 0; left: 0; right: 0; min-height: 100px; background: #fffdf1e8; border-top: 1px solid #e3e4d1; padding: 11px 18px; z-index: 3; }
.owner-alert-heading { display: flex; align-items: center; justify-content: space-between; font-size: 10px; margin-bottom: 8px; }
.owner-alert-heading strong { color: #819069; font-weight: 500; }
.owner-alert-heading > span { color: #a19e77; font-size: 9px; }
[data-owner-issues] { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }
.owner-issue { display: flex; align-items: center; gap: 9px; min-height: 47px; padding: 8px 10px; border: 1px solid #e2dfbe; border-radius: 8px; background: #f6f5e5; color: #8a8964; text-align: left; }
.owner-issue > span:first-child { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: #e9e5c6; color: #a49a65; font-size: 12px; flex-shrink: 0; }
.owner-issue > span:nth-child(2) { flex: 1; min-width: 0; }
.owner-issue strong { display: block; font-size: 11px; line-height: 1.6; font-weight: 500; }
.owner-issue small { display: block; font-size: 9px; color: #a09c7e; line-height: 1.7; margin-top: 2px; }
.owner-issue > b { font-size: 15px; font-weight: 400; }
.owner-feedback { display: flex; align-items: center; padding: 10px 18px; min-height: 41px; background: #f7f6e8; flex-shrink: 0; border-top: 1px solid #e2e4d0; }
.owner-idle-note { font-size: 10px; color: #939d80; line-height: 1.9; }
.owner-feedback:has(#farm-action-feedback:not([hidden])) .owner-idle-note { display: none; }
.owner-feedback #farm-action-feedback { flex-basis: auto; background: transparent; padding: 0; font-size: 11px; }
.owner-screen-reader { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.owner-dock { position: absolute; top: 76px; bottom: 42px; right: 0; width: 350px; z-index: 6; border-left: 1px solid #dce1cd; background: #fffdf8; display: flex; flex-direction: column; box-shadow: -8px 0 30px #586b3410; }
.owner-dock[hidden], [data-owner-panel][hidden] { display: none; }
.owner-dock-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 17px; border-bottom: 1px solid #e7e8d8; background: #f5f5e9; }
.owner-dock-heading strong { font-size: 12px; color: #7b8868; font-weight: 500; }
.owner-dock-heading button { width: 34px; height: 34px; font-size: 23px; color: #9aa385; }
.owner-dock-scroll { overflow: auto; overscroll-behavior: contain; padding: 14px; flex: 1; min-height: 0; }
.owner-dock-open .owner-world, .owner-dock-open .owner-alerts { right: 350px; }
.owner-dock-open .owner-barn { left: 7%; }
.owner-dock-open .owner-dairy { right: 6%; }
.owner-dock-open .owner-office { left: 7%; }
.owner-dock-open .owner-market { right: 5%; }
.owner-dock .farm-shop, .owner-dock .farm-dairy, .owner-dock .farm-contracts { border: 0; border-radius: 0; padding: 0; margin: 0; background: transparent; }
.owner-dock .farm-pasture { padding: 0; background: transparent; }
.owner-dock .farm-cow-grid { gap: 7px; }
.owner-dock .farm-cow { padding: 9px; }
.owner-dock .farm-cow > svg { max-height: 110px; }
.owner-dock .farm-cow strong { font-size: 11px; }
.owner-dock .farm-instructions { font-size: 8px; gap: 6px; margin-bottom: 12px; }
.owner-dock .farm-save-row { display: block; padding: 10px 0; font-size: 10px; }
.owner-dock .farm-save-row details { text-align: left; margin-top: 12px; }
.owner-dock .farm-save-row details > div { justify-content: flex-start; }
.owner-dock .farm-shop-content { display: block; }
.owner-dock .farm-upgrade { flex-direction: row; }
.owner-dock .buyer-list { grid-template-columns: repeat(3,minmax(0,1fr)); }
.owner-panel-note { font-size: 10px; color: #969b81; line-height: 1.9; margin-top: 15px; }
@media (max-width: 800px) {
 .farm-page:has(.owner-shell) { padding: 10px 12px 16px; }
 .owner-heading h1 { font-size: 19px; }
 .owner-heading .farm-beta { display: none; }
 .owner-heading-meta > span { font-size: 9px; }
 .owner-heading-meta > strong { font-size: 17px; }
 .owner-shell { height: calc(100svh - 155px); min-height: 580px; border-radius: 12px; }
 .owner-topbar { grid-template-columns: repeat(3,minmax(0,1fr)); gap: 9px; padding: 10px 12px; }
 .owner-stat small { font-size: 9px; }
 .owner-stat strong { font-size: 18px; }
 .owner-stat strong > span { font-size: 9px; }
 .owner-controls { grid-column: 1/-1; justify-content: flex-end; gap: 6px; }
 .owner-controls .farm-clock { margin-right: auto; padding: 6px 10px; font-size: 17px; }
 .owner-controls button { min-height: 34px; font-size: 10px; padding: 8px 12px; }
 .owner-world { bottom: 90px; }
 .owner-map-caption { top: 9px; left: 11px; }
 .owner-map-caption > span { font-size: 6px; letter-spacing: .6px; }
 .owner-map-caption > strong { font-size: 9px; max-width: 180px; margin-top: 4px; }
 .owner-event { right: 10px; top: 10px; max-width: 135px; padding: 6px; gap: 4px; }
 .owner-event strong { font-size: 8px; max-width: 92px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
 .owner-event small { display: none; }
 .owner-station { width: 30%; max-width: 145px; }
 .owner-atlas { width: 100px; max-width: 100%; height: 100px; }
 .owner-barn, .owner-dock-open .owner-barn { left: 4%; top: 8%; }
 .owner-dairy, .owner-dock-open .owner-dairy { right: 4%; top: 8%; }
 .owner-office, .owner-dock-open .owner-office { left: 4%; bottom: 10%; }
 .owner-market, .owner-dock-open .owner-market { right: 4%; bottom: 10%; }
 .owner-office .owner-atlas { width: 92px; height: 92px; }
 .owner-station-label { padding: 5px 3px; border-radius: 6px; }
 .owner-station-label strong { font-size: 10px; }
 .owner-station-label small { font-size: 8px; line-height: 1.5; }
 .owner-station-actions { gap: 3px; }
 .owner-station-actions button { min-height: 29px; padding: 5px 1px; font-size: 8px; }
 .owner-storage { top: 31%; left: 42%; width: 62px; }
 .owner-tank { width: 37px; height: 38px; }
 .owner-storage strong { font-size: 9px; margin-top: 7px; }
 .owner-storage small { font-size: 8px; }
 .owner-herd { left: 30%; top: 49%; width: 37%; }
 .owner-cow { width: 39px; }
 .owner-herd > span { font-size: 8px; }
 .owner-delivery { width: 29%; left: 35%; bottom: 0; }
 .owner-truck > span { width: 51px; height: 25px; line-height: 19px; font-size: 12px; }
 .owner-truck strong { font-size: 9px; margin-top: 9px; }
 .owner-truck small { font-size: 8px; }
 .owner-progression { display: none; }
 .owner-worker.worker-milker { left: 29%; top: 47%; }
 .owner-worker.worker-artisan { right: 28%; top: 46%; }
 .owner-worker.worker-seller { right: 29%; bottom: 28%; }
 .owner-worker.worker-courier { left: 49%; bottom: 18%; }
 .owner-alerts { min-height: 88px; padding: 9px 10px; }
 .owner-alert-heading { font-size: 9px; margin-bottom: 6px; }
 [data-owner-issues] { gap: 5px; }
 .owner-issue { gap: 6px; padding: 7px; min-height: 47px; }
 .owner-issue strong { font-size: 9px; }
 .owner-issue small { display: none; }
 .owner-issue > span:first-child { width: 17px; height: 17px; font-size: 9px; }
 .owner-issue > b { font-size: 11px; }
 .owner-feedback { min-height: 39px; padding: 8px 11px; }
 .owner-idle-note, .owner-feedback #farm-action-feedback { font-size: 9px; line-height: 1.7; }
 .owner-dock { top: auto; bottom: 0; left: 0; right: 0; width: auto; max-height: 58svh; height: 470px; border-left: 0; border-top: 1px solid #ccd7b7; border-radius: 15px 15px 0 0; box-shadow: 0 -8px 30px #56693d22; }
 .owner-dock-open .owner-world, .owner-dock-open .owner-alerts { right: 0; }
 .owner-dock-heading { padding: 8px 14px; }
 .owner-dock-scroll { padding: 16px; }
}
@media (max-width: 380px) { .owner-atlas { width: 90px; height: 90px; } .owner-station-label small { font-size: 7px; } .owner-storage { left: 41%; } .owner-station-actions button { font-size: 7px; } }
@media (prefers-reduced-motion: reduce) { .owner-cow, .owner-worker, .owner-running .owner-flow { animation: none; } .owner-atlas { transition: none; } }

/* 게임 안에서는 사이트 헤더/푸터 대신 운영판과 라운지 돌아가기를 사용한다. */
body:has(#farm-view:not([hidden]) .owner-shell) > .header,
body:has(#farm-view:not([hidden]) .owner-shell) > .footer { display: none; }
.farm-page:has(.owner-shell) { width: 100%; }
.owner-shell { height: calc(100svh - 105px); }
.owner-atlas { width: 174px; height: 174px; }
.owner-station-actions button { min-height: 37px; font-size: 10px; }
.owner-station-label small { font-size: 10px; }
.owner-dairy.unbuilt .owner-atlas { opacity: .35; filter: saturate(.45); }
@media (max-width:800px) {
 .owner-shell { height: calc(100svh - 90px); min-height: 600px; }
 .owner-heading { margin-bottom: 9px; }
 .owner-controls button { min-height: 39px; }
 .owner-atlas { width: 108px; height: 108px; }
 .owner-station-label strong { font-size: 11px; }
 .owner-station-label small { font-size: 9px; }
 .owner-station-actions button { min-height: 40px; font-size: 9px; }
 .owner-storage strong { font-size: 10px; }
 .owner-storage small { font-size: 9px; }
 .owner-issue strong { font-size: 10px; }
 .owner-truck strong { font-size: 10px; }
 .owner-truck small { font-size: 9px; }
 .owner-delivery { bottom: 1%; }
 .owner-office .owner-atlas { width: 102px; height: 102px; }
}
.owner-stat .owner-stock-mix { font-size: 9px; color: #97a080; margin: 5px 0 0; }
@media (min-width:801px) { .owner-dock { top: 89px; } }
.owner-heading-meta i[data-owner-save] { font-style: normal; color: #8da278; }
.owner-heading-meta i.save-warning { color: #b18e51; }
