/* AML Compliance Portal — app styles (mobile-first, no frameworks) */
*{margin:0;padding:0;box-sizing:border-box}
:root{
  --brand:#b08d1e; --brand2:#8a6f1d; --headerbg:#171310;
  --bg:#f5f1e8; --panel:#fffdf8; --line:#e3dcc9; --line2:#cfc5a8;
  --ink:#241f14; --ink2:#5d543f; --muted:#8d8267;
  --ok:#3e7d3a; --okbg:#e8f3e4; --warn:#a3742a; --warnbg:#faf1dc; --bad:#a8402e; --badbg:#f9e6e0;
  --accent:#1f4e79;
  --sans:'Segoe UI',system-ui,-apple-system,'Helvetica Neue',Arial,sans-serif;
  --serif:Georgia,'Times New Roman',serif;
}
html{font-size:16px}
body{font-family:var(--sans);background:var(--bg);color:var(--ink);line-height:1.55;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{font-family:var(--serif);font-weight:600;line-height:1.25}
img{max-width:100%}
.muted{color:var(--muted);font-size:.9em}
.sub{color:var(--ink2);max-width:75ch}

/* ---------- topbar ---------- */
.topbar{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:.8rem;
  padding:.55rem 4vw;background:var(--headerbg);color:#f2ecda;min-height:56px}
.topbar .brand{display:flex;align-items:center;gap:.7rem;color:#f2ecda;min-width:0}
.topbar .brand:hover{text-decoration:none}
.topbar .brand img{height:34px;width:auto;display:block}
.brandname{font-size:1.02rem;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--serif)}
.navtoggle{display:none;background:none;border:1px solid #4a4032;color:#f2ecda;font-size:1.2rem;border-radius:8px;padding:.15rem .55rem;cursor:pointer}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:.9rem}
.langswitch{display:flex;gap:.15rem;font-size:.78rem}
.langswitch a{color:#a99f88;padding:.2rem .38rem;border-radius:6px}
.langswitch a.cur{background:#332c20;color:#e8c766}
.userchip{display:flex;align-items:center;gap:.45rem;color:#f2ecda;font-size:.88rem}
.userchip:hover{text-decoration:none}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--brand);color:#171310;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem}
.logout{color:#a99f88;font-size:.82rem;border:1px solid #4a4032;padding:.25rem .6rem;border-radius:7px}
.logout:hover{color:#f2ecda;text-decoration:none}

/* ---------- sidenav ---------- */
.sidenav{position:fixed;top:56px;bottom:0;left:0;width:216px;background:#211b13;color:#cfc5a8;
  padding:1rem .6rem;overflow-y:auto;z-index:50;display:flex;flex-direction:column;gap:2px}
.sidenav a{display:flex;align-items:center;gap:.6rem;color:#cfc5a8;padding:.55rem .7rem;border-radius:8px;font-size:.92rem}
.sidenav a:hover{background:#2e2618;color:#f2ecda;text-decoration:none}
.sidenav a.active{background:var(--brand);color:#171310;font-weight:600}
.sidenav .ico{width:1.2rem;text-align:center}
.sidenav-foot{margin-top:auto;font-size:.62rem;color:#6e6450;padding:.8rem .5rem;line-height:1.5}
.backdrop{display:none}

.main{padding:1.6rem 4vw 3rem;max-width:1180px}
body:not(.wide) .main{margin-left:216px}
.wide .main{max-width:none}
.foot{padding:1.2rem 4vw 2.4rem;color:var(--muted);font-size:.78rem;line-height:1.6}
body:not(.wide) .foot{margin-left:216px}

.pagehead{margin-bottom:1.4rem}
.pagehead h1{font-size:1.65rem}
.pagehead .sub{margin-top:.3rem}

/* ---------- cards / tiles / alerts ---------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1.2rem 1.3rem;margin-bottom:1.2rem}
.tilegrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.8rem;margin:1rem 0}
.tile{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1rem 1.1rem}
.tile .big{font-size:1.9rem;font-family:var(--serif);color:var(--ink)}
.tile .lbl{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.tile.ok .big{color:var(--ok)} .tile.warn .big{color:var(--warn)} .tile.bad .big{color:var(--bad)}
.alert{padding:.8rem 1rem;border-radius:10px;margin:0 0 1rem;font-size:.92rem}
.alert.ok{background:var(--okbg);color:var(--ok);border:1px solid #c4ddb9}
.alert.bad{background:var(--badbg);color:var(--bad);border:1px solid #eac3b6}
.alert.info{background:#e7eef5;color:var(--accent);border:1px solid #c3d5e5}

/* ---------- forms ---------- */
label.f{display:block;margin-bottom:.85rem;font-size:.88rem;color:var(--ink2);font-weight:600}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=time],select,textarea{
  display:block;width:100%;margin-top:.28rem;padding:.62rem .75rem;font:inherit;color:var(--ink);
  background:#fff;border:1px solid var(--line2);border-radius:9px}
textarea{min-height:88px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid var(--brand);outline-offset:1px}
.btn{display:inline-block;padding:.6rem 1.25rem;border-radius:9px;border:1px solid var(--line2);
  background:#fff;color:var(--ink);font:inherit;font-weight:600;cursor:pointer;text-decoration:none}
.btn:hover{border-color:var(--brand);text-decoration:none}
.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.primary:hover{background:var(--brand2)}
.btn.danger{background:var(--bad);border-color:var(--bad);color:#fff}
.btn.ghost{background:transparent;border-color:transparent;color:var(--accent)}
.btn.block{display:block;width:100%;text-align:center}
.btn.sm{padding:.32rem .7rem;font-size:.82rem;font-weight:500}
.btn.lg{padding:.85rem 1.5rem;font-size:1.05rem}
.formrow{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}
@media(max-width:640px){.formrow{grid-template-columns:1fr}}

/* ---------- tables ---------- */
.tablewrap{overflow-x:auto}
table.list{width:100%;border-collapse:collapse;font-size:.9rem;background:var(--panel)}
table.list th{ text-align:left;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);
  padding:.55rem .7rem;border-bottom:2px solid var(--line)}
table.list td{padding:.6rem .7rem;border-bottom:1px solid var(--line);vertical-align:top}
table.list tr:hover td{background:#faf7ee}
.pill{display:inline-block;padding:.12rem .55rem;border-radius:99px;font-size:.72rem;font-weight:700;letter-spacing:.03em}
.pill.ok{background:var(--okbg);color:var(--ok)} .pill.warn{background:var(--warnbg);color:var(--warn)}
.pill.bad{background:var(--badbg);color:var(--bad)} .pill.mut{background:#eee8d8;color:var(--muted)}
.pill.acc{background:#e7eef5;color:var(--accent)}

/* ---------- auth / landing ---------- */
.centered-body{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:1.2rem}
.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:2rem 2.1rem;width:100%;max-width:430px;margin:0 auto}
.auth-card h1{font-size:1.4rem;margin-bottom:.4rem}
.auth-logo{text-align:center;margin-bottom:1rem}
.auth-logo img{height:44px}
.auth-alt{text-align:center;margin-top:1rem;font-size:.88rem;color:var(--ink2)}
.hero{max-width:1000px;margin:0 auto 2rem;text-align:center;padding:2.2rem 1rem 1.6rem}
.hero h1{font-size:clamp(1.8rem,4.5vw,2.7rem)}
.hero .kicker{font-size:.72rem;letter-spacing:.35em;text-transform:uppercase;color:var(--brand);margin-bottom:.8rem}
.hero p{max-width:64ch;margin:0.8rem auto;color:var(--ink2)}
.featuregrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;max-width:1000px;margin:0 auto 2rem;padding:0 1rem}
.feature{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:1.2rem}
.feature h3{font-size:1.05rem;margin-bottom:.4rem;color:var(--brand2)}
.feature p{font-size:.9rem;color:var(--ink2)}
.ctarow{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap;margin:1.4rem 0}

/* ---------- dashboard ---------- */
.step{display:flex;gap:.7rem;align-items:flex-start;padding:.5rem 0;border-bottom:1px dashed var(--line)}
.step .n{flex:0 0 auto;width:26px;height:26px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem}
.step.done .n{background:var(--ok)}
.reminder{display:flex;gap:.7rem;justify-content:space-between;align-items:center;padding:.55rem .2rem;border-bottom:1px dashed var(--line);font-size:.92rem}
.reminder .when{color:var(--muted);font-size:.8rem;white-space:nowrap}
.reminder.overdue .title{color:var(--bad);font-weight:700}

/* ---------- CDD wizard ---------- */
.wiz{max-width:760px;margin:0 auto}
.wizsteps{display:flex;gap:.3rem;margin-bottom:1.1rem;flex-wrap:wrap}
.wizstep{flex:1;min-width:70px;text-align:center;font-size:.68rem;letter-spacing:.04em;color:var(--muted);padding:.3rem 0;border-bottom:3px solid var(--line)}
.wizstep.cur{color:var(--ink);border-color:var(--brand);font-weight:700}
.wizstep.done{color:var(--ok);border-color:var(--ok)}
.bigopts{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.6rem;margin:.8rem 0}
.bigopt{border:2px solid var(--line2);border-radius:12px;background:#fff;padding:1rem .6rem;text-align:center;font-weight:700;cursor:pointer;font-size:.95rem}
.bigopt:hover{border-color:var(--brand)}
.bigopt.sel{border-color:var(--brand);background:#fbf4dd;box-shadow:0 0 0 3px rgba(176,141,30,.18)}
.bigopt .sub{display:block;font-weight:400;font-size:.72rem;color:var(--muted);margin-top:.15rem}
.flaggrp{margin:1rem 0}
.flaggrp h3{font-size:.95rem;color:var(--ink2);border-bottom:2px solid var(--line2);padding-bottom:.25rem;margin-bottom:.5rem}
.flag{display:flex;gap:.7rem;align-items:flex-start;padding:.7rem .8rem;border:1px solid var(--line);border-radius:10px;background:#fff;margin-bottom:.5rem;cursor:pointer}
.flag:hover{border-color:var(--brand)}
.flag.on{border-color:var(--bad);background:var(--badbg)}
.flag .box{flex:0 0 auto;width:26px;height:26px;border-radius:7px;border:2px solid var(--line2);display:flex;align-items:center;justify-content:center;font-weight:900;color:#fff;margin-top:.05rem}
.flag.on .box{background:var(--bad);border-color:var(--bad)}
.flag .t{font-size:.93rem}
.duties{border:2px solid var(--accent);background:#eef3f8;border-radius:12px;padding:1rem 1.1rem;margin:1rem 0}
.duties.bad{border-color:var(--bad);background:var(--badbg)}
.duties h3{font-size:.85rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-bottom:.5rem}
.duties.bad h3{color:var(--bad)}
.duties li{margin-left:1.2rem;margin-bottom:.35rem;font-size:.93rem}
.photobox{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:.8rem 0}
@media(max-width:520px){.photobox{grid-template-columns:1fr}}
.photoctl{border:2px dashed var(--line2);border-radius:12px;padding:.9rem;text-align:center;background:#fff}
.photoctl img.preview{max-height:150px;border-radius:8px;margin-bottom:.5rem}
.qrwrap{text-align:center;padding:1rem}
.qrwrap .qrbox{display:inline-block;background:#fff;padding:12px;border:1px solid var(--line2);border-radius:12px}
.selffill-intro{font-size:.95rem;color:var(--ink2);margin-bottom:1rem}

/* ---------- chat / IPCC ---------- */
.ipcc-layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:1.2rem;align-items:start}
@media(max-width:980px){.ipcc-layout{grid-template-columns:1fr}}
.chatbox{background:var(--panel);border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;height:calc(100vh - 220px);min-height:480px}
.chatlog{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.7rem}
.msg{max-width:88%;padding:.7rem .95rem;border-radius:14px;font-size:.93rem;white-space:pre-wrap;word-wrap:break-word}
.msg.bot{background:#efe9d6;border:1px solid var(--line2);border-top-left-radius:4px;align-self:flex-start}
.msg.user{background:var(--accent);color:#fff;border-top-right-radius:4px;align-self:flex-end}
.msg.sys{background:transparent;color:var(--muted);font-size:.78rem;align-self:center;text-align:center}
.chatctl{border-top:1px solid var(--line);padding:.7rem;display:flex;gap:.5rem}
.chatctl input{flex:1;margin-top:0}
.chips{display:flex;gap:.4rem;flex-wrap:wrap;padding:0 .7rem .6rem}
.chip{border:1px solid var(--line2);background:#fff;border-radius:99px;padding:.3rem .75rem;font-size:.8rem;cursor:pointer;font-weight:600;color:var(--ink2)}
.chip:hover{border-color:var(--brand);color:var(--ink)}
.chip.c{border-color:var(--brand);background:#fbf4dd;color:var(--ink)}
.docpanel{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:1rem;position:sticky;top:70px;max-height:calc(100vh - 200px);overflow-y:auto}
.docpanel h3{font-size:.95rem;margin-bottom:.5rem}
.sect{border-radius:9px;padding:.5rem .7rem;margin-bottom:.4rem;font-size:.85rem;border:1px solid var(--line);cursor:pointer;display:flex;justify-content:space-between;gap:.5rem;align-items:center}
.sect .dot{width:11px;height:11px;border-radius:50%;flex:0 0 auto}
.sect.s-answered{background:var(--okbg);border-color:#c4ddb9}
.sect.s-default{background:var(--warnbg);border-color:#e8d5a8}
.sect.s-missing{background:var(--badbg);border-color:#eac3b6}
.sect.s-partial{background:var(--warnbg);border-color:#e8d5a8}
.fld{display:flex;justify-content:space-between;gap:.5rem;padding:.32rem .5rem;font-size:.78rem;border-bottom:1px dashed var(--line)}
.fld .st{flex:0 0 auto;font-size:.68rem;font-weight:700}
/* #213: the recorded value shows under its field row (click to re-edit) */
.fldval{font-size:.74rem;padding:.05rem .5rem .38rem 1rem;border-bottom:1px dashed var(--line);cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.f-answered{color:var(--ok)} .f-default{color:var(--warn)} .f-missing{color:var(--bad)}
.progbar{height:9px;background:var(--line);border-radius:6px;overflow:hidden;display:flex;margin:.6rem 0}
.progbar div{height:100%}
.progbar .p-ok{background:var(--ok)} .progbar .p-warn{background:#d9a441} .progbar .p-bad{background:var(--bad)}

/* ---------- training ---------- */
.modlist .mod{display:flex;gap:1rem;align-items:center;padding:.9rem;border:1px solid var(--line);border-radius:12px;background:var(--panel);margin-bottom:.7rem}
.mod .ring{flex:0 0 auto;width:46px;height:46px}
.mod .mt{min-width:0}
.mod h3{font-size:1rem}
.lesson{max-width:820px;margin:0 auto}
.block{margin-bottom:1.6rem}
.block h3{font-size:1.2rem;margin-bottom:.55rem}
.block p{margin-bottom:.8rem;color:var(--ink2)}
.callout{border-left:4px solid var(--brand);background:#faf5e4;padding:.9rem 1.1rem;border-radius:0 10px 10px 0;margin:1rem 0;font-size:.94rem}
.callout.act{border-color:var(--bad);background:var(--badbg)}
.callout.law{border-color:var(--accent);background:#eef3f8}
.callout b.tag{display:block;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--brand2);margin-bottom:.3rem}
.flip{cursor:pointer}
.flip .inner{position:relative;width:100%;min-height:110px;transition:transform .5s;transform-style:preserve-3d}
.flip.on .inner{transform:rotateY(180deg)}
.flip .face{position:absolute;inset:0;backface-visibility:hidden;border-radius:12px;padding:1rem;display:flex;align-items:center;justify-content:center;text-align:center;font-size:.95rem}
.flip .front{background:#efe9d6;border:1px solid var(--line2)}
.flip .back{background:var(--accent);color:#fff;transform:rotateY(180deg)}
.scenario{border:1px solid var(--line2);border-radius:12px;background:#fff;padding:1rem 1.1rem}
.scenario .stem{font-weight:600;margin-bottom:.7rem}
.opt{display:block;border:2px solid var(--line2);border-radius:10px;padding:.7rem .9rem;margin-bottom:.5rem;cursor:pointer;background:#fff}
.opt:hover{border-color:var(--brand)}
.opt.sel{border-color:var(--accent);background:#eef3f8}
.opt.right{border-color:var(--ok);background:var(--okbg)}
.opt.wrong{border-color:var(--bad);background:var(--badbg)}
.feedback{border-radius:10px;padding:.8rem 1rem;margin-top:.6rem;font-size:.92rem;display:none}
.feedback.show{display:block}
.feedback.ok{background:var(--okbg);color:var(--ok)}
.feedback.bad{background:var(--badbg);color:var(--bad)}
.quizq{margin-bottom:1.4rem}
.quizq .q{font-weight:600;margin-bottom:.6rem}
.timer{position:sticky;top:64px;z-index:5;background:var(--headerbg);color:#e8c766;border-radius:9px;padding:.5rem .9rem;font-weight:700;display:inline-block;margin-bottom:1rem;font-variant-numeric:tabular-nums}
.timer.low{color:#f2b8a8}
.credcode{font-family:Consolas,monospace;font-size:1.25rem;background:#211b13;color:#e8c766;padding:.7rem 1.1rem;border-radius:10px;display:inline-block;letter-spacing:.05em}

/* ---------- misc ---------- */
.kv{width:100%;border-collapse:collapse;font-size:.9rem}
.kv th{text-align:left;width:38%;vertical-align:top;padding:.5rem .6rem;border-bottom:1px solid var(--line);color:var(--ink2);font-weight:600}
.kv td{padding:.5rem .6rem;border-bottom:1px solid var(--line)}
.docgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.8rem}
.docitem{border:1px solid var(--line);border-radius:10px;background:var(--panel);padding:.8rem .9rem;font-size:.85rem}
.docitem b{display:block;margin-bottom:.25rem}
.split{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
@media(max-width:760px){.split{grid-template-columns:1fr}}
.tinycam{display:none}
.showcam .tinycam{display:block}

/* mobile nav */
@media(max-width:880px){
  .sidenav{transform:translateX(-105%);transition:transform .25s ease;width:250px;top:56px}
  body.navopen .sidenav{transform:none;box-shadow:0 10px 30px rgba(0,0,0,.35)}
  body.navopen .backdrop{display:block;position:fixed;inset:56px 0 0 0;background:rgba(20,16,10,.45);z-index:45}
  body:not(.wide) .main,body:not(.wide) .foot{margin-left:0}
  .navtoggle{display:block}
  .brandname{display:none}
  .main{padding-top:1.1rem}
  .uname{display:none}
}
@media print{
  .topbar,.sidenav,.foot,.navtoggle,.backdrop,.noprint{display:none !important}
  .main{margin:0;padding:0;max-width:none}
  body{background:#fff}
}

/* ---------- #200: wide pages overlapped the fixed sidenav (chat under nav) ---------- */
.wide .main{margin-left:216px}
.wide .foot{margin-left:216px}
@media(max-width:880px){ .wide .main,.wide .foot{margin-left:0} }

/* ---------- #199: training course cards ---------- */
.coursecards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-top:.8rem}
.coursecard{border:1px solid var(--line);border-radius:14px;background:var(--panel);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .15s ease,border-color .15s ease}
.coursecard:hover{box-shadow:0 6px 18px rgba(36,31,20,.10);border-color:var(--line2)}
.coursecard.done{border-color:var(--ok)}
.cc-cover{position:relative;height:86px}
.cc-cover svg{display:block;width:100%;height:100%}
/* #221: real staff photo covers sit above the gradient fallback */
.cc-cover.hasphoto{height:120px}
.cc-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.cc-level{position:absolute;right:.6rem;bottom:.6rem;background:rgba(23,19,16,.72);color:#e8c766;font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;padding:.18rem .5rem;border-radius:99px}
.cc-body{padding:.8rem .95rem .4rem;flex:1}
.cc-body h3{font-size:1.02rem;margin-bottom:.25rem}
.cc-meta{display:flex;gap:.4rem;flex-wrap:wrap;margin-top:.55rem}
.chipmeta{font-size:.72rem;color:var(--ink2);background:var(--bg);border:1px solid var(--line);border-radius:99px;padding:.16rem .55rem;white-space:nowrap}
.cc-cta{padding:.6rem .95rem .95rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}
@media(max-width:520px){ .coursecards{grid-template-columns:1fr} }

/* ---------- #221: my-training cards (3 up on desktop) ---------- */
.mytraincards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem;margin-top:.8rem}
.mytrain{border:1px solid var(--line);border-radius:14px;background:var(--panel);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .15s ease,border-color .15s ease}
.mytrain:hover{box-shadow:0 6px 18px rgba(36,31,20,.10);border-color:var(--line2)}
.mytrain.done{border-color:var(--ok)}
.mt-cover{position:relative;height:110px;background:linear-gradient(135deg,#8a6f1d,#b08d1e)}
.mt-cover.hasphoto{background:#241f16}
.mt-cover .cc-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.mt-cover .ring{position:absolute;right:.6rem;bottom:.6rem;width:46px;height:46px;filter:drop-shadow(0 1px 3px rgba(0,0,0,.5))}
.mt-cover .mt-status{position:absolute;left:.6rem;top:.6rem;font-size:.66rem}
.mt-body{padding:.8rem .95rem .4rem;flex:1}
.mt-body h3{font-size:.98rem;margin-bottom:.25rem}
.mt-body p{margin:.2rem 0;font-size:.82rem}
.mt-cta{padding:.6rem .95rem .95rem;display:flex;align-items:center;justify-content:flex-end}
@media(max-width:520px){ .mytraincards{grid-template-columns:1fr} }

/* ---------- #218: P&P fill-in grid ---------- */
.ppfields{display:flex;flex-direction:column;gap:.45rem;margin-top:.3rem}
.ppfrow{display:grid;grid-template-columns:150px 1fr;gap:.6rem;align-items:center}
.ppfkey{font-family:monospace;font-size:.82rem;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ppfrow input{min-width:0}
@media(max-width:520px){ .ppfrow{grid-template-columns:1fr} .ppfkey{font-size:.78rem} }

/* ---------- #198: customer self-fill QR panel + signature pad ---------- */
.askcustomer{border:1px solid var(--brand);border-radius:14px;background:linear-gradient(180deg,#faf5e4,#fffdf8);padding:1rem 1.1rem;margin-bottom:1rem}
.askcustomer h3{font-size:1.05rem;margin-bottom:.3rem}
.qrwrap{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;margin-top:.6rem}
.qrbox{background:#fff;border:1px solid var(--line);border-radius:10px;padding:.5rem;width:172px;height:172px;display:flex;align-items:center;justify-content:center}
.qrbox svg{width:100%;height:100%}
.signpad{border:2px dashed var(--line2);border-radius:12px;background:#fff;touch-action:none;display:block;width:100%;height:150px}
.signctl{display:flex;gap:.5rem;margin-top:.4rem;align-items:center;flex-wrap:wrap}

/* ---------- AI chat extras ---------- */
.msg.typing { opacity: .55; animation: amlpulse 1.2s ease-in-out infinite; }
@keyframes amlpulse { 50% { opacity: .2; } }
.chip.fill { border-style: dashed; }

/* #208: red-flag tiles — fewer, bigger, icon-led, two columns */
.flagtiles{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem;margin:.8rem 0}
@media(max-width:560px){.flagtiles{grid-template-columns:repeat(2,1fr)}}
.flagtile{display:flex;flex-direction:column;align-items:center;gap:.4rem;text-align:center;padding:.9rem .6rem;
  border:2px solid var(--line2);border-radius:14px;background:#fff;cursor:pointer;font-weight:600;font-size:.88rem;line-height:1.25}
.flagtile:hover{border-color:var(--brand)}
.flagtile .ic{font-size:1.9rem;line-height:1}
.flagtile.on{border-color:var(--bad);background:var(--badbg);box-shadow:0 0 0 3px rgba(168,64,46,.15)}
.flagtile.on::after{content:'⚑';color:var(--bad);font-size:.8rem}

/* #206: general AML assistant widget */
#amlasstbtn{position:fixed;right:18px;bottom:18px;z-index:60;width:52px;height:52px;border-radius:50%;
  background:var(--brand);color:#171310;border:none;font-size:1.5rem;cursor:pointer;box-shadow:0 4px 14px rgba(0,0,0,.25);align-items:center;justify-content:center;display:flex}
#amlasstbtn:hover{transform:scale(1.06)}
#amlasst{display:none;position:fixed;right:14px;bottom:14px;z-index:61;width:min(400px,94vw);height:min(520px,78vh);
  flex-direction:column;background:var(--panel);border:2px solid var(--line2);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.3);overflow:hidden}
#amlasst header{display:flex;align-items:center;justify-content:space-between;padding:.6rem .8rem;background:var(--ink);color:#fff}
#amlasst header b{font-size:.95rem}
#amlasstx{background:none;border:none;color:#fff;font-size:1.1rem;cursor:pointer}
#amlasst .hint{padding:.4rem .8rem;font-size:.75rem;color:var(--muted);border-bottom:1px solid var(--line)}
#amlasstlog{flex:1;overflow-y:auto;padding:.7rem;display:flex;flex-direction:column;gap:.5rem;background:var(--bg)}
#amlasst .amsg{max-width:86%;padding:.5rem .7rem;border-radius:10px;font-size:.88rem;line-height:1.45;white-space:pre-wrap}
#amlasst .amsg.user{align-self:flex-end;background:var(--brand);color:#171310;font-weight:600}
#amlasst .amsg.bot{align-self:flex-start;background:#fff;border:1px solid var(--line2)}
#amlasst .amsg.typing{opacity:.6}
#amlasst form{display:flex;gap:.4rem;padding:.5rem;border-top:1px solid var(--line);background:var(--panel)}
#amlasst input{flex:1;border:1px solid var(--line2);border-radius:8px;padding:.5rem .6rem;font-size:.9rem}
