/* ===== Icons (thin line set) + app-screen mockups ===== */
const { useState, useEffect, useRef } = React;
const L = () => window.__lang || "ru";

/* ---- icon set ---- */
const PATHS = {
  folder:   "M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",
  box:      "M3 8 12 3l9 5v8l-9 5-9-5z M3 8l9 5 9-5 M12 13v8",
  search:   "M11 4a7 7 0 1 0 0 14 7 7 0 0 0 0-14z M20 20l-3.2-3.2",
  scan:     "M4 8V5a1 1 0 0 1 1-1h3 M16 4h3a1 1 0 0 1 1 1v3 M20 16v3a1 1 0 0 1-1 1h-3 M8 20H5a1 1 0 0 1-1-1v-3 M7 12h10",
  clock:    "M12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16z M12 8v4l3 2",
  list:     "M8 6h12 M8 12h12 M8 18h12 M4 6h.01 M4 12h.01 M4 18h.01",
  check:    "M5 12l4 4 10-10",
  lock:     "M6 10V8a6 6 0 0 1 12 0v2 M5 10h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-8a1 1 0 0 1 1-1z",
  cloudoff: "M4 4l16 16 M19 16a4 4 0 0 0-2-7.5A6 6 0 0 0 7 7 M6 9a4 4 0 0 0 0 8h9",
  tag:      "M3 12V5a2 2 0 0 1 2-2h7l9 9-9 9z M8 8h.01",
  cube:     "M3 8 12 3l9 5v8l-9 5-9-5z M3 8l9 5 9-5",
  home:     "M4 11l8-7 8 7 M6 10v9h12v-9",
  plus:     "M12 5v14 M5 12h14",
  chevron:  "M9 6l6 6-6 6",
  bell:     "M6 9a6 6 0 0 1 12 0c0 5 2 6 2 6H4s2-1 2-6z M10 21h4",
  pin:      "M12 21s7-6 7-11a7 7 0 0 0-14 0c0 5 7 11 7 11z M12 8a2 2 0 1 0 0 4 2 2 0 0 0 0-4z",
  shield:   "M12 3l8 3v6c0 5-4 8-8 9-4-1-8-4-8-9V6z M9 12l2 2 4-4",
};
function Icon({ n, s=22, stroke, style }){
  return (
    <svg viewBox="0 0 24 24" width={s} height={s} fill="none"
      stroke={stroke||"currentColor"} strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" style={style}>
      {PATHS[n].split(" M").map((d,i)=><path key={i} d={(i?"M":"")+d} />)}
    </svg>
  );
}

