/* miniapp/base/mytown.css — «Свой город»: плитка «Стройка», значки сбора, каталог, подсказка выбора места */
.g-build{position:relative}
.g-build.g-bump{animation:g-bump .45s cubic-bezier(.2,.8,.2,1)}
@keyframes g-bump{40%{transform:scale(1.14)}}
/* кирпичик — значок стройматериала */
.g-brick{display:inline-block;width:14px;height:9px;border-radius:2px;margin-right:4px;vertical-align:-1px;
  background:linear-gradient(#d2693b,#b2522c);box-shadow:inset 0 -1px 0 rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.25)}
/* значки «+N» над зданиями: нажать — собрать */
.g-town{position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}   /* над подписями зданий */
.g-collect{position:absolute;left:0;top:0;pointer-events:auto;display:flex;align-items:center;gap:2px;
  min-height:36px;padding:0 12px 0 9px;border-radius:18px;border:1px solid rgba(255,214,140,.9);cursor:pointer;
  font:600 13px 'Unbounded',system-ui,sans-serif;color:#5a3412;background:linear-gradient(#ffe7b0,#ffc65c);
  box-shadow:0 6px 16px -6px rgba(0,0,0,.5),0 1px 2px rgba(0,0,0,.2);animation:g-float 2.4s ease-in-out infinite}
.g-collect i{display:inline-block;width:14px;height:9px;border-radius:2px;margin-right:4px;background:linear-gradient(#d2693b,#b2522c)}
.g-collect:disabled{opacity:.5}
@keyframes g-float{50%{margin-top:-4px}}
/* каталог в карточке */
.g-town-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;margin-top:14px}
.g-town-item{display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-height:58px;padding:10px 12px;border-radius:14px;
  cursor:pointer;text-align:left;font:500 13px 'Unbounded',system-ui,sans-serif;color:var(--g-sheet-ink);
  background:rgba(var(--g-ink-rgb),.05);border:1px solid var(--g-sheet-line)}
.g-town-item b{font-weight:600;font-size:12.5px;display:flex;align-items:center}
.g-town-item:disabled{opacity:.45;cursor:default}
.g-town-item:not(:disabled):active{transform:scale(.97)}
/* режим стройки: подсказка над нижним меню */
.g-town-hint{position:absolute;z-index:7;left:calc(var(--g-left) + 10px);right:calc(var(--g-right) + 10px);
  bottom:calc(var(--g-bottom) + 140px);display:flex;align-items:center;gap:10px;padding:10px 10px 10px 14px;border-radius:16px;
  font-size:13px;line-height:1.35;color:#fff;background:rgba(26,23,19,.82);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.g-town-hint span{flex:1}
.g-town-hint button{flex:none;min-height:44px;padding:0 14px;border-radius:12px;border:1px solid rgba(255,255,255,.35);
  background:transparent;color:#fff;font:600 13px 'Unbounded',system-ui,sans-serif;cursor:pointer}
/* в режиме стройки кнопка «+ Доход» и подсказка под ней не нужны — на их месте подсказка стройки */
.g-placing .g-fab,.g-placing .g-hint,.g-placing .g-tags{visibility:hidden}   /* и подписи зданий — они лезли поверх подсказки */
/* «Поставить сюда» — главная кнопка стройки, как «+ Доход»; пока место не выбрано или там тесно — неактивна */
.g-town-hint button.go{border:0;background:linear-gradient(180deg,#ffae45 0%,#fb8a12 55%,#ec6f00 100%)}
.g-town-hint button.go:disabled{opacity:.45;cursor:default}
@media(max-width:520px){.g-town-hint{flex-wrap:wrap}.g-town-hint span{flex-basis:100%}.g-town-hint button{flex:1}}
@media(prefers-reduced-motion:reduce){.g-collect,.g-build.g-bump{animation:none}}
/* «Ваше дело» изнутри (base/business.js): город и его кнопки прячем, сверху — «На улицу» */
.g-in .g-top,.g-in .g-left,.g-in .g-bottom,.g-in .g-handle,.g-in .g-mini,.g-in .g-home3d{display:none}
.g-inside .g-tags,.g-inside .g-town{display:none}
.g-inside-bar{position:absolute;z-index:7;top:calc(var(--g-top) + 10px);left:calc(var(--g-left) + 10px);right:calc(var(--g-right) + 10px);
  display:flex;align-items:center;gap:12px;color:#fff;font:600 14px 'Unbounded',system-ui,sans-serif}
.g-inside-bar button{min-height:44px;padding:0 16px;border-radius:14px;border:1px solid rgba(255,255,255,.4);cursor:pointer;
  color:#fff;font:600 13px 'Unbounded',system-ui,sans-serif;background:rgba(26,23,19,.7);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.g-inside-bar span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.g-inside-bar button{flex:none;white-space:nowrap;display:inline-flex;align-items:center;gap:4px;padding-left:10px}   /* «Домой» не переносится при длинном нике */
.g-inside-bar button .ic-back{margin-left:-2px}
.g-biz{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.g-biz-tier{font-size:11.5px;font-weight:600;letter-spacing:.02em;color:var(--g-sheet-mut);margin-top:8px}
.g-biz-row{display:grid;grid-template-columns:64px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;width:100%;
  min-height:52px;padding:8px 12px;border-radius:14px;text-align:left;font:500 13.5px 'Unbounded',system-ui,sans-serif;
  color:var(--g-sheet-ink);background:rgba(var(--g-ink-rgb),.05);border:1px solid var(--g-sheet-line)}
.g-biz-row b{grid-row:1/3;display:flex;align-items:center;font-weight:600;font-size:13px}
.g-biz-row small{font-size:11.5px;color:var(--g-sheet-mut)}
button.g-biz-row{cursor:pointer}
button.g-biz-row:disabled{opacity:.45;cursor:default}
.g-biz-row.on{background:rgba(63,138,79,.1);border-color:rgba(63,138,79,.35)}
.g-biz-row.on b{color:#2f7a3a}
.g-biz-row.off{opacity:.55}
.g-in .g-card{max-height:48%}   /* комната — сверху (base3d/interior.js VIEW_TOP), список — снизу */
/* На компьютере карточка — панелью справа во всю высоту, комната — слева крупно (base/business.js WIDE — тот же порог) */
@media(min-width:900px){.g-in .g-card{left:auto;right:calc(var(--g-right) + 16px);top:calc(var(--g-top) + 16px);
  bottom:calc(var(--g-bottom) + 16px);width:400px;max-width:none;max-height:none;margin:0}}
/* Внутри комнаты фон светлый в любой теме (base3d/interior.js BG_TOP) — полоса сверху всегда тёмными чернилами на светлом стекле */
.g-inside-bar.light{color:#2a2219}
.g-inside-bar.light span{text-shadow:none}
.g-inside-bar.light button{color:#2a2219;background:rgba(255,251,243,.72);border-color:rgba(42,34,25,.12);
  box-shadow:0 6px 18px -10px rgba(60,44,28,.45)}
.g-inside-bar.light button:hover{background:rgba(255,251,243,.92)}
/* Друзья (base/friends.js) */
.g-fr-label{display:flex;flex-direction:column;gap:6px;margin-top:14px;font-size:12px;font-weight:600;color:var(--g-sheet-mut)}
.g-fr-in{min-height:48px;padding:0 14px;border-radius:12px;border:1px solid var(--g-sheet-line);background:var(--g-field);
  font:500 15px 'Unbounded',system-ui,sans-serif;color:var(--g-sheet-ink)}
.g-fr-err{margin-top:8px;font-size:12.5px;line-height:1.4;color:#a3352c}
.g-fr-code{letter-spacing:.06em;white-space:nowrap}
.g-fr-row{display:flex;align-items:baseline;gap:8px;padding:5px 0;font-size:13.5px}
.g-fr-row b{width:20px;flex:none;color:var(--g-sheet-mut)}
.g-fr-row span{flex:1;min-width:0;overflow-wrap:anywhere}
.g-fr-row small{font-weight:600;font-variant-numeric:tabular-nums}
.g-fr-row.me{font-weight:600}
.g-fr-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.g-fr-friend{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;align-items:center;padding:10px 0;border-top:1px solid var(--g-sheet-line)}
.g-fr-friend>div{grid-column:1/-1}   /* имя — строкой сверху, три кнопки — ровно под ним */
.g-fr-friend div{min-width:0}
.g-fr-friend b{display:block;font-size:14px}
.g-fr-friend small{font-size:11.5px;color:var(--g-sheet-mut);line-height:1.35}
.g-fr-friend .g-card-alt{margin-top:0;width:100%;min-height:44px;padding:0 8px;font-size:12px}
.g-placing .g-hint{display:none}
.g-town-item b small{font-weight:500;font-size:10.5px;color:var(--g-sheet-mut);margin-left:6px}
/* просьба гостя в «Вашем деле» (base/business.js) */
.g-ask{margin-top:12px;padding:12px 14px;border-radius:14px;background:rgba(255,200,58,.16);border:1px solid rgba(214,150,0,.35);
  display:flex;flex-direction:column;gap:4px}
.g-ask b{font-size:12px;font-weight:600;color:#8a5a00}
.g-ask span{font-size:14px;line-height:1.4;font-style:italic}
.g-ask small{font-size:12px;line-height:1.4;color:var(--g-sheet-mut)}
.g-ask .g-card-go,.g-ask .g-card-alt{margin-top:8px}
.g-town-tools{display:flex;gap:8px}.g-town-tools .g-card-alt{flex:1;font-size:12.5px}
.g-fest{margin-top:12px;padding:10px 12px;border-radius:12px;font-size:12.5px;line-height:1.45;background:rgba(229,83,61,.1);border:1px solid rgba(229,83,61,.3)}
.g-town-item.fest{border-color:rgba(229,83,61,.45)}
/* альбом «Мой город» (base/album.js) */
.g-alb-list{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.g-alb{display:grid;grid-template-columns:22px 1fr auto;gap:10px;align-items:center;padding:8px 10px;border-radius:12px;border:1px solid var(--g-sheet-line)}
.g-alb>b{color:var(--g-sheet-mut)}.g-alb.on>b{color:#2f7a3a}.g-alb.ready{border-color:rgba(214,150,0,.5);background:rgba(255,200,58,.12)}
.g-alb span{display:block;font-size:13.5px;font-weight:600}.g-alb small{font-size:11.5px;color:var(--g-sheet-mut)}
.g-alb i{font-style:normal;font-size:12px;color:var(--g-sheet-mut);display:flex;align-items:center}
.g-alb .g-card-go{margin:0;width:auto;min-height:40px;padding:0 14px}
.g-alb.on{opacity:.7}
/* таблички дела над жителями (base3d/bizlife.js): клиенты, курьеры со счетами, «Опора» у Сейфа */
.g-biztag{position:absolute;left:0;top:0;pointer-events:auto;cursor:pointer;max-width:140px;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;min-height:28px;padding:0 10px;border-radius:14px;font:600 11.5px 'Unbounded',system-ui,sans-serif;
  color:#1f3b2a;background:rgba(232,246,236,.94);border:1px solid rgba(63,138,79,.45);box-shadow:0 4px 10px -4px rgba(0,0,0,.4)}
.g-biztag.debt{color:#5a3412;background:rgba(255,239,204,.95);border-color:rgba(214,150,0,.5)}
.g-biztag.safe{color:#5a4310;background:rgba(255,244,214,.95);border-color:rgba(224,179,58,.6)}
.g-biztag.away{opacity:.78;font-weight:500}
