/* ==========================================================
   ORIENT2WORK — Digital business card
   Concept: the page is the card. A white card slides up over
   the city photo, marked with the gold slash from the logo.
   ========================================================== */

:root{
  /* Brand — same palette as the Orient2Work platform (orient2work-v2) */
  --midnight:#071c36;   /* on-primary-fixed */
  --navy:#0b1f3a;       /* primary */
  --gold:#e9c349;       /* secondary-fixed-dim */

  /* Semantic */
  --page:#dfe7f6;
  --card:#ffffff;       /* surface-container-lowest */
  --well:#f3f6fc;
  --ink:#0b1f3a;        /* primary — text in brand navy */
  --steel:#4d5f7d;      /* surface-tint — blue-grey, harmonises with navy */
  --hair:#e4eaf5;
  --tile:#f0f4fc;
  --tile-ink:#1b4781;   /* platform mid-blue (chart-etape-2) */
  --cta-bg:linear-gradient(180deg,#17355f 0%,#0b1f3a 100%);
  --cta-shadow:0 10px 24px rgba(11,31,58,.22),inset 0 1px 0 rgba(255,255,255,.08);
  --cta:#0b1f3a;        /* primary */
  --cta-ink:#ffffff;
  --cta-accent:#fed65b; /* secondary-container */
  --ok:#2e7d55;         /* success */
  --focus:#1b4781;      /* 3:1+ against white */
  --tile-edge:#e1e8f6;

  /* Icon sizes */
  --icon-md:22px;
  --icon-sm:20px;
  --icon-xs:18px;
  --shadow-2:0 8px 30px rgba(11,31,58,.12);

  --font-display:"Bricolage Grotesque",Georgia,serif;
  --font-ui:"Instrument Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;

  --ease-out:cubic-bezier(.16,1,.3,1);
  --safe-b:env(safe-area-inset-bottom,0px);
}

@media (prefers-color-scheme:dark){
  :root{
    --page:#060c16;
    --card:#0d1522;
    --well:#152033;
    --ink:#e8edf6;
    --steel:#a3b1c8;
    --hair:#1e2a3d;
    --tile:#152033;
    --tile-ink:#a5c6f5;
    --cta-bg:linear-gradient(180deg,#ffe08a 0%,#e9c349 100%);
    --cta-shadow:0 10px 24px rgba(233,195,73,.18),inset 0 1px 0 rgba(255,255,255,.35);
    --cta:#fed65b;
    --cta-ink:#241a00;
    --cta-accent:#241a00;
    --ok:#6fd49e;
    --focus:#e9c349;
    --tile-edge:#1e2b40;
    --shadow-2:0 8px 30px rgba(0,0,0,.4);
  }
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  min-height:100vh;
  background:var(--midnight);
  color:var(--ink);
  font-family:var(--font-ui);
  font-size:16px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
}
img{display:block;max-width:100%}
a,button{touch-action:manipulation;cursor:pointer}
[hidden]{display:none!important}
.ico{width:var(--icon-md);height:var(--icon-md);flex:none}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:12px}
.hero :focus-visible{outline-color:var(--gold)}

/* ---------- Page shell ---------- */
.page{
  width:min(100%,460px);
  min-height:100svh;
  margin:0 auto;
  display:flex;flex-direction:column;
  background:var(--midnight);
}

/* ---------- Hero ---------- */
.hero{
  position:relative;
  height:clamp(340px,52svh,420px);
  overflow:hidden;
  color:#fff;
  isolation:isolate;
}
.hero-img{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:cover;object-position:60% 55%;
  z-index:-2;
  filter:saturate(.85) contrast(1.05);
  animation:settle 1.6s var(--ease-out) both;
}
.hero-overlay{
  position:absolute;inset:0;z-index:-1;
  background:
    radial-gradient(circle at 86% 20%,rgba(233,195,73,.22),rgba(233,195,73,0) 32%),
    linear-gradient(180deg,rgba(7,28,54,.6) 0%,rgba(7,28,54,.1) 34%,rgba(7,28,54,.72) 72%,rgba(7,28,54,1) 100%),
    linear-gradient(90deg,rgba(7,28,54,.5),rgba(7,28,54,0) 70%);
}
.hero-logo{
  position:absolute;top:calc(22px + env(safe-area-inset-top,0px));left:24px;
  width:112px;height:auto;
  filter:brightness(0) invert(1);
  animation:fade .8s .1s both;
}
.hero-content{
  position:absolute;left:0;right:0;bottom:0;
  padding:0 24px 56px;
}
h1{
  margin:0;
  font-family:var(--font-display);
  font-variation-settings:"opsz" 96;
  font-size:clamp(34px,10vw,44px);
  font-weight:800;
  line-height:.98;
  letter-spacing:-.022em;
}
h1 .line{display:block;overflow:hidden;padding-bottom:.06em}
h1 .line > span{display:block;animation:rise .9s var(--ease-out) both}
h1 .line:nth-child(1) > span{animation-delay:.25s}
h1 .line:nth-child(2) > span{animation-delay:.36s;color:#b5c7ea}
/* ---------- The card ---------- */
.sheet-card{
  position:relative;
  flex:1;
  margin-top:-28px;
  padding:28px 20px calc(36px + var(--safe-b));
  background:var(--card);
  border-radius:28px 28px 0 0;
  animation:card-up .9s .45s var(--ease-out) both;
}
/* gold slash from the logo, sitting in the card's corner */
.card-notch{
  position:absolute;top:0;right:36px;
  width:46px;height:7px;
  background:var(--gold);
  clip-path:polygon(22% 0,100% 0,78% 100%,0 100%);
  transform-origin:right;
  animation:notch .5s 1.1s var(--ease-out) both;
}

.identity{
  display:flex;align-items:flex-start;justify-content:space-between;gap:16px;
  margin-bottom:22px;
}
.card-name{
  margin:0;
  font-family:var(--font-display);
  font-variation-settings:"opsz" 48;
  font-size:30px;font-weight:800;
  line-height:1.05;letter-spacing:-.02em;
}
.card-role{margin:6px 0 0;max-width:28ch;color:var(--steel);font-size:15.5px;line-height:1.45}
.qr-btn{
  flex:none;
  width:48px;height:48px;margin-top:-2px;
  display:grid;place-items:center;
  border:1px solid var(--hair);border-radius:14px;
  background:var(--card);color:var(--ink);
  transition:background-color .15s,transform .12s;
}
.qr-btn:active{transform:scale(.94)}

/* Quick actions */
.quick{
  display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:8px;
  margin-bottom:14px;
}
.quick-item{
  display:flex;flex-direction:column;align-items:center;gap:7px;
  padding:14px 4px 12px;
  border-radius:18px;
  background:var(--tile);color:var(--tile-ink);
  box-shadow:inset 0 0 0 1px var(--tile-edge);
  text-decoration:none;
  font-size:13px;font-weight:600;
  transition:transform .12s,background-color .15s;
}
.quick-item:active{transform:scale(.95)}
.quick-item > span:last-child{color:var(--ink)}
.quick-icon{display:grid;place-items:center;height:24px;color:var(--tile-ink)}
.quick-icon.is-whatsapp{color:#1fa855}
@media (prefers-color-scheme:dark){.quick-icon.is-whatsapp{color:#4ade80}}

/* Buttons */
.btn{
  appearance:none;border:0;
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:56px;padding:0 20px;
  border-radius:18px;
  font-family:inherit;font-size:16px;font-weight:600;line-height:1;
  transition:transform .12s,background-color .2s,color .2s;
}
.btn:active{transform:scale(.97)}
.btn-block{width:100%}
.btn-primary{background:var(--cta);background-image:var(--cta-bg);color:var(--cta-ink);box-shadow:var(--cta-shadow)}
.btn-primary .ico{color:var(--cta-accent)}
.btn-soft{background:var(--well);color:var(--ink)}
.btn.is-done{background:var(--ok);background-image:none;color:#fff}
.btn.is-done .ico{color:#fff}

@media (hover:hover){
  .quick-item:hover{background:var(--hair)}
  .qr-btn:hover{background:var(--well)}
  .btn-primary:hover{filter:brightness(1.15)}
  .btn-soft:hover{background:var(--hair)}
}

/* ---------- Detail lists ---------- */
.block{margin-top:30px}
.block-title{
  margin:0 0 4px;
  font-size:14px;font-weight:600;
  color:var(--steel);
}
.list{list-style:none;margin:0;padding:0}
.row{display:flex;align-items:center;position:relative}
.row:not([hidden]) ~ .row{border-top:1px solid var(--hair)}
.row-main{
  flex:1;min-width:0;
  display:flex;align-items:center;gap:14px;
  min-height:68px;padding:10px 0;
  color:inherit;text-decoration:none;
}
.row-icon{
  width:42px;height:42px;flex:none;
  display:grid;place-items:center;
  border-radius:12px;
  background:var(--tile);color:var(--tile-ink);
}
.row-icon:not([class*="brand-"]){box-shadow:inset 0 0 0 1px var(--tile-edge)}
.row-icon .ico{width:var(--icon-sm);height:var(--icon-sm)}
.row-text{flex:1;min-width:0;display:flex;flex-direction:column}
.row-text small{font-size:13px;color:var(--steel)}
.row-text strong{font-size:16px;font-weight:600;overflow-wrap:anywhere}
.row-trail{width:var(--icon-xs);height:var(--icon-xs);color:var(--steel);transition:transform .2s var(--ease-out)}
.row-aside{
  appearance:none;border:0;
  flex:none;width:44px;height:44px;margin-right:-6px;
  display:grid;place-items:center;
  border-radius:12px;
  background:transparent;color:var(--steel);
  transition:background-color .15s,color .15s;
}
.row-aside .ico{width:var(--icon-sm);height:var(--icon-sm)}
.row-aside:active{background:var(--well)}
.row-aside.is-done{color:var(--ok)}
@media (hover:hover){
  .row-main:hover strong{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
  .row-main:hover .row-trail{transform:translate(2px,-2px);color:var(--ink)}
  .row-aside:hover{background:var(--well);color:var(--ink)}
}

/* Social marks keep their own colours so they are recognised at a glance */
.brand-instagram{background:radial-gradient(circle at 30% 107%,#fdf497 0%,#fd5949 45%,#d6249f 60%,#285aeb 90%);color:#fff}
.brand-linkedin{background:#0a66c2;color:#fff}
.brand-whatsapp{background:#25d366;color:#fff}

/* ---------- Footer ---------- */
.footer{
  margin-top:36px;padding-top:24px;
  border-top:1px solid var(--hair);
  display:flex;align-items:center;justify-content:space-between;gap:12px;
}
.footer-logo{width:72px;height:auto}
.footer p{margin:0;font-size:13px;color:var(--steel)}
@media (prefers-color-scheme:dark){.footer-logo{filter:brightness(0) invert(1);opacity:.75}}

/* ---------- Sticky save bar ---------- */
.savebar{
  position:fixed;left:0;right:0;bottom:0;z-index:10;
  padding:12px 16px calc(12px + var(--safe-b));
  display:flex;justify-content:center;
  background:linear-gradient(180deg,transparent,var(--card) 45%);
  transform:translateY(110%);
  visibility:hidden;
  transition:transform .35s var(--ease-out),visibility 0s linear .35s;
  pointer-events:none;
}
.savebar .btn{width:min(100%,428px);pointer-events:auto;box-shadow:var(--shadow-2)}
.savebar.is-visible{transform:none;visibility:visible;transition:transform .35s var(--ease-out)}

/* ---------- Share sheet ---------- */
.sheet{
  width:min(100%,460px);max-width:100%;max-height:92svh;
  margin:auto auto 0;
  padding:12px 24px calc(24px + var(--safe-b));
  border:0;border-radius:28px 28px 0 0;
  background:var(--card);color:var(--ink);
  text-align:center;
}
.sheet[open]{animation:sheet-in .4s var(--ease-out)}
.sheet.is-closing{animation:sheet-out .2s ease-in forwards}
.sheet::backdrop{background:rgba(4,11,22,.6);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fade .3s}
.sheet.is-closing::backdrop{animation:fade-out .2s forwards}
.sheet-handle{width:40px;height:5px;border-radius:3px;background:var(--hair);margin:0 auto 14px}
.sheet-close{
  position:absolute;top:14px;right:14px;
  width:44px;height:44px;border:0;border-radius:50%;
  display:grid;place-items:center;
  background:var(--well);color:var(--steel);
}
.sheet-close .ico{width:var(--icon-xs);height:var(--icon-xs)}
.sheet-title{
  margin:8px 0 4px;
  font-family:var(--font-display);
  font-size:24px;font-weight:800;letter-spacing:-.02em;
}
.sheet-sub{margin:0 auto 22px;max-width:30ch;font-size:15px;color:var(--steel)}
.qr-frame{
  position:relative;
  width:min(236px,68vw);aspect-ratio:1;
  margin:0 auto;padding:16px;
  background:#fff;border-radius:22px;
  border:1px solid var(--hair);
}
.qr{width:100%;height:100%}
.qr svg{display:block;width:100%;height:100%}
.qr svg path,.qr svg rect[fill="black"]{fill:#0e1f3b}
.qr-logo{
  position:absolute;left:50%;top:50%;
  width:22%;height:auto;padding:6px;
  transform:translate(-50%,-50%);
  background:#fff;border-radius:10px;
}
.sheet-url{margin:14px 0 22px;font-size:13.5px;font-weight:600;color:var(--steel);overflow-wrap:anywhere}
.sheet-actions{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:10px}

/* ---------- Toast ---------- */
.toast{
  position:fixed;left:50%;bottom:calc(96px + var(--safe-b));z-index:20;
  display:flex;align-items:center;gap:8px;
  width:max-content;max-width:calc(100% - 32px);
  padding:12px 16px;border-radius:14px;
  background:var(--navy);color:#fff;
  font-size:14px;font-weight:500;
  box-shadow:0 12px 30px rgba(0,0,0,.25);
  opacity:0;transform:translate(-50%,12px);
  transition:opacity .25s,transform .25s var(--ease-out);
  pointer-events:none;
}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast .ico{width:var(--icon-xs);height:var(--icon-xs);color:var(--gold)}

/* ---------- The one load sequence ---------- */
@keyframes settle{from{transform:scale(1.1)}to{transform:none}}
@keyframes rise{from{transform:translateY(105%)}to{transform:none}}
@keyframes notch{from{transform:scaleX(0)}}
@keyframes card-up{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
@keyframes sheet-in{from{transform:translateY(100%)}to{transform:none}}
@keyframes sheet-out{to{transform:translateY(100%)}}
@keyframes fade{from{opacity:0}}
@keyframes fade-out{to{opacity:0}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-delay:0s!important;transition:none!important}
}

@media (max-width:359px){h1{font-size:28px}}

/* ---------- Larger screens: the card floats ---------- */
@media (min-width:560px){
  body{padding:40px 0;background:var(--page)}
  .page{min-height:0;border-radius:32px;overflow:hidden;box-shadow:0 40px 90px rgba(11,31,58,.22)}
  .sheet-card{border-radius:28px 28px 0 0;padding-bottom:32px}
  .sheet{margin:auto;border-radius:28px;padding-bottom:24px}
  .sheet-handle{display:none}
}