/* ---- localized micro-labels for screens ---- */
const SC = {
  search:{ru:"Поиск вещей и папок",en:"Search items & folders",es:"Buscar objetos y carpetas"},
  tabs:{ru:["Дом","Поиск","Сканер","Сроки","Списки"],en:["Home","Search","Scan","Expiry","Lists"],es:["Casa","Buscar","Escáner","Caduca","Listas"]},
  items:{ru:"шт",en:"pcs",es:"u"},
  folders:{
    ru:[["Кухня","folder",42],["Аптечка","box",18],["Гараж","box",63],["Документы","folder",27],["Кладовая","box",51]],
    en:[["Kitchen","folder",42],["Medicine","box",18],["Garage","box",63],["Documents","folder",27],["Pantry","box",51]],
    es:[["Cocina","folder",42],["Botiquín","box",18],["Garaje","box",63],["Documentos","folder",27],["Despensa","box",51]],
  },
  card:{
    title:{ru:"Дрель Bosch GSB",en:"Bosch GSB drill",es:"Taladro Bosch GSB"},
    status:{ru:"В мастерской",en:"In workshop",es:"En taller"},
    fields:{
      ru:[["Кол-во","1 шт"],["Гарантия","до 03.2027"],["Цена","8 990 ₽"],["Локация","Гараж · полка B"]],
      en:[["Quantity","1 pc"],["Warranty","to 03.2027"],["Price","$129"],["Location","Garage · shelf B"]],
      es:[["Cantidad","1 u"],["Garantía","hasta 03.2027"],["Precio","119 €"],["Ubicación","Garaje · estante B"]],
    },
    tags:{ru:["инструмент","в починке"],en:["tool","repair"],es:["herramienta","reparación"]},
    photo:{ru:"ФОТО",en:"PHOTO",es:"FOTO"},
  },
  expiry:{
    title:{ru:"Сроки годности",en:"Expiry dates",es:"Caducidades"},
    rows:{
      ru:[["Молоко","2 дня","soon"],["Парацетамол","8 дней","soon"],["Йогурт","Просрочен","exp"],["Витамин D","41 день","ok"],["Соус песто","3 дня","soon"]],
      en:[["Milk","2 days","soon"],["Paracetamol","8 days","soon"],["Yogurt","Expired","exp"],["Vitamin D","41 days","ok"],["Pesto sauce","3 days","soon"]],
      es:[["Leche","2 días","soon"],["Paracetamol","8 días","soon"],["Yogur","Caducado","exp"],["Vitamina D","41 días","ok"],["Salsa pesto","3 días","soon"]],
    },
  },
  packing:{
    title:{ru:"Сборы · Лиссабон",en:"Packing · Lisbon",es:"Equipaje · Lisboa"},
    progress:{ru:"собрано 5 из 8",en:"5 of 8 packed",es:"5 de 8 listo"},
    rows:{
      ru:[["Паспорт",1],["Зарядка USB-C",1],["Кроссовки",1],["Солнцезащитный крем",1],["Адаптер EU",1],["Наушники",0],["Книга",0],["Очки",0]],
      en:[["Passport",1],["USB-C charger",1],["Sneakers",1],["Sunscreen",1],["EU adapter",1],["Headphones",0],["Book",0],["Sunglasses",0]],
      es:[["Pasaporte",1],["Cargador USB-C",1],["Zapatillas",1],["Protector solar",1],["Adaptador EU",1],["Auriculares",0],["Libro",0],["Gafas",0]],
    },
  },
  scan:{
    hint:{ru:"Наведите на штрихкод",en:"Point at a barcode",es:"Apunta al código"},
    found:{ru:"Найдено в каталоге",en:"Found in catalog",es:"Hallado en catálogo"},
    item:{ru:"Кофе в зёрнах 1 кг",en:"Coffee beans 1 kg",es:"Café en grano 1 kg"},
    loc:{ru:"Кухня · верхний шкаф",en:"Kitchen · top cabinet",es:"Cocina · armario alto"},
    open:{ru:"Открыть",en:"Open",es:"Abrir"},
  },
};
const t2 = (node)=> node[L()]!==undefined ? node[L()] : node.ru;

/* shared status bar */
function StatusBar(){
  return (
    <div style={{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"14px 18px 6px",
      fontFamily:"var(--mono)",fontSize:11,color:"var(--ink)",fontWeight:600}}>
      <span>9:41</span>
      <span style={{display:"flex",gap:5,alignItems:"center",opacity:.85}}>
        <span style={{width:16,height:9,border:"1.2px solid var(--ink)",borderRadius:2,display:"inline-block",position:"relative"}}>
          <span style={{position:"absolute",inset:1,right:5,background:"var(--ink)",borderRadius:1}}></span>
        </span>
      </span>
    </div>
  );
}
function TabBar({ active=0 }){
  const tabs = t2(SC.tabs); const ic=["home","search","scan","clock","list"];
  return (
    <div style={{display:"flex",justifyContent:"space-around",alignItems:"center",padding:"10px 8px 16px",
      borderTop:"1px solid var(--line)",background:"var(--surface)"}}>
      {tabs.map((tb,i)=>(
        <div key={i} style={{display:"flex",flexDirection:"column",alignItems:"center",gap:3,
          color:i===active?"var(--accent)":"var(--ink3)"}}>
          <Icon n={ic[i]} s={20} />
          <span style={{fontSize:8.5,fontFamily:"var(--mono)",letterSpacing:".02em"}}>{tb}</span>
        </div>
      ))}
    </div>
  );
}
const wrapScreen = (children, pb=true) => (
  <div style={{display:"flex",flexDirection:"column",height:"100%",background:"var(--bg)"}}>
    <StatusBar/>
    <div style={{flex:1,overflow:"hidden",padding:"4px 14px 8px"}}>{children}</div>
    {pb}
  </div>
);

