.ui-modal-backdrop{position:fixed;inset:0;z-index:99999;background:rgba(45,38,28,.38);backdrop-filter:blur(10px);display:grid;place-items:center;padding:22px}
.ui-modal{width:min(430px,100%);background:#fffaf2;border:1px solid rgba(53,92,75,.18);border-radius:28px;padding:26px;box-shadow:0 28px 80px rgba(35,28,18,.28);text-align:center;position:relative;animation:uiPop .22s ease both}
@keyframes uiPop{from{transform:translateY(18px) scale(.96);opacity:0}to{transform:none;opacity:1}}
.ui-modal-close{position:absolute;top:14px;right:16px;border:0;background:transparent;font-size:30px;cursor:pointer;color:#355c4b}
.ui-modal-icon{width:72px;height:72px;margin:0 auto 12px;display:grid;place-items:center;border-radius:24px;background:linear-gradient(135deg,#e8f3e8,#fff4d8);font-size:34px}
.ui-modal h3{margin:0 0 8px;font-family:"Fraunces",serif;color:#253f34;font-size:1.35rem}
.ui-modal p{margin:0 0 20px;color:#6d6255;line-height:1.45}
.ui-modal-actions{display:flex;gap:12px;justify-content:center}
.ui-btn{border:0;border-radius:18px;padding:13px 20px;font-weight:800;cursor:pointer;box-shadow:0 10px 24px rgba(0,0,0,.12)}
.ui-btn.primary{background:#355c4b;color:#fffaf2}
.ui-btn.ghost{background:#f4eadc;color:#355c4b}
.ui-btn.danger{background:#c94232;color:#fff}
.ui-modal-input{width:100%;border:1px solid rgba(53,92,75,.2);border-radius:18px;padding:14px 16px;margin:4px 0 18px;font:inherit;background:#fff}
.ui-toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%) translateY(20px);z-index:99999;min-width:260px;max-width:90vw;background:rgba(255,250,242,.96);border:1px solid rgba(53,92,75,.2);border-radius:22px;padding:14px 18px;box-shadow:0 18px 50px rgba(0,0,0,.18);opacity:0;transition:.25s ease;backdrop-filter:blur(10px)}
.ui-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.ui-toast strong{display:block;color:#355c4b;font-weight:900}
.ui-toast span{display:block;color:#6d6255;font-size:.9rem;margin-top:2px}
.photo-file-card{display:block;border:2px dashed rgba(53,92,75,.28);border-radius:24px;padding:24px 18px;text-align:center;background:rgba(255,250,242,.72);cursor:pointer;margin:10px 0}
.photo-file-card strong{display:block;color:#355c4b;font-size:1.1rem}
.photo-file-card span{display:block;color:#7a6d5e;margin-top:6px}
.photo-file-card input{display:none}
.photo-upload-pro > button[type="submit"]{
  appearance:none !important;
  border:0 !important;
  width:100% !important;
  margin-top:14px !important;
  min-height:58px !important;
  border-radius:22px !important;
  background:linear-gradient(135deg,#355c4b,#247a59) !important;
  color:#fffaf2 !important;
  font-size:1rem !important;
  font-weight:900 !important;
  box-shadow:0 14px 34px rgba(53,92,75,.26) !important;
}

.photo-upload-pro > button[type="submit"]::before{
  content:"📸 ";
}
.photo-preview-list{
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(86px,1fr));
  gap:10px;
  margin-top:12px;
}

.photo-preview-item{
  position:relative;
  border-radius:18px;
  overflow:hidden;
  background:#fff;
  box-shadow:0 10px 24px rgba(0,0,0,.12);
  aspect-ratio:1;
}

.photo-preview-item img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}

.photo-preview-item span{
  position:absolute;
  left:6px;
  right:6px;
  bottom:6px;
  font-size:.62rem;
  color:#fff;
  background:rgba(0,0,0,.42);
  border-radius:999px;
  padding:3px 6px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.ui-form-modal{
  text-align:left;
}

.ui-form-modal .ui-modal-icon,
.ui-form-modal h3,
.ui-form-modal p{
  text-align:center;
}

.ui-form-grid{
  display:grid;
  gap:10px;
  margin:16px 0 20px;
}

.ui-form-grid input,
.ui-form-grid select,
.ui-form-grid textarea{
  width:100%;
  border:1px solid rgba(53,92,75,.18);
  border-radius:16px;
  padding:13px 14px;
  background:#fff;
  font:inherit;
}

.ui-form-grid textarea{
  min-height:90px;
  resize:none;
}

.add-restaurant-btn{
  width:100%;
  margin:0 0 18px;
  min-height:56px;
}
.install-app-btn{
  margin-top:12px;
  border:0;
  border-radius:18px;
  padding:12px 16px;
  background:#355c4b;
  color:#fffaf2;
  font-weight:900;
  box-shadow:0 12px 28px rgba(53,92,75,.25);
}

.install-app-btn.hidden{
  display:none;
}
.app-splash{
  position:fixed;
  inset:0;
  z-index:999999;
  display:grid;
  place-items:center;
  background:
    radial-gradient(circle at top,#fff4d8 0,#f7f1e8 38%,#123f34 100%);
  transition:opacity .45s ease, visibility .45s ease;
}

.app-splash.hide{

    opacity:0;
    visibility:hidden;
    transform:scale(1.04);
    transition:
        opacity .55s ease,
        transform .55s ease,
        visibility .55s;
}

.app-splash-card{
  width:min(86vw,420px);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:18px;
  animation:splashIn .65s ease both;
}

.app-splash-card img{
  width:100%;
  height:auto;
  border-radius:28px;
  box-shadow:0 28px 80px rgba(0,0,0,.35);
}

.app-splash-loader{
  display:flex;
  gap:8px;
}

.app-splash-loader span{
  width:9px;
  height:9px;
  border-radius:50%;
  background:#fffaf2;
  animation:splashDot 1s infinite ease-in-out;
}

.app-splash-loader span:nth-child(2){animation-delay:.15s;}
.app-splash-loader span:nth-child(3){animation-delay:.3s;}

@keyframes splashIn{
  from{opacity:0;transform:translateY(18px) scale(.96);}
  to{opacity:1;transform:none;}
}

@keyframes splashDot{
  0%,80%,100%{opacity:.35;transform:scale(.8);}
  40%{opacity:1;transform:scale(1.18);}
}

@media(max-width:760px){
  .app-splash-card{
    width:min(90vw,360px);
  }

  .app-splash-card img{
    border-radius:24px;
  }
}
.splash-enter-btn{
  border:0;
  border-radius:22px;
  padding:14px 24px;
  background:linear-gradient(135deg,#355c4b,#247a59);
  color:#fffaf2;
  font-weight:900;
  font-size:1rem;
  box-shadow:0 16px 34px rgba(53,92,75,.32);
}

.splash-tap-note{
  margin:0;
  color:#fffaf2;
  font-weight:700;
  letter-spacing:.04em;
  text-shadow:0 2px 10px rgba(0,0,0,.35);
}
.app-splash-card{
  position:relative;
}
.app-splash{
    cursor:pointer;
}

.app-splash-card img{
    user-select:none;
    -webkit-user-drag:none;
    pointer-events:none;
}