/* Floating UI fragments — chunks of the actual app, presented as glass cards.
   No full phone bezel; each card is a self-contained product moment. */

// ── Calculator result fragment ──
const FragCalcResult = ({style}) => (
  <div className="glass" style={{padding: 18, width: 320, ...style}}>
    <div style={{display:'flex', justifyContent:'space-between', alignItems:'center', marginBottom: 14}}>
      <div>
        <div style={{fontSize:11, fontWeight:700, color:'var(--sa-text3)', letterSpacing:'0.08em', textTransform:'uppercase'}}>Day rate</div>
        <div style={{fontSize:13, color:'var(--sa-text2)', marginTop:4}}>1st AC · 12-hour day</div>
      </div>
      <div style={{
        fontSize:10, fontWeight:700, color:'var(--sa-accent-hi)',
        background:'var(--sa-accent-dim)', padding:'4px 8px', borderRadius:6,
        letterSpacing:'0.06em'
      }}>ACCP</div>
    </div>
    <div style={{
      display:'flex', alignItems:'baseline', gap:8,
      paddingBottom:14, borderBottom:'0.5px solid rgba(255,255,255,0.08)', marginBottom:14
    }}>
      <span className="tnum" style={{fontSize:40, fontWeight:700, letterSpacing:'-0.03em'}}>$1,284</span>
      <span style={{fontSize:14, color:'var(--sa-text3)'}}>.50</span>
    </div>
    <div style={{display:'flex', flexDirection:'column', gap:8, fontSize:13}}>
      <Row k="Base (10 hrs)" v="$680.00"/>
      <Row k="OT 1.5× (2 hrs)" v="$204.00"/>
      <Row k="OT 2× (0 hrs)" v="$0.00"/>
      <Row k="Meal penalty" v="$36.50" amber/>
      <Row k="Kit fee" v="$364.00" accent/>
    </div>
  </div>
);

const Row = ({k, v, amber, accent}) => (
  <div style={{display:'flex', justifyContent:'space-between'}}>
    <span style={{color:'var(--sa-text3)'}}>{k}</span>
    <span className="tnum" style={{
      fontWeight:600,
      color: amber ? 'var(--sa-amber)' : accent ? 'var(--sa-accent-hi)' : 'var(--sa-text)'
    }}>{v}</span>
  </div>
);

// ── Invoice list ──
const FragInvoiceList = ({style}) => (
  <div className="glass" style={{padding: 16, width: 300, ...style}}>
    <div style={{display:'flex', justifyContent:'space-between', alignItems:'center', marginBottom:14}}>
      <div style={{fontSize:15, fontWeight:600}}>Recent Invoices</div>
      <div style={{fontSize:12, color:'var(--sa-accent-hi)', fontWeight:600}}>See all</div>
    </div>
    <div style={{display:'flex', flexDirection:'column', gap:10}}>
      <InvoiceRow client="Anvil Pictures" amt="$3,840" status="paid" date="Apr 18"/>
      <InvoiceRow client="Bento Studios" amt="$2,160" status="sent" date="Apr 22"/>
      <InvoiceRow client="Roughcut Inc." amt="$5,925" status="overdue" date="Mar 31"/>
      <InvoiceRow client="Lantern Films" amt="$1,420" status="draft" date="Apr 26"/>
    </div>
  </div>
);

const StatusDot = ({s}) => {
  const map = {
    paid:    {c: 'var(--sa-green)',    t:'Paid'},
    sent:    {c: 'var(--sa-accent-hi)', t:'Sent'},
    overdue: {c: 'var(--sa-red)',       t:'Overdue'},
    draft:   {c: 'var(--sa-text4)',     t:'Draft'},
  };
  const {c, t} = map[s];
  return (
    <span style={{display:'inline-flex', alignItems:'center', gap:5, fontSize:11, fontWeight:600, color:c}}>
      <span style={{width:6, height:6, borderRadius:99, background:c}}/>
      {t}
    </span>
  );
};