/* ===== 1. Folders / dashboard ===== */
function ScreenFolders(){
  const list = t2(SC.folders); const u = t2(SC.items);
  return wrapScreen(
    <React.Fragment>
      <div style={{display:"flex",justifyContent:"space-between",alignItems:"center",margin:"6px 4px 14px"}}>
        <span style={{fontFamily:"var(--display)",fontWeight:700,fontSize:26}}>{window.brand()}</span>
        <div style={{width:34,height:34,borderRadius:11,border:"1.5px solid var(--accent)",color:"var(--accent)",display:"flex",alignItems:"center",justifyContent:"center"}}><Icon n="plus" s={20}/></div>
      </div>
      <div style={{display:"flex",alignItems:"center",gap:9,background:"var(--surface)",border:"1px solid var(--line)",borderRadius:13,padding:"10px 13px",color:"var(--ink3)",marginBottom:14}}>
        <Icon n="search" s={17}/><span style={{fontSize:12.5}}>{t2(SC.search)}</span>
      </div>
      <div style={{display:"flex",flexDirection:"column",gap:6}}>
        {list.map((f,i)=>(
          <div key={i} style={{display:"flex",alignItems:"center",gap:12,background:"var(--panel)",borderRadius:14,padding:"10px 13px"}}>
            <div style={{width:38,height:38,borderRadius:11,background:"var(--surface)",border:"1px solid var(--line)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--ink)"}}><Icon n={f[1]} s={20}/></div>
            <div style={{flex:1}}>
              <div style={{fontSize:14,fontWeight:600}}>{f[0]}</div>
              <div style={{fontSize:11,color:"var(--ink3)",fontFamily:"var(--mono)"}}>{f[2]} {u}</div>
            </div>
            <span style={{color:"var(--ink3)"}}><Icon n="chevron" s={16}/></span>
          </div>
        ))}
      </div>
    </React.Fragment>,
    <TabBar active={0}/>
  );
}

/* ===== 2. Item card ===== */
function ScreenCard(){
  const c=SC.card; const fields=t2(c.fields); const tags=t2(c.tags);
  return wrapScreen(
    <React.Fragment>
      <div style={{display:"flex",alignItems:"center",gap:10,margin:"4px 2px 12px",color:"var(--ink2)"}}>
        <Icon n="chevron" s={18} style={{transform:"rotate(180deg)"}}/>
        <span style={{fontSize:12,fontFamily:"var(--mono)",textTransform:"uppercase",letterSpacing:".1em"}}>Гараж</span>
      </div>
      <div className="dotfield" style={{height:128,borderRadius:16,border:"1px solid var(--line)",display:"flex",alignItems:"center",justifyContent:"center",color:"var(--ink3)",fontFamily:"var(--mono)",fontSize:11,letterSpacing:".18em"}}>{t2(c.photo)}</div>
      <div style={{display:"flex",alignItems:"center",justifyContent:"space-between",margin:"14px 2px 4px"}}>
        <span style={{fontSize:18,fontWeight:700}}>{t2(c.title)}</span>
      </div>
      <span style={{display:"inline-flex",alignItems:"center",gap:6,background:"var(--accent-soft)",color:"var(--accent)",borderRadius:999,padding:"4px 11px",fontSize:11,fontWeight:600}}><span style={{width:6,height:6,borderRadius:99,background:"var(--accent)"}}></span>{t2(c.status)}</span>
      <div style={{display:"grid",gridTemplateColumns:"1fr 1fr",gap:8,margin:"14px 0 12px"}}>
        {fields.map((f,i)=>(
          <div key={i} style={{background:"var(--panel)",borderRadius:12,padding:"11px 13px"}}>
            <div style={{fontSize:10,color:"var(--ink3)",fontFamily:"var(--mono)",textTransform:"uppercase",letterSpacing:".06em"}}>{f[0]}</div>
            <div style={{fontSize:14,fontWeight:600,marginTop:3}}>{f[1]}</div>
          </div>
        ))}
      </div>
      <div style={{display:"flex",gap:7}}>
        {tags.map((tg,i)=>(<span key={i} style={{border:"1.2px solid var(--line2)",borderRadius:999,padding:"5px 11px",fontSize:11.5,color:"var(--ink2)",display:"flex",gap:5,alignItems:"center"}}><Icon n="tag" s={12}/>{tg}</span>))}
      </div>
    </React.Fragment>,
    false
  );
}

