/* ==========================================================================
   Movimento I — O corpo: figuras específicas dos capítulos deste Movimento
   ========================================================================== */

/* ---------- Capítulo 1 ---------- */
/* 1.1 ficha */
.ficha{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:20px 28px;align-items:center}
.ficha h4{grid-column:1/-1;margin:0;font-family:var(--f-display);font-weight:400;text-transform:uppercase;font-size:1.7rem;line-height:1;letter-spacing:.01em}
.ficha h4 i{font-family:var(--f-body);text-transform:none;font-size:1rem;color:var(--muted);margin-left:8px;letter-spacing:0}
.ficha dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:9px 14px;font-size:.95rem;line-height:1.45}
.ficha dt{font-family:var(--f-label);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);padding-top:3px}
.ficha dd{margin:0}
.ficha .spark{grid-column:1/-1;border-top:1px dashed var(--line);padding-top:14px}
.ficha .spark svg{width:100%;height:auto;display:block;overflow:visible}
@media (max-width:640px){.ficha{grid-template-columns:1fr}.ficha dl{grid-template-columns:1fr;gap:2px}.ficha dd{margin-bottom:8px}}
.armed .sp-line{stroke-dashoffset:1400}
.sp-line{stroke-dasharray:1400;stroke-dashoffset:0;transition:stroke-dashoffset 2.4s ease}
.armed .sp-area{opacity:0}
.sp-area{transition:opacity 1s ease 1.4s}