const InvoiceRow = ({client, amt, status, date}) => (
  <div style={{display:'flex', justifyContent:'space-between', alignItems:'center', padding:'8px 0', borderBottom:'0.5px solid rgba(255,255,255,0.05)'}}>
    <div>
      <div style={{fontSize:14, fontWeight:600}}>{client}</div>
      <div style={{display:'flex', gap:8, alignItems:'center', marginTop:3}}>
        <StatusDot s={status}/>
        <span style={{fontSize:11, color:'var(--sa-text4)'}}>· {date}</span>
      </div>
    </div>
    <div className="tnum" style={{fontSize:14, fontWeight:600}}>{amt}</div>
  </div>
);

// ── Crew profile card ──
const FragCrewCard = ({style}) => (
  <div className="glass" style={{padding:18, width:280, ...style}}>
    <div style={{display:'flex', alignItems:'center', gap:12, marginBottom:14}}>
      <div style={{
        width:48, height:48, borderRadius:99,
        background:'linear-gradient(135deg, #5e5ce6, #ff375f)',
        display:'grid', placeItems:'center', fontWeight:700, fontSize:18, color:'#fff'
      }}>KW</div>
      <div>
        <div style={{fontSize:16, fontWeight:600}}>Kristian Wood</div>
        <div style={{fontSize:12, color:'var(--sa-text3)'}}>VTR & DIT · Toronto, ON</div>
      </div>
    </div>
    <div style={{display:'flex', flexWrap:'wrap', gap:6, marginBottom:14}}>
      {['Wavetech','SmallHD','Resolve','Silverstack','Flanders'].map(t=>(
        <span key={t} style={{
          fontSize:11, fontWeight:600, color:'var(--sa-text2)',
          background:'rgba(255,255,255,0.06)', padding:'4px 9px', borderRadius:99,
          border:'0.5px solid rgba(255,255,255,0.08)'
        }}>{t}</span>
      ))}
    </div>
    <div style={{display:'flex', alignItems:'center', justifyContent:'space-between', paddingTop:12, borderTop:'0.5px solid rgba(255,255,255,0.06)'}}>
      <div>
        <div style={{fontSize:11, color:'var(--sa-text3)', textTransform:'uppercase', letterSpacing:'0.06em', fontWeight:700}}>Avail</div>
        <div style={{fontSize:13, fontWeight:600, color:'var(--sa-green)'}}>This week</div>
      </div>
      <button style={{
        background:'var(--sa-accent)', color:'#fff', border:'none',
        padding:'8px 14px', borderRadius:99, fontSize:12, fontWeight:700, cursor:'pointer'
      }}>Book</button>
    </div>
  </div>
);

// ── Calendar mini fragment (week strip) ──
const FragCalendarStrip = ({style}) => {
  const days = [
    {d:'M', n:14, kind:null},
    {d:'T', n:15, kind:'shoot'},
    {d:'W', n:16, kind:'shoot'},
    {d:'T', n:17, kind:'shoot'},
    {d:'F', n:18, kind:'wrap'},
    {d:'S', n:19, kind:null},
    {d:'S', n:20, kind:'hold'},
  ];
  const colorFor = (k) => k==='shoot' ? 'var(--sa-accent)' : k==='wrap' ? 'var(--sa-green)' : k==='hold' ? 'var(--sa-amber)' : 'transparent';
  return (
    <div className="glass" style={{padding:16, width:340, ...style}}>
      <div style={{display:'flex', justifyContent:'space-between', alignItems:'center', marginBottom:14}}>
        <div style={{fontSize:15, fontWeight:600}}>April 14 – 20</div>
        <div style={{fontSize:11, fontWeight:700, color:'var(--sa-accent-hi)', background:'var(--sa-accent-dim)', padding:'3px 8px', borderRadius:6}}>4 DAYS BOOKED</div>
      </div>
      <div style={{display:'grid', gridTemplateColumns:'repeat(7, 1fr)', gap:4}}>
        {days.map((day,i)=>(
          <div key={i} style={{
            background: day.kind ? 'rgba(94,92,230,0.10)' : 'rgba(255,255,255,0.04)',
            border:'0.5px solid rgba(255,255,255,0.06)',
            borderRadius:10, padding:'8px 4px', textAlign:'center',
            position:'relative'
          }}>
            <div style={{fontSize:10, color:'var(--sa-text3)', fontWeight:600}}>{day.d}</div>
            <div style={{fontSize:14, fontWeight:600, marginTop:2, color: day.kind ? 'var(--sa-text)' : 'var(--sa-text3)'}}>{day.n}</div>
            {day.kind && (
              <div style={{
                position:'absolute', bottom:4, left:'50%', transform:'translateX(-50%)',
                width:5, height:5, borderRadius:99, background: colorFor(day.kind)
              }}/>
            )}
          </div>
        ))}
      </div>
      <div style={{
        marginTop:12, padding:'10px 12px',
        background:'rgba(94,92,230,0.08)', border:'0.5px solid var(--sa-accent-bd)',
        borderRadius:10, display:'flex', alignItems:'center', gap:10
      }}>
        <div style={{width:4, alignSelf:'stretch', background:'var(--sa-accent-hi)', borderRadius:99}}/>
        <div style={{flex:1}}>
          <div style={{fontSize:13, fontWeight:600}}>Honda TVC — Day 2</div>
          <div style={{fontSize:11, color:'var(--sa-text3)', marginTop:1}}>06:30 call · 1st AC · Pinewood</div>
        </div>
      </div>
    </div>
  );
};