/* ===== 3. Expiry ===== */
function ScreenExpiry(){
  const rows=t2(SC.expiry.rows);
  const tone={soon:["var(--accent)","var(--accent-soft)"],exp:["#fff","var(--accent)"],ok:["var(--ink2)","var(--panel)"]};
  return wrapScreen(
    <React.Fragment>
      <div style={{display:"flex",alignItems:"center",gap:9,margin:"8px 2px 14px"}}>
        <Icon n="clock" s={22} stroke="var(--accent)"/>
        <span style={{fontSize:19,fontWeight:700,fontFamily:"var(--display)"}}>{t2(SC.expiry.title)}</span>
      </div>
      <div style={{display:"flex",flexDirection:"column",gap:8}}>
        {rows.map((r,i)=>{ const [fg,bg]=tone[r[2]]; return (
          <div key={i} style={{display:"flex",alignItems:"center",gap:11,background:"var(--surface)",border:"1px solid var(--line)",borderRadius:13,padding:"12px 13px"}}>
            <span style={{width:9,height:9,borderRadius:99,background:r[2]==="ok"?"var(--ink3)":"var(--accent)",flex:"0 0 auto"}}></span>
            <span style={{flex:1,fontSize:14,fontWeight:r[2]==="exp"?700:500}}>{r[0]}</span>
            <span style={{background:bg,color:fg,borderRadius:999,padding:"4px 10px",fontSize:11,fontWeight:600,fontFamily:"var(--mono)"}}>{r[1]}</span>
          </div>
        );})}
      </div>
      <div style={{display:"flex",gap:8,alignItems:"center",marginTop:14,color:"var(--ink2)",fontSize:11.5}}>
        <Icon n="bell" s={15} stroke="var(--ink2)"/><span>{L()==="ru"?"Напоминания включены":L()==="es"?"Recordatorios activos":"Reminders on"}</span>
      </div>
    </React.Fragment>,
    <TabBar active={3}/>
  );
}

