geo-location { display:block; }

.geo-banner { display:flex; align-items:center; justify-content:center; gap:12px;
  padding:10px 16px; background:#fff; border-bottom:1px solid #eee;
  font-size:14px; position:relative; z-index:1000; }
.geo-banner[hidden] { display:none; }
.geo-banner__target [hidden] { display:none; }
  .geo-banner__switch { background:#000; color:#fff; border:0; border-radius:8px;
  padding:7px 22px; font-size:14px; cursor:pointer;
  transition: background .2s ease; display:inline-flex;
  align-items:center; justify-content:center; gap:8px; }
.geo-banner__switch::after { content:"→"; font-size:14px; line-height:1; color:#aaa; }
.geo-banner__switch:hover { background:#333; }
.geo-banner__close { background:none; border:0; font-size:20px; cursor:pointer;
  padding:4px 8px; line-height:1; color:#111; }
.geo-banner__target { display:inline-flex; align-items:center;
  border:1px solid #d9d9d9; border-radius:8px; background:#fff;
  padding:7px 18px; font-size:14px; color:#111; cursor:pointer; }
.geo-banner__target:hover { background:#f2f2f2; }
@media screen and (max-width: 768px) {
  .geo-banner { display:grid; grid-template-columns:minmax(0, 1fr) auto;
    grid-template-areas:"text close" "target switch"; align-items:center;
    justify-content:stretch; gap:6px 10px; padding:6px 12px 8px;
    background:#fff; border-bottom:1px solid #eee; font-size:12px;
    line-height:1.25; box-sizing:border-box; overflow:hidden; }
  .geo-banner__text { grid-area:text; min-width:0; color:#333;
    line-height:1.25; display:-webkit-box; -webkit-line-clamp:2;
    -webkit-box-orient:vertical; overflow:hidden; }
  .geo-banner__close { grid-area:close; justify-self:end; align-self:start;
    width:22px; height:22px; padding:0; font-size:18px;
    line-height:22px; color:#333; }
  .geo-banner__target { grid-area:target; width:100%; min-width:0;
    min-height:34px; height:auto; justify-content:center; padding:7px 12px; border-radius:8px;
    font-size:12px; line-height:1.15; text-align:center; overflow:hidden;
    box-sizing:border-box; }
  .geo-banner__switch { grid-area:switch; width:auto; min-width:96px; max-width:160px; min-height:34px;
    padding:7px 12px; border:0; border-radius:8px; font-size:12px;
    white-space:normal; overflow-wrap:anywhere; box-sizing:border-box; display:inline-flex;
    align-items:center; justify-content:center; gap:8px; }
}
.geo-trigger { display:inline-flex; align-items:center; background:none;
  border:0; border-radius:0; cursor:pointer; padding:6px;
  position:relative; z-index:999; color:inherit; }
.geo-modal { position:fixed; inset:0; z-index:2000; background:rgba(0,0,0,.45);
  display:flex; align-items:center; justify-content:center; padding:24px; }
.geo-modal[hidden] { display:none; }
.geo-modal__panel { background:#fff; border-radius:8px; width:min(960px, 100%);
  max-height:85vh; display:flex; flex-direction:column;
  padding:36px 44px 28px; box-shadow:0 12px 40px rgba(0,0,0,.18); }
.geo-modal__header { display:flex; justify-content:space-between; align-items:flex-start;
  padding-bottom:20px; border-bottom:1px solid #e8e8e8; flex-shrink:0; }
.geo-modal__title { margin:0; font-size:28px; font-weight:600; color:#111; }
.geo-modal__hint { margin:10px 0 0; font-size:15px; color:#444; }
.geo-modal__hint a { color:#2563eb; }
.geo-modal__close { background:none; border:0; font-size:18px; cursor:pointer;
  padding:6px; line-height:1; }
.geo-modal__body { overflow-y:auto; margin-top:4px; padding-right:16px;
  max-height:calc(85vh - 180px); }
.geo-modal__body::-webkit-scrollbar { width:12px; }
.geo-modal__body::-webkit-scrollbar-track { background:#f3f3f3; border-radius:8px; }
.geo-modal__body::-webkit-scrollbar-thumb { background:#c9c9c9; border-radius:8px; }
.geo-group__title { font-size:15px; font-weight:600; color:#111; margin:28px 0 14px; }
.geo-group:first-child .geo-group__title { margin-top:18px; }
.geo-group__grid { display:grid; grid-template-columns:1fr 1fr; gap:20px 24px; }
.geo-row { display:flex; justify-content:space-between; align-items:center; gap:12px;
  border:0; background:#f7f7f7; border-radius:4px;
  padding:17px 20px; cursor:pointer; text-align:left; min-height:56px;
  font-family:inherit; }
.geo-row:hover { background:#ececec; }
.geo-row__label { font-size:16px; color:#111; min-width:0; overflow-wrap:anywhere; }
.geo-row__sub { font-size:15px; color:#9a9a9a; min-width:0; overflow-wrap:anywhere; text-align:right; }
@media (max-width:768px){
  .geo-modal { padding:12px; }
  .geo-modal__panel { padding:24px 20px 22px; }
  .geo-modal__title { font-size:24px; line-height:1.08; letter-spacing:-.01em; }
  .geo-modal__hint { margin-top:8px; font-size:14px; line-height:1.35; }
  .geo-modal__header { padding-bottom:16px; }
  .geo-group__grid { grid-template-columns:1fr; gap:12px; }
  .geo-row { padding:14px 16px; min-height:48px; }
  .geo-row__label { font-size:15px; }
  .geo-row__sub { font-size:13px; }
}

.header-action-bar .geo-trigger { width:auto; gap:4px; padding:0; }
.header-action-bar .geo-trigger[hidden] { display:none; }
.header-action-bar .geo-trigger { flex-shrink:0; min-width:28px; }
.geo-trigger svg { flex:0 0 24px; width:24px; height:24px; }
.geo-trigger-code { font-size:12px; }
@media (max-width:959px) { .geo-trigger-code { display:none; } }