// ── Finances summary ──
const FragFinances = ({style}) => (
  <div className="glass" style={{padding:18, width:320, ...style}}>
    <div style={{fontSize:11, fontWeight:700, color:'var(--sa-text3)', letterSpacing:'0.08em', textTransform:'uppercase', marginBottom:6}}>Year to date</div>
    <div className="tnum" style={{fontSize:34, fontWeight:700, letterSpacing:'-0.025em'}}>$48,920.<span style={{fontSize:18, color:'var(--sa-text3)'}}>50</span></div>
    <div style={{fontSize:12, color:'var(--sa-green)', fontWeight:600, marginTop:2}}>+12% vs. last year</div>
    <div style={{display:'grid', gridTemplateColumns:'repeat(3,1fr)', gap:10, marginTop:16}}>
      <Mini label="Invoiced" v="$52,210" color="var(--sa-text)"/>
      <Mini label="Expenses" v="$3,290" color="var(--sa-red)"/>
      <Mini label="HST owed" v="$5,612" color="var(--sa-amber)"/>
    </div>
    <div style={{marginTop:14, padding:'10px 12px', background:'rgba(48,209,88,0.08)', border:'0.5px solid rgba(48,209,88,0.25)', borderRadius:10}}>
      <div style={{fontSize:11, fontWeight:700, color:'var(--sa-green)', letterSpacing:'0.06em', textTransform:'uppercase'}}>HST Quarter</div>
      <div style={{fontSize:13, fontWeight:600, marginTop:2}}>Q2 due July 31 · auto-tracked</div>
    </div>
  </div>
);

const Mini = ({label, v, color}) => (
  <div style={{padding:'10px 12px', background:'rgba(255,255,255,0.04)', borderRadius:10, border:'0.5px solid rgba(255,255,255,0.06)'}}>
    <div style={{fontSize:10, fontWeight:600, color:'var(--sa-text3)', letterSpacing:'0.06em', textTransform:'uppercase'}}>{label}</div>
    <div className="tnum" style={{fontSize:14, fontWeight:700, marginTop:3, color}}>{v}</div>
  </div>
);