/* ===== 4. Packing list ===== */
function ScreenPacking(){
  const rows=t2(SC.packing.rows);
  return wrapScreen(
    <React.Fragment>
      <div style={{margin:"8px 2px 12px"}}>
        <div style={{fontSize:18,fontWeight:700,fontFamily:"var(--display)"}}>{t2(SC.packing.title)}</div>
        <div style={{fontSize:11.5,color:"var(--ink3)",fontFamily:"var(--mono)",marginTop:3}}>{t2(SC.packing.progress)}</div>
      </div>
      <div style={{height:6,borderRadius:99,background:"var(--panel)",overflow:"hidden",marginBottom:14}}>
        <div style={{width:"62%",height:"100%",background:"var(--accent)"}}></div>
      </div>
      <div style={{display:"flex",flexDirection:"column",gap:7}}>
        {rows.map((r,i)=>(
          <div key={i} style={{display:"flex",alignItems:"center",gap:11,background:r[1]?"var(--panel)":"var(--surface)",border:"1px solid var(--line)",borderRadius:12,padding:"11px 13px"}}>
            <span style={{width:21,height:21,borderRadius:7,border:"1.5px solid "+(r[1]?"var(--accent)":"var(--line2)"),background:r[1]?"var(--accent)":"transparent",color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",flex:"0 0 auto"}}>{r[1]?<Icon n="check" s={13} stroke="#fff"/>:null}</span>
            <span style={{fontSize:13.5,color:r[1]?"var(--ink3)":"var(--ink)",textDecoration:r[1]?"line-through":"none"}}>{r[0]}</span>
          </div>
        ))}
      </div>
    </React.Fragment>,
    <TabBar active={4}/>
  );
}

/* ===== 5. Scanner ===== */
function ScreenScan(){
  return (
    <div style={{display:"flex",flexDirection:"column",height:"100%",background:"#0d0d0d",color:"#fff"}}>
      <StatusBar/>
      <div style={{flex:1,position:"relative",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:18}}>
        <div className="dotfield" style={{position:"absolute",inset:0,opacity:.18}}></div>
        <div style={{position:"relative",width:184,height:120,borderRadius:16}}>
          {[["top","left"],["top","right"],["bottom","left"],["bottom","right"]].map((c,i)=>(
            <span key={i} style={{position:"absolute",[c[0]]:0,[c[1]]:0,width:26,height:26,
              borderTop:c[0]==="top"?"2.5px solid var(--accent)":"none",borderBottom:c[0]==="bottom"?"2.5px solid var(--accent)":"none",
              borderLeft:c[1]==="left"?"2.5px solid var(--accent)":"none",borderRight:c[1]==="right"?"2.5px solid var(--accent)":"none",
              borderTopLeftRadius:c[0]==="top"&&c[1]==="left"?10:0,borderTopRightRadius:c[0]==="top"&&c[1]==="right"?10:0,
              borderBottomLeftRadius:c[0]==="bottom"&&c[1]==="left"?10:0,borderBottomRightRadius:c[0]==="bottom"&&c[1]==="right"?10:0}}/>
          ))}
          <div style={{position:"absolute",left:18,right:18,top:"50%",height:2,background:"var(--accent)",boxShadow:"0 0 12px var(--accent)"}}/>
          <div style={{position:"absolute",left:30,right:30,top:34,bottom:34,display:"flex",gap:2,alignItems:"stretch"}}>
            {Array.from({length:22}).map((_,i)=><span key={i} style={{flex:i%3?1:2,background:i%2?"rgba(255,255,255,.7)":"transparent"}}/>)}
          </div>
        </div>
        <span style={{fontFamily:"var(--mono)",fontSize:12,opacity:.7,letterSpacing:".05em"}}>{t2(SC.scan.hint)}</span>
      </div>
      <div style={{margin:14,background:"#1c1c1c",border:"1px solid #2f2f2f",borderRadius:18,padding:16,display:"flex",alignItems:"center",gap:13}}>
        <div className="dotfield" style={{width:46,height:46,borderRadius:12,flex:"0 0 auto",border:"1px solid #333"}}/>
        <div style={{flex:1}}>
          <div style={{fontSize:9.5,color:"var(--accent)",fontFamily:"var(--mono)",textTransform:"uppercase",letterSpacing:".1em"}}>{t2(SC.scan.found)}</div>
          <div style={{fontSize:14,fontWeight:600,margin:"2px 0"}}>{t2(SC.scan.item)}</div>
          <div style={{fontSize:11,opacity:.6}}>{t2(SC.scan.loc)}</div>
        </div>
        <span style={{background:"var(--accent)",color:"#fff",borderRadius:999,padding:"7px 14px",fontSize:12,fontWeight:600}}>{t2(SC.scan.open)}</span>
      </div>
    </div>
  );
}

const SHOTS = {
  dash:{en:"uploads/1-2_en-portrait.png",es:"uploads/1-2_es-portrait.png",ru:"uploads/1-2_ru-portrait.png"},
  packing:{en:"uploads/3_en-portrait-1904b047.png",es:"uploads/3_es-portrait-16151c3f.png",ru:"uploads/3_ru-portrait.png"},
  card:{en:"uploads/4_en-portrait.png",es:"uploads/4_es-portrait.png",ru:"uploads/4_ru-portrait.png"},
  list:{en:"uploads/5_en-portrait.png",es:"uploads/5_es-portrait.png",ru:"uploads/5_ru-portrait.png"},
};
const SCREEN_TO_SHOT = { folders:"dash", packing:"packing", card:"card", expiry:"list" };
function shotSrc(screen){
  const key = SCREEN_TO_SHOT[screen]; if(!key) return null;
  const set = SHOTS[key]; return set[L()] || set.en;
}
function Phone({ screen, w=288 }){
  const src = shotSrc(screen);
  return (
    <img src={src} alt="" style={{width:w,display:"block"}}/>
  );
}
function ShotPreloader(){
  const all = Object.values(SHOTS).flatMap(s=>Object.values(s));
  return (
    <div style={{position:"absolute",width:1,height:1,overflow:"hidden",opacity:0,pointerEvents:"none"}} aria-hidden="true">
      {all.map((src,i)=><img key={i} src={src} alt="" />)}
    </div>
  );
}

Object.assign(window, { Icon, Phone, ShotPreloader, ScreenFolders, ScreenCard, ScreenExpiry, ScreenPacking, ScreenScan });