/* 1.2 balança */
.scale-fig{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:24px;align-items:center}
.device{background:linear-gradient(180deg,var(--card-2),var(--card));border:1px solid var(--line);border-radius:16px;padding:18px 18px 22px;box-shadow:inset 0 1px 0 rgba(255,255,255,.05)}
.lcd{background:var(--lcd-bg);color:var(--lcd-fg);border-radius:8px;padding:14px 16px;font-family:var(--f-mono);font-size:.86rem;letter-spacing:.04em;box-shadow:inset 0 2px 8px rgba(0,0,0,.35)}
.lcd .row{display:flex;justify-content:space-between;gap:12px;padding:4px 0;border-bottom:1px dashed color-mix(in srgb,var(--lcd-fg) 25%,transparent)}
.lcd .row span:last-child{font-variant-numeric:tabular-nums}
.lcd .big{display:flex;justify-content:space-between;align-items:flex-end;padding-top:10px}
.lcd .big strong{font-size:3rem;line-height:1;font-weight:700;font-variant-numeric:tabular-nums}
.lcd .big.done strong{color:var(--red)}
.plates{display:flex;justify-content:center;gap:14px;margin-top:16px}
.plates i{width:38%;height:16px;border-radius:8px;background:repeating-linear-gradient(90deg,var(--line) 0 6px,transparent 6px 9px);border:1px solid var(--line)}
.vs{font-family:var(--f-label);text-align:center}
.vs .n{font-family:var(--f-display);font-size:4.6rem;line-height:1}
.vs .n.red{color:var(--red)}
.vs small{display:block;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.vs .arrow{font-family:var(--f-hand);font-size:1.3rem;color:var(--red);margin:4px 0}
@media (max-width:600px){.scale-fig{grid-template-columns:1fr}.vs{display:flex;justify-content:center;align-items:center;gap:16px}.vs .arrow{margin:0}}

/* 1.3 contrato */
.desk{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:clamp(18px,4vw,40px);display:grid;place-items:center}
.doc{position:relative;width:min(100%,30rem);background:var(--doc-bg);color:var(--doc-fg);padding:26px 26px 22px;border-radius:3px;transform:rotate(-1.2deg);box-shadow:0 18px 40px rgba(0,0,0,.35),0 2px 0 rgba(0,0,0,.05)}
.doc h5{font-family:var(--f-label);font-weight:600;letter-spacing:.16em;text-transform:uppercase;font-size:.78rem;margin:0 0 4px}
.doc .sub{font-family:var(--f-label);font-size:.72rem;color:var(--doc-muted);margin:0 0 16px;letter-spacing:.04em}
.doc dl{margin:0;display:grid;grid-template-columns:1fr auto;font-size:.92rem}
.doc dt,.doc dd{margin:0;padding:7px 0;border-bottom:1px solid #d9d2c6}
.doc dd{text-align:right;font-variant-numeric:tabular-nums;font-family:var(--f-label);font-weight:500}
.doc dd s{color:var(--doc-muted)}
.doc .tot dt,.doc .tot dd{font-weight:600;border-bottom:2px solid var(--doc-fg)}
.doc .sig{margin-top:18px;display:flex;align-items:flex-end;gap:12px;font-family:var(--f-label);font-size:.7rem;color:var(--doc-muted);letter-spacing:.1em;text-transform:uppercase}
.doc .sig svg{width:170px;height:56px;border-bottom:1px solid var(--doc-muted)}
.doc .sig path{fill:none;stroke:#1f3d8a;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:600;stroke-dashoffset:0;transition:stroke-dashoffset 1.6s ease .2s}
.armed .doc .sig path{stroke-dashoffset:600}
.doc .note{font-family:var(--f-hand);color:var(--doc-muted);font-size:1rem;margin:10px 0 0;text-align:right}
.stamp{position:absolute;right:16px;top:74px;border:3px solid #d42b20;color:#d42b20;font-family:var(--f-display);font-size:1.7rem;letter-spacing:.08em;padding:2px 12px 0;border-radius:6px;transform:rotate(-12deg);opacity:.88;mix-blend-mode:multiply;transition:transform .32s cubic-bezier(.3,1.6,.5,1) 1.3s,opacity .2s 1.3s}
.armed .stamp{opacity:0;transform:scale(2.4) rotate(-20deg)}

/* 1.4 mochila */
.map svg{width:100%;height:auto;display:block}
.map .road{fill:none;stroke:var(--line);stroke-width:7;stroke-linecap:round}
.map .route{fill:none;stroke:var(--fg);stroke-width:2;stroke-dasharray:2 7;stroke-linecap:round;opacity:.7}
.map .node{fill:var(--bg);stroke:var(--fg);stroke-width:2}
.map .gym{fill:var(--bg);stroke:var(--muted);stroke-width:2;stroke-dasharray:4 4}

/* 1.5 barras */
.bars svg{width:100%;height:auto;display:block;overflow:visible}
.bar{transform-box:fill-box;transform-origin:50% 100%;transition:transform 1s cubic-bezier(.2,.8,.2,1);transition-delay:calc(var(--i) * .18s)}
.armed .bar{transform:scaleY(0)}
.bar-v{transition:opacity .4s;transition-delay:calc(var(--i) * .18s + .7s)}
.armed .bar-v{opacity:0}

/* 1.6 calendário */
.cal-wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.85fr);gap:24px;align-items:start}
.cal h5{font-family:var(--f-display);font-weight:400;text-transform:uppercase;font-size:1.7rem;margin:0 0 10px;letter-spacing:.01em}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;font-family:var(--f-label);font-variant-numeric:tabular-nums}
.cal-grid .dow{font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-align:center;padding-bottom:4px}
.cal-grid .d{aspect-ratio:1;border:1px solid var(--line);border-radius:6px;padding:4px 5px;font-size:.82rem;position:relative;display:flex;flex-direction:column;justify-content:space-between;min-width:0}
.cal-grid .d.empty{border-color:transparent}
.cal-grid .d small{font-size:.52rem;line-height:1.05;letter-spacing:.02em;color:var(--muted);text-transform:uppercase;overflow:hidden}
.cal-grid .d.mark{border-color:var(--fg)}
.cal-grid .d.quit{background:var(--red);border-color:var(--red);color:#fff}
.cal-grid .d.quit small{color:#fff}
.cal-legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:10px;font-family:var(--f-label);font-size:.78rem;color:var(--muted)}
.cal-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;border:1px solid var(--fg);margin-right:6px;vertical-align:-1px}
.cal-legend i.r{background:var(--red);border-color:var(--red)}
.cal-grid .d.quit::after{content:"";position:absolute;inset:-5px;border:2px solid var(--red);border-radius:9px;animation:ring 2.2s ease-out infinite}
@keyframes ring{0%{opacity:.9;transform:scale(.9)}100%{opacity:0;transform:scale(1.25)}}
.cal-side{font-family:var(--f-label);font-size:.92rem;display:grid;gap:14px}
.cal-side .count{font-family:var(--f-display);font-size:3.4rem;line-height:1;color:var(--red);font-variant-numeric:tabular-nums}
.cal-side ul{list-style:none;margin:0;padding:0;display:grid;gap:6px;color:var(--muted);font-size:.86rem}
.cal-side ul b{color:var(--fg);font-weight:500}
@media (max-width:640px){.cal-wrap{grid-template-columns:1fr}.cal-grid .d small{display:none}}

/* 1.7 grelha de 100 */
.hundred{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:center}
.toggle{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px;gap:2px;margin-bottom:16px}
.toggle button{appearance:none;border:0;background:transparent;color:var(--muted);font-family:var(--f-label);font-size:.86rem;padding:7px 14px;border-radius:999px;cursor:pointer}
.toggle button[aria-pressed="true"]{background:var(--fg);color:var(--bg)}
.dots{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:5px;max-width:300px}
.dots i{aspect-ratio:1;border-radius:50%;background:var(--line);transition:background .45s ease;transition-delay:calc(var(--k) * 6ms)}
.dots i.c0{background:var(--red)}
.dots i.c1{background:color-mix(in srgb,var(--red) 35%,var(--line))}
.dots i.c2{background:var(--muted)}
.dots i.c3{background:var(--green)}
.legend{list-style:none;margin:0;padding:0;display:grid;gap:10px;font-family:var(--f-label);font-size:.9rem}
.legend li{display:grid;grid-template-columns:14px 1fr auto;gap:10px;align-items:center}
.legend i{width:12px;height:12px;border-radius:50%}
.legend b{font-family:var(--f-display);font-weight:400;font-size:1.5rem;font-variant-numeric:tabular-nums;min-width:2.2ch;text-align:right}
.legend .l0 b{color:var(--red)}
.legend .l3 b{color:var(--green)}
@media (max-width:600px){.hundred{grid-template-columns:1fr}.dots{max-width:none}}

/* 1.8 talão */
.kit{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px;align-items:start}
.printer{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px 18px 0;overflow:hidden}
.slot{height:10px;border-radius:5px;background:var(--bg);box-shadow:inset 0 2px 4px rgba(0,0,0,.5);margin:0 6px}
.paper-out{overflow:hidden;margin:0 14px}
.receipt{background:var(--doc-bg);color:var(--doc-fg);font-family:var(--f-mono);font-size:.78rem;line-height:1.55;padding:16px 16px 26px;transition:transform 2.6s cubic-bezier(.4,.1,.3,1);-webkit-mask:linear-gradient(#000,#000) top/100% calc(100% - 8px) no-repeat,conic-gradient(from -45deg at bottom,#0000,#000 1deg 89deg,#0000 90deg) bottom/12px 8px repeat-x;mask:linear-gradient(#000,#000) top/100% calc(100% - 8px) no-repeat,conic-gradient(from -45deg at bottom,#0000,#000 1deg 89deg,#0000 90deg) bottom/12px 8px repeat-x}
.armed .receipt{transform:translateY(-100%)}
.receipt .c{text-align:center}
.receipt .ln{display:flex;justify-content:space-between;gap:10px}
.receipt .ln span:first-child{min-width:0}
.receipt hr{border:0;border-top:1px dashed #9a9286;margin:8px 0}
.receipt .tot{font-weight:700;font-size:.9rem}
.receipt .eq{color:#c0261c;font-weight:700}

/* 1.9 relógio */
.watch{display:grid;grid-template-columns:150px minmax(0,1fr);gap:20px;align-items:center}
.watch svg{width:100%;height:auto}
.notifs{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.notifs li{background:var(--card-2);border:1px solid var(--line);border-radius:12px;padding:9px 12px;font-family:var(--f-label);font-size:.86rem;line-height:1.35;transition:opacity .45s ease,transform .45s ease;transition-delay:calc(var(--i) * .55s)}
.notifs li time{display:block;font-size:.68rem;letter-spacing:.12em;color:var(--muted);text-transform:uppercase}
.armed .notifs li{opacity:0;transform:translateY(10px)}
.ring-arc{transition:stroke-dasharray 1.6s ease 2.8s}
.armed .ring-arc{stroke-dasharray:0 365}
@media (max-width:640px){.kit{grid-template-columns:1fr}.watch{grid-template-columns:110px minmax(0,1fr)}}

/* 1.10 chat */
.chat{max-width:27rem;margin:0 auto;background:var(--card);border:1px solid var(--line);border-radius:22px;overflow:hidden}
.chat header{display:flex;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--card-2)}
.chat .av{width:38px;height:38px;border-radius:50%;background:var(--red);display:grid;place-items:center;font-family:var(--f-display);color:#fff;font-size:1rem;flex:none}
.chat header b{display:block;font-family:var(--f-label);font-size:.92rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat header small{display:block;font-family:var(--f-label);font-size:.72rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat header > div{min-width:0}
.thread{padding:14px 12px 16px;display:flex;flex-direction:column;gap:6px;font-family:var(--f-label);font-size:.88rem;line-height:1.38}
.msg{max-width:82%;align-self:flex-start;background:var(--card-2);border:1px solid var(--line);border-radius:4px 14px 14px 14px;padding:7px 11px;transition:opacity .4s ease,transform .4s ease;transition-delay:calc(var(--i) * .65s)}
.msg .who{display:block;font-size:.72rem;font-weight:600;margin-bottom:1px}
.msg.me{align-self:flex-end;border-radius:14px 4px 14px 14px;background:color-mix(in srgb,var(--fg) 12%,var(--card))}
.who.rui{color:var(--red)}
.who.sonia{color:var(--who-a)}
.who.paulo{color:var(--who-b)}
.who.marta{color:var(--gold)}
.sys{align-self:center;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:6px 0;transition:opacity .4s ease;transition-delay:calc(var(--i) * .65s)}
.armed .msg,.armed .sys{opacity:0;transform:translateY(8px)}
.card-link{display:block;border-left:3px solid var(--red);padding:5px 8px;margin:4px 0;background:color-mix(in srgb,var(--fg) 6%,transparent);font-size:.8rem;border-radius:3px}
.card-link small{display:block;color:var(--muted);font-size:.68rem}
.media{display:grid;place-items:center;height:96px;border-radius:9px;margin:3px 0 4px;background:color-mix(in srgb,var(--fg) 8%,transparent);font-size:.78rem;color:var(--muted);text-align:center;line-height:1.25;width:min(220px,100%)}
.media svg{width:120px;height:auto}

/* 1.11 dois calendários */
.years{display:grid;gap:26px}
.yr h5{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px 16px;align-items:baseline;margin:0 0 10px;font-family:var(--f-display);font-weight:400;text-transform:uppercase;font-size:1.35rem;letter-spacing:.01em}
.yr h5 small{font-family:var(--f-label);font-size:.78rem;text-transform:none;letter-spacing:0;color:var(--muted)}
.yr-scroll{overflow-x:auto;padding-bottom:4px}
.months{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));font-family:var(--f-label);font-size:.62rem;letter-spacing:.1em;color:var(--muted);margin-bottom:4px;min-width:420px}
.grid52{display:grid;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:2px;min-width:420px;position:relative}
/* Revelação semana a semana com uma só camada (leve no telemóvel), em vez de 728 animações */
.grid52::after{content:"";position:absolute;inset:-1px;background:var(--card);transform-origin:right center;transform:scaleX(0);transition:transform 1.5s cubic-bezier(.45,.05,.25,1)}
.armed .grid52::after{transform:scaleX(1)}
.yr + .yr .grid52::after{transition-delay:.25s}
.grid52 i{aspect-ratio:1;border-radius:2px;background:var(--line)}
.grid52 i.v{background:var(--fg)}
.grid52 i.g{background:var(--green)}
.debits{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));margin-top:5px;min-width:420px}
.debits i{height:6px;width:6px;border-radius:50%;background:var(--red)}
.yr .stats{margin-top:12px}
.years > .yr{min-width:0}
@media (max-width:520px){.months,.grid52,.debits{min-width:0}.grid52{gap:1px}.grid52 i{border-radius:1px}.months{font-size:.52rem;letter-spacing:.04em}}

/* 1.12 saco */
.bag svg{width:min(100%,440px);height:auto;display:block;margin:0 auto}
.bag .line{font-family:var(--f-hand);font-size:clamp(1.4rem,3.4vw,1.9rem);text-align:center;margin:8px 0 0;line-height:1.2}


/* Em ecrãs táteis, o efeito de traço irregular (filtro SVG) é desligado: é caro de desenhar no telemóvel */
@media (pointer:coarse){ g[filter]{filter:none} }