// ── Payroll Wrap ──
const FragPayrollWrap = ({style}) => (
  <div className="glass" style={{padding:18, width:340, ...style}}>
    <div style={{display:'flex', justifyContent:'space-between', alignItems:'center', marginBottom:6}}>
      <div style={{fontSize:15, fontWeight:600}}>Honda TVC — Wrap</div>
      <div style={{fontSize:11, fontWeight:700, color:'var(--sa-accent-hi)', background:'var(--sa-accent-dim)', padding:'3px 8px', borderRadius:6}}>PRO</div>
    </div>
    <div style={{fontSize:12, color:'var(--sa-text3)', marginBottom:14}}>3 days · 12 crew · ACCP line numbers</div>
    <div style={{display:'flex', flexDirection:'column', gap:8}}>
      {[
        {n:'04', name:'1st AC', amt:'$3,852.00', state:'sent'},
        {n:'05', name:'2nd AC', amt:'$2,640.00', state:'sent'},
        {n:'08', name:'Gaffer', amt:'$3,420.00', state:'review'},
        {n:'09', name:'Best Boy', amt:'$2,880.00', state:'review'},
      ].map((r,i)=>(
        <div key={i} style={{display:'flex', alignItems:'center', gap:10, padding:'8px 10px', background:'rgba(255,255,255,0.03)', borderRadius:8}}>
          <div className="tnum" style={{
            fontSize:11, fontWeight:700, color:'var(--sa-text3)',
            background:'rgba(255,255,255,0.06)', padding:'3px 6px', borderRadius:5, minWidth:24, textAlign:'center'
          }}>{r.n}</div>
          <div style={{flex:1, fontSize:13, fontWeight:500}}>{r.name}</div>
          <div className="tnum" style={{fontSize:13, fontWeight:600}}>{r.amt}</div>
          <div style={{
            width:8, height:8, borderRadius:99,
            background: r.state==='sent' ? 'var(--sa-green)' : 'var(--sa-amber)'
          }}/>
        </div>
      ))}
    </div>
    <div style={{display:'flex', justifyContent:'space-between', alignItems:'center', marginTop:14, paddingTop:12, borderTop:'0.5px solid rgba(255,255,255,0.08)'}}>
      <span style={{fontSize:13, color:'var(--sa-text3)'}}>Total payroll</span>
      <span className="tnum" style={{fontSize:18, fontWeight:700}}>$32,418.50</span>
    </div>
  </div>
);

// ── Kit Inventory ──
const FragKit = ({style}) => (
  <div className="glass" style={{padding:18, width:300, ...style}}>
    <div style={{display:'flex', justifyContent:'space-between', alignItems:'center', marginBottom:14}}>
      <div>
        <div style={{fontSize:15, fontWeight:600}}>Camera Kit</div>
        <div style={{fontSize:12, color:'var(--sa-text3)', marginTop:2}}>14 items · $42,800 value</div>
      </div>
      <div style={{fontSize:11, fontWeight:700, color:'var(--sa-green)'}}>$520/day</div>
    </div>
    <div style={{display:'flex', flexDirection:'column', gap:8}}>
      {[
        {n:'Alexa Mini LF Body', v:'$280/day'},
        {n:'Cooke S4 mini set', v:'$180/day'},
        {n:'Preston Hand Unit 4', v:'$60/day'},
      ].map((it,i)=>(
        <div key={i} style={{display:'flex', alignItems:'center', gap:10, padding:'10px 12px', background:'rgba(255,255,255,0.04)', borderRadius:10, border:'0.5px solid rgba(255,255,255,0.06)'}}>
          <div style={{width:30, height:30, borderRadius:7, background:'var(--sa-accent-dim)', display:'grid', placeItems:'center'}}>
            <Kit size={16} color="var(--sa-accent-hi)"/>
          </div>
          <div style={{flex:1, fontSize:13, fontWeight:500}}>{it.n}</div>
          <div className="tnum" style={{fontSize:12, color:'var(--sa-text3)', fontWeight:600}}>{it.v}</div>
        </div>
      ))}
    </div>
  </div>
);

// ── Notification fragment ──
const FragNotif = ({style}) => (
  <div className="glass" style={{padding:14, width:320, display:'flex', gap:12, alignItems:'flex-start', ...style}}>
    <div style={{width:36, height:36, borderRadius:8, background:'linear-gradient(135deg, #7b7af4, #5e5ce6)', display:'grid', placeItems:'center', flexShrink:0}}>
      <Invoice size={18} color="#fff"/>
    </div>
    <div style={{flex:1}}>
      <div style={{display:'flex', justifyContent:'space-between', alignItems:'baseline'}}>
        <span style={{fontSize:13, fontWeight:600}}>SET ASSIST</span>
        <span style={{fontSize:11, color:'var(--sa-text3)'}}>now</span>
      </div>
      <div style={{fontSize:14, marginTop:3, lineHeight:1.4}}>Anvil Pictures paid <strong className="tnum">$3,840.00</strong> · 9 days early</div>
    </div>
  </div>
);

Object.assign(window, {
  FragCalcResult, FragInvoiceList, FragCrewCard, FragCalendarStrip,
  FragFinances, FragPayrollWrap, FragKit, FragNotif
});
