/* Penci Poser — styles SCOPED dưới #poserApp để không đụng global CSS của Penci.
   Nguồn: penci-manikin-glb (full-screen tool) → nhúng native dưới header. */
/* Theme LIGHT mặc định Penci (nền sáng, panel trắng, accent teal). */
#poserApp{
  --brand:linear-gradient(95deg,#0eb1bd 0,#03c6d5 55%,#04a4e1 100%);
  --bg:#f4f6fa;--panel:#ffffff;--panel2:#eef1f6;--line:#e3e8ee;--text:#1e2733;--muted:#7a8694;--accent:#03c6d5;--on-text:#ffffff;
  --display:'Fraunces',serif;--body:'Inter',sans-serif;--mono:'JetBrains Mono',monospace;
  --r:12px;--rbig:16px;--pad:18px;--panelw:296px;--rpanelw:318px;
  --label-tf:none;--label-font:var(--body);--label-size:12.5px;--label-weight:700;--label-color:#5a6472;--label-ls:0;
  --btn-border:1px solid #e6eaef;--btn-shadow:0 1px 2px rgba(40,70,90,.05);--panel-shadow:0 8px 30px rgba(40,70,90,.08);--btn-pad:12px 8px;
  --stage-bg:linear-gradient(160deg,#eef3f7,#e3ebf2);
  --cv-border:none;--cv-shadow:none;--cv-radius:0;
  --pill-bg:rgba(255,255,255,.9);--pill-border:#e3e8ee;--pill-text:#5a6472;--loader-bg:rgba(244,246,250,.93);
  position:relative;height:calc(100dvh - 64px);overflow:hidden;
  background:var(--bg);color:var(--text);font-family:var(--body);
}
#poserApp *{box-sizing:border-box;margin:0;padding:0}
#poserApp .app{position:absolute;inset:0;display:block}
#poserApp .label{font-family:var(--label-font);font-size:var(--label-size);color:var(--label-color);letter-spacing:var(--label-ls);text-transform:var(--label-tf);font-weight:var(--label-weight);margin:15px 0 8px}
#poserApp .grid2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
#poserApp .grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
#poserApp .grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
#poserApp .btn{background:var(--panel2);border:var(--btn-border);border-radius:var(--r);color:var(--text);padding:var(--btn-pad);font-size:13px;font-family:var(--body);cursor:pointer;transition:.15s;text-align:center;box-shadow:var(--btn-shadow)}
#poserApp .btn:hover{border-color:var(--accent);transform:translateY(-1px)}
#poserApp .btn.on{background:var(--brand);color:var(--on-text);font-weight:600;border-color:transparent}
#poserApp .stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--stage-bg);transition:background .25s}
#poserApp #cv{position:absolute;inset:0;width:100%;height:100%;border:none;border-radius:0;box-shadow:none;touch-action:none;max-width:100%}
#poserApp .hint{position:absolute;top:14px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:11px;color:var(--pill-text);background:var(--pill-bg);padding:6px 12px;border-radius:20px;border:1px solid var(--pill-border);max-width:72%;text-align:center;backdrop-filter:blur(8px)}
#poserApp.canva .hint{font-family:var(--body)}
#poserApp .cam{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:11px;color:var(--accent);background:var(--pill-bg);padding:6px 12px;border-radius:20px;border:1px solid var(--pill-border);backdrop-filter:blur(8px)}
#poserApp .loader{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--mono);font-size:13px;color:var(--muted);gap:10px;background:var(--loader-bg)}
#poserApp .spin{width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:poserspin 1s linear infinite}
@keyframes poserspin{to{transform:rotate(360deg)}}
#poserApp textarea{width:100%;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);color:var(--text);padding:12px;font-family:var(--body);font-size:13px;resize:vertical;min-height:80px;line-height:1.5}
#poserApp textarea:focus{outline:none;border-color:var(--accent)}
#poserApp select{width:100%;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);color:var(--text);padding:11px;font-family:var(--body);font-size:13px;margin-bottom:8px}
#poserApp .tag{font-family:var(--mono);font-size:11px;color:var(--accent);margin-top:8px}
#poserApp.canva .tag{font-family:var(--body)}
#poserApp .gen{width:100%;margin-top:14px;background:var(--brand);border:none;border-radius:var(--rbig);color:var(--on-text);font-weight:600;font-size:15px;padding:14px;cursor:pointer;font-family:var(--body);box-shadow:var(--btn-shadow)}
#poserApp .gen:hover{filter:brightness(1.06)}
#poserApp .ghost{width:100%;margin-top:10px;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r);color:var(--text);padding:11px;cursor:pointer;font-size:13px;font-family:var(--body)}
#poserApp .ghost:hover{border-color:var(--accent)}
#poserApp .small{font-size:11px;color:var(--muted);margin-top:8px;line-height:1.5}
#poserApp .preview{margin-top:12px;width:100%;border:1px solid var(--line);border-radius:var(--r);display:none}
#poserApp .cluster{position:absolute;z-index:5;display:flex;gap:10px;align-items:center}
#poserApp .cluster.col{flex-direction:column;align-items:flex-start}
#poserApp .tl{top:16px;left:16px}
#poserApp .tr{top:16px;right:16px}
#poserApp .bl{bottom:16px;left:16px}
#poserApp .br{bottom:16px;right:16px}
#poserApp .ic{width:46px;height:46px;border-radius:50%;background:var(--panel);border:1px solid var(--line);color:var(--text);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:var(--panel-shadow);transition:.15s;position:relative;flex:none}
#poserApp .ic:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}
#poserApp .ic.on{background:var(--brand);color:var(--on-text);border-color:transparent}
#poserApp .ic svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
#poserApp .ic[data-tip]:hover::after{content:attr(data-tip);position:absolute;white-space:nowrap;font-family:var(--body);font-size:11px;background:var(--panel);color:var(--text);border:1px solid var(--line);padding:5px 9px;border-radius:8px;box-shadow:var(--panel-shadow);z-index:30;pointer-events:none}
#poserApp .tl .ic[data-tip]:hover::after,#poserApp .bl .ic[data-tip]:hover::after{left:54px}
#poserApp .tr .ic[data-tip]:hover::after,#poserApp .br .ic[data-tip]:hover::after{right:54px}
#poserApp .upg{background:#ffe14d;color:#1a1a00;border:none;border-radius:999px;font-weight:700;padding:0 18px;height:46px;cursor:pointer;font-family:var(--body);box-shadow:var(--panel-shadow)}
#poserApp .savebtn{display:flex;align-items:center;gap:7px;height:46px;padding:0 16px;border-radius:999px;background:var(--panel);border:1px solid var(--line);color:var(--text);font-family:var(--body);font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--panel-shadow);transition:.15s;position:relative;white-space:nowrap;flex:none}
#poserApp .savebtn:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}
#poserApp .savebtn svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
#poserApp .savebtn.dirty{background:var(--brand);color:var(--on-text);border-color:transparent}
#poserApp .savebtn.dirty:hover{color:var(--on-text);filter:brightness(1.05)}
#poserApp .savebtn.dirty::after{content:'';position:absolute;top:6px;right:10px;width:8px;height:8px;border-radius:50%;background:#ffd233;box-shadow:0 0 0 2px var(--panel)}
#poserApp .savebtn.ok{background:#e7f8ef;border-color:#1bbf73;color:#0f8a52}
#poserApp .savebtn.ok:hover{color:#0f8a52;transform:none}
#poserApp .segpill{display:flex;gap:3px;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:4px;box-shadow:var(--panel-shadow)}
#poserApp .tbtn{border:none;background:transparent;color:var(--pill-text);font-family:var(--body);font-size:12px;font-weight:600;padding:7px 16px;border-radius:999px;cursor:pointer;transition:.15s}
#poserApp .tbtn.on{background:var(--brand);color:var(--on-text)}
#poserApp .objlist{position:absolute;left:16px;top:78px;z-index:5;display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow:auto;padding:2px}
#poserApp .objcard{display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:6px 8px 6px 6px;cursor:pointer;box-shadow:var(--panel-shadow);min-width:138px;transition:.12s}
#poserApp .objcard:hover{border-color:var(--accent)}
#poserApp .objcard.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}
#poserApp .swatch{width:26px;height:26px;border-radius:8px;flex:none;border:1px solid rgba(0,0,0,.18);cursor:pointer}
#poserApp .objname{font-size:13px;font-weight:600;flex:1}
#poserApp .objact{display:flex;gap:2px}
#poserApp .miniic{width:24px;height:24px;border-radius:7px;border:none;background:transparent;color:var(--muted);cursor:pointer;display:flex;align-items:center;justify-content:center}
#poserApp .miniic:hover{color:var(--accent);background:var(--panel2)}
#poserApp .miniic svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
#poserApp .fpanel{position:absolute;top:16px;right:74px;width:300px;max-height:88vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:18px;z-index:8;box-shadow:0 24px 70px rgba(0,0,0,.4);display:none}
#poserApp.canva .fpanel{box-shadow:0 24px 70px rgba(90,70,160,.2)}
#poserApp .fpanel.open{display:block}
#poserApp .fp-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
#poserApp .fp-title{font-family:var(--display);font-size:18px;font-weight:600}
#poserApp .fp-x{border:none;background:transparent;color:var(--muted);font-size:22px;line-height:1;cursor:pointer}
#poserApp .pop{position:absolute;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:8px;z-index:9;box-shadow:0 16px 44px rgba(0,0,0,.35);display:none;flex-direction:column;gap:6px;min-width:140px}
#poserApp .pop.open{display:flex}
#poserApp .ptabs{display:flex;gap:4px;margin:8px 0 10px;background:var(--panel2);border-radius:10px;padding:3px}
#poserApp .ptab{flex:1;border:none;background:transparent;color:var(--muted);font-family:var(--body);font-size:12.5px;font-weight:600;padding:8px 6px;border-radius:8px;cursor:pointer;transition:.15s}
#poserApp .ptab.on{background:var(--panel);color:var(--text);box-shadow:var(--btn-shadow)}
#poserApp .ptab:hover:not(.on){color:var(--text)}
#poserApp .ptab-pane{display:none}
#poserApp .ptab-pane.on{display:block}
#poserApp .ptab-pane .label:first-child{margin-top:4px}
