/* Copper Leaf Hub — Account Manager views (round 1) */
.amhead{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.amhead h2{font-family:var(--font-brand);font-weight:800;font-size:20px;margin:0;color:var(--text-heading);letter-spacing:-.01em}
.amhead .sp{flex:1}
.amhead .crumb{background:none;border:none;color:var(--cl-orange);font-family:var(--font-brand);font-weight:700;font-size:13px;cursor:pointer;padding:0}
.aminp,.amsel{font-family:var(--font-body);font-size:13px;padding:8px 10px;border:1px solid var(--grey-200);border-radius:var(--radius-sm);background:var(--card);color:var(--text-body);min-width:0}
.aminp:focus,.amsel:focus{outline:2px solid var(--cl-orange);outline-offset:1px;border-color:transparent}
.aminp.search{width:220px}
.amgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.amcc{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:10px;cursor:pointer;border:1px solid transparent;transition:box-shadow .12s,transform .12s}
.amcc:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(25,35,65,.14);border-color:var(--grey-100)}
.amcc .head{display:flex;align-items:center;gap:12px}
.amcc h3{margin:0;font-size:15px;font-weight:700}
.amcc .meta{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}
.amlogo{width:44px;height:44px;border-radius:10px;background:var(--grey-100);display:flex;align-items:center;justify-content:center;font-family:var(--font-brand);font-weight:800;color:var(--am-ink);overflow:hidden;flex:none}
.amlogo img{width:100%;height:100%;object-fit:contain}
.amstats{display:flex;gap:14px;font-family:var(--font-mono);font-size:11px;color:var(--grey-700)}
.amstats b{color:var(--am-ink);font-weight:700}
.amsec{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:18px 22px;margin-bottom:16px}
.amsec h3{font-family:var(--font-brand);font-weight:800;font-size:14px;margin:0 0 12px;color:var(--text-heading);display:flex;align-items:center;gap:10px}
.amsec h3 .sp{flex:1}
.amsec h3 small{font-family:var(--font-mono);font-weight:400;font-size:10.5px;color:var(--text-muted);text-transform:none;letter-spacing:0}
.amtbl{width:100%;border-collapse:collapse;font-size:13px}
.amtbl th{text-align:left;font-family:var(--font-mono);font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);padding:6px 8px;border-bottom:1px solid var(--grey-100);font-weight:600;white-space:nowrap}
.amtbl td{padding:6px 8px;border-bottom:1px solid var(--grey-100);vertical-align:middle}
.amtbl tr:last-child td{border-bottom:none}
.amtbl td .aminp,.amtbl td .amsel{width:100%;padding:5px 7px;font-size:12.5px;border-color:transparent;background:transparent}
.amtbl td .aminp:hover,.amtbl td .amsel:hover{border-color:var(--grey-200);background:var(--card)}
.amtbl td .aminp:focus,.amtbl td .amsel:focus{background:var(--card)}
.amtbl td.num{text-align:right;font-family:var(--font-mono);font-size:12px;white-space:nowrap}
.amtbl td.num .aminp{text-align:right;font-family:var(--font-mono);width:96px}
.amtbl td.act{white-space:nowrap;text-align:right}
.amtbl a{color:var(--cl-orange);font-weight:600;text-decoration:none;word-break:break-all}
.amtbl a:hover{text-decoration:underline}
.amtbl .muted{color:var(--text-muted);font-family:var(--font-mono);font-size:11px}
.amx{background:none;border:none;color:var(--grey-400);cursor:pointer;font-size:15px;padding:2px 6px;border-radius:6px;line-height:1}
.amx:hover{color:var(--cl-crimson);background:var(--grey-50)}
.amedit{background:none;border:none;color:var(--grey-400);cursor:pointer;font-size:13px;padding:2px 6px;border-radius:6px}
.amedit:hover{color:var(--am-ink);background:var(--grey-50)}
.amadd{background:none;border:1px dashed var(--grey-300);color:var(--grey-600);font-family:var(--font-brand);font-weight:700;font-size:12px;padding:7px 12px;border-radius:var(--radius-sm);cursor:pointer;margin-top:8px}
.amadd:hover{border-color:var(--cl-orange);color:var(--cl-orange)}
.ambtn{padding:8px 14px;border-radius:var(--radius-md);border:none;font-family:var(--font-brand);font-size:12.5px;font-weight:700;background:var(--gradient-orange);color:#fff;cursor:pointer}
.ambtn.ghost{background:none;border:1px solid var(--grey-300);color:var(--grey-700)}
.ambtn.danger{background:none;border:1px solid var(--cl-crimson);color:var(--cl-crimson)}
.ambtn:disabled{opacity:.5;cursor:default}
.amchip{display:inline-block;padding:2px 9px;border-radius:20px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;line-height:16px;background:var(--grey-100);color:var(--grey-700);white-space:nowrap}
.amchip.retainer{background:var(--cl-navy);color:#fff}
.amchip.adhoc{background:var(--card);border:1px solid var(--am-ink);color:var(--am-ink)}
.amst{display:inline-block;padding:2px 9px;border-radius:20px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;line-height:16px;color:#fff;white-space:nowrap}
.amtbl select.amst{appearance:none;-webkit-appearance:none;border:none;cursor:pointer;padding-right:14px;font-size:9.5px}
.amst.s0{background:#9aa0ad}.amst.s1{background:#4c6ef5}.amst.s2{background:#ff7800}.amst.s3{background:#8900b5}.amst.s4{background:#0e9f9e}.amst.s5{background:#f22a5c}.amst.s6{background:#6b5b3e}.amst.s7{background:#2e9e5b}
.ampl{display:grid;grid-template-columns:270px 1fr;gap:18px;align-items:start}
@media(max-width:1000px){.ampl{grid-template-columns:1fr}}
.amlist{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:12px;position:sticky;top:12px;max-height:calc(100vh - 40px);overflow:auto}
.amlist .flt{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.amli{padding:9px 10px;border-radius:var(--radius-sm);cursor:pointer;display:flex;flex-direction:column;gap:2px;border:1px solid transparent}
.amli:hover{background:var(--grey-50)}
.amli.on{background:var(--am-sel-bg,#fff3e8);border-color:var(--am-sel-edge,#ffd1ad)}
/* 1008: the chosen project in dark mode - a tint of the accent, not a cream slab the pale text vanished into */
:root[data-theme="dark"]{--am-sel-bg:rgba(255,120,0,.14);--am-sel-edge:rgba(255,120,0,.45)}
:root[data-theme="dark"] tr.amhl td{background:rgba(255,120,0,.10)}
:root[data-theme="dark"] .amorow.amooffwarn,:root[data-theme="dark"] .amolenswarn,:root[data-theme="dark"] tr.ampurch.needs > td{background:rgba(255,120,0,.12);border-color:rgba(255,120,0,.35)}
.amli b{font-size:13px;color:var(--am-ink)}
.amli span{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}
.amli .bar{height:4px;border-radius:2px;background:var(--grey-100);margin-top:4px;overflow:hidden}
.amli .bar i{display:block;height:100%;background:var(--cl-orange)}
.amph{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}
.amph h2{margin:0;font-family:var(--font-brand);font-weight:800;font-size:22px;color:var(--text-heading)}
.amph .sub{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);margin-top:4px;display:flex;gap:12px;flex-wrap:wrap}
.amkpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0 0}
.amkpi{background:var(--grey-50);border-radius:var(--radius-md);padding:10px 14px}
.amkpi .v{font-family:var(--font-brand);font-weight:800;font-size:20px;color:var(--am-ink)}
.amkpi .l{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.amkpi .bar{height:6px;border-radius:3px;background:var(--grey-100);margin-top:6px;overflow:hidden}
.amkpi .bar i{display:block;height:100%;background:linear-gradient(90deg,#ff7800,#ffa24d)}
.amasset{border:1px solid var(--grey-100);border-radius:var(--radius-md);padding:12px 14px;margin-bottom:12px}
.amasset .ah{display:flex;align-items:center;gap:10px;margin-bottom:6px;flex-wrap:wrap}
.amasset .ah .aname{font-family:var(--font-brand);font-weight:800;font-size:14px;color:var(--am-ink);border:none;background:none;padding:3px 6px;border-radius:6px;min-width:200px;flex:1}
.amasset .ah .aname:hover{background:var(--grey-50)}
.amasset .ah .aname:focus{outline:2px solid var(--cl-orange);background:var(--card)}
.amasset .ah .adue{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);display:flex;align-items:center;gap:6px}
.amasset .ah .adue input{font-family:var(--font-mono);font-size:11px;border:1px solid transparent;border-radius:6px;padding:3px 6px;background:none}
.amasset .ah .adue input:hover{border-color:var(--grey-200)}
.amasset .amtbl td .aminp.tname{font-weight:600;color:var(--am-ink)}
.amasset .amtbl td input[type=date]{font-family:var(--font-mono);font-size:11.5px}
.amcard{width:min(560px,94vw)}
.amcard .f{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}
.amcard .f label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.amcard .f .aminp,.amcard .f .amsel,.amcard .f textarea{width:100%}
.amcard textarea{font-family:var(--font-body);font-size:13px;padding:8px 10px;border:1px solid var(--grey-200);border-radius:var(--radius-sm);min-height:80px;resize:vertical;background:var(--card);color:var(--text-body)}
.amcard textarea:focus{outline:2px solid var(--cl-orange);outline-offset:1px;border-color:transparent}
.amcard .row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.amcard .row3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.amcard .hmrow{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.amcard .hmrow .danger{margin-right:auto}
.amcard .mini{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);margin:6px 0 10px;line-height:1.5}
.amcard .linkrow{display:flex;gap:6px;align-items:center;margin-bottom:6px;font-size:12.5px}
.amcard .linkrow a{color:var(--cl-orange);font-weight:600;text-decoration:none;flex:1;word-break:break-all}
.amcard .cbx{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12.5px}
.amcard .cbx label{display:flex;gap:5px;align-items:center;font-family:var(--font-body);text-transform:none;letter-spacing:0;font-size:12.5px;color:var(--text-body)}
.amtabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.amtabs button{padding:9px 16px;border-radius:20px;border:1px solid var(--grey-200);background:var(--card);font-family:var(--font-brand);font-weight:700;font-size:12.5px;color:var(--grey-600);cursor:pointer}
.amtabs button.on{background:var(--gradient-orange);border-color:transparent;color:#fff}
.amnote{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);line-height:1.6}
.amnote b{color:var(--am-ink)}
.amempty{font-family:var(--font-mono);font-size:11.5px;color:var(--text-muted);padding:14px 0}
.amtest{display:inline-block;background:#fff3e8;color:#c25b00;border:1px solid #ffd1ad;border-radius:20px;padding:2px 10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase}
.amgrp{display:flex;flex-wrap:wrap;gap:4px}
.amgrp label{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;background:var(--grey-50);border-radius:14px;padding:2px 8px;cursor:pointer}
.amrem{font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}
.amtbl.fixed{table-layout:fixed}
.amtbl.fixed td{overflow:hidden}
.amtbl.fixed td .aminp,.amtbl.fixed td .amsel{width:100%;box-sizing:border-box}
.amtbl.fixed td.num .aminp{width:100%}
.amtbl.fixed td input[type=date]{padding-left:4px;padding-right:0}
.amtbl.fixed td,.amtbl.fixed th{padding-left:5px;padding-right:5px}
.amtbl.fixed input[type=number]{-moz-appearance:textfield}
.amtbl.fixed input[type=number]::-webkit-inner-spin-button,.amtbl.fixed input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.amtbl.fixed td.act{padding:0}
.amver{font-family:var(--font-mono);font-size:10px;color:rgba(255,255,255,.45);padding:6px 0 0 2px;letter-spacing:.05em}
/* a version that no longer describes what is running says so, quietly but not
   invisibly - the point is that somebody notices without being interrupted */
.amver.stale{color:var(--cl-orange)}
#adminBody select[data-amrole]{min-width:140px}
.mopts .amclr{display:block;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--grey-100);color:var(--cl-orange);font-family:var(--font-brand);font-weight:700;font-size:12px;padding:4px 2px 6px;margin-bottom:4px;cursor:pointer}
.mopts .amclr:disabled{color:var(--grey-400);cursor:default}
.amsoon{background:repeating-linear-gradient(135deg,#fff,#fff 12px,#fafafa 12px,#fafafa 24px);border:1px dashed var(--grey-300);box-shadow:none;opacity:.85}
.amsoon h3{color:var(--grey-600)}
.amsoonchip{display:inline-block;background:var(--grey-100);color:var(--grey-600);border-radius:20px;padding:2px 10px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:600}
.amnavsep{margin:14px 0 4px;padding:8px 12px 4px;border-top:1px solid rgba(255,255,255,.14);display:flex;flex-direction:column;gap:1px}
.amnavsep span{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.45)}
.amnavsep small{font-family:var(--font-mono);font-size:9px;color:#ffb070;letter-spacing:.04em}
@media(max-width:900px){.amnavsep{padding:6px 0 2px}.amnavsep span,.amnavsep small{display:none}}
.amdeps{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:1px 0 0 7px}
.amdeplbl{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase}
.amdep{display:inline-flex;align-items:center;gap:3px;font-family:var(--font-mono);font-size:10px;background:#fff3e8;color:#c25b00;border:1px solid #ffd1ad;border-radius:10px;padding:0 7px;line-height:16px;cursor:pointer;white-space:nowrap;max-width:240px;overflow:hidden;text-overflow:ellipsis}
.amdep.done{background:#eaf7ee;color:#2e7d4a;border-color:#bfe6cc}
.amdepadd{background:none;border:none;color:var(--grey-400);font-family:var(--font-mono);font-size:10px;cursor:pointer;padding:0 4px;border-radius:6px;line-height:16px}
.amdepadd:hover{color:var(--cl-orange);background:var(--grey-50)}
tr.amblocked td .tname{color:var(--grey-500)}
tr.amhl td{background:#fff8f0}
.ambtn.small{padding:5px 10px;font-size:11.5px}
.ambrief{margin-top:10px;border-top:1px dashed var(--grey-100);padding-top:8px}
.ambrief .bh{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ambrief .bh b{font-family:var(--font-brand);font-size:12.5px;color:var(--am-ink)}
.ambrief .bh .sp{flex:1}
.bbody,.bedit{font-size:13.5px;line-height:1.55;color:var(--text-body);max-width:760px}
.bbody h1,.bedit h1{font-family:var(--font-brand);font-size:18px;font-weight:800;margin:12px 0 6px;color:var(--am-ink)}
.bbody h2,.bedit h2{font-family:var(--font-brand);font-size:15px;font-weight:700;margin:10px 0 4px;color:var(--am-ink)}
.bbody h3,.bedit h3{font-size:13.5px;font-weight:700;margin:8px 0 3px}
.bbody p,.bedit p{margin:0 0 8px}
.bbody ul,.bbody ol,.bedit ul,.bedit ol{margin:0 0 8px 22px}
.bbody a,.bedit a{color:var(--cl-orange);font-weight:600;text-decoration:none}
.bbody a:hover{text-decoration:underline}
.bbody blockquote,.bedit blockquote{border-left:3px solid var(--grey-200);margin:8px 0;padding:2px 12px;color:var(--grey-600)}
/* GQ: a picture is a block of its own - it sits between lines, never beside them */
.bbody figure,.bedit figure{margin:10px 0;position:relative;display:block;max-width:100%;clear:both}
.bbody figure img,.bedit figure img{display:block;max-width:100%}
.bcolours{display:inline-flex;gap:3px;align-items:center;margin:0 2px}
.bcolours button[data-colour]{width:16px;height:16px;padding:0;border-radius:50%;border:1px solid rgba(0,0,0,.15)}
.bcolours button[data-colour=""]{width:auto;border-radius:4px;padding:0 5px;font-weight:700;background:var(--card)}
.bbody img,.bedit img{max-width:100%;max-height:420px;border-radius:8px;display:block;border:1px solid var(--grey-100)}
.bedit{min-height:140px;border:1px solid var(--grey-200);border-radius:var(--radius-md);padding:12px 14px;background:var(--card);outline:none}
.bedit:focus{border-color:var(--cl-orange)}
.bedit.dropready{outline:2px dashed var(--cl-orange);outline-offset:2px}
.bedit figure.bimg{padding-bottom:4px}
.bimgbar{position:absolute;top:6px;right:6px;display:flex;gap:3px;opacity:0;transition:opacity .12s}
.bedit figure:hover .bimgbar{opacity:1}
.bimgbar button{background:rgba(25,35,65,.85);color:#fff;border:none;border-radius:6px;width:26px;height:24px;cursor:pointer;font-size:11px}
.bimgbar button:hover{background:var(--cl-orange)}
.btools{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:6px}
.btools button{background:var(--card);border:1px solid var(--grey-200);border-radius:6px;padding:4px 8px;font-size:12px;cursor:pointer;color:var(--grey-700);font-family:var(--font-body)}
.btools button:hover{border-color:var(--cl-orange);color:var(--cl-orange)}
.btools i{width:1px;height:18px;background:var(--grey-200);margin:0 4px}
.btools .bhint{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin-left:auto}
.amgantt{margin:8px 0 2px;position:relative;font-family:var(--font-mono);font-size:10px}
.amgantt .gh,.amgantt .gr{display:flex;align-items:center;height:20px}
.amgantt .gl{width:150px;flex:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:8px;color:var(--grey-700);font-family:var(--font-body);font-size:11.5px}
.amgantt .gt{flex:1;position:relative;height:100%;border-left:1px solid var(--grey-100)}
.amgantt .gh .gt{height:14px;color:var(--text-muted)}
.amgantt .gh .gt i{position:absolute;top:0;font-style:normal;font-size:9px;white-space:nowrap;padding-left:3px;border-left:1px solid var(--grey-200);height:14px;line-height:14px}
.amgantt .gr .gt{border-top:1px dotted var(--grey-100)}
.amgantt .gr .gt u{position:absolute;top:0;bottom:0;background:var(--grey-50);text-decoration:none}
.amgantt .gb{position:absolute;top:4px;height:12px;border-radius:6px;background:#9aa0ad;overflow:hidden;min-width:10px}
.amgantt .gb i{display:block;height:100%;background:rgba(0,0,0,.22)}
.amgantt .gb.s1{background:#4c6ef5}.amgantt .gb.s2{background:#ff7800}.amgantt .gb.s3{background:#8900b5}.amgantt .gb.s4{background:#0e9f9e}.amgantt .gb.s5{background:#f22a5c}.amgantt .gb.s6{background:#6b5b3e}.amgantt .gb.s7{background:#2e9e5b}
.amgantt .gb.blk{background:repeating-linear-gradient(135deg,#c9ccd4,#c9ccd4 4px,#e6e8ec 4px,#e6e8ec 8px)}
.amgantt .gb.late{box-shadow:0 0 0 2px #f22a5c}
.amgantt .gtoday{position:absolute;top:14px;bottom:0;width:0;border-left:2px solid var(--cl-crimson);pointer-events:none;z-index:2}
.t2wblk .t2wx{position:absolute;top:2px;right:3px;background:rgba(25,35,65,.55);color:#fff;border:none;border-radius:5px;width:16px;height:16px;font-size:9px;line-height:16px;padding:0;cursor:pointer;opacity:0;z-index:4}
.t2wblk:hover .t2wx{opacity:1}
.t2wblk .t2wx:hover{background:var(--cl-crimson)}

/* ---- 535: header search, collapsible sections, asset summary ---- */
.amhead .amhq{flex:0 1 240px;min-width:170px}
.ampl{grid-template-columns:230px 1fr}
.amcar{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px;line-height:1;padding:3px 4px;flex:0 0 auto;transition:transform .12s ease}
.amcar:hover{color:var(--cl-orange)}
.amasset>.amcolbody,.ambrief>.amcolbody,.amcolsec>.amcolbody{display:none}
.amasset.on>.amcolbody,.ambrief.on>.amcolbody,.amcolsec.on>.amcolbody{display:block}
.amasset.on>.ah>.amcar,.ambrief.on>.bh>.amcar,.amcolsec.on>h3>.amcar{transform:rotate(90deg)}
.amasset:not(.on)>.ah{margin-bottom:0}
.ambrief .bh .colhint{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}
.amasset .ah .amsum{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);display:flex;align-items:center;gap:5px;flex-wrap:wrap;flex:1 1 100%;order:5;margin-top:2px;padding-left:22px}
.amasset .ah .amsum b{color:var(--am-ink);font-weight:700}
.amasset .ah .amsum b.dim{color:var(--grey-300);font-weight:500}
.amasset .ah .amsum i{color:var(--grey-200);font-style:normal}
.amasset .ah .amsum .asbar{display:inline-block;width:56px;height:6px;border-radius:3px;background:var(--grey-100);overflow:hidden;margin-left:2px}
.amasset .ah .amsum .asbar i{display:block;height:100%;background:linear-gradient(90deg,#ff7800,#ffa24d)}
.ambtn.ghost.danger{border:1px solid var(--grey-300);color:var(--cl-crimson)}
.ambtn.ghost.danger:hover{border-color:var(--cl-crimson)}

/* ---- 536: test data marking ---- */
.amtestrow>td{background:repeating-linear-gradient(135deg,transparent,transparent 7px,rgba(137,0,181,.05) 7px,rgba(137,0,181,.05) 14px)}
.amtbl td .amtest{vertical-align:middle}

/* ---- 539: editable Gantt ---- */
.amsec h3 .gctl{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10px;color:var(--text-muted);font-weight:400}
.amsec h3 .gctl button[data-gnav]{background:none;border:1px solid var(--grey-200);border-radius:6px;width:22px;height:22px;line-height:1;cursor:pointer;color:var(--grey-700)}
.amsec h3 .gctl button[data-gnav]:hover{border-color:var(--cl-orange);color:var(--cl-orange)}
.amsec h3 .gctl input[type=range]{width:110px;accent-color:var(--cl-orange)}
.amsec h3 .gctl .gzl{min-width:30px}
.amgantt .gsvg{position:absolute;left:0;top:0;pointer-events:none;overflow:visible;z-index:1}
.amgantt .gdep{fill:none;stroke:#a8aebb;stroke-width:1.3}
.amgantt .gdep.v{stroke:var(--cl-crimson);stroke-dasharray:3 2;stroke-width:1.6}
.amgantt .gdot{fill:#a8aebb}
.amgantt .gdot.v{fill:var(--cl-crimson)}
.amgantt .gb{cursor:grab;z-index:2}
.amgantt .gb.drag{cursor:grabbing;opacity:.85;box-shadow:0 2px 8px rgba(25,35,65,.25)}
.amgantt .gb.viol{outline:2px dashed var(--cl-crimson);outline-offset:1px}
.amgantt .gnub{position:absolute;top:0;bottom:0;width:min(7px,30%);left:0;cursor:ew-resize;border-radius:6px 0 0 6px}
.amgantt .gnub.r{left:auto;right:0;border-radius:0 6px 6px 0;cursor:ew-resize}
.amgantt .gb:hover .gnub{background:rgba(255,255,255,.55)}
.amgantt .goor{position:absolute;top:3px;left:2px;color:var(--grey-300);font-size:11px}

/* ---- 541: project rail, per-asset Gantt controls ---- */
.amgantt .gctl{display:flex;align-items:center;gap:6px;padding:0 0 6px;font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.amgantt .gctl .gcl{font-family:var(--font-brand);font-size:11px;color:var(--grey-700);margin-right:2px}
.amgantt .gctl button[data-gnav]{background:none;border:1px solid var(--grey-200);border-radius:6px;width:20px;height:20px;line-height:1;cursor:pointer;color:var(--grey-700)}
.amgantt .gctl button[data-gnav]:hover{border-color:var(--cl-orange);color:var(--cl-orange)}
.amgantt .gctl input[type=range]{width:100px;accent-color:var(--cl-orange)}
.amgantt .gctl .gzl{min-width:28px}
.ambtn.ghost.on{border-color:var(--cl-orange);color:var(--cl-orange)}

/* ---- 542: rail expands in place, multi-select clients, favourites, task list ---- */
.ammsel{position:relative}
.amselbtn{display:inline-flex;align-items:center;gap:8px;cursor:pointer;text-align:left}
.amselbtn i{font-style:normal;color:var(--text-muted);font-size:10px;margin-left:auto}
.ammsel.open .amselbtn{border-color:var(--cl-orange)}
.ammpanel{display:none;position:absolute;left:0;top:calc(100% + 5px);min-width:250px;max-height:340px;overflow:auto;background:var(--card);border:1px solid var(--grey-200);border-radius:var(--radius-md);box-shadow:0 12px 32px rgba(25,35,65,.16);padding:6px;z-index:30}
.ammsel.open .ammpanel{display:block}
.ammtop{display:flex;gap:6px;padding:2px 4px 6px;border-bottom:1px solid var(--grey-100);margin-bottom:4px}
.ammtop button{background:none;border:1px solid var(--grey-200);border-radius:20px;padding:2px 10px;font-family:var(--font-mono);font-size:10px;cursor:pointer;color:var(--grey-700)}
.ammtop button:hover{border-color:var(--cl-orange);color:var(--cl-orange)}
.ammrow{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:6px;cursor:pointer;font-size:12.5px}
.ammrow:hover{background:var(--grey-50)}
.ammrow em{margin-left:auto;font-style:normal;color:var(--cl-orange);font-size:11px}
.amfav{position:absolute;top:10px;right:12px;background:none;border:none;cursor:pointer;font-size:15px;line-height:1;color:var(--grey-300);padding:2px}
.amfav:hover{color:var(--cl-orange)}
.amfav.on{color:var(--cl-orange)}
.amcc{position:relative}
.amtasks>.th{display:flex;align-items:center;gap:8px;padding:2px 0 6px}
.amtasks>.th b{font-family:var(--font-brand);font-size:12px;color:var(--grey-700)}
.amtasks>.th small{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.amtasks>.amcolbody{display:none}
.amtasks.on>.amcolbody{display:block}
.amtasks.on>.th>.amcar{transform:rotate(90deg)}

/* ---- 543: time blocks ---- */
.amkpis.five{grid-template-columns:repeat(5,1fr)}
@media(max-width:1100px){.amkpis.five{grid-template-columns:repeat(3,1fr)}}
.amsch{display:inline-block;margin-top:3px;margin-right:6px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;padding:1px 7px;border-radius:20px;border:1px solid var(--grey-200);color:var(--text-muted)}
.amsch.none{border-color:#ffd1ad;background:#fff6ee;color:#c25b00}
.amsch.part{border-color:#cfd6ff;background:#f2f4ff;color:#3b4ea8}
.amsch.full{border-color:#bfe6d5;background:#f0faf5;color:#0f7d6c}
.amgantt .gblk{position:absolute;bottom:1px;height:4px;border-radius:2px;background:#4c6ef5;opacity:.75}
.amgantt .gblk.lg{background:#f5bb8b;opacity:1}

/* ---- 544: master planning view ---- */
.ampl2{display:grid;grid-template-columns:230px 1fr;gap:16px;align-items:start}
@media(max-width:1100px){.ampl2{grid-template-columns:1fr}}
.ptray{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:12px;position:sticky;top:12px;max-height:calc(100vh - 40px);overflow:auto}
.ptray h3{font-family:var(--font-brand);font-weight:800;font-size:13px;margin:0 0 10px;color:var(--text-heading);display:flex;align-items:center;gap:8px}
.ptray h3 small{font-family:var(--font-mono);font-weight:400;font-size:10px;color:var(--text-muted)}
.ptask{border:1px solid var(--grey-100);border-left:3px solid var(--cl-orange);border-radius:var(--radius-sm);padding:7px 9px;margin-bottom:6px;cursor:grab;background:var(--card)}
.ptask:hover{border-color:var(--cl-orange);box-shadow:var(--shadow)}
.ptask b{display:block;font-size:12.5px;color:var(--am-ink);font-weight:600;line-height:1.25}
.ptask span{display:block;font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.ptask em{display:block;font-style:normal;font-family:var(--font-mono);font-size:10px;color:var(--grey-700);margin-top:3px}
.pgrid{display:grid;gap:0;background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:auto;padding:2px}
.prow{display:contents}
.pcell{border-right:1px solid var(--grey-100);border-bottom:1px solid var(--grey-100);min-height:64px;padding:4px;position:relative}
.pcell.head{min-height:0;text-align:center;padding:7px 4px;background:var(--grey-50);position:sticky;top:0;z-index:2}
.pcell.head b{display:block;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.pcell.head span{font-family:var(--font-mono);font-size:10.5px;color:var(--grey-700)}
.pcell.name{position:sticky;left:0;background:var(--card);z-index:1;min-height:64px;display:flex;flex-direction:column;justify-content:center;padding-left:10px}
.pcell.name b{font-family:var(--font-brand);font-size:12.5px;color:var(--am-ink)}
.pcell.name span{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.pcell.we{background:var(--grey-50)}
.pcell.today{box-shadow:inset 0 2px 0 var(--cl-crimson)}
.pcell.dropping{background:#fff6ee;outline:2px dashed var(--cl-orange);outline-offset:-3px}
.pblk{background:#eef1ff;border-left:3px solid #4c6ef5;border-radius:5px;padding:4px 6px;margin-bottom:3px;cursor:pointer}
.pblk:hover{background:#e4e9ff}
.pblk.lg{background:#fff2e6;border-left-color:#f5bb8b}
.pblk.test{border-left-style:dashed}
.pblk b{display:block;font-size:11px;font-weight:600;color:var(--am-ink);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pblk span{display:block;font-family:var(--font-mono);font-size:9px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pblk em{font-style:normal;font-family:var(--font-mono);font-size:9.5px;color:var(--grey-700)}
.ptot{position:absolute;right:4px;bottom:2px;font-family:var(--font-mono);font-size:9px;color:var(--text-muted)}
.ptot.over{color:var(--cl-crimson);font-weight:700}
.ptot.free{opacity:.5}
.amplev{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}

/* ---- 545: tray hierarchy, pins, day detail ---- */
.ptc,.ptp,.pta{margin-bottom:2px}
.ptc>.amcolbody,.ptp>.amcolbody,.pta>.amcolbody{display:none}
.ptc.on>.amcolbody,.ptp.on>.amcolbody,.pta.on>.amcolbody{display:block}
.pth{display:flex;align-items:center;gap:6px;padding:3px 2px;cursor:default}
.pth b{font-family:var(--font-brand);font-size:11.5px;color:var(--am-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pth small{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted)}
.pth.c b{font-size:12.5px;font-weight:800}
.pth.p b{font-weight:600;color:var(--grey-700)}
.ptc.on>.pth>.amcar,.ptp.on>.pth>.amcar,.pta.on>.pth>.amcar{transform:rotate(90deg)}
.ptp{margin-left:10px}
.pta{margin-left:10px;border-left:1px solid var(--grey-100);padding-left:6px}
.pta>.amcolbody{margin-left:2px}
.ppin{margin-left:auto;background:none;border:none;cursor:pointer;font-size:11px;opacity:.35;padding:0 2px}
.ppin:hover,.ppin.on{opacity:1}
.ptpath{font-family:var(--font-mono);font-size:9px;color:var(--text-muted);margin:0 0 3px 22px}
.ptpinned{border-bottom:1px dashed var(--grey-200);margin-bottom:8px;padding-bottom:6px}
.ptray .ptask{margin-left:4px}
.ptask em .amsch{margin-right:4px}
.pdlist{display:grid;gap:4px}
.pdrow{display:grid;grid-template-columns:96px 1fr auto;gap:10px;align-items:center;padding:6px 8px;border:1px solid var(--grey-100);border-radius:6px}
.pdrow .tm{font-family:var(--font-mono);font-size:11px;color:var(--grey-700)}
.pdrow .nm b{display:block;font-size:12.5px;color:var(--am-ink)}
.pdrow .nm small{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted)}
.pdrow .hh{font-family:var(--font-mono);font-size:11px;color:var(--grey-700)}

/* ---- 546/547: person day + range view ---- */
.amcard.amday{width:min(1080px,97vw)}
.amday .dvhead{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.amday .dvsp{flex:1}
.amday .dvtitle{display:flex;flex-direction:column;gap:1px;min-width:0}
.amday .dvtitle h3{font-family:var(--font-brand);font-weight:800;font-size:16px;margin:0;color:var(--text-heading);white-space:nowrap}
.amday .dvtitle span{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}
.amday .dvnav{padding:4px 11px;font-size:16px;line-height:1}
.amday .dvspans{display:flex;gap:4px}
.amday .dvspan{padding:6px 10px;font-size:11.5px}
.amday .dvspan.on{background:var(--gradient-orange);border-color:transparent;color:#fff}
.amday .dvdays{display:grid;gap:0;margin-bottom:4px}
.amday .dvday{display:flex;flex-direction:column;gap:1px;padding:4px 8px;border-left:1px solid transparent;min-width:0}
.amday .dvday:not(:first-child){border-left-color:var(--grey-200)}
.amday .dvday.we b{color:var(--text-muted)}
.amday .dvday b{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--am-ink);font-weight:700}
.amday .dvday span{font-family:var(--font-mono);font-size:10.5px;color:var(--grey-700)}
.amday .dvday span.over{color:var(--cl-crimson);font-weight:700}
.amday .dvday em{font-style:normal;font-family:var(--font-mono);font-size:9.5px;color:var(--grey-600);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.amday .dvtl{position:relative;border:1px solid var(--grey-100);border-radius:var(--radius-md);background:var(--grey-50);overflow:hidden;user-select:none;touch-action:none}
.amday .dvwe{position:absolute;top:0;bottom:0;background:rgba(25,35,65,.035)}
.amday .dvsep{position:absolute;top:0;bottom:0;border-left:1px solid var(--grey-300)}
.amday .dvtick{position:absolute;top:0;bottom:0;border-left:1px solid var(--grey-100)}
.amday .dvtick span{position:absolute;bottom:2px;left:3px;font-family:var(--font-mono);font-size:9px;color:var(--text-muted);white-space:nowrap}
.amday .dvband{position:absolute;background:repeating-linear-gradient(135deg,rgba(25,35,65,.05) 0 6px,rgba(25,35,65,.02) 6px 12px);pointer-events:none}
.amday .dvmeet{position:absolute;top:4px;height:16px;box-sizing:border-box;background:var(--grey-200);border-radius:3px;padding:0 5px;font-family:var(--font-mono);font-size:9px;line-height:16px;color:var(--grey-700);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}
.amday .dvblk{position:absolute;height:34px;box-sizing:border-box;background:#eef1ff;border:1px solid #cdd6ff;border-left:3px solid #4c6ef5;border-radius:5px;padding:3px 12px 3px 6px;cursor:grab;overflow:hidden}
.amday .dvblk.logged{background:#fff2e6;border-color:#f7d8bb;border-left-color:#f5bb8b}
.amday .dvblk.sel{box-shadow:0 0 0 2px var(--cl-orange);z-index:3}
.amday .dvblk.dragging{cursor:grabbing;opacity:.85}
.amday .dvblk b{display:block;font-size:11px;font-weight:600;color:var(--am-ink);line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}
.amday .dvblk small{display:block;font-family:var(--font-mono);font-size:9px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none}
.amday .dvhandle{position:absolute;top:0;right:0;width:9px;height:100%;cursor:ew-resize;border-right:2px solid rgba(76,110,245,.45);border-radius:0 4px 4px 0}
.amday .dvblk.sel .dvhandle{border-right-color:var(--cl-orange)}
.amday .dvempty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);text-align:center;padding:0 12px}
.amday .dvfoot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;min-height:34px}
.amday .dvhint{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}
.amday .dvsel{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}
.amday .dvsel b{font-size:13px;font-weight:700;color:var(--text-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.amday .dvsel small{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.amday .dvtime{font-family:var(--font-mono);font-size:11px;color:var(--grey-700);white-space:nowrap}
.amday .dvclash{font-style:normal;color:var(--cl-crimson);font-weight:700;margin-left:8px}
.amday .dvacts{display:flex;gap:6px}
.amday .dvacts .ambtn{padding:6px 11px;font-size:11.5px}


/* ---- 551: dialogs that fit a laptop ---- */
.amcard{max-height:88vh;overflow-y:auto}
.amcard .hmrow{position:sticky;bottom:-24px;z-index:3;background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 14px,#fff 100%);padding:16px 0 24px;margin-bottom:-24px}
/* JR: the sticky button row used to paint itself white whatever the theme - a white bar under a dark dialog */
.amcard .hmrow{background:linear-gradient(to bottom,color-mix(in srgb,var(--card) 0%,transparent) 0,var(--card) 14px,var(--card) 100%)}
.amcard.amtask{width:min(900px,96vw)}
.amcard.amtask .f{margin-bottom:8px}
.amcard.amtask textarea{min-height:46px}
.amcard .cbx.people{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:1px 12px;max-height:118px;overflow-y:auto;border:1px solid var(--grey-100);border-radius:var(--radius-sm);padding:7px 9px;background:var(--grey-50)}
.amcard .cbx.people label{margin:0;padding:1px 0}
.amcard.amtask .linkrow{margin-bottom:4px}
.amcard.amtask .mini{margin:2px 0 6px}

/* ---- 548: skills and candidates ---- */
.amcard .cbx label.nothold{opacity:.42}
.amcard .cbx label.nothold:hover{opacity:.75}
.amoffer{font-family:var(--font-mono);font-size:9.5px;color:var(--cl-orange);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---- 549: freelancers ---- */
.amfree{display:inline-block;font-family:var(--font-mono);font-size:8.5px;letter-spacing:.07em;text-transform:uppercase;background:var(--purple-50);color:var(--purple-700);border-radius:3px;padding:1px 5px;margin-left:6px;vertical-align:middle}
.amlink{background:none;border:none;padding:0;margin-left:6px;font-family:var(--font-mono);font-size:10px;color:var(--cl-orange);cursor:pointer;text-decoration:underline}
.prow.bandhead{pointer-events:none}
.pcell.name.band{display:flex;flex-direction:column;justify-content:center;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--purple-700);background:var(--purple-50);border-top:1px solid var(--purple-100)}
.pcell.name.band span{font-size:9px;letter-spacing:0;text-transform:none;color:var(--text-muted)}
.pcell.bandfill{background:var(--purple-50);border-top:1px solid var(--purple-100)}
.prow.free .pcell.name{border-left:3px solid var(--purple-100)}
.amsel.offered{color:var(--cl-orange);font-weight:600}
/* a task with no skill cannot be planned, costed or marked ready, so the gap is
   visible in the row rather than only in the pipeline's blocker list */
.amsel.amsklno{color:var(--cl-crimson);font-weight:600}
.amsel.amsklno:not(:focus){background:var(--orange-50)}

.pmain{display:flex;flex-direction:column;min-width:0;gap:0}

/* ---- 554: readable gantt, resizable halves, menu rail ---- */
.pgbar{display:flex;align-items:center;gap:10px;padding:7px 12px;background:var(--card);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--shadow);margin-bottom:-1px}
.pgbar button{background:none;border:none;font-family:var(--font-brand);font-weight:800;font-size:12px;color:var(--am-ink);cursor:pointer;padding:2px 6px;border-radius:6px;letter-spacing:.02em}
.pgbar button:hover{background:var(--grey-50);color:var(--cl-orange)}
.pgbar em{font-style:normal;font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted)}
.pgantt{display:block;background:var(--card);overflow-y:auto;overscroll-behavior-x:contain;max-height:none;border-radius:0;box-shadow:none}
.grow.head{position:sticky;top:0;z-index:5;background:var(--card);border-top:none}
.grow.head .pcell.gname.head{border-right:1px solid var(--grey-200)}
.gdays{flex:1;display:grid}
.gdays .pcell.head{border-left:1px solid var(--grey-100)}
.grow{display:flex;align-items:stretch;border-top:1px solid var(--grey-100)}
.pgantt .pcell{min-height:0;border-bottom:none;border-right:none;padding:0}
.grow.asset .pcell{min-height:42px}
.grow.task .pcell{min-height:34px}
.grow.head .pcell{min-height:42px}
.grow.asset{background:var(--card);min-height:42px}
.grow.asset.open{background:var(--card);box-shadow:inset 3px 0 0 var(--cl-navy)}
.grow.task{background:var(--grey-50);min-height:34px}
.pcell.gname{width:210px;flex:none;display:flex;flex-direction:column;justify-content:center;padding:5px 10px;gap:1px;border-right:1px solid var(--grey-200);min-width:0;box-sizing:border-box}
.grow.asset .pcell.gname b{font-size:12.5px;font-weight:700;color:var(--am-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grow.asset .pcell.gname{flex-direction:row;align-items:center;gap:6px;flex-wrap:wrap}
.grow.asset .pcell.gname span{flex-basis:100%;font-family:var(--font-mono);font-size:9px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-left:18px}
.pcell.gname.sub{padding-left:34px;box-shadow:inset 3px 0 0 var(--grey-300)}
.grow.task .pcell.gname b{font-size:11.5px;font-weight:600;color:var(--grey-800);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.grow.task .pcell.gname span{font-family:var(--font-mono);font-size:8.5px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pcell.gname .amcar{flex:none}
.grow.asset .pcell.gname{justify-content:flex-start}
.grow.asset .amcar.on{transform:rotate(90deg)}
.gedit{flex:none;font-size:11px;padding:1px 5px;opacity:0}
.grow.asset:hover .gedit,.grow.asset .gedit:focus{opacity:1}
.pcell.gname.click{cursor:pointer}
.pcell.gname.click:hover{background:var(--grey-50)}
.pcell.gname.click:hover b{color:var(--cl-orange)}
.gtrack{position:relative;flex:1;min-width:0}
.gbar{position:absolute;top:50%;transform:translateY(-50%);height:22px;box-sizing:border-box;border-radius:5px;padding:0 8px;display:flex;align-items:center;gap:4px;cursor:grab;overflow:hidden;background:var(--cl-navy);color:#fff}
.gbar.unclaimed{background:var(--cl-orange);color:#fff}
.gbar.task{top:50%;height:18px;background:#eef1ff;border:1px solid #cdd6ff;border-left:3px solid #4c6ef5;color:var(--cl-navy)}
.gbar.task.unclaimed{top:50%;background:var(--orange-50);border:1px solid var(--orange-100);border-left:3px solid var(--cl-orange);color:var(--orange-700)}
.gbar b{font-size:10.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gbar.task b{font-weight:600;font-size:10px}
.gbar .ov{font-style:normal;opacity:.75;font-size:10px}
.gbar.dragging{cursor:grabbing;opacity:.85;z-index:4}
.gbar.moved{box-shadow:0 0 0 2px var(--cl-orange)}
.pdiv{height:11px;background:var(--grey-100);cursor:ns-resize;display:flex;align-items:center;justify-content:center;touch-action:none}
.pdiv i{display:block;width:44px;height:3px;border-radius:2px;background:var(--grey-300)}
.pdiv:hover i,.pdiv.on i{background:var(--cl-orange);width:72px}
.pmode{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--grey-100);flex-wrap:wrap}
.pmode .pmcol{border:none;background:none;color:var(--grey-700);font-size:13px;cursor:pointer;padding:2px 6px;border-radius:6px;line-height:1}
.pmode .pmcol:hover{background:var(--card);color:var(--cl-orange)}
.pmode span{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--grey-700)}
.pmode button[data-plmode]{border:1px solid var(--grey-300);background:var(--card);color:var(--grey-700);border-radius:var(--radius-md);padding:5px 12px;font-family:var(--font-brand);font-size:11.5px;font-weight:700;cursor:pointer}
.pmode button[data-plmode].on{background:var(--gradient-orange);border-color:transparent;color:#fff}
.pmode em{font-style:normal;font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);flex:1;min-width:120px}
.pgrid{overscroll-behavior-x:contain}
.pcell.skl{display:flex;flex-direction:column;justify-content:center;gap:3px;padding:6px 7px;border-left:1px solid var(--grey-100);min-height:44px}
.pcell.skl.we{background:rgba(25,35,65,.03)}
.pcell.skl.today{background:var(--orange-50)}
.sklbar{height:6px;border-radius:3px;background:var(--grey-200);overflow:hidden}
.sklbar i{display:block;height:100%;background:var(--cl-navy)}
.sklbar.over i{background:var(--cl-crimson)}
.sklnum{font-family:var(--font-mono);font-size:8.5px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sklnum.over{color:var(--cl-crimson);font-weight:700}
.shell.amrail{grid-template-columns:64px minmax(0,1fr)}
.shell.amrail .side{padding:20px 10px}
.shell.amrail .logo,.shell.amrail .nav .lbl,.shell.amrail .side .foot .sbtn,.shell.amrail .amnavsep span,.shell.amrail .amnavsep small{display:none}
.shell.amrail .nav button{justify-content:center;padding:12px 0}
.shell.amrail .amnavsep{height:1px;background:var(--grey-200);margin:10px 4px}
.amrailbtn{flex:none;background:rgba(255,255,255,.08);border:none;color:rgba(255,255,255,.55);font-size:13px;line-height:1;cursor:pointer;padding:7px 0;border-radius:var(--radius-sm);margin-top:6px}
.amrailbtn:hover{background:rgba(255,255,255,.16);color:#fff}

/* ---- 556: the projects asset panel, as a dialog ---- */
.amcard.amassetdlg{width:min(1080px,96vw)}
.amassetdlg .adh{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.amassetdlg .adh .aname{font-family:var(--font-brand);font-weight:800;font-size:17px;color:var(--am-ink);border:1px solid transparent;background:none;padding:4px 8px;border-radius:var(--radius-sm);flex:1;min-width:200px}
.amassetdlg .adh .aname:hover{background:var(--grey-50)}
.amassetdlg .adh .aname:focus{outline:2px solid var(--cl-orange);background:var(--card)}
.amassetdlg .adh .adue{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);display:flex;align-items:center;gap:6px}
.amassetdlg .adh .adue input{font-family:var(--font-mono);font-size:11px;border:1px solid var(--grey-200);border-radius:6px;padding:3px 6px;background:var(--card)}
.amassetdlg .adsub{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);padding:0 8px;margin-top:2px}
.amassetdlg .adsum{display:block;margin:10px 0 14px;padding:0 8px}
.amassetdlg .amtasks .th{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);margin-bottom:6px;padding:0 8px}
.amassetdlg .amtasks .th b{font-weight:700;color:var(--grey-700)}
.amassetdlg .ambrief{margin-top:16px;border-top:1px solid var(--grey-100);padding-top:12px}
.amassetdlg .ambrief .bh{display:flex;align-items:center;gap:8px}
.amassetdlg .ambrief .bh b{font-family:var(--font-brand);font-weight:800;font-size:13px;color:var(--text-heading)}
.amassetdlg .ambrief .bh .sp{flex:1}
.amassetdlg .ambrief .colhint{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}

/* ---- 557: the planning bucket ---- */
.ptray .bkhead{display:flex;align-items:center;gap:6px;margin-bottom:8px}
.ptray .bkhead .amsel{flex:1;font-weight:700;font-family:var(--font-brand);font-size:12.5px}
.bksearch{position:relative;margin-bottom:8px}
.bksearch .aminp{width:100%;font-size:12px}
.bkhits{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:20;background:var(--card);border:1px solid var(--grey-200);border-radius:var(--radius-md);box-shadow:0 12px 32px rgba(25,35,65,.18);max-height:280px;overflow-y:auto;padding:4px}
.bkhits button{display:flex;flex-direction:column;gap:1px;width:100%;text-align:left;background:none;border:none;padding:6px 8px;border-radius:var(--radius-sm);cursor:pointer;position:relative}
.bkhits button:hover{background:var(--grey-50)}
.bkhits button b{font-size:12px;color:var(--am-ink);font-weight:600;padding-right:56px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bkhits button span{font-family:var(--font-mono);font-size:9px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bkhits button em{position:absolute;right:8px;top:7px;font-style:normal;font-family:var(--font-mono);font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--grey-400)}
.bkempty{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);padding:8px}
.bkchips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}
.bkchip{display:inline-flex;align-items:center;gap:4px;font-size:11px;line-height:1.3;padding:3px 4px 3px 8px;border-radius:20px;background:var(--grey-100);color:var(--grey-800);max-width:100%}
.bkchip button{background:none;border:none;color:var(--grey-500);cursor:pointer;font-size:12px;line-height:1;padding:0 3px;border-radius:50%}
.bkchip button:hover{color:var(--cl-crimson);background:var(--card)}
.bkchip.kclient{background:var(--purple-50);color:var(--purple-700)}
.bkchip.kproject{background:var(--orange-50);color:var(--orange-700)}
.bkchip.kasset{background:#eef1ff;color:#3b5bdb}
.bkchip.ktask{background:var(--grey-100);color:var(--grey-800)}
.bkchip.kskill{background:var(--crimson-50);color:var(--crimson-700)}
.bkchip.kperson{background:#e6f6f1;color:#0b6b4f}
.bknote{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);line-height:1.5;margin-bottom:10px}

/* ---- 558: the picker ---- */
.bkopen{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--gradient-navy);color:#fff;border:none;border-radius:var(--radius-md);padding:10px 12px;font-family:var(--font-brand);font-weight:800;font-size:13px;cursor:pointer;margin-bottom:8px;text-align:left}
.bkopen i{font-style:normal;opacity:.7;font-size:14px}
.bkopen:hover{filter:brightness(1.15)}
.bkopen:hover i{opacity:1}
.pkwrap{background:var(--card);border-radius:var(--radius-lg);box-shadow:var(--shadow);display:flex;flex-direction:column;height:calc(100vh - 120px);overflow:hidden}
.pkhead{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--grey-100);flex-wrap:wrap}
.pkhead > b{font-family:var(--font-brand);font-weight:800;font-size:15px;color:var(--text-heading)}
.pkhead .aminp{width:230px}
.pkhead .sp{flex:1}
.pkkinds{display:flex;gap:4px;flex-wrap:wrap}
.pkkinds button{border:1px solid var(--grey-300);background:var(--card);color:var(--grey-600);border-radius:20px;padding:4px 11px;font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;cursor:pointer}
.pkkinds button.on{background:var(--cl-navy);border-color:transparent;color:#fff}
.pkbody{display:flex;flex:1;min-height:0}
.pkcol{display:flex;flex-direction:column;min-width:0;width:200px;border-right:1px solid var(--grey-100)}
.pkcol.grow{flex:1;width:auto}
.pkcol.bucket{width:280px;border-right:none;background:var(--grey-50)}
.pkcol.bucket.over{background:var(--orange-50);box-shadow:inset 0 0 0 2px var(--cl-orange)}
.pkch{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);padding:9px 12px;border-bottom:1px solid var(--grey-100)}
.pkch small{color:var(--cl-orange);font-weight:700;margin-left:4px}
.pklist{flex:1;overflow-y:auto;padding:4px 0}
.pklist.pkbucket{display:flex;flex-wrap:wrap;align-content:flex-start;gap:4px;padding:10px}
.pkrow{display:flex;align-items:center;gap:6px;padding:4px 10px 4px 8px;cursor:grab;position:relative;border-radius:var(--radius-sm)}
.pkrow:hover{background:var(--grey-50)}
.pkrow.dragging{opacity:.5}
.pkrow.in{opacity:.55;cursor:default}
.pkrow b{font-size:12px;font-weight:600;color:var(--am-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pkrow span{font-family:var(--font-mono);font-size:9px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.pkrow em{font-style:normal;font-family:var(--font-mono);font-size:8px;letter-spacing:.06em;text-transform:uppercase;color:var(--grey-400);flex:none}
.pkrow .amcar{flex:none}
.pkrow .pkck{flex:none;margin:0}
.pkin{color:var(--cl-orange);font-size:11px;width:13px;text-align:center;flex:none}
.pkrow.kclient b{font-weight:700}
.pkrow.ktask b{font-weight:500;color:var(--grey-800)}
.pkdrophint{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);line-height:1.6;padding:8px}
.pkcol.bucket .ambtn{margin:0 10px 10px}

/* ---- 559: views, the view list, needs-scheduling ---- */
.pkcol.bucket{width:280px;border-right:1px solid var(--grey-200);background:var(--grey-50)}
.pkneeds{border:1px solid var(--grey-300);background:var(--card);color:var(--grey-600);border-radius:20px;padding:4px 11px;font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;cursor:pointer}
.pkneeds.on{background:var(--gradient-orange);border-color:transparent;color:#fff}
.pkrow.needs{background:var(--orange-50);box-shadow:inset 3px 0 0 var(--cl-orange)}
.pkrow.needs:hover{background:var(--orange-100)}
.vlist{display:flex;flex-direction:column;gap:6px}
.vitem{border:1px solid var(--grey-100);border-radius:var(--radius-md);overflow:hidden;background:var(--card)}
.vih{display:flex;align-items:center;gap:5px;padding:6px 6px 6px 4px;cursor:pointer;min-width:0}
.vih.t{cursor:default}
.vih:hover{background:var(--grey-50)}
.vih b{font-size:12px;font-weight:700;color:var(--am-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.vih .k{font-family:var(--font-mono);font-size:8px;letter-spacing:.06em;text-transform:uppercase;color:var(--grey-400);flex:none}
.vih small{font-family:var(--font-mono);font-size:9px;color:var(--cl-orange);font-weight:700;flex:none}
.vih .vix{background:none;border:none;color:var(--grey-400);cursor:pointer;font-size:13px;line-height:1;padding:0 3px;border-radius:50%;flex:none}
.vih .vix:hover{color:var(--cl-crimson);background:var(--grey-100)}
.vib{padding:0 6px 6px;display:flex;flex-direction:column;gap:4px}
.vitem.kclient{border-left:3px solid var(--purple-700)}
.vitem.kproject{border-left:3px solid var(--cl-orange)}
.vitem.kasset{border-left:3px solid #4c6ef5}
.vitem.ktask{border-left:3px solid var(--grey-400)}
.vitem.kskill{border-left:3px solid var(--crimson-700)}
.vitem.kperson{border-left:3px solid #0b6b4f}

/* ---- 560: assignments ---- */
.pcell.drop.inassign{background:linear-gradient(var(--orange-50),var(--orange-50)) padding-box}
.pcell.drop.inassign.we{background:var(--orange-50)}
.pcell.drop.inassign.today{background:#fde8d2}
.achip{display:block;width:100%;text-align:left;background:var(--cl-navy);color:#fff;border:none;border-radius:4px;padding:2px 6px;margin-bottom:3px;font-family:var(--font-brand);font-size:9.5px;font-weight:700;letter-spacing:.01em;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.achip:hover{background:var(--cl-orange)}

/* ---- 561: the pipeline ---- */
.pisec{margin-bottom:22px}
.pisec.empty{opacity:.55}
.pih{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.pih h3{font-family:var(--font-brand);font-weight:800;font-size:14px;margin:0;color:var(--text-heading)}
.pih small{font-family:var(--font-mono);font-size:11px;font-weight:700;color:var(--cl-orange)}
.pih em{font-style:normal;font-family:var(--font-mono);font-size:10px;color:var(--text-muted);flex:1;min-width:180px}
.pilist{display:flex;flex-direction:column;gap:6px}
.pirow{display:grid;grid-template-columns:20px minmax(180px,2fr) minmax(150px,1fr) 150px minmax(160px,1.4fr) auto;gap:14px;align-items:center;background:var(--card);border:1px solid var(--grey-100);border-left:3px solid var(--grey-300);border-radius:var(--radius-md);padding:10px 14px}
.pirow.sarrived{border-left-color:var(--cl-crimson)}
.pirow.spreparing{border-left-color:var(--cl-orange)}
.pirow.sready{border-left-color:#0e9f6e}
.pirow.scommitted{border-left-color:var(--am-ink)}
/* The retainer rows reuse .pin but sit in .amrrow, not .pirow - so they missed
   the column layout and the client name ran straight into the project name with
   no space at all ("Test client 5Try again multi retainer 3"). Both wrappers
   get it. */
.pirow .pin,.amrrow .pin{min-width:0;display:flex;flex-direction:column;gap:1px}
.pirow .pin b,.amrrow .pin b{font-size:13px;font-weight:700;color:var(--am-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pirow .pin span,.amrrow .pin span{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pirow .pim{display:flex;gap:12px;flex-wrap:wrap;font-family:var(--font-mono);font-size:10.5px;color:var(--grey-700)}
.pirow .pim em{font-style:normal}
.pirow .pim .v{color:var(--am-ink);font-weight:700}
.pirow .pim .warn,.pirow .pid .warn{color:var(--cl-crimson)}
.pirow .pid{font-family:var(--font-mono);font-size:10.5px;color:var(--grey-700);white-space:nowrap}
.pirow .pib{display:flex;gap:4px;flex-wrap:wrap}
.pirow .pia{display:flex;gap:6px;justify-content:flex-end}
.pichip{font-family:var(--font-mono);font-size:9px;letter-spacing:.03em;border-radius:20px;padding:2px 8px;background:var(--crimson-50);color:var(--crimson-700);white-space:nowrap}
.pichip.kdates{background:var(--orange-50);color:var(--orange-700)}
.pichip.khours{background:var(--orange-50);color:var(--orange-700)}
.pichip.kskill{background:var(--purple-50);color:var(--purple-700)}
.pichip.ok{background:var(--grey-100);color:var(--grey-600)}
@media(max-width:1100px){.pirow{grid-template-columns:20px 1fr;gap:6px 10px}.pirow>.amcar{grid-row:1/span 5;align-self:start;margin-top:1px}.pirow>*:not(.amcar){grid-column:2}.pirow .pia{justify-content:flex-start}}

/* ---- 562: pipeline rows open to their tasks; assets can be created by hand ---- */
.piwrap{border-radius:var(--radius-md)}
.piwrap.open>.pirow{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent}
.pirow>.amcar.pic{color:var(--grey-400);justify-self:center}
.pirow>.amcar.pic.on{transform:rotate(90deg);color:var(--cl-orange)}
.pitasks{background:var(--grey-50);border:1px solid var(--grey-100);border-top:none;border-left:3px solid var(--grey-200);border-radius:0 0 var(--radius-md) var(--radius-md);padding:6px 14px 8px 34px}
.pitrow{display:grid;grid-template-columns:minmax(160px,2fr) minmax(110px,1fr) 70px minmax(140px,1.2fr) 80px;gap:12px;align-items:center;padding:5px 0;border-bottom:1px dashed var(--grey-200)}
.pitrow:last-of-type{border-bottom:none}
.pitrow .ptn{font-size:12.5px;color:var(--am-ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pitrow .pts,.pitrow .pth,.pitrow .ptw,.pitrow .ptv{font-family:var(--font-mono);font-size:10px;color:var(--grey-700)}
.pitrow .ptv{text-align:right;color:var(--am-ink);font-weight:700}
.pitrow .ptw.open{color:var(--cl-orange)}
.pitrow i.warn{font-style:normal;color:var(--cl-crimson)}
.pitadd{display:flex;gap:10px;align-items:center;padding-top:8px}
.pitadd .tnote{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);line-height:1.4}
.pitasks .amempty{padding:6px 0 2px}
@media(max-width:1100px){.pitrow{grid-template-columns:1fr 1fr;gap:2px 10px}.pitrow .ptv{text-align:left}.pitasks{padding-left:14px}.pitadd{flex-direction:column;align-items:flex-start;gap:4px}}

/* ============ ROUND 617: DEPARTMENTS ============
   Steph's grouping: a navy header row per department with a caret, plain skill or
   person rows beneath. Everything for departments lives in THIS block — the last one
   in the file — because three earlier rounds were bitten by a superseded block winning
   a specificity fight against a newer one. */
.prow.dephead .pcell.name.dep{background:var(--cl-navy);color:#fff;flex-direction:row;align-items:center;gap:2px;cursor:pointer;border-top:1px solid var(--cl-navy)}
.prow.dephead .pcell.name.dep b{font-family:var(--font-brand);font-size:13px;color:#fff;letter-spacing:.01em}
.prow.dephead .pcell.name.dep span{font-family:var(--font-mono);font-size:9.5px;color:rgba(255,255,255,.62);margin-left:auto;padding-right:10px;white-space:nowrap}
.prow.dephead .pcell.name.dep .amcar{color:rgba(255,255,255,.75)}
.prow.dephead .pcell.name.dep:hover .amcar{color:var(--cl-orange)}
.prow.dephead.open .pcell.name.dep .amcar{transform:rotate(90deg)}
/* the loose ends: skills or people with no department yet */
.prow.dephead .pcell.name.dep.none{background:var(--grey-100);color:var(--text-muted);cursor:default;border-top:1px solid var(--grey-200)}
.prow.dephead .pcell.name.dep.none b{color:var(--text-muted);font-size:11.5px}
.prow.dephead .pcell.name.dep.none span{color:var(--text-muted);opacity:.8}
/* the rollup cells: same language as a skill row, one step heavier */
.pcell.skl.dep{background:var(--grey-50)}
.sklbar.dep{height:8px}
.sklbar.dep i{background:var(--cl-navy)}
/* stated explicitly, NOT left to source order: crimson still means over capacity here.
   .sklbar.dep i and .sklbar.over i have equal weight, so without this line the newer
   block would quietly take the only alarm in the pane away from department rows. */
.sklbar.dep.over i{background:var(--cl-crimson)}
.sklnum.dep{font-weight:700;color:var(--text-body)}
.sklnum.dep.over{color:var(--cl-crimson)}
/* the loose-ends row must not borrow the Freelance band's purple - it is not a band,
   it is just the things nobody has filed yet */
.prow.dephead .pcell.bandfill.none{background:var(--grey-100);border-top:1px solid var(--grey-200)}
.prow.dephead .pcell.name.dep b{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow.dephead .pcell.name.dep span{flex:0 0 auto}
/* on the loose-ends row it is the hint that should give way, not the label */
.prow.dephead .pcell.name.dep.none b{flex:0 0 auto}
.prow.dephead .pcell.name.dep.none span{min-width:0;overflow:hidden;text-overflow:ellipsis;margin-left:8px}

/* ---- dark mode for the AM side ----
   am.css predates the hub's dark round, so 31 places used --cl-navy as INK. It stays
   #192341 in dark (it is a brand BACKGROUND colour, deliberately not flipped), which
   left half this pane navy-on-near-black. One token now carries "navy used as ink";
   the two rules that sit on a hardcoded light surface still say --cl-navy on purpose. */
:root{--am-ink:var(--cl-navy);--am-ink-bg:var(--cl-navy)}
/* 1010: the ink is pale in dark mode, so anything that PAINTS with it as a background and writes white on top
   went white on white (the open month chip, the item rows, the drag ghost). Those paint with --am-ink-bg. */
:root[data-theme="dark"]{--am-ink:#eef1f7;--am-ink-bg:#33467a}

/* ============ ROUND 619: STEPH'S BARS AND FLOAT ============
   As ever, everything for this round lives in THIS block, the last in the file, so a
   superseded rule cannot win a specificity fight against it. */

/* --- capacity strip: hours ON the bar, capacity beside it, count in brackets --- */
.sklwrap{display:flex;align-items:center;gap:5px;width:100%}
.sklwrap .sklbar{flex:1 1 auto;height:13px;border-radius:7px;background:var(--grey-200);overflow:hidden;min-width:0}
.sklwrap .sklbar i{display:flex;align-items:center;justify-content:flex-end;height:100%;min-width:34px;border-radius:7px;background:var(--cl-navy);padding-right:5px;box-sizing:border-box}
.sklwrap .sklbar i b{font-family:var(--font-mono);font-size:8.5px;font-weight:700;color:#fff;letter-spacing:.01em;white-space:nowrap}
.sklwrap .sklbar.dep{height:15px}
.sklwrap .sklbar.dep i{background:var(--cl-navy)}
/* said out loud, not left to source order: crimson is still and only over capacity */
.sklwrap .sklbar.over i{background:var(--cl-crimson)}
.sklwrap .sklbar.dep.over i{background:var(--cl-crimson)}
.skltot{flex:0 0 auto;font-family:var(--font-mono);font-size:9px;color:var(--text-muted);white-space:nowrap}
.skltot.over{color:var(--cl-crimson);font-weight:700}
/* one line per skill row now the count is in brackets, so the strip is much shorter */
.prow.skl .pcell.name{min-height:0;flex-direction:row;align-items:center;gap:5px;padding:7px 10px}
.pcell.name.skl b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.pcell.name .pcount{font-family:var(--font-mono);font-size:9px;font-style:normal;color:var(--text-muted);flex:0 0 auto}
.pcell.name .ptoplace{font-family:var(--font-mono);font-size:8.5px;color:var(--cl-orange);margin-left:auto;flex:0 0 auto;white-space:nowrap}
.prow.dephead .pcell.name.dep .pcount{color:rgba(255,255,255,.6);margin-left:auto;padding-right:10px}
.prow.skl .pcell.skl{min-height:0;display:flex;align-items:center;padding:4px 6px}

/* --- the work pane: grey window line, orange work bar, half-opacity when fixed --- */
.gbar.win{top:50%;transform:translateY(-50%);height:4px;background:var(--grey-300);border-radius:3px;z-index:0;pointer-events:none}
/* Steph's colour: the work bar is ORANGE - "when it needs to be worked on". Orange was
   already carrying "nobody has claimed it" in this pane, so that meaning does not just
   vanish: an unclaimed bar keeps the orange and adds a diagonal hatch and a dashed
   edge. Two signals, two devices, neither one silently overwriting the other. */
.grow.task .gbar.task{background:var(--cl-orange);border:1px solid var(--cl-orange);border-left:3px solid var(--cl-orange);color:#fff}
.grow.task .gbar.task b{color:#fff}
.grow.task .gbar.task.unclaimed{background-color:var(--cl-orange);background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.42) 0 5px,transparent 5px 10px);border:1px dashed #fff;border-left:3px solid #fff;color:#fff}
.grow.task .gbar.task.unclaimed b{color:#fff}
.grow.task .gtrack{position:relative}
.gbar.task{z-index:1}
/* zero float: the work fills its window, so there is nowhere to drag it to. Half
   opacity is Steph's signal that the dates have to change before the work can move. */
.gbar.task.tight{opacity:.5}
.gbar.task.tight:hover{opacity:.72}

/* ============ ROUND 620: ASSET BAND, COLLAPSIBLE TIMELINE, BRIEF ============
   Newest block, as always, so nothing earlier can win a specificity fight. */

/* --- the asset's own window, one band above its tasks --- */
.amgantt .gr.gassetrow{align-items:center}
.amgantt .gr.gassetrow .gl{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted)}
.amgantt .gaband{position:absolute;top:3px;height:14px;border-radius:7px;background:var(--am-ink);opacity:.9;overflow:hidden;min-width:10px;display:flex;align-items:center;padding:0 7px}
.amgantt .gaband span{font-family:var(--font-mono);font-size:8.5px;color:var(--card);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* crimson is the alarm everywhere else in this app, so it is the alarm here too */
.amgantt .gaband.warn{box-shadow:0 0 0 2px var(--cl-crimson)}
.amgantt .gaduemk{position:absolute;top:0;bottom:0;width:0;border-left:2px dashed var(--cl-navy);pointer-events:none;z-index:3}
.amgantt .gnodate{font-family:var(--font-mono);font-size:9.5px;color:var(--cl-orange);padding-left:6px;line-height:20px}
/* a task dragged outside the asset window is flagged, never blocked - the same
   choice already made for a task that starts before something it waits on */
.amgantt .gb.oob{box-shadow:0 0 0 2px var(--cl-crimson);outline:1px dashed var(--cl-crimson);outline-offset:2px}

/* --- the timeline collapses like the task list --- */
.amtasks.amtl>.th small{color:var(--text-muted)}

/* --- the brief sits under the hourly totals, and opening it opens the editor --- */
.amkpis + .ambrief{margin-top:14px;border-top:1px solid var(--grey-100);padding-top:10px}
.ambrief .bh[data-bopen]{cursor:pointer;user-select:none}
.ambrief .bh[data-bopen]:hover b{color:var(--cl-orange)}
.ambrief .bbody a{color:var(--cl-orange);font-weight:600}
.ambrief .bedit a{color:var(--cl-orange);font-weight:600}

/* ---- round 623: the four standing client links ---- */
.amtbl tr.amslot td{background:var(--grey-50);vertical-align:middle}
.amtbl tr.amslot td b{font-family:var(--font-brand);font-size:12px;color:var(--am-ink)}
.amtbl tr.amslot .muted{font-family:var(--font-mono);font-size:9.5px}
.amtbl tr.amslot .aminp{width:100%}
.amtbl tr.amslot a.amedit{text-decoration:none}

/* ===== Overview - the 30,000ft view (round D) ===========================
   Written first against invented token names (--line, --bg, --head) which do not
   exist, so every rule silently fell back to a hardcoded light value. Light mode
   looked right and dark mode would have been white cards on a dark page. These
   are the hub's real tokens, which the dark round already flips. */
.amocrumb{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);border:1px solid var(--grey-200);background:var(--card);border-radius:10px;padding:5px 10px}
.amozoom{display:flex;align-items:center;gap:4px;background:var(--card);border:1px solid var(--grey-200);border-radius:10px;padding:3px}
.amozoom button{font-family:var(--font-head,"Montserrat",sans-serif);font-size:11.5px;font-weight:700;color:var(--text-body);background:none;border:0;border-radius:8px;padding:5px 12px;cursor:pointer}
.amozoom button.on{color:#fff;background:linear-gradient(to top right,var(--cl-crimson) 0%,var(--cl-orange) 100%)}
.amoslider{display:flex;align-items:center;gap:7px;background:var(--card);border:1px solid var(--grey-200);border-radius:10px;padding:4px 10px}
.amoslider input[type=range]{width:96px;accent-color:var(--cl-orange)}
.amoslider .amomut{flex-basis:auto;white-space:nowrap;min-width:56px}
.amocard{background:var(--card);border-radius:16px;box-shadow:var(--shadow);overflow:hidden;margin-bottom:12px}
.amodiv{height:11px;background:var(--grey-100);border-radius:6px;display:flex;align-items:center;justify-content:center;margin:0 0 12px}
.amodiv i{display:block;width:44px;height:3px;border-radius:2px;background:var(--grey-300)}
.amobandhead{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:8px 12px;background:var(--grey-100);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-body)}
.amobandhead em{font-style:normal;text-transform:none;letter-spacing:0;color:var(--text-muted)}
.amorow{display:flex;align-items:stretch;border-top:1px solid var(--grey-100);min-height:34px}
.amoname{width:210px;flex:none;display:flex;align-items:center;flex-wrap:wrap;gap:2px 6px;padding:5px 10px;border-right:1px solid var(--grey-200)}
.amoname b{font-family:var(--font-head,"Montserrat",sans-serif);font-size:12px;font-weight:700;color:var(--am-ink);white-space:nowrap}
.amopn{font-family:var(--font-head,"Montserrat",sans-serif);font-size:11.5px;font-weight:600;color:var(--text-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:170px}
.amomut{font-family:var(--font-mono);font-size:8.5px;color:var(--text-muted);flex-basis:100%;white-space:nowrap}
.amocar{background:none;border:0;color:var(--text-muted);cursor:pointer;font-size:11px;padding:0 2px}
.amotrack{flex:1;position:relative;min-width:0}
.amotail{box-sizing:border-box;width:150px;flex:none;display:flex;align-items:center;justify-content:flex-end;gap:7px;padding:5px 10px;border-left:1px solid var(--grey-200)}
.amotail .amomut{flex-basis:auto}
.amobar{position:absolute;top:50%;transform:translateY(-50%);height:20px;border-radius:5px;background:var(--cl-navy);color:#fff;display:flex;align-items:center;padding:0 8px;overflow:hidden}
.amobar b{font-size:10px;font-weight:700;white-space:nowrap}
.amoret{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.16) 0 6px,transparent 6px 12px)}
.amorbar{position:absolute;top:50%;transform:translateY(-50%);height:9px;border-radius:5px;background:var(--grey-300)}
.amonodate{position:absolute;top:50%;transform:translateY(-50%);left:8px;font-family:var(--font-mono);font-size:9px;color:var(--text-muted)}
.amoproj{background:var(--grey-50)}
.amocells{flex:1;min-width:0;display:grid;position:relative}
.amocell{position:relative;border-left:1px solid var(--grey-100);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:34px}
.amohead{background:var(--grey-50);padding:6px 2px}
.amohead b{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.amohead span{font-family:var(--font-mono);font-size:10.5px;color:var(--text-body)}
.amowe{background:var(--grey-100)}
.amohrow{min-height:0}
.amoheat span{font-family:var(--font-mono);font-size:11px;font-weight:500}
.amoover{font-family:var(--font-mono);font-size:9px;opacity:.85}
.amopeak{font-family:var(--font-mono);font-size:8.5px;opacity:.8}
.amonone{color:var(--text-muted);font-family:var(--font-mono);font-size:11px}
.amounc{background:var(--orange-100);color:var(--orange-700);font-family:var(--font-mono);font-size:10.5px}
.amouncrow{background:var(--orange-50)}
.amobandrow{min-height:62px;background:var(--grey-50)}
.amobandcells{position:relative}
.amoband{justify-content:flex-end;padding-bottom:8px}
.amobandcol{display:block;width:calc(100% - 12px)}
.amobandcol i{display:block;box-shadow:0 -1px 0 var(--card)}
.amobandcol i:first-child{border-radius:3px 3px 0 0}
.amocapline{position:absolute;left:0;right:0;border-top:2px dashed var(--grey-600);opacity:.8;pointer-events:none;z-index:4}
.amocaplbl{position:absolute;left:4px;font-family:var(--font-mono);font-size:8px;font-weight:500;color:var(--grey-600);background:var(--grey-50);padding:0 3px;z-index:5}
.amolegend{gap:13px}
.amolg{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:9px;text-transform:none;letter-spacing:0;color:var(--text-body)}
.amolg i{display:block;width:10px;height:10px;border-radius:3px}
.amoscale{display:flex;align-items:center;gap:5px;margin-left:auto}
.amoscale i{display:block;width:22px;height:11px;border-radius:3px}
.amoscale .amoline{display:block;width:2px;height:15px;background:var(--am-ink)}
.amoempty{padding:14px;color:var(--text-muted)}
.amowarn{border-left:3px solid var(--cl-orange)}
.amosec{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:6px 12px;background:var(--grey-50);border-top:1px solid var(--grey-200);font-family:var(--font-mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-body)}
.amosec em{font-style:normal;text-transform:none;letter-spacing:0;font-size:9.5px;color:var(--text-muted)}
.amoquiet{opacity:.85}
.amopinb{font-family:var(--font-head,"Montserrat",sans-serif);font-size:10.5px;font-weight:700;color:var(--text-body);background:var(--card);border:1px solid var(--grey-300);border-radius:9px;padding:4px 10px;cursor:pointer;white-space:nowrap}
.amopinb.on{color:#fff;background:linear-gradient(to top right,var(--cl-crimson) 0%,var(--cl-orange) 100%);border-color:transparent}
.amopinned{color:var(--am-ink);font-size:11px}
.amoother{background:var(--card)}
.amolocked{background:var(--grey-300)}
.amoclash{font-family:var(--font-mono);font-size:9px;font-weight:500;color:var(--cl-crimson);white-space:nowrap}
.amodrag{cursor:grab}
.amodragging{cursor:grabbing;opacity:.85;box-shadow:0 4px 14px rgba(25,35,65,.3)}
.amodragtip{position:absolute;top:-2px;transform:translateY(-100%);font-family:var(--font-mono);font-size:9.5px;color:#fff;background:var(--am-ink-bg);border-radius:5px;padding:2px 6px;white-space:nowrap;z-index:8;pointer-events:none}
.amopv{background:var(--card);border:1px solid var(--grey-300);border-left:3px solid var(--cl-orange);border-radius:12px;box-shadow:var(--shadow);padding:11px 14px;margin-bottom:12px}
.amopvhead{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.amopvhead b{font-family:var(--font-head,"Montserrat",sans-serif);font-size:13px;color:var(--am-ink)}
.amopvline,.amopvwarn,.amopvgood,.amopvbad{font-size:11.5px;line-height:1.5;padding:2px 0;color:var(--text-body)}
.amopvwarn{color:var(--cl-crimson)}
.amopvgood{color:var(--text-muted)}
.amopvbad{color:var(--cl-crimson);font-weight:500}
.amolink{background:none;border:0;padding:0;color:var(--am-ink);font:inherit;cursor:pointer;text-align:left}
.amolink:hover{color:var(--cl-orange)}
.amocrumb .amolink{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.amoelapsed{background:transparent;border:1.5px dashed var(--grey-500);color:var(--text-body)}
.amounclbar{background:var(--orange-100);color:var(--am-ink)}
.amoprog{position:absolute;left:0;bottom:0;height:3px;background:currentColor;opacity:.55}
.amotask{background:var(--grey-50);min-height:30px}
.amotask .amoname{padding-left:30px}
.amotask .amopn{font-weight:500;font-size:11px;max-width:150px}
.amotask .amobar{height:14px;border-radius:4px}
.amotask .amobar b{font-size:9px}
.amotask:last-child{border-bottom:1px solid var(--grey-100)}
.amocar:hover{color:var(--am-ink)}

/* --- a project opened out on the overview: assets, then their tasks --- */
.amoasset{background:var(--grey-50)}
.amoasset .amoname{padding-left:26px}
.amoasset .amopn{font-weight:600;font-size:11px;max-width:150px}
.amoasset .amobar{height:15px;border-radius:4px}
.amoasset .amobar b{font-size:9px}
.amoasset+.amotask .amoname{padding-left:44px}
.amotask .amoname{padding-left:44px}
.amocapb{font-size:9.5px;padding:3px 7px;opacity:.75}
.amocapb:hover{opacity:1}

/* --- a pinned asset or task, standing on its own in the working set --- */
.amopinitem .amoname{align-items:flex-start}
.amokind{font-family:var(--font-mono);font-size:8px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--text-muted);border:1px solid var(--grey-300);border-radius:4px;padding:1px 4px;flex:none}
.amotrail{flex-basis:100%;color:var(--text-muted);opacity:.85}
.amopinsm{font-size:9.5px;padding:3px 7px}

/* A dropped bar stays where you put it until you say yes, so the drag reads as
   having done something. The stripe says it has not happened yet. */
.amoproposed{outline:2px dashed var(--cl-orange);outline-offset:1px;
  background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.22) 0 5px,transparent 5px 10px)}

/* the answer to a drag follows you down the page rather than sitting at the top */
.amopv{position:sticky;top:6px;z-index:12}

/* ---------- retainers, inside the pipeline ---------- */
.amrwrap{border-radius:var(--radius-md)}
.amrwrap.open>.amrrow{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom-color:transparent}
.amrrow{display:grid;grid-template-columns:20px minmax(180px,2fr) minmax(120px,1fr) 110px minmax(140px,1fr) auto;
  gap:14px;align-items:center;background:var(--card);border:1px solid var(--grey-100);
  border-left:3px solid var(--am-ink);border-radius:var(--radius-md);padding:10px 14px;cursor:pointer}
.amrrow:hover{border-left-color:var(--cl-orange)}
.amrpanel{display:grid;grid-template-columns:262px minmax(0,1fr);background:var(--card);
  border:1px solid var(--grey-100);border-top:0;border-radius:0 0 var(--radius-md) var(--radius-md);overflow:hidden}

.amrrail{border-right:1px solid var(--grey-100);padding:12px;min-width:0;display:flex;flex-direction:column}
.amrrh{display:flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:9px;
  letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);margin-bottom:8px}
.amrq{width:100%;box-sizing:border-box;font-family:var(--font-mono);font-size:10px;padding:6px 8px;margin-bottom:9px}
.amrscroll{display:flex;flex-direction:column;gap:6px;max-height:430px;overflow-y:auto;padding-right:2px}
.amrgrp{display:flex;align-items:baseline;gap:6px;font-family:var(--font-mono);font-size:8.5px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--grey-400);margin-top:5px}
.amrgrp em{font-style:normal;text-transform:none;letter-spacing:0;color:var(--grey-400)}
.amrline{border:1px solid var(--grey-200);border-radius:8px;padding:7px 9px;background:var(--card)}
.amrline.spent{opacity:.5}
.amrgrab{cursor:grab}
.amrgrab:hover{border-color:var(--cl-orange)}
.amrlh{display:flex;align-items:center;gap:5px;margin-bottom:5px}
.amrlh b{font-family:var(--font-brand);font-size:11.5px;color:var(--am-ink);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
.amrlh span{margin-left:auto;font-family:var(--font-mono);font-size:8.5px;color:var(--text-muted);white-space:nowrap}
.amrdots{display:flex;gap:3px;flex-wrap:wrap}
.amrdot{display:block;width:12px;height:12px;border-radius:6px;border:1.5px dashed var(--grey-300)}
.amrdot.on{background:var(--am-ink);border:0}
.amrtrack{display:inline-block;width:calc(100% - 22px);height:6px;border-radius:3px;background:var(--grey-100);overflow:hidden;vertical-align:middle}
.amrtrack span{display:block;height:100%;background:var(--am-ink)}
.amrleft{font-family:var(--font-mono);font-size:9px;color:var(--am-ink);margin-left:5px}
.amrunl{display:flex;align-items:baseline;gap:6px}
.amrunl b{font-family:var(--font-brand);font-size:17px;font-weight:800;color:var(--am-ink)}
.amrunl span,.amrmut{font-family:var(--font-mono);font-size:9px;color:var(--text-muted)}
.amrwarn{font-family:var(--font-mono);font-size:8.5px;color:var(--orange-700);margin-top:5px}
.amrgone{font-family:var(--font-mono);font-size:8.5px;color:var(--text-muted);margin-top:3px}

.amrcar{padding:12px 14px;min-width:0}
.amrch{display:flex;align-items:center;gap:8px;margin-bottom:9px;font-family:var(--font-mono);font-size:9px;
  letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted)}
.amrnav{background:var(--card);border:1px solid var(--grey-200);border-radius:var(--radius-sm);
  width:24px;height:24px;color:var(--text-body);cursor:pointer;padding:0;line-height:1}
.amrnav:disabled{opacity:.4;cursor:default}
/* FZ: the strip of months, and one open month full width */
.amrstrip{display:flex;gap:6px;margin-bottom:10px;align-items:stretch}
.amrstripmore{flex:1;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:9px;color:var(--text-muted);border:1px dashed var(--grey-200);border-radius:8px;padding:4px 8px}
.amrnow{margin-left:0}
.amrnow:disabled{opacity:.45;cursor:default}
.amrchip{flex:0 0 118px;min-width:52px;border:1px solid var(--grey-200);border-radius:8px;background:var(--card);
  padding:5px 6px 4px;cursor:pointer;display:flex;flex-direction:column;gap:2px;align-items:stretch;font-family:var(--font-mono);color:var(--text-muted);text-align:left}
.amrchip b{font-family:var(--font-brand);font-size:11px;color:var(--am-ink);white-space:nowrap}
.amrchip span{font-size:8.5px}
.amrchip .amrcbar{display:block;height:3px;border-radius:2px;background:var(--grey-100);overflow:hidden}
.amrchip .amrcbar em{display:block;height:100%;background:var(--am-ink)}
.amrchip.over .amrcbar em{background:var(--cl-crimson)}
.amrchip.now b::after{content:'·';color:var(--cl-orange);margin-left:3px}
.amrchip:hover{border-color:var(--cl-orange)}
.amrchip.on{border-color:var(--am-ink-bg);background:var(--am-ink-bg);color:rgba(255,255,255,.75)}
.amrchip.on b{color:#fff}
.amrchip.on .amrcbar{background:rgba(255,255,255,.25)}
.amrchip.on .amrcbar em{background:#fff}
.amrchip.amrdrop{border:2px dashed var(--cl-orange);background:var(--orange-50);color:var(--text-muted)}
.amrchip.amrdrop b{color:var(--am-ink)}
.amrmonths{display:block}
.amrmonth{border:1px solid var(--grey-200);border-radius:var(--radius-md);background:var(--card);
  overflow:hidden;display:flex;flex-direction:column}
.amrmonth .amrmh{align-items:center;gap:10px;padding:9px 12px}
.amrmonth .amrmh b{font-size:14px}
.amrmonth .amrmh>span{font-size:9px}
.amrmonth>.amrbar{margin:0;border-radius:0;height:4px}
.amrmonth .amrbody{padding:8px 12px 12px;gap:4px;min-height:120px}
.amrsec{display:flex;align-items:baseline;gap:8px;font-family:var(--font-mono);font-size:8.5px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--grey-400);margin:8px 0 3px}
.amrsec:first-child{margin-top:0}
.amrsec em{font-style:normal;text-transform:none;letter-spacing:0}
.amrmonth .amrtok{border-radius:8px;padding:5px 6px 5px 10px;font-size:10px;gap:8px}
.amrmonth .amrtok span[data-redit]{flex:1 1 200px;font-family:var(--font-brand);font-size:12px;font-weight:600}
.amrorig{font-style:normal;font-size:8.5px;opacity:.75;white-space:nowrap;min-width:110px}
.amrwk,.amrtn{font-style:normal;font-size:8.5px;opacity:.75;white-space:nowrap;min-width:54px}
.amrmonth .amrh{font-size:9.5px;padding:2px 8px;min-width:54px;text-align:center}
.amrmonth .amrh small{font-size:8px;opacity:.75}
.amrmoveto{font-family:var(--font-mono);font-size:9px;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.12);
  color:inherit;border-radius:6px;padding:2px 4px;max-width:96px;cursor:pointer}
.amrmoveto option{color:var(--text-body)}
.amrtok.o-recurring .amrmoveto,.amrtok.o-extra .amrmoveto,.amrtok.o-pool .amrmoveto{background:var(--grey-50);border-color:var(--grey-200);color:var(--text-body)}
.amrsplit,.amrbuy{font-family:var(--font-mono);font-size:8.5px;border:1px solid rgba(255,255,255,.3);background:none;color:inherit;
  border-radius:6px;padding:2px 7px;cursor:pointer;white-space:nowrap}
.amrsplit:hover,.amrbuy:hover{background:rgba(255,255,255,.16)}
.amrtok.o-recurring .amrsplit,.amrtok.o-extra .amrsplit,.amrtok.o-pool .amrsplit,.amrtok.o-recurring .amrbuy,.amrtok.o-extra .amrbuy,.amrtok.o-pool .amrbuy{border-color:var(--grey-200);color:var(--text-body)}
.amrtok.o-recurring .amrsplit:hover,.amrtok.o-extra .amrsplit:hover,.amrtok.o-pool .amrsplit:hover,.amrtok.o-recurring .amrbuy:hover,.amrtok.o-extra .amrbuy:hover,.amrtok.o-pool .amrbuy:hover{background:var(--grey-50)}
.amrtok.o-pool{background:var(--card);border:1px solid var(--cl-orange);color:var(--text-body)}
.amrtok.o-pool .amrh{background:var(--orange-50);color:var(--orange-700)}
.amrsw.o-pool{background:var(--card);border:1px solid var(--cl-orange)}
.amrtok.split span[data-redit]::after{content:' ⋯';opacity:.6}
.amradd{margin-left:6px;width:18px;height:18px;border-radius:9px;border:1px solid var(--grey-300);background:var(--card);
  color:var(--am-ink);font-size:13px;line-height:1;cursor:pointer;padding:0;flex:none}
.amradd:hover{background:var(--am-ink-bg);color:#fff;border-color:var(--am-ink-bg)}
.amrsplitcard{width:min(620px,94vw)}
.amrsplitgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:6px}
.amrsplitgrid label{display:flex;flex-direction:column;gap:3px;font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.amrsplitgrid input{font-family:var(--font-mono);font-size:12px;padding:5px 7px;border:1px solid var(--grey-200);border-radius:6px;width:100%;min-width:0;box-sizing:border-box}
.amrsplitsum{margin-top:10px;font-family:var(--font-mono);font-size:10.5px;color:var(--text-body)}
.amrsplitsum.bad{color:var(--text-muted)}
@media (max-width:1100px){.amrorig{min-width:0}.amrwk,.amrtn{display:none}}
.amrmonth.over{border-color:var(--cl-crimson)}
.amrmonth.amrdrop{border:2px dashed var(--cl-orange);background:var(--orange-50)}
.amrmh{display:flex;align-items:baseline;gap:6px;padding:7px 9px;border-bottom:1px solid var(--grey-200);
  font-family:var(--font-mono);font-size:8.5px;color:var(--text-muted)}
.amrmh b{font-family:var(--font-brand);font-size:12px;color:var(--am-ink)}
.amrbody{padding:7px 9px;display:flex;flex-direction:column;gap:4px;min-height:104px}
.amrempty{font-family:var(--font-mono);font-size:8.5px;color:var(--grey-400);padding:3px 1px}
.amrtok{display:flex;align-items:center;gap:5px;border-radius:20px;padding:3px 4px 3px 9px;cursor:grab;
  background:var(--am-ink-bg);color:#fff;font-family:var(--font-mono);font-size:9px}
.amrtok span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.amrtok.o-recurring{background:var(--card);border:1px solid var(--grey-300);color:var(--text-body)}
.amrtok.o-extra{background:var(--card);border:1.5px dashed var(--cl-purple);color:var(--purple-700)}
.amrx{background:none;border:0;color:inherit;opacity:.55;cursor:pointer;font-size:12px;line-height:1;padding:0 4px}
.amrx:hover{opacity:1}
.amrfoot{margin-top:auto;padding:0 9px 8px}
.amrbar{height:5px;border-radius:3px;background:var(--grey-100);overflow:hidden;margin-bottom:4px}
.amrbar span{display:block;height:100%;background:var(--am-ink)}
.amrval{font-family:var(--font-mono);font-size:9px;color:var(--text-body)}
.amrover{color:var(--cl-crimson)}
.amrlegend{display:flex;align-items:center;gap:13px;flex-wrap:wrap;margin-top:11px;
  font-family:var(--font-mono);font-size:9px;color:var(--text-body)}
.amrsw{display:inline-block;width:18px;height:10px;border-radius:20px;background:var(--am-ink);
  vertical-align:middle;margin-right:5px}
.amrsw.o-recurring{background:var(--card);border:1px solid var(--grey-300)}
.amrsw.o-extra{background:var(--card);border:1.5px dashed var(--cl-purple)}
.amrghost{position:fixed;z-index:60;pointer-events:none;background:var(--am-ink-bg);color:#fff;
  font-family:var(--font-mono);font-size:9.5px;border-radius:20px;padding:3px 10px;
  box-shadow:0 4px 14px rgba(25,35,65,.3)}
.amrdragging{opacity:.5}
/* standing hours: in the month whether or not anyone put them there, so they
   are shown flat - no grab handle, no cross, nothing to drag */
.amrstand{display:flex;align-items:center;gap:6px;border-radius:var(--radius-sm);padding:3px 8px;
  background:var(--grey-50);border:1px dashed var(--grey-300);
  font-family:var(--font-mono);font-size:9px;color:var(--text-muted);cursor:default}
.amrstand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.amrstand b{color:var(--text-body);font-weight:500}
.amrtok span[data-rhours]{cursor:pointer;text-decoration-color:transparent}
.amrtok span[data-rhours]:hover{text-decoration:underline}
.amrh{background:rgba(255,255,255,.16);border:0;border-radius:20px;color:inherit;cursor:pointer;
  font-family:var(--font-mono);font-size:8px;padding:1px 6px;white-space:nowrap}
.amrh:hover{background:rgba(255,255,255,.3)}
.amrtok.o-recurring .amrh,.amrtok.o-extra .amrh{background:var(--grey-100);color:var(--text-body)}
.amrtok span[data-redit]{cursor:pointer}
.amrtok span[data-redit]:hover{text-decoration:underline}
.amrstand{cursor:pointer}
.amrstand:hover{border-color:var(--cl-orange)}
.amrstand.trimmed{border-style:solid;border-color:var(--cl-orange);background:var(--orange-50)}
.amrstand i{font-style:normal;color:var(--orange-700);font-size:8px}
.amrrail.amrdrop{background:var(--orange-50);outline:2px dashed var(--cl-orange);outline-offset:-3px}
/* with a retainer open, work above it can be dragged into one of its months */
.amrfrom{cursor:grab}
.amrsumb{font-size:9.5px;padding:3px 9px;margin-left:4px}
.amrsum{max-width:760px;padding:16px 18px}
.amrsh{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.amrsh b{font-family:var(--font-brand);font-size:15px;color:var(--am-ink)}
.amrspace{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:10px}
.amrspace b{font-family:var(--font-brand);font-size:17px;font-weight:800;color:var(--am-ink)}
.amrsbar{height:8px;border-radius:4px;background:var(--grey-100);overflow:hidden;margin:5px 0 4px}
.amrsbar .tt{display:block;height:100%;background:var(--grey-500)}
.amrsbar .vv{display:block;height:100%;background:var(--am-ink)}
.amrsbar .vv.over{background:var(--cl-orange)}
.amrsnote{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin-bottom:14px}
.amrst td i{display:block;font-style:normal;font-family:var(--font-mono);font-size:8.5px;color:var(--text-muted)}
.amrst .n{text-align:right;font-family:var(--font-mono);font-size:11px}
.amrst .warn{color:var(--cl-crimson)}
.amrst tr.xtra td:first-child{color:var(--purple-700)}

/* A key for the timeline. Texture is doing real work there - solid means a task
   can start, hatched means it is waiting on another - and nothing on the page
   said so, which is not a language anyone is born knowing. */
.amgantt .gkey{display:flex;flex-wrap:wrap;gap:14px;align-items:center;padding:8px 0 2px 150px;
  font-family:var(--font-mono);font-size:9px;color:var(--text-muted)}
.amgantt .gkey span{display:inline-flex;align-items:center;gap:5px}
.amgantt .gkey i{display:block;width:20px;height:9px;border-radius:5px;background:#9aa0ad}
.amgantt .gkey i.k-blk{background:repeating-linear-gradient(135deg,#c9ccd4,#c9ccd4 4px,#e6e8ec 4px,#e6e8ec 8px)}
.amgantt .gkey i.k-late{background:#9aa0ad;box-shadow:0 0 0 2px #f22a5c}
.amgantt .gkey i.k-blkline{width:14px;height:4px;border-radius:2px;background:#4c6ef5;opacity:.75}
.amgantt .gkey i.k-today{width:0;height:13px;border-radius:0;background:none;border-left:2px solid var(--cl-crimson)}
.amgantt .gkey i.k-logged{width:14px;height:4px;border-radius:2px;background:#f5bb8b}

/* ---- retainer set-up: where the lines are defined ---- */
.amrset{max-width:1240px;width:calc(100vw - 64px);padding:18px 22px}
.amrsfields{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;margin-bottom:14px}
.amrsfields label{display:flex;flex-direction:column;gap:4px;font-family:var(--font-mono);
  font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.amrsfields .aminp{width:150px}
.amrsfields .aminp.n{width:110px;text-align:right}
.amrsroll{flex-direction:row!important;align-items:center;gap:6px!important;text-transform:none;
  letter-spacing:0;font-size:11px;color:var(--text-body);padding-bottom:8px}
.amrsroll input{accent-color:var(--cl-orange)}
.amrsl{font-family:var(--font-mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--text-muted);margin-bottom:7px;display:flex;gap:9px;align-items:baseline;flex-wrap:wrap}
.amrsl em{font-style:normal;text-transform:none;letter-spacing:0;color:var(--grey-400)}
.amrstbl{table-layout:auto}
.amrstbl th{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--text-muted);font-weight:400;padding-bottom:5px}
.amrstbl td{padding:3px 5px 3px 0;vertical-align:top}
.amrstbl td small{display:block;font-family:var(--font-mono);font-size:8px;color:var(--grey-400);
  margin-top:2px;max-width:150px;line-height:1.35}
.amrstbl .aminp,.amrstbl .amsel{width:100%;font-size:12px;padding:5px 7px}
.amrstbl .aminp.n{text-align:right;width:78px}
.amrstbl td.n{text-align:right}
/* The asset's name and the sentence explaining how it behaves are what an
   account manager actually reads down this table; the numbers are glanced at.
   So those two columns get the room and the rest are held narrow. */
.amrstbl th.c-name,.amrstbl td.c-name{width:32%;min-width:230px}
.amrstbl th.c-kind,.amrstbl td.c-kind{width:30%;min-width:250px}
.amrstbl th.c-total,.amrstbl td.c-total{width:104px}
.amrstbl th.c-tasks,.amrstbl td.c-tasks{width:190px}
.amrstbl td.c-kind{white-space:nowrap}
.amrstbl td.c-kind .amsel{width:auto;min-width:124px;max-width:100%}
.amrstbl td.c-kind .amrper{margin-left:6px;min-width:96px}
.amrstbl td.c-kind small{max-width:none;white-space:normal}
.amrstbl td.c-total .aminp.n{width:100%}
.amrstbl td.c-tasks .ambtn{width:100%;text-align:left}
.amrstbl td.c-tasks .amrmut{display:block;padding-top:7px}
.amrx.dark{color:var(--text-muted);font-size:14px}
.amrx.dark:hover{color:var(--cl-crimson)}
.amrsadd{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:14px 0 8px;
  padding-top:12px;border-top:1px solid var(--grey-200)}
.amrsadd span{display:block;font-family:var(--font-mono);font-size:9px;color:var(--text-muted)}
.amrsadd b{display:block;font-family:var(--font-brand);font-size:18px;font-weight:800;color:var(--am-ink)}
.amrsadd b.warn{color:var(--orange-700)}
.amrsadd b.bad{color:var(--cl-crimson)}
.amrempty0{padding:14px 4px;display:flex;flex-direction:column;gap:9px;align-items:flex-start}
.amrempty0 b{font-family:var(--font-brand);font-size:12.5px;color:var(--am-ink)}
.amrempty0 p{margin:0;font-size:11.5px;line-height:1.55;color:var(--text-muted)}

/* ---- a line's tasks: sequence, never a timeline ---- */
.amrtsk{max-width:940px;width:calc(100vw - 80px);padding:18px 22px}
.amrtn{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end;margin-bottom:10px}
.amrtn label{display:flex;flex-direction:column;gap:4px;font-family:var(--font-mono);
  font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.amrtn .aminp{width:260px}
.amrtn .amsel{width:260px}
.amrtsktbl{table-layout:auto;width:100%}
.amrtsktbl th{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--text-muted);font-weight:400;padding-bottom:5px}
.amrtsktbl td{padding:3px 6px 3px 0;vertical-align:middle}
.amrtsktbl td.n{text-align:right}
.amrtsktbl .aminp,.amrtsktbl .amsel{width:100%;font-size:12px;padding:5px 7px}
.amrtsktbl th.c-no,.amrtsktbl td.c-no{width:22px;font-family:var(--font-mono);font-size:10px;
  color:var(--grey-400);text-align:right;padding-right:8px}
.amrtsktbl th.c-tname,.amrtsktbl td.c-tname{width:40%;min-width:200px}
.amrtsktbl th.c-tskill,.amrtsktbl td.c-tskill{width:170px}
.amrtsktbl th.c-thrs,.amrtsktbl td.c-thrs{width:76px}
.amrtsktbl td.c-thrs .aminp{text-align:right}
.amrtsktbl th.c-taft,.amrtsktbl td.c-taft{width:200px}
.amrtsktbl select:disabled{opacity:.4}
.amrup{background:none;border:0;color:var(--text-muted);cursor:pointer;font-size:12px;
  line-height:1;padding:0 3px}
.amrup:hover:not(:disabled){color:var(--cl-orange)}
.amrup:disabled{opacity:.25;cursor:default}
.amrtsum{display:flex;gap:10px;align-items:baseline;justify-content:flex-end;
  margin-top:12px;padding-top:10px;border-top:1px solid var(--grey-200)}
.amrtsum b{font-family:var(--font-brand);font-size:15px;font-weight:800;color:var(--am-ink)}

/* ---- a retainer still being prepared ---- */
.pipend{margin-bottom:6px}
.pirow.piretr{border-left-color:var(--cl-purple);background:linear-gradient(90deg,rgba(137,0,181,.045),transparent 220px)}
.piretk{font-size:10px;line-height:1;color:var(--cl-purple);text-align:center}
.pirow.piretr .pia .ambtn[disabled]{opacity:.4;cursor:default}

/* ---- "where are we": one dialog, a window you slide ---- */
.amrwin{border:1px solid var(--grey-100);border-radius:var(--radius-md);
  padding:11px 13px 9px;margin-bottom:14px;background:var(--grey-50)}
.amrwtrack{display:flex;gap:2px;align-items:stretch;height:26px;cursor:pointer}
.amrwtrack i{flex:1;min-width:3px;border-radius:2px;background:var(--grey-200);
  transition:background .12s}
.amrwtrack i.on{background:var(--am-ink)}
.amrwtrack i.fut{background:var(--grey-100)}
.amrwtrack i.on.fut{background:var(--grey-500)}
.amrwtrack i.jan{box-shadow:inset 2px 0 0 var(--card)}
.amrwtrack i.now{box-shadow:inset 0 -3px 0 var(--cl-crimson)}
.amrwtrack:hover i{opacity:.9}
.amrtends{display:flex;justify-content:space-between;font-family:var(--font-mono);
  font-size:9px;color:var(--text-muted);margin-top:4px}
.amrsliders{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:8px}
.amrsliders label{display:flex;gap:8px;align-items:center;font-family:var(--font-mono);
  font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.amrsliders input[type=range]{width:170px;accent-color:var(--cl-orange)}
.amrsliders label span{font-size:10.5px;letter-spacing:0;text-transform:none;
  color:var(--am-ink);font-weight:700;min-width:66px}
.amrwin .amrsnote{margin:8px 0 0}
.amrsbody{min-height:120px}
.amrwas{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--text-muted);margin-bottom:8px}

/* ---- machine time: on the rate card, worked by nobody ---- */
/* Teal, and used nowhere else: it must not be mistaken for the orange that
   means "this needs a person" or the dashed outline that means "a supplier
   has it". Nothing is wrong with a machine task - it just isn't human time. */
.amomachine{background:#c3f0ea;color:var(--am-ink);border:1.5px solid #0b7285}
.ammt{color:#0b7285;font-weight:700}
/* A machine-time task row: it has a skill and hours like any other, but no
   owner and nothing to schedule, so the assignee cell states that rather than
   drawing an empty control in warning colours. */
tr.ammachrow td.ammtcell{color:#0b7285;font-family:var(--font-mono);font-size:11px}
tr.ammachrow .tname + .ammt{margin-left:6px;font-family:var(--font-mono);font-size:10px;
  text-transform:uppercase;letter-spacing:.04em}
.pitrow .ptw.mach{color:#0b7285}
.amsmach td:first-child .aminp{border-color:#0b7285}
.amsmach{background:rgba(11,114,133,.045)}
.amrstbl td.c-tasks .ambtn em{font-style:normal;color:#0b7285}

/* the number and its unit belong on one line, not stacked under the box */
.amrsfields label .amrsunit{display:flex;align-items:baseline;gap:6px}
.amrsfields label .amrsunit .aminp.n{width:74px}
.amrsfields label .amrsunit em{font-style:normal;font-family:var(--font-mono);font-size:9px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--grey-400)}
.amrstbl th.c-freq,.amrstbl td.c-freq{width:150px}
.amrstbl td.c-freq .amsel{width:100%}
.amrstbl th.c-name,.amrstbl td.c-name{width:26%;min-width:210px}
.amrstbl th.c-kind,.amrstbl td.c-kind{width:24%;min-width:210px}

/* the window's own ends, draggable */
.amrwtrack{position:relative}
.amrwtrack i.edgeL{border-top-left-radius:4px;border-bottom-left-radius:4px}
.amrwtrack i.edgeR{border-top-right-radius:4px;border-bottom-right-radius:4px}
.amrwh{position:absolute;top:-3px;bottom:-3px;width:11px;margin-left:-5px;cursor:ew-resize;
  border-radius:3px;background:var(--cl-orange);box-shadow:0 0 0 2px var(--grey-50);z-index:2}
.amrwh::after{content:'';position:absolute;left:4px;top:50%;width:3px;height:11px;margin-top:-5px;
  border-left:1px solid rgba(255,255,255,.75);border-right:1px solid rgba(255,255,255,.75)}
.amrwh:hover{background:var(--cl-crimson)}

/* a review that is due says so without shouting */
.amrsumb.due{background:var(--orange-50);border-color:var(--orange-700);color:var(--orange-700);font-weight:700}
.amrrev .amrrevact{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px;
  padding-top:12px;border-top:1px solid var(--grey-200)}
/* The base token is white text on the dark ink. A variant that changes only the
   BACKGROUND therefore leaves white text on a near-white fill - which is how
   "Account management and calls" became invisible on a pale blue chip. Any
   variant that lightens the background has to restate the ink. */
.amrtok.o-continuous{background:#e7f5ff;border:1px solid #1971c2;color:#0b4a80}
.amrtok.o-continuous .amrh{background:#cfe6fb;color:#0b4a80}
.amrtok.o-continuous .amrx{color:#0b4a80}
.amrtok.o-continuous.trimmed{border-style:dashed}
.amrstand.skipped{opacity:.6;border-style:dashed}
.amrstand.skipped i{font-style:normal;font-family:var(--font-mono);font-size:8px;color:var(--text-muted)}

/* a review that has come due, and work the quote sent that is not a line yet */
.amrduechip{font-family:var(--font-mono);font-size:9px;letter-spacing:.04em;border-radius:20px;
  padding:3px 10px;background:var(--orange-50);color:var(--orange-700);cursor:pointer;white-space:nowrap}
.amrduechip:hover{background:var(--orange-100)}
.amrrevbox{border:1px solid var(--grey-200);border-radius:var(--radius-md);padding:10px 12px;margin-bottom:12px}
.amrrevbox.due{border-color:var(--orange-700);background:var(--orange-50)}
.amrrevbox b{font-family:var(--font-brand);font-size:12.5px;color:var(--am-ink)}
.amrrevbox .amrmut{display:block;margin-top:3px;line-height:1.5}
.amrrevbox .amrrevact{display:flex;gap:8px;margin-top:9px;flex-wrap:wrap}
.amrcand{margin-top:14px;padding-top:12px;border-top:1px solid var(--grey-200)}
.amrcandrow{display:flex;align-items:center;gap:10px;padding:5px 0}
.amrcandrow b{font-size:12.5px;color:var(--am-ink)}
.pirow .pin .piret{color:var(--cl-purple);font-weight:700}
/* An ad hoc group is a group too. It gets its own weight so it reads as a
   heading, but not the retainer's purple - the colour is the difference. */
.pirow .pin .piadh{color:var(--text-body,#1c1c1c);font-weight:700}
/* An ad hoc group: a heading that owns the rows beneath it, so the group is
   visible without taking their controls away. */
.pigrpblock{border:1px solid var(--grey-200,#eee);border-radius:10px;margin:6px 0;overflow:hidden}
.pigrphead{display:flex;align-items:center;gap:8px;padding:7px 10px;background:var(--grey-50,#fafafa);
  border-bottom:1px solid var(--grey-200,#eee)}
.pigrphead > b{font-size:13px;letter-spacing:-.01em}
/* The group name is a field wherever it appears - it is ours to change, and it
   should not look like a heading in one place and an input in another. */
.pignm{font:700 13px/1.3 inherit;letter-spacing:-.01em;color:inherit;background:transparent;
  border:1px solid transparent;border-radius:5px;padding:2px 5px;margin:-2px -5px;
  min-width:130px;max-width:340px;field-sizing:content}
.pignm:hover{border-color:var(--grey-300,#d8d8d8)}
.pignm:focus{border-color:var(--cl-purple,#8900b5);background:var(--surface,#fff);outline:none}
/* a purchase row in the pipeline task list - the same purple the purchase chip
   uses elsewhere, so one thing looks like one thing across the app */
.pitrow.pitbuy{background:rgba(137,0,181,.035)}
.pitrow.pitbuy .ptn .ampchip{margin-left:6px}
.pirow .pin .pignm{font-size:14px}
.pigrphead > small{color:var(--text-muted,#787878);font-size:11px;font-family:var(--font-mono)}
.pigrphead .sp{flex:1}
.pigrpblock .piwrap:last-child .pirow{border-bottom:0}

/* ---- client logos: light and dark, where the client is ---- */
.amlogos{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-start}
.amlogobox{width:190px;border:1px solid var(--grey-200);border-radius:var(--radius-md);
  overflow:hidden;cursor:pointer;background:var(--card);transition:border-color .12s,box-shadow .12s}
.amlogobox:hover,.amlogobox:focus{border-color:var(--cl-orange);outline:none}
.amlogobox.over{border-color:var(--cl-orange);box-shadow:0 0 0 3px var(--orange-50)}
.amlogobox.busy{opacity:.55;pointer-events:none}
.amlogoart{height:104px;display:flex;align-items:center;justify-content:center;padding:14px}
.amlogobox.light .amlogoart{background:#fff}
.amlogobox.dark .amlogoart{background:var(--am-ink)}
.amlogoart img{max-width:100%;max-height:100%;object-fit:contain}
.amlogoph{font-family:var(--font-brand);font-weight:800;font-size:26px;color:var(--grey-300)}
.amlogobox.dark .amlogoph{color:var(--grey-700)}
.amlogofoot{display:flex;align-items:center;gap:8px;padding:6px 10px;border-top:1px solid var(--grey-100);
  font-family:var(--font-mono);font-size:9px;letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted)}
.amlogofoot b{color:var(--am-ink);font-weight:700}
.amlogofoot .muted{margin-left:auto}
.amlogofoot .amx{margin-left:auto;font-size:15px}
.amlogonote{flex:1;min-width:220px;font-size:11.5px;line-height:1.55;color:var(--text-muted);padding-top:4px}

/* what the quote sold, before it becomes a line */
.amrqty{color:var(--am-ink);font-weight:800}
.amrfold{font-family:var(--font-mono);font-size:9px;border-radius:20px;padding:2px 8px;
  background:var(--grey-100);color:var(--text-muted);white-space:nowrap}
.amrfold.bad{background:var(--crimson-50);color:var(--crimson-700)}
.amrcandrow.warnrow b{color:var(--cl-crimson)}

/* a run of identical arrivals, shown as the one thing it is */
.pirow.pirun{border-left-color:var(--cl-purple);background:linear-gradient(90deg,rgba(137,0,181,.05),transparent 260px)}
.pirow.pirun .piretk{font-size:13px;color:var(--cl-purple);text-align:center}
.pirow .pin .piclash{color:var(--cl-crimson);font-weight:700}

/* one arrangement, several lines, from one quote */
.pirow.pigrp{align-items:flex-start}
.piglines{margin-top:6px;display:flex;flex-direction:column;gap:2px}
.pigline{display:flex;gap:8px;align-items:baseline;font-family:var(--font-mono);font-size:10px}
.pigline b{font-family:var(--font-body);font-size:11.5px;font-weight:600;color:var(--am-ink)}
.pigline span{color:var(--text-muted)}

/* ---- round AG: quote groups inside a project, and the pipeline doorbell ---- */

/* A quote group is a section of the project, so it reads as a band rather than
   a card: the assets inside it keep their own card treatment and would fight a
   second border. The left rule is the whole device - it says "these belong
   together" without adding a box. */
.amgroup { margin: 0 0 14px; border-left: 3px solid var(--cl-line, #e3e6ef); padding-left: 12px; }
.amgroup.retainer { border-left-color: var(--cl-purple, #8900b5); }
.amgroup.adhoc { border-left-color: var(--cl-orange, #ff7800); }
.amgh { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 4px 0 8px; }
.amgh > b { font-size: 14px; letter-spacing: -.01em; }
/* The group name is OURS to change, so it looks like a field you can type in
   rather than a heading you cannot - but only once you go near it, or every
   group header turns into a form. */
.amgh > input.amgname { font-size: 14px; letter-spacing: -.01em; font-weight: 700;
  font-family: inherit; color: inherit; background: transparent; border: 1px solid transparent;
  border-radius: 5px; padding: 2px 5px; margin: -2px -5px; min-width: 120px; max-width: 380px;
  width: auto; field-sizing: content; }
.amgh > input.amgname:hover { border-color: var(--grey-300, #d8d8d8); }
.amgh > input.amgname:focus { border-color: var(--cl-purple, #8900b5); background: var(--surface, #fff); outline: none; }
.amgh > small { color: var(--cl-muted, #6b7280); font-size: 11.5px; }
.amgh .amsum { margin-left: auto; }
.amgh .amcar { transition: transform .12s ease; }
.amgroup:not(.on) > .amcolbody { display: none; }
.amgroup.on > .amgh .amcar { transform: rotate(90deg); }
.amghint { color: var(--cl-muted, #6b7280); font-weight: 400; }

/* Two states worth calling out by name. "Not set up yet" is the one that costs
   money if it is missed, so it is the loud one. */
.amgwarn, .amgok { font-size: 11px; padding: 2px 7px; border-radius: 10px; white-space: nowrap; }
.amgwarn { background: #fff1f4; color: var(--cl-crimson, #f22a5c); border: 1px solid #ffd6de; }
.amgok { background: #f3ecfb; color: var(--cl-purple, #8900b5); border: 1px solid #e6d8f5; }
.amchip.mixed { background: #ece9fb; color: #4b3ba8; }

/* The doorbell. It sits under the toolbar, in the flow, so it pushes the list
   down rather than covering the top row of it - the row a person is most likely
   to be reaching for at the moment it appears. */
.ampibell { display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin: 8px 0 4px; padding: 8px 12px; border-radius: 8px;
  background: #fff4e8; border: 1px solid #ffd7b0; color: #7a3d00; font-size: 12.5px; }
.ampibell b { color: var(--cl-navy, #192341); }
.ampibell .ambtn { margin-left: 2px; }
@media (prefers-reduced-motion: no-preference) { .ampibell { animation: ampibellin .18s ease-out; } }
@keyframes ampibellin { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: none; } }

/* A currency disagreement is a different kind of wrong from "not set up yet":
   the first is a number that will be invoiced incorrectly, the second is a job
   nobody has done. Same weight, so neither hides the other, but distinguishable
   at a glance when both are on the same row. */
.amgccy { background: #fff4e8; color: #a34700; border-color: #ffd7b0; }

/* The blended rate is a consequence of the quote, not a preference. When the
   figure in the box disagrees with what the client is actually paying per hour,
   offer the real one rather than reporting the difference as a problem. */
.amrfix { display: inline-block; margin-top: 4px; padding: 3px 9px; font: inherit; font-size: 11.5px;
  color: var(--cl-navy, #192341); background: #fff4e8; border: 1px solid #ffd7b0;
  border-radius: 999px; cursor: pointer; }
.amrfix:hover { background: #ffe8d2; border-color: #ffc98f; }
.amrfix:active { transform: translateY(1px); }

/* A line committing nothing is a different problem from a wrong rate, and it
   has to be fixed first - otherwise "balancing" the books just inflates the
   price until the missing work is paid for by the lines that remain. */
.amrsilent { margin-top: 6px; padding: 7px 10px; border-radius: 8px;
  background: #fff4e8; border: 1px solid #ffd7b0; font-size: 11.5px; line-height: 1.5; }
.amrsilent strong { display: block; font-weight: 700; color: var(--cl-navy, #192341); }
.amrsilent span { display: block; color: #7a3d00; }
.amrsilent em { display: block; margin-top: 3px; color: #7a3d00; font-style: normal; opacity: .85; }

/* A derived number is not an empty input. It reads as a fact, because it is one:
   the hours on the line's tasks, which is the only place they are recorded. */
.amrderived { display: inline-block; font-weight: 600; color: var(--cl-navy, #192341); }

/* An hours figure with no stated period is a number waiting to be misread.
   The editor now says the cadence before you type a single one. */
.amrcad { display: block; margin-bottom: 3px; color: var(--cl-navy, #192341); font-weight: 700; }
.amrper { display: block; font-weight: 400; font-size: 10.5px; letter-spacing: .02em;
  text-transform: none; color: var(--text-muted, #787878); }

/* A folded continuous line stands for many months at once, so it reads as a
   band rather than a single bar you could drag one month of. */
.amorow.amofold .amoname .amopn{font-weight:700}
.amobar.amocont{background:repeating-linear-gradient(135deg,#1971c2,#1971c2 6px,#1b7ed6 6px,#1b7ed6 12px);border-color:#0b4a80}

/* Stepping a month changed four small numbers in a header and nothing else, so
   two clicks felt like none. The months now visibly arrive from the side they
   came from - the shortest possible animation that answers "did that work?"
   and "which way did I go?" at once. */
/* Stepping a month has to be unmistakable. The first attempt moved the cards
   14px and faded them slightly, which read as a redraw rather than as movement.
   These travel most of a card's width, arrive one after another so the eye can
   follow the direction, and the one that just came into view is briefly ringed
   - so "which way did I go" and "what is new" are both answered without
   reading a single date. */
@media (prefers-reduced-motion: no-preference) {
  .amrmonths.slid-r > *{animation:amrslideR .34s cubic-bezier(.22,1,.36,1) both}
  .amrmonths.slid-l > *{animation:amrslideL .34s cubic-bezier(.22,1,.36,1) both}
  .amrmonths.slid-r > *:nth-child(2),.amrmonths.slid-l > *:nth-child(3){animation-delay:.045s}
  .amrmonths.slid-r > *:nth-child(3),.amrmonths.slid-l > *:nth-child(2){animation-delay:.09s}
  .amrmonths.slid-r > *:nth-child(4),.amrmonths.slid-l > *:nth-child(1){animation-delay:.135s}
  .amrmonths.slid-r > *:last-child,.amrmonths.slid-l > *:first-child{animation-name:amrslideIn}
}
@keyframes amrslideR{from{opacity:0;transform:translateX(78%)}to{opacity:1;transform:none}}
@keyframes amrslideL{from{opacity:0;transform:translateX(-78%)}to{opacity:1;transform:none}}
/* the month that has just arrived says so for a moment */
@keyframes amrslideIn{
  0%{opacity:0;transform:translateX(90%);box-shadow:0 0 0 2px var(--cl-orange,#ff7800)}
  70%{opacity:1;transform:none;box-shadow:0 0 0 2px var(--cl-orange,#ff7800)}
  100%{opacity:1;transform:none;box-shadow:0 0 0 0 rgba(255,120,0,0)}
}
/* and the range in the header ticks over with them, so the two agree */
@media (prefers-reduced-motion: no-preference) {
  .amrwrange.bumped{animation:amrbump .34s ease-out both}
}
@keyframes amrbump{0%{transform:scale(1)}35%{transform:scale(1.09)}100%{transform:scale(1)}}
/* and the range in the header is the thing that actually changed, so weight it */
.amrwnav b,.amrwrange{font-weight:700;color:var(--text-heading,var(--cl-navy,#192341))}
/* an arrow that cannot go anywhere should look like it */
#amrprev:disabled,#amrnext:disabled{opacity:.3;cursor:default}

/* A retired group is history, not a warning: it recedes rather than shouting,
   because nothing needs doing about it. It is still readable, because it is the
   record of what was agreed and somebody will come looking for it. */
.amgroup.retired{opacity:.6;border-left-style:dotted}
.amgroup.retired .amgh > b{text-decoration:line-through;text-decoration-thickness:1px}
.amgroup.retired .amgh > input.amgname{text-decoration:line-through;text-decoration-thickness:1px}
.amgretired{font-size:11px;padding:2px 7px;border-radius:10px;white-space:nowrap;
  background:var(--grey-100,#eeeff1);color:var(--text-muted,#787878);border:1px solid var(--grey-300,#c7cad0)}

/* Work outside the months on screen. It used to be drawn as a sliver clamped to
   the edge, and twelve of those in a column read as "one a week" - the opposite
   of what the dates beside them said. An arrow cannot be mistaken for a bar. */
.amooff{display:inline-block;padding:1px 7px;border-radius:10px;font-family:var(--font-mono);
  font-size:9px;color:var(--text-muted,#787878);background:var(--grey-100,#eeeff1);
  border:1px dashed var(--grey-300,#c7cad0)}
/* A folded line draws each of its months as its own small block on one row, so
   the rhythm of the retainer is visible without one row per month. */
.amorow.amofold .amoname .amopn{font-weight:700}
.amorow.amofold .amobar.amocont{background:#1971c2;border-color:#0b4a80;opacity:.85}
.amorow.amofold .amobar.amocont b{display:none}

/* A task inside a month inside a folded line - one indent further in, so the
   nesting is visible rather than implied. */
.amorow.amotask.amosub .amoname{padding-left:34px}
.amorow.amomore .amoname{padding-left:22px}
.amorow.amomore .amopinb{font-size:10.5px;padding:2px 9px}

/* In the plan / out of it. A switch rather than a bare checkbox, because the
   two states have to be readable at a glance in a dense table. */
.amswitch{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-family:var(--font-mono);font-size:10px}
.amswitch span{color:var(--text-muted,#787878);text-transform:uppercase;letter-spacing:.04em}
.amswitch input:checked ~ span{color:var(--cl-navy,#192341);font-weight:700}
/* An exclusion nobody remembers is worse than none, so it says so on the plan. */
.amorow.amooffwarn{background:#fff4e8;border-top:1px solid #ffd7b0;border-bottom:1px solid #ffd7b0}
.amorow.amooffwarn .amoname b{color:#7a3d00}

/* The capacity lens. A test setting that changes what a plan LOOKS like has to
   be impossible to leave on by accident, so it is coloured while it is active
   and the plan carries a line saying so. */
.amplev.amolens{display:inline-flex;align-items:center;gap:6px}
.amplev.amolens.on{background:#fff4e8;border-color:#ffd7b0;color:#7a3d00;border-radius:8px;padding:2px 8px}
.amolenswarn{background:#fff4e8;border-top:1px solid #ffd7b0;border-bottom:1px solid #ffd7b0}
.amolenswarn b{color:#7a3d00;display:block}
.amolenswarn span{color:#7a3d00;opacity:.9}
.amolenswarn{display:flex;align-items:center;gap:10px;flex-wrap:wrap;width:100%;
  margin-top:6px;padding:6px 10px;border-radius:8px;background:#fff4e8;border:1px solid #ffd7b0;font-size:11.5px}

/* A task of a pinned asset, drawn beside it at the top where it can be moved. */
.amorow.amopintask .amoname{padding-left:30px}
.amorow.amopintask{background:var(--card,#fff)}

/* A purchase is money the account manager may spend with somebody else. It is
   not hours and not capacity, so it reads as a budget rather than as work. */
.pim em.ambuy{background:#f3ecfb;color:var(--cl-purple,#8900b5);border:1px solid #e6d8f5;
  border-radius:10px;padding:1px 8px}
.pim em.ambuy b{color:var(--cl-crimson,#f22a5c)}

/* A purchase row. Two fields instead of six controls that cannot be filled in:
   who we buy it from, and what we may spend. It keeps a status and a due date,
   because a voice-over still has to arrive by Friday. */
tr.ampurch > td{background:#fbf7fe}
tr.ampurch.needs > td{background:#fff4e8}
.ampchip{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:10px;
  font-family:var(--font-mono);font-size:9px;letter-spacing:.04em;text-transform:uppercase;
  background:#f3ecfb;color:var(--cl-purple,#8900b5);border:1px solid #e6d8f5;vertical-align:middle}
td.ampbuy{display:table-cell}
td.ampbuy .ampf{display:inline-flex;align-items:center;gap:5px;margin-right:14px}
td.ampbuy label{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.04em;
  text-transform:uppercase;color:var(--text-muted,#787878)}
td.ampbuy .ampcur{font-family:var(--font-mono);font-size:11px;color:var(--text-muted,#787878)}
td.ampbuy input{max-width:150px}
td.ampbuy input.n{max-width:88px;text-align:right}
td.ampbuy input.days{max-width:56px}
td.ampbuy .ampsell{font-family:var(--font-mono);font-size:10px;color:var(--cl-purple,#8900b5)}
tr.ampurch.needs td.ampbuy input::placeholder{color:#c25b00}

/* The month that has just come into view. Deliberately NOT an animation: on a
   machine with Reduce Motion on, every animation is switched off and the cards
   appear in place, which is why two animated attempts at this were reported as
   "no different". An outline and a tinted heading do not care about that
   setting. It clears itself after a second. */
.amrmonth.justin{
  outline:2px solid var(--cl-orange,#ff7800);outline-offset:-2px;border-radius:10px;
  background:rgba(255,120,0,.07)}   /* 1016: a tint, not a white - it went white for a second in dark mode */
.amrmonth.justin .amrmh{color:var(--orange-700,#c25b00)}
@media (prefers-reduced-motion: no-preference){
  .amrmonth.justin{transition:outline-color .5s ease .4s,background .5s ease .4s}
}

/* The note on a task. Reads as text until you touch it, so a row with a note is
   legible at a glance and a row without one is not cluttered by an empty box -
   but either way it is on screen, which it was not before. */
.amnoteline{display:block;width:100%;margin-top:2px;padding:1px 3px;border:1px solid transparent;
  border-radius:4px;background:transparent;font-family:var(--font-body);font-size:11.5px;
  color:var(--text-muted,#787878);line-height:1.35}
.amnoteline::placeholder{color:var(--grey-400,#a3a7af);font-size:11px}
.amnoteline:hover{border-color:var(--grey-200,#e0e2e6)}
.amnoteline:focus{border-color:var(--cl-orange,#ff7800);background:var(--card,#fff);
  color:var(--text-body,#3f4553);outline:none}
tr.ampurch .amnoteline{color:var(--cl-purple,#8900b5)}

/* the note above the client grid, and the status picker on a client card (the Drive/Dropbox choice it once held is gone - HQ) */
.amsrc{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 14px;
  padding:9px 14px;border:1px solid var(--grey-200);border-radius:10px;background:var(--card);font-size:12.5px}
.amsrc b{font-family:var(--font-brand);font-size:12.5px}
.amsrc .sp{flex:1}
.amcsrc{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;
  padding-top:8px;border-top:1px solid var(--grey-100);font-size:11.5px;color:var(--text-muted)}
.amcsrc label{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
.amcsrc input{cursor:pointer}
.amcsrc.wide{margin-top:10px;border-top:0;padding-top:0}
.amcsrc.wide b{font-family:var(--font-brand);font-size:12px;color:var(--text-heading)}
.amcsrc.gap{color:var(--crimson-700)}
.amcgap{font-family:var(--font-mono);font-size:10px;color:var(--crimson-700)}
.ammatchbox{max-height:46vh;overflow:auto;text-align:left;font-size:12.5px}
.ammatchbox h4{margin:12px 0 4px;font-family:var(--font-brand);font-size:12.5px}
.ammatchbox h4:first-child{margin-top:0}
.ammatch{margin:0;padding-left:18px}
.ammatch li{margin:1px 0;line-height:1.45}
.ammatch i{color:var(--text-muted);font-style:normal;font-size:11.5px}

/* status of the relationship: a stripe down the card, and the picker on it */
.amcc.st-dormant{border-left:3px solid #8a94a6}
.amcc.st-former{border-left:3px solid var(--cl-crimson);opacity:.82}
.amcst{display:flex;gap:9px;flex-wrap:wrap;margin-top:6px;font-size:11px;color:var(--text-muted)}
.amcst label{display:inline-flex;align-items:center;gap:4px;cursor:pointer}
.amcst.s-lead{color:var(--steel-700,#3b6ea5)}   /* HO: the cool end of the set - a lead is not yet a working client */
.amcst.s-dormant{color:#5d6779}
.amcst.s-former{color:var(--crimson-700)}
.amchips{display:inline-flex;gap:5px;flex-wrap:wrap}
.amchip{border:1px solid var(--grey-200);background:var(--card);border-radius:999px;
  padding:3px 11px;font:inherit;font-size:11.5px;cursor:pointer;color:var(--text-body)}
.amchip i{font-style:normal;font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin-left:3px}
.amchip:hover{border-color:var(--cl-orange)}
.amchip.on{background:var(--cl-orange);border-color:var(--cl-orange);color:#fff}
.amchip.on i{color:rgba(255,255,255,.8)}
/* the reconcile review */
.amtbl.plan td{padding:4px 8px;vertical-align:middle;border-bottom:1px solid var(--grey-100)}
.amtbl.plan td.w1{width:26px}
.amtbl.plan td.w2{width:120px}
.amtbl.plan tr.likely{background:var(--orange-50)}
.amtbl.plan i{font-style:normal;color:var(--text-muted);font-size:11px}
.amscore{font-family:var(--font-mono);font-size:10px;color:var(--crimson-700);margin-left:6px}
.aminp.sm,.amsel.sm{padding:3px 7px;font-size:12px}
.amempty.sm{padding:6px 0;font-size:12px}
.amtick{display:inline-flex;align-items:center;cursor:pointer}

/* ---- round DF: hours-only mode -----------------------------------------
 * A nav button, not a settings checkbox: it changes what the whole side of
 * the app shows, and it has to be one click away when somebody walks over.
 * The ROLE still decides whether money exists for this person at all - this
 * only draws the curtain, so it is per browser and never asked of the server.
 */

/* ---- round DG: a line's PRICE, and the day it must start by --------------
 * The retainer set-up table grew two columns. Both are narrow on purpose: a
 * price is a small number and a day of the month is two digits, and the space
 * belongs to the name and the sentence explaining how the line behaves.
 */
.amrstbl th.c-price,.amrstbl td.c-price{width:132px}
.amrstbl th.c-lsd,.amrstbl td.c-lsd{width:118px}
.amrstbl td.c-price .amrsunit,.amrstbl td.c-lsd .amrsunit{display:flex;align-items:center;gap:4px}
.amrstbl td.c-price .amrsunit em,.amrstbl td.c-lsd .amrsunit em{font-style:normal;
  font-family:var(--font-mono);font-size:10px;color:var(--grey-400);white-space:nowrap}
.amrstbl td.c-price .aminp.n,.amrstbl td.c-lsd .aminp.n{width:100%}
.amrstbl td.c-price .amrmode{margin-bottom:4px}
.amrstbl td.c-price small,.amrstbl td.c-lsd small{white-space:normal;max-width:none}
.amrstbl td.c-lsd .amrmut{display:block;padding-top:7px;text-align:center}

/* ---- round DH: moving a line into the pool ------------------------------
 * A quiet action, not a button people should reach for by accident - it sits
 * beside the delete cross and reads as a direction, because that is what it
 * is: the line goes from being a fixed number of things to being a price.
 */
.amrpool{background:none;border:1px solid var(--rule,rgba(25,35,65,.18));border-radius:6px;
  font-family:var(--font-mono);font-size:9px;letter-spacing:.04em;padding:3px 6px;
  color:var(--grey-500,#787878);cursor:pointer;margin-right:6px;white-space:nowrap}
.amrpool:hover{color:var(--cl-orange,#ff7800);border-color:var(--cl-orange,#ff7800)}

/* ==========================================================================
   ROUND DI - THE PLANNER'S OWN LOOK
   ==========================================================================
   The brand was already here: Montserrat, Roboto, Roboto Mono, the orange and
   the navy. What was missing was the TREATMENT - room to breathe, a hairline
   edge on every surface so a card reads as an object rather than a shadow, a
   type scale that is actually a scale, and labels in mono so a heading and a
   field label are never mistaken for each other.

   Everything here sits at the end of the file on purpose: same specificity as
   the rules it revises, so source order decides, and each block says what it
   is replacing. It restyles the PLANNER only. The team side keeps its own
   look, which is the one the whole company sees every morning.
   ========================================================================== */

:root{
  /* A hairline, not a border. Two weights: the quiet one that separates rows
     inside a card, and the firm one that says "this is an edge you can act on"
     - an input, a segmented control, the outside of a working surface. */
  --am-rule:rgba(25,35,65,.10);
  --am-rule-firm:rgba(25,35,65,.20);
  /* A surface a shade below the card: table headers, step rails, the inside of
     a well. Never used for text. */
  --am-sunk:var(--grey-100);
  /* THE ONE SEMANTIC PAIR THIS FILE ADDS, and it earns its place in triage:
     the quote is the PAST - frozen, grey, never editable - and reality is
     LIVE. Steel against orange, so which side you are typing into is obvious
     from across the room rather than from reading the column heading. */
  --am-was:var(--steel-700,#3f5175);
  --am-was-bg:#eef1f7;
  --am-was-edge:#d5dced;
  --am-now-bg:var(--orange-50,#fff4e8);
  --am-now-edge:#ffe2c4;
}
:root[data-theme="dark"]{
  --am-rule:rgba(255,255,255,.12);
  --am-rule-firm:rgba(255,255,255,.24);
  --am-sunk:#161d31;
  --am-was:#9fb0d4;
  --am-was-bg:#1f2942;
  --am-was-edge:#33405f;
  --am-now-bg:#3a2410;
  --am-now-edge:#5a3a18;
}

/* ---- the type scale ------------------------------------------------------
 * Three sizes and three weights, and nothing else. The old file had 20/800,
 * 14/800 and a 15/700 doing similar jobs at similar sizes, which is why
 * headings never quite read as a hierarchy. */
.view[id^="view-am-"] .amhead h2{font-size:23px;font-weight:800;letter-spacing:-.015em;line-height:1.15}
.view[id^="view-am-"] .amsec h3{font-size:14px;font-weight:700;margin-bottom:14px}
.view[id^="view-am-"] .amcc h3{font-size:15.5px;font-weight:700;letter-spacing:-.005em}

/* An EYEBROW: mono, uppercase, tracked out, and never the same size as
   anything you are meant to read. It says where you are; the heading says
   what you are looking at. */
.amtitle{display:flex;flex-direction:column;gap:1px;min-width:0}
.ameyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--text-muted);line-height:1.2}
/* One sentence under a section heading, in the muted ink. Long enough to say
   what the section is for, short enough that nobody skips it. */
.amlede{font-size:13px;color:var(--text-muted);max-width:72ch;margin:-6px 0 14px}

/* ---- surfaces ------------------------------------------------------------
 * A card is an object with an edge. Shadow alone leaves it floating on a
 * background of almost the same colour, which is why the panels read as one
 * long page rather than as a set of things. */
.view[id^="view-am-"] .amsec,
.view[id^="view-am-"] .amcc,
.view[id^="view-am-"] .amlist{border:1px solid var(--am-rule)}
.view[id^="view-am-"] .amsec{padding:20px 24px;margin-bottom:18px}
.view[id^="view-am-"] .amcc{padding:18px 20px}
.view[id^="view-am-"] .amcc:hover{border-color:var(--am-rule-firm)}

/* ---- tables --------------------------------------------------------------
 * Smaller, quieter headers; more air in the rows; and every column of digits
 * lines up whether it is in the mono face or not. */
.view[id^="view-am-"] .amtbl th{font-size:9.5px;letter-spacing:.12em;font-weight:400;
  padding:7px 10px;border-bottom:1px solid var(--am-rule)}
.view[id^="view-am-"] .amtbl td{padding:8px 10px;border-bottom:1px solid var(--am-rule)}
.view[id^="view-am-"] .amtbl td.num,
.view[id^="view-am-"] .amtbl th.num{font-variant-numeric:tabular-nums}
.view[id^="view-am-"] .amtbl thead th{background:none}

/* ---- controls ------------------------------------------------------------
 * The button loses its gradient HERE ONLY. A gradient on a 12px control is
 * three colours in a space too small to read any of them, and next to a table
 * of figures it shouts. The team side keeps it: that is the app the whole
 * company opens every morning, and its look is not this file's business. */
.view[id^="view-am-"] .ambtn{background:var(--cl-orange);border:1px solid var(--cl-orange);
  font-weight:600;font-size:12.5px;padding:8px 15px;border-radius:9px}
.view[id^="view-am-"] .ambtn:hover:not(:disabled){background:#e96d00;border-color:#e96d00}
.view[id^="view-am-"] .ambtn.ghost{background:none;border-color:var(--am-rule-firm);color:var(--text-body)}
.view[id^="view-am-"] .ambtn.ghost:hover:not(:disabled){border-color:var(--cl-orange);color:var(--cl-orange);background:none}
.view[id^="view-am-"] .ambtn.danger{background:none;border-color:var(--cl-crimson);color:var(--cl-crimson)}
.view[id^="view-am-"] .aminp,
.view[id^="view-am-"] .amsel{border-color:var(--am-rule-firm);border-radius:8px}

/* ---- chips ---------------------------------------------------------------
 * A chip is a label, not a badge. Solid navy on white was heavier than the
 * heading beside it, so a row of chips read as the most important thing on
 * the card. Tinted, they sit where they belong. */
.view[id^="view-am-"] .amchip{font-size:9px;letter-spacing:.09em;padding:2px 8px;
  background:var(--am-sunk);color:var(--text-muted)}
.view[id^="view-am-"] .amchip.retainer{background:var(--am-was-bg);color:var(--am-was)}
.view[id^="view-am-"] .amchip.adhoc{background:var(--am-now-bg);color:var(--orange-700,#c25b00);border:0}

/* ---- the frozen / live pair, ready for the triage bench ------------------ */
.amwas{background:var(--am-was-bg);border:1px solid var(--am-was-edge);border-radius:10px;
  padding:9px 11px;display:flex;flex-direction:column;gap:3px}
.amnow{background:var(--card);border:1px solid var(--am-rule-firm);border-radius:10px;
  padding:9px 11px;display:flex;flex-direction:column;gap:3px}
.amnow.added{background:var(--am-now-bg);border-color:var(--am-now-edge)}
.amnow.dropped{border-style:dashed;opacity:.72}
.amwas .nm,.amnow .nm{font-size:12.5px;color:var(--text-heading);font-weight:500}
.amwas .mt,.amnow .mt{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);
  font-variant-numeric:tabular-nums}

/* The dialogs live on document.body, outside the panel they were opened from,
   so none of the above reaches them. They are the same app and must look it -
   and .ambtn, .amtbl and .amchip are ours, so scoping by .hmwrap touches
   nothing the team side owns. */
.hmwrap .ambtn{background:var(--cl-orange);border:1px solid var(--cl-orange);
  font-weight:600;font-size:12.5px;padding:8px 15px;border-radius:9px}
.hmwrap .ambtn:hover:not(:disabled){background:#e96d00;border-color:#e96d00}
.hmwrap .ambtn.ghost{background:none;border-color:var(--am-rule-firm);color:var(--text-body)}
.hmwrap .ambtn.ghost:hover:not(:disabled){border-color:var(--cl-orange);color:var(--cl-orange);background:none}
.hmwrap .ambtn.danger{background:none;border-color:var(--cl-crimson);color:var(--cl-crimson)}
.hmwrap .aminp,.hmwrap .amsel{border-color:var(--am-rule-firm);border-radius:8px}
.hmwrap .amtbl th{font-size:9.5px;letter-spacing:.12em;font-weight:400;
  padding:7px 10px;border-bottom:1px solid var(--am-rule)}
.hmwrap .amtbl td{border-bottom:1px solid var(--am-rule)}
.hmwrap .amtbl td.num,.hmwrap .amtbl th.num{font-variant-numeric:tabular-nums}
.hmwrap .amchip{font-size:9px;letter-spacing:.09em;padding:2px 8px;
  background:var(--am-sunk);color:var(--text-muted)}

/* Two columns arrived in DG and DH and were sized before anything was in them.
   A select that reads "Fixed pric" and a price that wraps under its own pound
   sign are worse than no styling at all. */
.amrstbl th.c-price,.amrstbl td.c-price{width:152px}
.amrstbl th.c-lsd,.amrstbl td.c-lsd{width:124px}
.amrstbl td.c-price .amsel{width:100%;min-width:0}
.amrstbl td.c-price .amrsunit{flex-wrap:nowrap}
.amrstbl td.c-price .amrsunit .aminp.n{min-width:0}
.amrstbl td.c-lsd .amrsunit{flex-wrap:nowrap}
.amrstbl td.c-lsd .amrsunit .aminp.n{width:52px;flex:none}
/* the row's two actions belong on one line, at the end of the row */
.amrstbl td.n{white-space:nowrap}
.amrstbl td.n .amrpool{vertical-align:middle}
.amrstbl td.n .amrx{vertical-align:middle}
/* the dialog's own confirm button, flattened with the rest */
.hmwrap .amopinb.on{background:var(--cl-orange);border:1px solid var(--cl-orange);color:#fff}
.hmwrap .amopinb.on:hover{background:#e96d00;border-color:#e96d00}
/* "Fixed pr" is not a word. The select needs the room its longest option asks
   for, and at this size the label can carry a little less weight. */
.amrstbl th.c-price,.amrstbl td.c-price{width:150px}
.amrstbl td.c-price .amsel{font-size:11.5px;padding:5px 6px}

/* ==========================================================================
   ROUND DJ - THE TRIAGE BENCH
   ==========================================================================
   Full screen, because triage is a job with a beginning and an end and the
   thing you are doing is comparing two columns. A panel with a list down one
   side would put the comparison in a box a third of the width of the screen.
   ========================================================================== */
body.tri-on{overflow:hidden}
.tribench{position:fixed;inset:0;z-index:80;background:var(--paper);overflow:auto;
  padding:0}
.tribench>.tricard{min-height:100%;display:flex;flex-direction:column}
.amnow.tricard{min-height:0;display:block}
.trihead{display:flex;align-items:center;gap:14px;padding:14px 22px;flex-wrap:wrap;
  border-bottom:1px solid var(--am-rule);background:var(--card);position:sticky;top:0;z-index:2}
.trihead .amtitle b{font-family:var(--font-brand);font-size:17px;font-weight:800;color:var(--text-heading)}
.trihead .sp{flex:1}
/* the three figures that must agree, kept where they can be read without
   scrolling to the end - the whole bench exists to keep them agreeing */
.trisum{display:flex;flex-direction:column;gap:1px;font-family:var(--font-mono);font-size:14px;
  color:var(--text-heading);font-variant-numeric:tabular-nums;text-align:right}
.trisum em{font-style:normal;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}
.trisum.pool{color:var(--cl-orange)}
.tribody{display:grid;grid-template-columns:212px minmax(0,1fr);flex:1;align-items:start}
@media(max-width:900px){.tribody{grid-template-columns:1fr}}
.trirail{border-right:1px solid var(--am-rule);padding:14px 0;position:sticky;top:57px}
@media(max-width:900px){.trirail{position:static;border-right:0;border-bottom:1px solid var(--am-rule);display:flex;overflow-x:auto}}
.tristep{display:grid;grid-template-columns:22px 1fr;gap:9px;padding:9px 16px;align-items:start;
  background:none;border:0;width:100%;text-align:left;cursor:pointer}
.tristep i{width:20px;height:20px;border-radius:50%;border:1.5px solid var(--am-rule-firm);
  display:grid;place-items:center;font-family:var(--font-mono);font-size:9.5px;
  color:var(--text-muted);font-style:normal;margin-top:1px}
.tristep b{font-size:12.5px;color:var(--text-body);font-weight:500;display:block}
.tristep small{font-size:10.5px;color:var(--text-muted);display:block;line-height:1.35}
.tristep.done i{background:var(--am-sunk);border-color:var(--grey-300);color:var(--text-muted)}
.tristep.now i{background:var(--cl-orange);border-color:var(--cl-orange);color:#fff}
.tristep.now b{color:var(--text-heading);font-weight:700}
.tristep:hover b{color:var(--text-heading)}
.tripane{padding:20px 24px 60px;max-width:1180px}
.triintro{margin-bottom:16px}
.triintro h3{font-family:var(--font-brand);font-size:17px;font-weight:700;color:var(--text-heading);margin:0 0 5px}
.triintro p{margin:0;font-size:13px;color:var(--text-muted);max-width:74ch}
.trinote{font-size:12px;color:var(--text-muted);margin-top:10px;max-width:74ch}
.trifields{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-top:14px}
.trifields label{display:flex;flex-direction:column;gap:4px;font-family:var(--font-mono);
  font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}
.trifields label small{letter-spacing:0;text-transform:none;font-size:10.5px}
.trifields>small{font-size:11.5px;color:var(--text-muted);align-self:center}

/* ---- the two columns ----------------------------------------------------- */
.tricols,.tripair{display:grid;grid-template-columns:minmax(0,1fr) 30px minmax(0,1.5fr);gap:12px}
@media(max-width:820px){.tricols,.tripair{grid-template-columns:1fr}.triarrow{display:none}}
.tricolhead{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;
  color:var(--text-muted);padding-bottom:8px}
.tricolhead.r{color:var(--orange-700,#c25b00)}
.tripair{padding:10px 0;border-bottom:1px solid var(--am-rule);align-items:start}
.tripair:last-of-type{border-bottom:0}
.triarrow{display:grid;place-items:center;color:var(--grey-400);font-size:15px;padding-top:12px}
.tristack{display:flex;flex-direction:column;gap:8px}
.amwas.empty{opacity:.6;font-style:italic}
.trikind{color:var(--am-was)!important}
/* A ROW NOBODY HAS LOOKED AT YET. Faint, dashed, and carrying the only button
   that matters on it - so "decided" and "not looked at" are one glance apart. */
.amnow.waiting{border-style:dashed;background:var(--am-sunk)}
.amnow .trinm{font-size:12.5px;padding:4px 7px;width:100%;font-weight:500}
.tridates{display:flex;align-items:center;gap:5px;margin-top:2px}
.tridates .aminp{font-size:11px;padding:3px 6px}
.tridates i{font-style:normal;color:var(--grey-400);font-size:11px}
.triacts{display:flex;align-items:center;gap:8px;margin-top:5px;flex-wrap:wrap}
.ambtn.small{font-size:11px;padding:5px 10px}
.tribare{background:none;border:0;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;
  color:var(--text-muted);cursor:pointer;padding:2px 3px;text-decoration:underline;text-underline-offset:2px}
.tribare:hover{color:var(--cl-orange)}
.tribare.bad:hover{color:var(--cl-crimson)}
.triwait{color:var(--orange-700,#c25b00);font-weight:500}
.tridrop{color:var(--crimson-700,#b41540);font-weight:500}

/* ---- groups, dependencies, the check ------------------------------------- */
.trigroups{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.trigroup{border:1px solid var(--am-rule-firm);border-radius:10px;padding:10px 12px;
  display:flex;flex-direction:column;gap:2px;background:var(--card)}
.trigroup.ret{background:var(--am-was-bg);border-color:var(--am-was-edge)}
.trigroup b{font-size:13px;color:var(--text-heading)}
.trigroup span{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}
.trigroup em{font-style:normal;font-family:var(--font-mono);font-size:13px;color:var(--text-heading);
  font-variant-numeric:tabular-nums}
.trideps{display:flex;flex-direction:column;gap:8px;max-width:760px}
.tridep{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:center;
  padding:8px 0;border-bottom:1px solid var(--am-rule)}
.tridep b{font-size:13px;color:var(--text-heading)}
.tricheck{display:flex;flex-direction:column;gap:8px;max-width:820px}
.trirow{border:1px solid var(--am-rule-firm);border-left-width:3px;border-radius:9px;padding:9px 12px;
  display:flex;flex-direction:column;gap:2px;background:var(--card)}
.trirow b{font-size:13px;color:var(--text-heading)}
.trirow span{font-size:11.5px;color:var(--text-muted)}
.trirow.ok{border-left-color:#0e9f9e}
.trirow.warn{border-left-color:var(--cl-orange)}
.trirow.bad{border-left-color:var(--cl-crimson)}
.tritote{display:flex;flex-wrap:wrap;border:1px solid var(--am-rule-firm);border-radius:11px;
  overflow:hidden;margin-top:18px;max-width:820px}
.tritote div{flex:1 0 auto;min-width:150px;padding:10px 14px;border-right:1px solid var(--am-rule);
  display:flex;flex-direction:column;gap:2px}
.tritote div:last-child{border-right:0}
.tritote span{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--text-muted)}
.tritote b{font-family:var(--font-brand);font-size:17px;color:var(--text-heading);
  font-variant-numeric:tabular-nums}

/* ---- the state strip on Projects ----------------------------------------- */
.ampstrip{display:flex;overflow-x:auto;border:1px solid var(--am-rule-firm);border-radius:11px;
  background:var(--card);margin-bottom:16px}
.ampst{flex:1 0 auto;min-width:128px;padding:9px 14px;border:0;border-right:1px solid var(--am-rule);
  background:none;display:flex;flex-direction:column;gap:1px;text-align:left;cursor:pointer}
.ampst:last-child{border-right:0}
.ampst span{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);letter-spacing:.04em}
.ampst span:first-child{font-family:var(--font-brand);font-size:12.5px;font-weight:700;
  color:var(--text-heading);letter-spacing:0}
.ampst .cnt{font-family:var(--font-mono);font-size:17px;color:var(--text-heading);
  font-variant-numeric:tabular-nums;line-height:1.1}
.ampst.sel{background:var(--am-sunk);box-shadow:inset 0 -3px 0 var(--cl-orange)}
.ampdot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-left:7px;
  vertical-align:middle;background:var(--grey-300)}
.ampdot.s-setup{background:var(--cl-orange)}
.ampdot.s-ready{background:#0e9f9e}
.ampdot.s-scheduled{background:#4c6ef5}
.ampdot.s-running{background:var(--cl-purple)}
.ampdot.s-closed{background:var(--grey-300)}

/* The bench is neither a panel nor a dialog, so none of the round DI control
   styling reached it - and its confirm button came out WHITE ON WHITE, because
   the base rule fills it with a gradient token the bench does not inherit.
   Invisible, clickable, and impossible to see in a screenshot. Scoped here so
   the bench cannot depend on a token that belongs to the team side. */
.tribench .ambtn{background:var(--cl-orange);border:1px solid var(--cl-orange);color:#fff;
  font-weight:600;font-size:12.5px;padding:8px 15px;border-radius:9px}
.tribench .ambtn:hover:not(:disabled){background:#e96d00;border-color:#e96d00}
.tribench .ambtn:disabled{opacity:.45;cursor:default}
.tribench .ambtn.ghost{background:none;border-color:var(--am-rule-firm);color:var(--text-body)}
.tribench .ambtn.ghost:hover:not(:disabled){border-color:var(--cl-orange);color:var(--cl-orange);background:none}
.tribench .aminp,.tribench .amsel{border:1px solid var(--am-rule-firm);border-radius:8px;
  font-family:var(--font-body);font-size:13px;padding:7px 9px;background:var(--card);color:var(--text-body)}
.tribench .aminp:focus,.tribench .amsel:focus{outline:2px solid var(--cl-orange);outline-offset:1px}

/* ==========================================================================
   ROUND DK - THE TWO COLUMNS, AND THE DRAG BETWEEN THEM
   ==========================================================================
   His sketch: assets on the left with their tasks inside them, assets on the
   right, and arrows for a whole asset OR a single task crossing over. The
   colour does the explaining - steel is the past and cannot be typed into,
   the live palette is the work and can.
   ========================================================================== */
.tricolumns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:20px;align-items:start}
@media(max-width:900px){.tricolumns{grid-template-columns:1fr}}
.tricol{min-width:0}
.tricolhead{display:flex;align-items:baseline;gap:8px;font-family:var(--font-mono);font-size:9.5px;
  letter-spacing:.13em;text-transform:uppercase;color:var(--text-muted);padding-bottom:9px}
.tricolhead.r{color:var(--orange-700,#c25b00)}
.tricolhead em{font-style:normal;margin-left:auto;letter-spacing:.04em;text-transform:none;font-size:10px}
.tricard{margin-bottom:9px;padding:0!important;overflow:hidden}
.trihd{display:flex;align-items:center;gap:8px;padding:8px 10px;min-width:0}
.trihd .nm{font-size:13px;color:var(--text-heading);font-weight:500;flex:1;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.trihd input.nm{background:none;border:1px solid transparent;border-radius:6px;padding:3px 6px;
  font:inherit;font-weight:500;color:var(--text-heading);width:100%}
.trihd input.nm:hover,.trihd input.nm:focus{border-color:var(--am-rule-firm);background:var(--card)}
.trihd .mt{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);white-space:nowrap;
  font-variant-numeric:tabular-nums}
/* the four words that hold the whole state of a half-moved asset */
.trileft{font-family:var(--font-mono);font-size:9.5px;color:var(--orange-700,#c25b00);white-space:nowrap}
.trigrip{cursor:grab;color:var(--grey-400);font-size:13px;line-height:1;padding:2px 1px;
  touch-action:none;user-select:none;flex:none}
.trigrip:active{cursor:grabbing}
.trigrip.off{opacity:.3;cursor:default}
.tricaret{background:none;border:0;color:var(--grey-400);cursor:pointer;font-size:10px;padding:2px 4px}
.tritasks{display:flex;flex-direction:column;gap:5px;padding:0 10px 9px 26px}
.tritask{display:flex;align-items:center;gap:7px;padding:4px 7px;border-radius:7px;
  background:var(--card);border:1px solid var(--am-rule)}
.amwas .tritask{background:rgba(255,255,255,.5)}
:root[data-theme="dark"] .amwas .tritask{background:rgba(0,0,0,.18)}
.tritask .tn{font-size:12px;color:var(--text-heading);flex:1;min-width:0}
.tritask input.tn{background:none;border:1px solid transparent;border-radius:6px;padding:2px 5px;
  font:inherit;color:var(--text-heading);width:100%}
.tritask input.tn:hover,.tritask input.tn:focus{border-color:var(--am-rule-firm);background:var(--card)}
.tritask .tsk,.tritask .th{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}
.tritask select.tsk{border:1px solid transparent;background:none;border-radius:6px;padding:2px 4px;max-width:132px}
.tritask select.tsk:hover{border-color:var(--am-rule-firm);background:var(--card)}
.tritask input.th{width:52px;text-align:right;border:1px solid transparent;background:none;
  border-radius:6px;padding:2px 4px;font-variant-numeric:tabular-nums;color:var(--text-body)}
.tritask input.th:hover,.tritask input.th:focus{border-color:var(--am-rule-firm);background:var(--card)}
.tritask .tv{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);min-width:52px;
  text-align:right;font-variant-numeric:tabular-nums}
.triunp{font-style:normal;color:var(--orange-700,#c25b00)}
.tritask .trix{background:none;border:0;color:var(--grey-400);cursor:pointer;font-size:13px;
  line-height:1;padding:0 3px;min-width:15px}
.tritask .trix:hover:not(:disabled){color:var(--cl-crimson)}
.tritask .trix:disabled{opacity:.25;cursor:default}
/* a task with time logged against it cannot be removed, and says so quietly */
.tritask.worked{box-shadow:inset 2px 0 0 var(--cl-purple)}
.tridates{display:flex;align-items:center;gap:6px;padding:0 10px 9px 26px;
  font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.tridates .aminp{font-size:10.5px;padding:3px 6px}
.trinew{width:100%;background:none;border:1.5px dashed var(--am-rule-firm);border-radius:10px;
  padding:11px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);cursor:pointer}
.trinew.small{padding:5px;font-size:10px;border-width:1px}
.trinew:hover{border-color:var(--cl-orange);color:var(--cl-orange)}
/* WHERE IT WILL LAND. Shown on the target, not on the pointer - the question
   being answered is "what am I dropping this into", and that is a place. */
.tridropping{outline:2px dashed var(--cl-orange);outline-offset:2px}
.trighost{position:fixed;z-index:99;pointer-events:none;opacity:.92;transform:rotate(-1.2deg);
  box-shadow:0 12px 30px rgba(25,35,65,.3);border-radius:10px;max-width:420px}
.trisum i{font-style:normal;font-size:11px;color:var(--text-muted);margin-left:3px}
.trisum.over{color:var(--cl-crimson)}

/* Two things the screenshot showed, both specificity: the round DJ block gives
   every .aminp inside the bench a firm border, which turned the in-place task
   fields into a form; and .ambtn is now flat orange, which made the quiet
   move-it-across arrow the loudest thing on the quote column. The row fields
   stay invisible until you go near them, and the arrow goes back to being an
   affordance rather than a call to action. */
.tribench .tritask input.tn,
.tribench .tritask input.th,
.tribench .tritask select.tsk,
.tribench .trihd input.nm{border-color:transparent;background:none}
.tribench .tritask input.tn:hover,.tribench .tritask input.tn:focus,
.tribench .tritask input.th:hover,.tribench .tritask input.th:focus,
.tribench .tritask select.tsk:hover,.tribench .tritask select.tsk:focus,
.tribench .trihd input.nm:hover,.tribench .trihd input.nm:focus{
  border-color:var(--am-rule-firm);background:var(--card)}
.tribench .amwas .ambtn.small{background:none;border:1px solid var(--am-rule-firm);
  color:var(--text-muted);padding:3px 9px;font-size:12px;line-height:1.1}
.tribench .amwas .ambtn.small:hover{background:none;border-color:var(--cl-orange);color:var(--cl-orange)}

/* ==========================================================================
   ROUND DL - THE BENCH IN THE PAGE, AND A HEADER THAT KNOWS WHERE IT IS
   ==========================================================================
   Same bench, same renderer; it just stops being a lid over the app and
   becomes part of the project it belongs to. A screen you have to leave the
   page for reads as a detour; this is the job.
   ========================================================================== */
.tribench.inline{position:static;inset:auto;background:none;overflow:visible;z-index:auto}
.tribench.inline .tricard{min-height:0;border:1px solid var(--am-rule);border-radius:16px;
  box-shadow:var(--shadow);background:var(--card);overflow:hidden}
.tribench.inline .trihead{position:static;border-radius:0}
.tribench.inline .trirail{position:sticky;top:12px}
.tribench.inline .tripane{padding-bottom:26px}

/* ---- the project header ---------------------------------------------------
 * Five grey boxes reading 0h worked / 0h scheduled / 0% complete is a row of
 * failures on a project that has not started. It has not failed; nobody has
 * finished preparing it. So the figures change with the state, and the first
 * thing on the row says which state that is.
 */
.ampfigs,.ampfigsfull{display:flex;align-items:flex-end;gap:22px;flex-wrap:wrap;margin:16px 0 4px;
  padding:14px 0 0;border-top:1px solid var(--am-rule)}
.ampfigs .trisum,.ampfigsfull .trisum{text-align:left}
.ampfigs .trisum em,.ampfigsfull .trisum em{font-size:9px}
.ampfigs .trisum,.ampfigsfull .trisum{font-family:var(--font-mono);font-size:19px;color:var(--text-heading);
  font-variant-numeric:tabular-nums;display:flex;flex-direction:column;gap:2px}
.ampstage{display:inline-flex;align-items:center;gap:7px;font-family:var(--font-brand);
  font-size:12.5px;font-weight:700;color:var(--cl-orange);padding-bottom:3px}
.ampstage i{width:8px;height:8px;border-radius:50%;background:var(--cl-orange);flex:none}
.ampstage.live{color:#4c6ef5}
.ampstage.live i{background:#4c6ef5}
.amphint{font-size:12px;color:var(--text-muted);margin-left:auto;max-width:44ch;
  padding-bottom:3px;text-align:right}
@media(max-width:800px){.amphint{margin-left:0;text-align:left}}
/* a quote nobody has touched is not the same as one somebody came back to */
.ampnew{display:block;font-family:var(--font-mono);font-size:9px;letter-spacing:.04em;
  color:var(--cl-orange);margin-top:2px}

/* ===== DM: the project workbench — window bar, name-only handle, unplaced tasks, restore ===== */
.triwin{position:relative;margin:14px 0 4px;padding:18px 0 22px;--h:14px}
.triwinscale{position:relative;height:14px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--text-muted)}
.triwinscale i{position:absolute;top:0;font-style:normal;transform:translateX(-50%);white-space:nowrap}
.triwinscale i:first-child{transform:none}
.triwinscale i:first-child::after{left:0}
.triwinscale i::after{content:"";position:absolute;left:50%;top:15px;height:24px;border-left:1px dashed var(--am-rule,#e3e3e3)}
.triwintrack{position:relative;height:var(--h);border-radius:3px;background:var(--am-sunk,#f2f2f2);border:1px solid var(--am-rule,#e3e3e3);margin-top:4px}
.triwinbar{position:absolute;top:0;bottom:0;background:var(--cl-orange);opacity:.85;border-radius:3px;min-width:4px}
.triwin.open .triwinbar{background:linear-gradient(90deg,var(--cl-orange) 60%,rgba(255,120,0,.15));border-radius:3px 0 0 3px}
.triwin input[type=range]{position:absolute;left:-8px;top:36px;width:calc(100% + 16px);height:var(--h);margin:0;
  -webkit-appearance:none;appearance:none;background:none;pointer-events:none;outline:none}
.triwin input[type=range]::-webkit-slider-runnable-track{height:var(--h);background:none}
.triwin input[type=range]::-moz-range-track{height:var(--h);background:none}
.triwin input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;pointer-events:auto;cursor:ew-resize;
  width:16px;height:22px;margin-top:-4px;border-radius:3px;background:#fff;border:1.5px solid var(--cl-navy);box-shadow:0 1px 3px rgba(0,0,0,.25)}
.triwin input[type=range]::-moz-range-thumb{pointer-events:auto;cursor:ew-resize;width:16px;height:22px;border-radius:3px;
  background:#fff;border:1.5px solid var(--cl-navy);box-shadow:0 1px 3px rgba(0,0,0,.25)}
.triwin input[type=range]:disabled::-webkit-slider-thumb{opacity:0;pointer-events:none}
.triwin input[type=range]:disabled::-moz-range-thumb{opacity:0;pointer-events:none}
.triwin input[type=range]:focus-visible::-webkit-slider-thumb{outline:2px solid var(--cl-orange);outline-offset:2px}
.triwinlbl{display:flex;justify-content:space-between;margin-top:10px;font-family:var(--font-mono);font-size:11px;color:var(--text-heading)}
.triwinlbl b{font-weight:600}
.triwin.open #triwinel{color:var(--text-muted);font-weight:400}
.trifields label.trichk{flex-direction:row;align-items:center;gap:6px;cursor:pointer;padding-bottom:9px}
.trichk input{margin:0}

.trishell{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);
  border:1px dashed var(--grey-400,#b8b8b8);border-radius:3px;padding:2px 6px;cursor:grab;user-select:none;white-space:nowrap}
.trishell:hover{color:var(--cl-navy);border-color:var(--cl-navy)}
.trishell:active{cursor:grabbing}

.trighostcard{border-style:dashed;background:transparent;box-shadow:none}
.trighostcard>.trihd .nm{color:var(--text-muted)}
.trighostcard>.trihd .trileft{color:var(--cl-purple)}
.tritask.parked{box-shadow:inset 2px 0 0 var(--cl-purple)}

.trireset{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:18px;padding-top:12px;
  border-top:1px solid var(--am-rule,#e3e3e3);font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--text-muted)}
.trireset .tribare{color:var(--cl-navy);text-decoration:underline;text-underline-offset:3px;padding:0}
.trireset .tribare:hover{color:var(--cl-crimson)}
.tripane .trireset{margin-top:14px}

/* ===== DO: rows you grab anywhere, the quote's finished lines, what changed since it was sold ===== */
.tritask[data-drag]{cursor:grab}
.tritask[data-drag]:active{cursor:grabbing}
.tritask[data-drag] input,.tritask[data-drag] select,.tritask[data-drag] button{cursor:auto}
.tritask[data-drag] button{cursor:pointer}
.tricard .trihd .nm[data-drag]{cursor:grab}
.tricol.left.tridropping{outline:2px dashed var(--am-was,#5b6b8a);outline-offset:6px;border-radius:6px}
.tricol .tricard.tridone{display:flex;flex-direction:row;align-items:center;gap:10px;padding:7px 12px!important;min-height:0;border-style:solid;opacity:.8;background:transparent;box-shadow:none}
.tridone .tick{font-size:12px;color:var(--cl-orange);width:14px;text-align:center}
.tridone.wasdropped .tick{color:var(--text-muted)}
.tridone .nm{font-size:12.5px;color:var(--text-muted);text-decoration:line-through;text-decoration-color:var(--grey-300,#c7cad0)}
.tridone.wasdropped .nm{text-decoration:none}
.tridone .trileft{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);flex:1}
.tridone .mt{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}
.triedit,.triadded{font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;
  padding:2px 6px;border-radius:3px;margin-left:4px}
.triedit{color:var(--orange-700,#c25b00);background:var(--orange-50,#fff4e8)}
.triadded{color:var(--purple-700,#630083);background:var(--purple-50,#f5e9fa)}
.tritask.added{box-shadow:inset 2px 0 0 var(--cl-purple)}
.tritask .tn::placeholder{color:var(--grey-400,#a3a7af);font-style:italic}

/* ===== DP: the retained track — a switch, the terms, four shelves ===== */
.tritracks{display:flex;gap:8px;margin:0 0 14px}
.tritrack{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:8px 14px;border:1px solid var(--am-rule-firm,#d5d5d5);
  border-radius:6px;background:transparent;cursor:pointer;font-family:var(--font-body);text-align:left;min-width:170px}
.tritrack b{font-size:12.5px;color:var(--text-heading);font-weight:600}
.tritrack small{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted)}
.tritrack.on{border-color:var(--cl-orange);box-shadow:inset 0 -2px 0 var(--cl-orange)}
.tritrack:hover{border-color:var(--cl-navy)}
.triterms{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:10px 12px 12px;margin-bottom:12px;
  border:1px solid var(--am-rule,#e3e3e3);border-radius:6px;background:var(--am-sunk,#f4f4f4)}
.triterms>label{display:flex;flex-direction:column;gap:4px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}
.triterms>label.trichk{flex-direction:row;align-items:center;gap:6px;padding-bottom:9px;cursor:pointer}
.triterms .aminp{min-width:120px}
.triterms .trisum{margin-bottom:2px}
.triccy{display:inline-flex;align-items:center;border:1px solid var(--am-rule-firm,#d5d5d5);border-radius:4px;background:#fff;overflow:hidden}
/* JS: the money boxes follow the theme and read as figures, not placeholders - the retainer value was light grey on white in dark mode */
.triccy{background:var(--card)}
.triccy .aminp{color:var(--text-heading);font-weight:600}
.triccy .aminp::placeholder{color:var(--text-muted);font-weight:400}
.triccy i{font-style:normal;font-family:var(--font-mono);font-size:11px;color:var(--text-muted);padding:0 0 0 8px}
.triccy .aminp{border:0!important;min-width:0!important;width:90px;background:transparent}
.trishelf{border:1px dashed var(--am-rule-firm,#d5d5d5);border-radius:8px;padding:10px 10px 4px;margin-bottom:10px;min-height:54px;transition:background .12s,border-color .12s}
.trishelf.tridropping{border-color:var(--cl-orange);background:var(--orange-50,#fff4e8);border-style:solid}
.trishelfhd{display:flex;align-items:baseline;gap:10px;margin:0 2px 8px}
.trishelfhd b{font-family:var(--font-mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--orange-700,#c25b00)}
.trishelfhd small{font-size:11px;color:var(--text-muted);flex:1;min-width:0}
.trishelfhd em{font-style:normal;font-family:var(--font-mono);font-size:10px;color:var(--text-muted);white-space:nowrap}
.triline .trihd{flex-wrap:wrap;row-gap:6px}
.triline .trihd .nm{flex:1 1 160px;min-width:120px}
.trilf{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:10.5px;color:var(--text-body);white-space:nowrap}
.trilf .aminp.n{width:58px;min-width:0;padding:3px 6px;text-align:right}
.trilf.price .triccy .aminp{width:72px}
.triauto{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--purple-700,#630083);
  background:var(--purple-50,#f5e9fa);padding:2px 6px;border-radius:3px}
.triqty{font-weight:700;color:var(--text-heading)}
/* IB: sold as unlimited - a chip, not a count */
.triqty.triunl{font-family:var(--font-mono);font-size:9px;letter-spacing:.04em;text-transform:uppercase;padding:1px 6px;border-radius:999px;background:var(--am-pool-bg,#fff3e6);color:var(--am-pool,#b25a00);border:1px solid var(--am-pool,#b25a00)}
.trilf.triunll{color:var(--text-muted)}
.amsel.small{font-size:11px;padding:3px 6px;min-width:0}
.tricolumns.retained .tricol.right{min-width:0}

/* ===== DS: over and under, per track ===== */
.trisumgrp{display:inline-flex;align-items:flex-end;gap:14px}
.trisumgrp+.trisumgrp{margin-left:18px;padding-left:18px;border-left:1px solid var(--am-rule,#e3e3e3)}
.trisumlab{font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted);
  writing-mode:vertical-rl;transform:rotate(180deg);align-self:stretch;text-align:center;margin-right:-4px}
.tritote+.tritote{margin-top:10px}
.tritotelab{flex-basis:100%;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--orange-700,#c25b00);margin-bottom:4px}

/* ===== DT: the rail without numbers, figures on their own row, collapse, when-in-the-month ===== */
.tristep i{font-size:11px}
.tristep:not(.done) i{background:transparent;border:1.5px solid var(--am-rule-firm,#d5d5d5);color:transparent;width:12px;height:12px;border-radius:50%;margin:5px 5px 0 5px}
.tristep.now:not(.done) i{border-color:var(--cl-orange);background:var(--cl-orange)}
.trihead{flex-wrap:wrap;row-gap:10px}
.trihead .trifigs{flex-basis:100%;display:flex;align-items:flex-end;gap:14px;padding-top:10px;border-top:1px solid var(--am-rule,#e3e3e3)}
.trisumlab{font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--orange-700,#c25b00);
  writing-mode:horizontal-tb;transform:none;align-self:flex-end;margin:0 2px 3px 0}
.trisumgrp{flex-wrap:wrap;row-gap:6px}
.trisumgrp+.trisumgrp{margin-left:10px;padding-left:16px}
.tricard.shut .trihd{border-bottom:0}
.amsel.tiny{font-size:10px;padding:2px 4px;min-width:0;max-width:140px;color:var(--text-muted)}
.tribare.tiny{font-size:9.5px;padding:0 2px}
.tribare.when{color:var(--orange-700,#c25b00);text-decoration:underline dotted;text-underline-offset:3px;text-transform:none;letter-spacing:.02em;font-size:10.5px}
.triwinblock{border:1px solid var(--am-rule,#e3e3e3);border-radius:8px;padding:8px 12px 10px;margin-bottom:12px;background:var(--am-sunk,#f4f4f4)}
.triwinblock .triwin{margin:6px 0 0;padding-bottom:16px}
.trifields.tight{margin-top:4px;gap:10px}
.trifields.tight .aminp{min-width:120px}
.ambtn.small.sug{background:var(--orange-50,#fff4e8);color:var(--orange-700,#c25b00);border:1px solid var(--orange-100,#ffe2c4);font-size:10px;padding:3px 8px;white-space:nowrap}
.ambtn.small.sug:hover{background:var(--cl-orange);color:#fff}
.triwhenbtns{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.triwhenbtns .ambtn.on{border-color:var(--cl-orange);color:var(--cl-orange);box-shadow:inset 0 -2px 0 var(--cl-orange)}
.tridates .sp{flex:1}
.triterms .tricolhead{margin-bottom:2px}
.ampfresh{font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;background:var(--orange-50,#fff4e8);color:var(--orange-700,#c25b00);
  border:1px solid var(--orange-100,#ffe2c4);border-radius:6px;padding:8px 12px;cursor:pointer;margin-right:6px}
.ampfresh:hover{background:var(--cl-orange);color:#fff}
.tricol.left .tricard>.trihd{flex-wrap:wrap;row-gap:6px}
.tricol.left .tricard>.trihd .nm{flex:1 1 140px;min-width:120px;white-space:normal}

/* ===== DU: figures on the title row; the window as a thin bar above the columns; the split slider ===== */
.trihead .trifigs{flex-basis:auto;display:flex;align-items:flex-end;gap:12px;padding:0;border:0;margin-left:auto;flex-wrap:wrap;row-gap:6px}
.trihead .tribtns{display:flex;gap:8px;align-items:center;margin-left:8px}
.trihead .trisum{font-size:12.5px;gap:0}
.trihead .trisum em{font-size:8px;letter-spacing:.1em;white-space:nowrap}
.trisum .v{white-space:nowrap}
.trisum .v i{font-style:normal;font-size:10px;color:var(--text-muted);margin-left:4px}
.trihead .trisumgrp{gap:10px}
.trihead .trisumgrp+.trisumgrp{margin-left:4px;padding-left:12px}
.trihead .trisumlab{font-size:8.5px;margin-bottom:2px}
@media(max-width:1100px){.trihead .trifigs{flex-basis:100%;margin-left:0;order:9;padding-top:8px;border-top:1px solid var(--am-rule,#e3e3e3)}}
.triwinblock.thin{display:flex;align-items:center;gap:18px;padding:8px 14px;margin:0 0 14px;flex-wrap:wrap}
.triwinblock.thin .triwinside{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.triwinblock.thin .triwinside .tricolhead{flex-basis:100%;margin:0 0 2px}
.triwinblock.thin .triwinside>label{display:flex;flex-direction:column;gap:3px;font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted)}
.triwinblock.thin .triwinside>label.trichk{flex-direction:row;align-items:center;gap:5px;padding-bottom:7px;cursor:pointer}
.triwinblock.thin .triwinside .aminp{min-width:118px;padding:4px 8px;font-size:12px}
.triwinblock.thin .triwinmain{flex:1 1 320px;min-width:260px}
.triwinblock.thin .triwin{margin:0;padding:14px 0 14px;--h:10px}
.triwinblock.thin .triwinscale{height:12px;font-size:8.5px}
.triwinblock.thin .triwinscale i::after{top:13px;height:18px}
.triwinblock.thin .triwin input[type=range]{top:30px}
.triwinblock.thin .triwin input[type=range]::-webkit-slider-thumb{height:18px;width:14px;margin-top:-4px}
.triwinblock.thin .triwin input[type=range]::-moz-range-thumb{height:18px;width:14px}
.triwinblock.thin .triwinlbl{margin-top:6px;font-size:10px}
.triwinblock.thin .triwinfigs{display:flex;align-items:flex-end;gap:12px}
.triwinblock.thin .triwinfigs .trisum{font-size:12.5px}
.trisplit{display:flex;align-items:center;gap:10px;margin:2px 0 10px;font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}
.trisplit input[type=range]{flex:1;accent-color:var(--cl-orange)}
.trisplit .l,.trisplit .r{white-space:nowrap;min-width:72px}
.trisplit .r{text-align:right;color:var(--cl-orange)}

/* ===== DV: check and release, said plainly ===== */
.trirel{border:1px solid var(--am-rule,#e3e3e3);border-radius:10px;padding:14px 18px 12px;margin-bottom:12px;background:var(--card,#fff)}
.trirelhd{display:flex;align-items:baseline;gap:10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.13em;text-transform:uppercase;color:var(--orange-700,#c25b00);margin-bottom:8px}
.trirelhd em{font-style:normal;margin-left:auto;color:var(--text-muted);letter-spacing:.04em;text-transform:none;font-size:10.5px}
.trirelbig{display:flex;flex-direction:column;gap:2px;margin-bottom:10px}
.trirelbig b{font-family:var(--font-brand);font-size:20px;font-weight:800;color:var(--text-heading);letter-spacing:-.01em}
.trirel.over .trirelbig b{color:var(--cl-crimson)}
.trirel.under .trirelbig b{color:var(--cl-orange)}
.trirelbig span{font-size:12.5px;color:var(--text-muted);font-family:var(--font-mono)}
.trirelcols{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:6px 0 4px}
@media(max-width:900px){.trirelcols{grid-template-columns:1fr}}
.tririx{display:flex;align-items:baseline;gap:10px;padding:5px 0;border-top:1px solid var(--am-rule,#e3e3e3);font-size:12.5px}
.tririx b{font-weight:600;color:var(--text-heading);min-width:0}
.tririx span{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);text-align:right}
.trirelease{display:flex;align-items:center;gap:14px;margin-top:16px}
.trirelease .amphint{font-size:12px;color:var(--text-muted)}
.ampfigs .trisum .v i,.ampfigsfull .trisum .v i{font-size:10px;color:var(--text-muted);margin-left:3px}

/* ===== DW: confirm on each track; three shelves ===== */
.triconfirm{display:flex;align-items:center;gap:14px;margin:0 0 14px;padding:10px 14px;border:1px solid var(--am-rule,#e3e3e3);border-radius:8px;background:var(--card,#fff)}
.triconfirm.done{border-style:dashed}
.triconfirm .amphint{font-size:12px;color:var(--text-muted);font-family:var(--font-mono);flex:1;text-align:left}
.triconfirm .amphint b{color:var(--text-heading);font-weight:600}
.triconfirm>.ambtn{margin-left:auto}
.trifix{font-style:normal;font-family:var(--font-mono);font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--purple-700,#630083);margin-left:4px}

/* ===== DX: the retainer's months on the project; asset state chips ===== */
.amretsec .amrpanel{margin-top:6px}
.amastate{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;padding:2px 7px;border-radius:3px;white-space:nowrap;margin-left:6px}
.amastate.s-idle{background:var(--am-sunk,#f2f2f2);color:var(--text-muted)}
.amastate.s-booked{background:var(--orange-50,#fff4e8);color:var(--orange-700,#c25b00)}
.amastate.s-running{background:var(--purple-50,#f5e9fa);color:var(--purple-700,#630083)}
.amastate.s-done{background:#e8f5ec;color:#1f7a3a}

/* ===== DY: two-line line cards; the quoted tag by the hours ===== */
.triline .trihd2{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:4px 12px 8px 40px;font-family:var(--font-mono);font-size:10.5px;color:var(--text-body)}
.triline.shut .trihd2{padding-bottom:6px}
.tritask .th+.triedit{margin-left:2px}

/* ===== DZ: three colours a task; purchases on the bench; the link in the gutter; room up top ===== */
/* the top bar: the figures get room to be read, not squeezed beside the title */
.trihead .trifigs{gap:26px;row-gap:8px;padding:2px 0 0}
.trihead .trisum{font-size:15px;gap:2px}
.trihead .trisum em{font-size:8.5px;letter-spacing:.13em}
.trihead .trisum .v i{font-size:11px;margin-left:7px}
.trihead .trisumgrp{gap:26px}
.trihead .trisumgrp+.trisumgrp{margin-left:6px;padding-left:26px}
.trihead .trisumlab{font-size:9px;margin-bottom:3px}
/* A TASK IN THREE STATES, said at its left edge: plain is as quoted, orange
   is changed, purple is new. The worked stripe went; time logged is a note. */
.tritask{align-items:flex-start;gap:8px;padding:6px 8px 6px 7px;border-left:3px solid var(--am-rule)}
.tritask.q-changed{border-left-color:var(--cl-orange)}
.tritask.q-new{border-left-color:var(--cl-purple)}
.tritask.worked,.tritask.added,.tritask.parked{box-shadow:none}
.trigut{display:flex;flex-direction:column;align-items:center;gap:4px;flex:none;padding-top:2px}
.tribody2{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.trirow1{display:flex;align-items:center;gap:8px;min-width:0}
.trirow2{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-height:22px;
  font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}
.trirow1 .tn{flex:1;min-width:0;font-size:12.5px}
.trirow1 .tv{margin-left:auto;min-width:0}
.trirow2 .tsk.ro,.trirow2 .th.ro{font-size:10.5px}
.trirow2 .th.ro+.th.ro::before,.trirow2 .tsk.ro+.th.ro::before{content:"\00b7";margin-right:8px;color:var(--grey-400)}
.trirow2 select.tsk{font-size:10.5px;padding:2px 4px;max-width:160px;color:var(--text-body)}
/* a figure on the second line keeps its size whatever happens to it */
.trirow2 input.th,.tribench .trirow2 input.th{font-family:var(--font-mono);font-size:10.5px;width:56px;padding:2px 4px;line-height:1.4;height:auto}
.trirow2 .trihrs,.trirow2 .trilead,.trirow2 .triccy{display:inline-flex;align-items:center;gap:2px}
.trirow2 .trihrs i,.trirow2 .trilead i,.trirow2 .triccy i{font-style:normal;color:var(--text-muted)}
.trirow2 .triccy i{margin-right:0}
.trirow2 input.tsup,.tribench .trirow2 input.tsup{font-family:var(--font-mono);font-size:10.5px;padding:2px 5px;width:150px;max-width:38%;
  border:1px solid transparent;background:none;border-radius:6px;color:var(--text-body);height:auto;line-height:1.4}
.tribench .trirow2 input.tsup:hover,.tribench .trirow2 input.tsup:focus{border-color:var(--am-rule-firm);background:var(--card)}
.trirow2 .triedit,.trirow2 .triadded{margin-left:0}
.triworked{font-style:normal;font-size:9.5px;color:var(--purple-700,#630083)}
.tribuy{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);
  border:1px solid var(--am-rule-firm);border-radius:3px;padding:1px 5px;white-space:nowrap}
.tritask.buy .tribuy{color:var(--text-body)}
/* THE LINK, under the grip: faint until it is on, orange once it is */
.trilink{background:none;border:0;padding:1px 2px;cursor:pointer;color:var(--grey-400);display:flex;align-items:center;gap:3px;line-height:1;opacity:.55}
.trilink:hover{opacity:1;color:var(--cl-orange)}
.trilink.on{opacity:1;color:var(--cl-orange)}
.trilink i{font-style:normal;font-family:var(--font-mono);font-size:8.5px;letter-spacing:.04em;white-space:nowrap;max-width:0;overflow:hidden}
.tritask:hover .trilink i,.trilink.on i{max-width:120px}
.trinewrow{display:flex;gap:6px}
.trinewrow .trinew{flex:1}
/* the key, on the column head */
.trikey{display:inline-flex;align-items:center;gap:5px;margin-left:12px;font-family:var(--font-mono);font-size:8.5px;letter-spacing:.06em;text-transform:none;color:var(--text-muted);vertical-align:middle}
.trikey i{display:inline-block;width:3px;height:11px;border-radius:1px;background:var(--am-rule-firm);margin-left:7px}
.trikey i:first-child{margin-left:0}
.trikey .k-changed{background:var(--cl-orange)}
.trikey .k-new{background:var(--cl-purple)}
.tricolhead.r{flex-wrap:wrap}
.tricolhead.r em{margin-left:auto}
/* a number box on the second line has no spinner: the figure sits by its unit */
.trirow2 input.th{-moz-appearance:textfield;appearance:textfield;text-align:right}
.trirow2 input.th::-webkit-inner-spin-button,.trirow2 input.th::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}

/* ===== EB: tasks reorder by drag; links drawn in the gutter; the link button bottom-left ===== */
.tricol.right .tritasks{position:relative}
svg.trilines{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
svg.trilines .trilinkline{pointer-events:stroke;cursor:pointer}
svg.trilines .trilinkline:hover{stroke-width:3}
.trigut{align-self:stretch;justify-content:space-between;padding-bottom:1px}
.trilink{margin-top:auto;opacity:.45}
.trilink i{display:none}
.trilink.has{opacity:1;color:var(--text-muted)}
.trilink.arming{opacity:1;color:#fff;background:var(--cl-orange);border-radius:4px}
/* while a link is being made: the source is marked, every other task in the asset is a target */
.tritask.trisrc{border-color:var(--cl-orange);box-shadow:0 0 0 2px var(--orange-100,#ffe2c4)}
.tritask.trican{cursor:pointer;border-style:dashed;border-color:var(--cl-orange)}
.tritask.trican:hover{background:var(--orange-50,#fff4e8)}
.tritask.trican *{pointer-events:none}
/* where a dragged task will land in its own asset */
.tritask.triins-before{box-shadow:0 -3px 0 0 var(--cl-orange)}
.tritask.triins-after{box-shadow:0 3px 0 0 var(--cl-orange)}
/* ===== EC: the retained track a month; cutting a link from its source ===== */
.trimo{font-style:normal;color:var(--orange-700,#c25b00);margin-left:8px;white-space:nowrap}
.tritask.trican.linked{border-style:solid;border-color:var(--cl-crimson);background:#fff3f3}
.tritask.trican.linked:hover{background:#ffe6e6}
:root[data-theme="dark"] .tritask.trican.linked{background:rgba(200,16,46,.12)}
/* ===== EE: reckoned over the term; draw-down only ===== */
.tridrawonly{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--orange-700,#c25b00);border:1px solid var(--orange-100,#ffe2c4);border-radius:3px;padding:1px 5px;margin-left:8px;white-space:nowrap}

/* ===== EK: asset links in the gutter; dates that follow the project; cancel and the months note ===== */
.tricol.right.haslinks{position:relative;padding-left:26px}
.tricol.right>svg.trialines{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}
.tricol.right>svg.trialines .trilinkline{pointer-events:stroke;cursor:pointer}
.tridates .trialink{margin:0 6px 0 -4px;opacity:.45;order:-1}
.tridates .trialink.has{opacity:1}
.tridates .trialink.arming{opacity:1;color:#fff;background:var(--cl-orange);border-radius:4px}
.amnow.tricard.trisrc{border-color:var(--cl-orange);box-shadow:0 0 0 2px var(--orange-100,#ffe2c4)}
.amnow.tricard.trican{cursor:pointer;border-style:dashed;border-color:var(--cl-orange)}
.amnow.tricard.trican:hover{background:var(--orange-50,#fff4e8)}
.amnow.tricard.trican.linked{border-style:solid;border-color:var(--cl-crimson)}
.tridates .aminp.inherited{color:var(--text-muted);border-style:dashed}
.trifollows{font-style:normal;font-size:9.5px;color:var(--text-muted);margin-left:2px}
.triconfirm{flex-wrap:wrap}
.trimonths{flex-basis:100%;font-family:var(--font-mono);font-size:10.5px;color:var(--orange-700,#c25b00);padding:0 0 6px;border-bottom:1px dashed var(--am-rule,#e3e3e3);margin-bottom:4px}
.trihd .triunq{margin-left:4px;opacity:.35}
.trihd .triunq:hover{opacity:1}
/* while an asset link is being made, the whole card is the press target */
.amnow.tricard.trican *{pointer-events:none}
/* ===== EM: what an asset waits for, said on the card with its own x ===== */
.triafter{display:inline-flex;align-items:center;gap:3px;font-family:var(--font-mono);font-size:9px;letter-spacing:.04em;border:1px solid;border-radius:4px;padding:1px 3px 1px 6px;margin-right:4px;white-space:nowrap;background:var(--card)}
.triafterx{background:none;border:0;color:inherit;cursor:pointer;font-size:12px;line-height:1;padding:0 2px;opacity:.7}
.triafterx:hover{opacity:1;color:var(--cl-crimson)}
.tricol.right>svg.trialines .trilinkhit{pointer-events:stroke;cursor:pointer}
/* ===== EN: Drive folders - where every client's files are, one page ===== */
.amdrv{display:inline-block;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;line-height:16px;padding:1px 8px;border-radius:4px;white-space:nowrap;text-decoration:none;font-weight:600}
.amdrv.found{color:#1b6b3a;background:#e4f5ea}
.amdrv.link{color:var(--orange-700,#c25b00);background:var(--orange-50,#fff4e8)}
.amdrv.none{color:var(--cl-crimson);background:#fdeaea}
:root[data-theme="dark"] .amdrv.found{color:#8fdcae;background:rgba(27,107,58,.25)}
:root[data-theme="dark"] .amdrv.none{color:#ff9aa5;background:rgba(200,16,46,.18)}
.amchip.none{background:#fdeaea;color:var(--cl-crimson)}
:root[data-theme="dark"] .amchip.none{background:rgba(200,16,46,.18);color:#ff9aa5}
.amdrvt td,.amdrvt th{white-space:nowrap}
.amdrvt tbody tr[data-drvc]{cursor:pointer}
.amdrvt tbody tr[data-drvc]:hover td{background:var(--grey-50)}
.ambtn.sm{padding:3px 9px;font-size:11px}
/* ===== ES: the traffic light, and "unclaimed" said quietly ===== */
.amorag{display:inline-block;width:9px;height:9px;border-radius:50%;margin:0 7px 0 0;vertical-align:middle;flex:0 0 auto;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12)}
.amorag.g{background:#2b8a3e}
.amorag.a{background:#e8a317}
.amorag.r{background:var(--cl-crimson,#c8102e)}
.amobandhead em .amorag,.amosec em .amorag{width:8px;height:8px;margin:0 3px 0 8px}
.amounc{color:var(--text-muted);font-style:italic}
:root[data-theme="dark"] .amorag{box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
/* ===== ET: the packed strip - all the work in lanes, grouped as you like ===== */
.amostrip{border-top:1px solid var(--grey-200)}
.amostgrp{align-items:stretch}
.amostgrp .amoname{align-items:flex-start;padding-top:6px}
.amosthead{background:none;border:0;padding:0;cursor:pointer;font:inherit;display:flex;align-items:center;gap:6px;text-align:left;color:var(--text-heading)}
.amosthead:hover .amostname{color:var(--cl-orange)}
.amostw{font-size:10px;color:var(--text-muted);width:10px}
.amostname{font-family:var(--font-brand);font-weight:700;font-size:12.5px}
.amostlanes{padding:5px 0 4px}
.amostlane{position:relative;height:16px;margin-bottom:3px}
.amostbar{position:absolute;top:0;height:16px;border-radius:4px;overflow:hidden;cursor:pointer;display:flex;align-items:center;padding:0 6px;min-width:8px;box-sizing:border-box}
.amostbar b{font:700 9.5px/1 var(--font-brand);color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amostbar.g{background:#2b8a3e}.amostbar.a{background:#e8a317}.amostbar.r{background:var(--cl-crimson,#c8102e)}.amostbar.n{background:#8aa0c4}
.amostbar:hover{filter:brightness(1.08)}
.amostbar.amosl{border-top-left-radius:0;border-bottom-left-radius:0}
.amostbar.amosr{border-top-right-radius:0;border-bottom-right-radius:0}
.amostmini{position:relative;display:block;height:3px;margin-top:2px}
.amostmini u{position:absolute;top:0;height:3px;border-radius:2px;text-decoration:none}
.amostmini u.g{background:#2b8a3e}.amostmini u.a{background:#e8a317}.amostmini u.r{background:var(--cl-crimson,#c8102e)}.amostmini u.n{background:#8aa0c4}
.amostcols{border-top:0}
.amostgrp .amotail{flex-wrap:wrap;justify-content:flex-end;align-content:flex-start;padding-top:6px}
/* ===== EU: the strip grows up - windows, boundaries, worked time, filters, deps, divider ===== */
.amostrip{position:relative;overflow:auto;overflow-x:hidden}
.amostlane{position:relative;height:18px;margin-bottom:4px}
.amostbound{position:absolute;top:0;height:18px;border-radius:4px;background:rgba(40,50,70,.07);border:1px dashed rgba(40,50,70,.18);box-sizing:border-box;pointer-events:none}
.amostbar{position:absolute;top:0;height:18px;border-radius:4px;overflow:hidden;cursor:grab;display:flex;align-items:center;padding:0 8px;min-width:8px;box-sizing:border-box;
  background:color-mix(in srgb, var(--dc,#8aa0c4) 26%, transparent);border:1px solid var(--dc,#8aa0c4);color:var(--text-heading)}
.amostbar b{position:relative;font:700 9.5px/1 var(--font-brand);color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;z-index:2}
.amostbar .amorag{position:relative;z-index:2;width:7px;height:7px;margin-right:5px;box-shadow:0 0 0 1px #fff}
.amostbar.g,.amostbar.a,.amostbar.r,.amostbar.n{background:color-mix(in srgb, var(--dc,#8aa0c4) 26%, transparent)}
.amostseg{position:absolute;top:0;bottom:0;background:var(--dc,#8aa0c4);opacity:.55;z-index:1;pointer-events:none}
.amostseg.done{opacity:.95;background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.35) 0 2px,transparent 2px 5px)}
.amostbar:hover{box-shadow:0 0 0 2px color-mix(in srgb, var(--dc,#8aa0c4) 45%, transparent)}
.amostbar.beyond{border-color:var(--cl-crimson,#c8102e);box-shadow:0 0 0 2px rgba(200,16,46,.28)}
.amostbar.open{border-width:2px}
.amostbar.sub{height:16px;padding:0 6px}
.amostbar.amodragging,.amostbar.amoresizing{opacity:.85;z-index:5}
.amostgrip{position:absolute;top:0;bottom:0;width:7px;cursor:ew-resize;z-index:3}
.amostgrip.l{left:0}.amostgrip.r{right:0}
.amostgrip::after{content:"";position:absolute;top:4px;bottom:4px;left:2px;width:2px;border-radius:1px;background:var(--dc,#8aa0c4);opacity:0}
.amostbar:hover .amostgrip::after{opacity:.9}
.amostpin{position:relative;z-index:3;margin:0 4px 0 -2px;background:none;border:0;color:inherit;opacity:.35;cursor:pointer;font-size:11px;line-height:1;padding:0 2px;flex:none}
.amostpin.on{opacity:1}
.amostbar:hover .amostpin{opacity:1}
.amostsub{margin:2px 0 6px 0;padding:4px 0 2px 0;border-top:1px dashed var(--grey-200)}
.amostsubhd{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin:0 0 4px 4px}
.amostsub .amostlane{height:16px;margin-bottom:3px}
.amostsub .amostbound{height:16px}
.amostsw{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;flex:0 0 auto}
.amostmini u{background:var(--dc,#8aa0c4)}
/* filters */
.amofltrow{gap:6px}
.amofltopts{gap:4px 14px;text-transform:none;letter-spacing:0;font-family:var(--font-body,inherit);font-size:12px}
.amofltopts label{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;color:var(--text-body)}
/* the divider between the strip and the workload */
.amostsplit{height:10px;cursor:row-resize;display:flex;align-items:center;justify-content:center;border-top:1px solid var(--grey-100)}
.amostsplit i{width:46px;height:4px;border-radius:2px;background:var(--grey-200)}
.amostsplit:hover i{background:var(--cl-orange)}
/* the dependency lines */
svg.amostdeps{position:absolute;top:0;left:0;pointer-events:none;overflow:visible;z-index:4}
svg.amostdeps path{fill:none;stroke:var(--cl-navy,#1b2a49);stroke-width:1.4;opacity:.7}
svg.amostdeps path.back{stroke:var(--cl-crimson,#c8102e)}
svg.amostdeps circle{fill:var(--cl-navy,#1b2a49);opacity:.7}
/* the workload band folds */
.amowlbtn{background:none;border:0;padding:0;font:inherit;font-weight:700;color:inherit;cursor:pointer}
.amowlbtn:hover{color:var(--cl-orange)}
.amoundlist{margin-top:6px;font-size:12px;line-height:1.5}
.amoundlist div{padding:2px 0;border-top:1px dashed var(--grey-200)}
:root[data-theme="dark"] .amostbound{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.18)}
:root[data-theme="dark"] .amostbar .amorag{box-shadow:0 0 0 1px rgba(0,0,0,.4)}
/* ===== EW: dates set by hand are never moved; when the window leaves them outside, say so ===== */
.trioutside{font-style:normal;font-family:var(--font-mono);font-size:9px;letter-spacing:.06em;text-transform:uppercase;color:var(--cl-crimson,#c8102e);border:1px solid var(--cl-crimson,#c8102e);border-radius:3px;padding:1px 5px;margin-left:6px;white-space:nowrap}
/* EW: the pan eases home; undated work as chips; a partial month says so */
.amopan{transition:transform .28s ease-out}
.amostundlist{display:flex;flex-wrap:wrap;gap:6px;padding:6px 8px;align-items:center}
.amostund{display:inline-flex;align-items:center;gap:6px;border:1px dashed var(--dc,#8aa0c4);border-radius:4px;background:color-mix(in srgb, var(--dc,#8aa0c4) 12%, transparent);padding:2px 8px;cursor:pointer;font:inherit;color:var(--text-heading)}
.amostund b{font:700 9.5px/1 var(--font-brand)}
.amostund span{font-family:var(--font-mono);font-size:9px;color:var(--text-muted)}
.amostund:hover{border-style:solid;box-shadow:0 0 0 2px color-mix(in srgb, var(--dc,#8aa0c4) 35%, transparent)}
.amostundated .amoname .amopn{color:var(--cl-crimson,#c8102e)}
.amrpart{font-style:normal;font-family:var(--font-mono);font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--orange-700,#c25b00);border:1px solid var(--orange-100,#ffe2c4);border-radius:3px;padding:0 5px;margin-left:8px}
/* ===== FB: the List - the master asset board's shape (the Kanban stood here, EX) ===== */
.amlcard{overflow:visible}
.amltable{display:flex;flex-direction:column;gap:18px;padding:6px 0 4px;overflow-x:auto;overflow-y:visible;--nw:300px}
.amlgrp{border-left:4px solid var(--gc,#ff6a1f);border-radius:6px;background:var(--card);min-width:max-content}
.amlgh{display:flex;align-items:center;gap:8px;padding:6px 12px 4px}
.amlgh .amocar,.amlsgh .amocar{margin:0}
.amlgrp.folded{padding-bottom:2px}
.amlsg{border-top:1px solid var(--grey-200)}
.amlsgh{display:flex;align-items:center;gap:8px;padding:5px 12px 3px 22px;background:var(--grey-50)}
.amlsgh b{font-family:var(--font-brand);font-size:12px;font-weight:800;color:var(--text-heading);white-space:nowrap}
.amlgh b,.amlgh .amomut,.amlsgh .amomut{white-space:nowrap}
/* FG: retained and ad hoc must be told apart at a glance - a badge on every
   asset row, a tinted edge on the name cell, and the same two colours on the
   split headers. Purple is retained, orange is ad hoc, everywhere. */
.amlkind{display:inline-block;font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;border-radius:4px;padding:2px 6px;font-weight:700;vertical-align:1px}
.amlkind.ret{color:#fff;background:var(--cl-purple,#8900b5)}
.amlkind.adh{color:#fff;background:var(--cl-orange,#ff7800)}
.amlasset.ret .amlname{box-shadow:inset 4px 0 0 var(--cl-purple,#8900b5)}
.amlasset.adh .amlname{box-shadow:inset 4px 0 0 var(--cl-orange,#ff7800)}
.amlasset.ret{background:color-mix(in srgb, var(--cl-purple,#8900b5) 4%, var(--card))}
.amlsg.ret .amlsgh{background:color-mix(in srgb, var(--cl-purple,#8900b5) 8%, var(--card))}
.amlsg.ret .amlsgh b{color:var(--cl-purple,#8900b5)}
.amlsg:not(.ret) .amlsgh b{color:var(--cl-orange,#ff7800)}
.amlmon{display:inline-flex;align-items:center;gap:2px;margin-left:8px;font-family:var(--font-mono);font-size:10px;color:var(--text-heading);background:color-mix(in srgb, var(--cl-purple,#8900b5) 10%, transparent);border-radius:10px;padding:1px 4px 1px 2px}
.amlmon b{font-weight:700;padding:0 3px;white-space:nowrap}
.amlmon i{font-style:normal;color:var(--text-muted);font-size:9px;padding-left:3px}
.amlmb{border:0;background:transparent;font:700 13px/1 var(--font-brand);color:var(--cl-purple,#8900b5);cursor:pointer;padding:0 4px;border-radius:8px}
.amlmb:hover{background:color-mix(in srgb, var(--cl-purple,#8900b5) 18%, transparent)}
.amlmb:disabled{color:var(--grey-300);cursor:default;background:transparent}
.amlgh b{font-family:var(--font-brand);font-size:14px;font-weight:800;color:var(--gc,#ff6a1f)}
.amlrow{display:grid;grid-template-columns:var(--nw) 250px 150px 128px 150px 74px 86px 66px 50px;width:max-content;min-width:100%;align-items:center;border-top:1px solid var(--grey-200);min-height:32px}
.amlc{padding:4px 10px;font-size:12px;color:var(--text-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:1px solid var(--grey-100)}
.amlc:first-child{border-left:0;position:sticky;left:0;z-index:1;background:inherit}
.amlhd .amlc:first-child,.amlsubhd .amlc:first-child{background:inherit}
.amln{text-align:right;font-family:var(--font-mono);font-size:11px;font-variant-numeric:tabular-nums}
.amlhd .amlc,.amlsubhd .amlc{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);padding-top:5px;padding-bottom:5px}
.amlhd{background:var(--grey-50);border-top:1px solid var(--grey-200)}
.amlasset{background:var(--card)}
.amlasset .amlname{display:flex;align-items:center;gap:6px;font-weight:700;color:var(--text-heading)}
.amlasset .amlname .amocar{margin:0}
.amlnm{font-family:var(--font-brand);font-size:12.5px;font-weight:700;color:var(--text-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.amllink{background:none;border:0;padding:0;cursor:pointer;text-align:left;font:inherit}
.amllink:hover{text-decoration:underline;color:var(--cl-orange,#ff6a1f)}
.amlcount{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);background:var(--grey-100);border-radius:8px;padding:1px 6px}
.amlproj{font-weight:600;color:var(--text-heading);border-left:3px solid var(--dc,#8aa0c4);padding-left:6px}
.amlcl{font-family:var(--font-mono);font-size:10.5px;color:var(--text-heading);background:color-mix(in srgb, var(--cl-blue,#3b82f6) 12%, transparent);border-radius:4px;padding:1px 6px}
.amlst{display:inline-block;min-width:96px;text-align:center;padding:3px 8px;border-radius:4px;background:var(--sc,#8d97a8);color:#fff;font-family:var(--font-brand);font-size:11px;font-weight:700;text-transform:capitalize}
.amlsel{appearance:none;-webkit-appearance:none;width:100%;max-width:118px;padding:3px 18px 3px 8px;border:0;border-radius:4px;background:var(--sc,#8d97a8) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='6'><path d='M0 0h8L4 6z' fill='white' fill-opacity='.85'/></svg>") no-repeat right 7px center;color:#fff;font:700 11px var(--font-brand);text-transform:capitalize;cursor:pointer}
.amlsel option{background:var(--card);color:var(--text-heading);font-weight:400}
.amlsub{background:var(--grey-50);box-shadow:inset 0 1px 0 var(--grey-200)}
.amlsubhd{background:var(--grey-100);min-height:26px}
.amlgh{position:sticky;left:0}
.amltask{background:var(--grey-50);min-height:30px}
.amltask .amlname{display:flex;align-items:center;gap:6px;padding-left:34px;border-left:3px solid var(--dc,#8aa0c4)}
.amltask .amlnm{font-weight:600;font-size:12px}
.amltask:hover{background:var(--card)}
.amlnone{color:var(--text-muted);font-style:italic}
.amlpur{font-family:var(--font-mono);font-size:9.5px;color:#9c36b5;text-transform:uppercase;letter-spacing:.06em}
.amlwhen{font-family:var(--font-mono);font-size:10.5px;color:var(--text-heading);background:var(--grey-100);border-radius:10px;padding:2px 8px}
.amlwhen.amlinh{color:var(--text-muted);background:transparent;border:1px dashed var(--grey-300)}
.amlwhen.late{background:color-mix(in srgb, var(--cl-crimson,#c8102e) 14%, transparent);color:var(--cl-crimson,#c8102e)}
.amlwhen i{font-style:normal;border-bottom:1px dashed currentColor}
.amlrow.late .amlnm{color:var(--cl-crimson,#c8102e)}
.amlq{min-width:220px}
:root[data-theme="dark"] .amlsub,:root[data-theme="dark"] .amltask{background:rgba(255,255,255,.025)}
:root[data-theme="dark"] .amltask:hover{background:rgba(255,255,255,.05)}
/* ===== EY: no right-hand column - the figures sit under the name; every track clips and slides ===== */
#view-am-overview .amotail{display:none}
#view-am-overview .amoname{width:230px}
.amoclip{flex:1;position:relative;min-width:0;overflow:hidden}
.amoclip>.amocells{width:100%}
.amoinner{position:relative;height:100%;min-height:inherit}
.amosum{display:block;width:100%;font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);margin-top:1px}
.amosum .amopinb{margin-left:4px}
.amostgrp .amoname{flex-wrap:wrap;align-content:flex-start}
.amoclip>.amostlanes{width:100%}
#view-am-overview .amoname{overflow:hidden}
#view-am-overview .amoname .amomut{white-space:normal}
#view-am-overview .amosum .amomut{display:inline;white-space:normal}
/* ===== EZ: a start-only window - its end is assumed from the hours, drawn open-ended ===== */
.amostbar.assumed{border-right-style:dashed;border-right-width:2px;background-image:linear-gradient(90deg, transparent 60%, color-mix(in srgb, var(--card,#fff) 55%, transparent) 100%)}
/* ===== FH: dates that are inherited say so; a task has a start as well as a due ===== */
.aminhnote{display:block;font-family:var(--font-mono);font-size:9px;color:var(--text-muted);margin-top:1px;white-space:nowrap}
.aminhnote span{opacity:.8}
.aminhnote.amnone{color:var(--cl-crimson,#c8102e)}
.amdate.aminh{border-style:dashed}
.amdate.amnodate{border-color:color-mix(in srgb, var(--cl-crimson,#c8102e) 45%, transparent)}
.adue .aminhnote{display:inline;margin-left:6px}
.amdatechip{font:inherit;font-size:12px;border:1px dashed var(--grey-300);border-radius:8px;background:transparent;color:var(--text-body);padding:4px 8px;cursor:pointer;display:inline-flex;flex-direction:column;align-items:flex-start;gap:0;line-height:1.2;text-align:left;max-width:100%}
.amdatechip span{font-family:var(--font-mono);font-size:9px;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase}
.amdatechip:hover{border-style:solid;border-color:var(--cl-orange,#ff7800)}
.amdatechip.amnone{border-color:color-mix(in srgb, var(--cl-crimson,#c8102e) 45%, transparent);color:var(--cl-crimson,#c8102e)}
/* FI: the project state strip fits the width it has - the hints wrap, the strip wraps */
.ampstrip{flex-wrap:wrap}
.ampst{flex:1 1 150px;min-width:0}
.ampst span:last-child{white-space:normal;line-height:1.25}
/* FJ: the guessed starts, each on its own lane */
.amoguess .amoname{align-items:flex-start;flex-wrap:wrap}
.amoguess .amostbar{border-left-style:dashed;border-left-width:2px}
/* ===== FJ: nothing on an AM view may widen the page. Where content is wider
   than the screen it scrolls INSIDE its own box; the page never does. ===== */
.view[id^="view-am-"]{max-width:100%;overflow-x:clip}
.amtasks>.amcolbody{overflow-x:auto}
.amrcar{overflow-x:auto}
.amrmonths{min-width:640px}
.amasset .ah{min-width:0}
.amasset .ah input.aname{min-width:120px;flex:1 1 160px}
.amgh{min-width:0}
.amgh .amsum,.amasset .ah .amsum{white-space:normal}
.amsec h3{flex-wrap:wrap}
.amph .sub{flex-wrap:wrap}
/* Safari: a flex item holding a date box or a select keeps its intrinsic width
   unless told it may shrink; every AM control may */
.view[id^="view-am-"] input,.view[id^="view-am-"] select,.view[id^="view-am-"] button{min-width:0;max-width:100%}
.mainarea{overflow-x:clip}
.amoguesshd em{text-transform:none;letter-spacing:0;font-size:11px;line-height:1.5;white-space:normal;flex:1 1 60%}
.amoguesshd em b{color:var(--text-heading)}
/* FM: the width report - only ever shown when the page is wider than the window */
#amwidthbox{position:fixed;left:12px;bottom:12px;z-index:200;max-width:min(560px,calc(100vw - 24px));background:var(--card);border:1px solid var(--cl-crimson,#c8102e);border-radius:10px;box-shadow:var(--shadow);padding:10px 12px;font-size:12px;color:var(--text-body);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
#amwidthbox code{font-family:var(--font-mono);font-size:10px;background:var(--grey-100);border-radius:4px;padding:1px 4px}
.amretsec>h3 .amcar,.amadhsec>h3 .amcar{margin:0}
.amswap{font-size:10px;opacity:.6}
.amswap:hover{opacity:1}

/* ===== FO: a second quote on a running project ============================
   The confirmed work stays where it is; what a later quote brought is named,
   counted, and goes nowhere until benched. */
.ampdot.s-newwork{background:var(--cl-crimson,#c8102e);box-shadow:0 0 0 2px rgba(200,16,46,.18)}
.ampnewtag{color:var(--cl-crimson,#c8102e);font-family:var(--font-mono);font-size:10px;letter-spacing:.04em}
.ampst[data-state="newwork"] .cnt.has{color:var(--cl-crimson,#c8102e)}
.ampnewwork{display:flex;gap:14px;align-items:flex-start;margin-top:12px;padding:12px 14px;border:1px solid var(--cl-crimson,#c8102e);border-left-width:4px;border-radius:var(--radius-md);background:var(--card)}
.ampnwtxt{flex:1;min-width:0;font-size:12.5px;line-height:1.5;color:var(--text-body)}
.ampnwtxt>b{color:var(--text-heading)}
.ampnwgrp{margin-top:6px;font-size:12px}
.ampnwgrp>b{font-family:var(--font-mono);font-size:11px;color:var(--cl-crimson,#c8102e)}
.ampnwgrp>span{color:var(--text-heading)}
.ampnwgrp>em{font-style:normal;font-family:var(--font-mono);font-size:10px;color:var(--text-muted);margin-left:6px}
.ampnwnames{color:var(--text-muted);font-size:11.5px}
.ampnewwork .ambtn{flex:none;white-space:nowrap}
@media (max-width:900px){.ampnewwork{flex-wrap:wrap}}
/* the bench: the later quote's rows first, under the confirm that brought them */
.trinewhd{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin:6px 0 4px;padding:6px 8px;border-radius:6px;background:rgba(200,16,46,.07);font-size:12px}
.trinewhd>b{color:var(--cl-crimson,#c8102e);font-family:var(--font-brand);font-weight:700}
.trinewhd>span{color:var(--text-heading)}
.trinewhd>em{font-style:normal;font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.trinewhd.was{background:var(--am-sunk,#f3f4f6);margin-top:12px}
.trinewhd.was>b{color:var(--text-muted);font-weight:600}
.trinewchip{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:#fff;background:var(--cl-crimson,#c8102e);border-radius:3px;padding:2px 5px;flex:none}
.tricard.trinewcard{box-shadow:inset 3px 0 0 var(--cl-crimson,#c8102e)}
.aminp.trineedst{border-color:var(--cl-crimson,#c8102e)}
.trimonths.trifold{color:var(--text-heading);border-bottom-style:solid}
.trimonths.trifold b{color:var(--cl-crimson,#c8102e)}
.trimonths.trineed{color:var(--cl-crimson,#c8102e)}

/* ===== FP → 1014: THE PROJECT FINDER, AS A PAGE AND AS A SWITCHER ==========
   With nothing open the finder is the page: search, the state strip, the
   clients and their projects in columns. With a project open the work has the
   whole width, and the same finder drops down under the project's title. */
.ampwrap{position:relative;display:block}
.ampfind{display:flex;flex-direction:column;min-width:0;background:var(--card);border:1px solid var(--grey-200);border-radius:var(--radius-md);box-shadow:var(--shadow);overflow:hidden}
.ampfrest{display:flex;flex-direction:column;min-height:0;min-width:0}
.ampfrlbl{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap}
.ampfrlbl b{color:var(--text-heading);margin-left:4px}
.ampfhd{display:flex;align-items:center;gap:10px;padding:10px 10px 8px}
.ampfhd .amhq{flex:1;min-width:0;width:auto}
.ampfind .ampstrip .ampfresh{flex-basis:100%}
.ampfctl{display:flex;gap:6px;align-items:center;padding:0 10px 8px;border-bottom:1px solid var(--grey-100)}
.ampfctl .amsel{flex:0 1 220px;min-width:0;font-size:12px;padding:5px 8px}
.ampfcount{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);white-space:nowrap;margin-left:auto}
.ampfbody{overflow:auto;min-height:0;padding:6px 6px 10px}
.ampfsec h4{display:flex;align-items:center;gap:6px;margin:6px 4px 4px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.ampfsec h4 small{font-family:var(--font-mono);font-size:10px;text-transform:none;letter-spacing:0;margin-left:auto}
.ampfsec h4[data-cfold]{cursor:pointer}
.ampfsec.others{margin-top:8px;padding-top:6px;border-top:1px dashed var(--grey-200)}
.ampfsec.others.shut .ampfsecb{display:none}
.ampfcar{font-size:10px;color:var(--text-muted);width:10px;text-align:center}
.ampfch{display:flex;align-items:center;gap:6px;padding:6px 6px;cursor:pointer;border-radius:6px}
.ampfch:hover{background:var(--grey-50)}
.ampfch b{font-family:var(--font-brand);font-size:12.5px;font-weight:700;color:var(--text-heading);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.ampfch em{margin-left:auto;font-style:normal;font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.ampfstar{font-style:normal;color:var(--cl-orange);font-size:11px}
.ampfc{break-inside:avoid;-webkit-column-break-inside:avoid}
.ampfc.shut .ampfcl{display:none}
.ampfcl .amli{padding:5px 8px 6px 22px}
.ampfcl .amli b{display:flex;align-items:center;font-size:12.5px}
.ampfcl .amli b .ampdot{margin-left:auto}
.ampfcl .amli span{font-size:10px}
.ampfcl .amli .bar{margin-top:3px;height:3px}
.amli.hi{box-shadow:inset 0 0 0 2px var(--cl-orange);background:var(--grey-50)}
/* the page: the full strip with its counts, the clients in columns */
.ampfind.page .ampfhd{padding:12px 14px 10px;border-bottom:1px solid var(--grey-100)}
.ampfind.page .ampfhd .amhq{max-width:520px}
.ampfind.page .ampstrip{margin:10px 12px 8px;flex-wrap:wrap}
.ampfind.page .ampfctl{padding:2px 12px 10px}
.ampfind.page .ampfbody{padding:8px 10px 14px;columns:3 280px;column-gap:22px}
.ampfind.page .ampfsec{break-inside:avoid;-webkit-column-break-inside:avoid}
.ampfind.page .ampfsec.others{column-span:all;-webkit-column-span:all}
.ampfind.page .ampfsec.others .ampfsecb{columns:3 280px;column-gap:22px}
.ampfind.page .amempty{column-span:all}
/* the switcher: a popover under the title, hidden until the title is pressed */
.ampfind.ampswitch{display:none;position:absolute;z-index:60;width:min(460px,calc(100vw - 80px));max-height:min(72vh,720px);border-color:var(--grey-300);box-shadow:0 14px 40px rgba(20,30,60,.22),0 2px 6px rgba(20,30,60,.12);isolation:isolate}
/* Safari painted the bench's sticky rail through the popover: the detail is
   its own stacking context under it, so nothing inside can climb above */
.ampwrap.full > #ampdetail{position:relative;z-index:0}
.ampswitch .ampfrest{flex:1 1 auto;min-height:0;overflow:hidden}
.ampfind.ampswitch.open{display:flex}
.ampswitch .ampfhd{padding:10px 10px 6px}
.ampswitch .ampstrip{display:flex;flex-wrap:wrap;gap:4px;padding:0 10px 8px;border:0;border-radius:0;overflow:visible;background:transparent;margin:0;box-shadow:none}
.ampswitch .ampst{flex:0 0 auto;min-width:0;padding:3px 9px;border:1px solid var(--grey-200);border-radius:999px;background:var(--card);display:flex;gap:6px;align-items:center;cursor:pointer}
.ampswitch .ampst span:first-child{font-family:var(--font-brand);font-size:11px;font-weight:700;color:var(--text-body)}
.ampswitch .ampst span:not(:first-child){display:none}
.ampswitch .ampst .cnt{font-family:var(--font-mono);font-size:11px;color:var(--text-muted);margin:0}
.ampswitch .ampst.sel{background:var(--am-sunk);box-shadow:inset 0 0 0 1px var(--cl-orange)}
.ampswitch .ampst.sel span:first-child{color:var(--am-ink)}
.ampswitch .ampfctl .amsel{flex:1}
.ampswitch .ampfbody{flex:1 1 auto}
.ampfft{display:flex;align-items:center;gap:8px;padding:6px 10px;border-top:1px solid var(--grey-100);font-family:var(--font-mono);font-size:10px;color:var(--text-muted);background:var(--grey-50)}
.ampfft .amlink{margin-left:auto}
/* the title as the switch, and the ‹ › beside it */
.ampsteps{display:flex;gap:3px;flex:none;align-self:center}
.ampstep{width:22px;height:22px;border:1px solid var(--grey-200);background:var(--card);border-radius:6px;font-size:16px;line-height:1;color:var(--text-muted);cursor:pointer;padding:0 0 2px}
.ampstep:hover:not(:disabled){color:var(--cl-orange);border-color:var(--cl-orange)}
.ampstep:disabled{opacity:.35;cursor:default}
.ampswb{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font:inherit;color:inherit;border-radius:8px;padding:2px 6px;margin-left:-6px;max-width:100%}
.ampswb:hover,.ampswb[aria-expanded="true"]{background:var(--grey-50)}
.ampswb:focus-visible{outline:2px solid var(--cl-orange);outline-offset:1px}
.ampswcar{font-style:normal;font-size:14px;color:var(--text-muted);transition:transform .15s}
.ampswb[aria-expanded="true"] .ampswcar{transform:rotate(180deg)}
.ampidpos{margin-left:8px;font-family:var(--font-mono);font-size:10px;font-weight:400;letter-spacing:.04em;color:var(--text-muted)}
.ampswnew{all:unset;cursor:pointer;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;color:var(--cl-crimson,#c8102e);border:1px solid rgba(200,16,46,.35);border-radius:999px;padding:2px 9px;white-space:nowrap;vertical-align:middle}
.ampswnew:hover{background:rgba(200,16,46,.08)}
.amplistlnk{font-size:11px;margin-left:0}
.ampwrap > .ampfresh{display:block;width:100%;margin:0 0 10px}
@media (max-width:900px){.ampfind.page .ampfbody{columns:1}.ampfind.ampswitch{left:0 !important;width:calc(100vw - 32px)}}

/* ===== FQ: the monday conversion, and mirrored rows ======================= */
.ammchip{display:inline-flex;align-items:center;gap:3px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:#4c6ef5;border:1px solid rgba(76,110,245,.35);border-radius:4px;padding:1px 6px;text-decoration:none;vertical-align:middle;margin-left:4px;white-space:nowrap}
.ammchip:hover{background:rgba(76,110,245,.08)}
.ammstat{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;margin-top:12px;padding:10px 12px;border:1px solid var(--grey-200);border-radius:var(--radius-md);background:var(--grey-50);font-size:12.5px;color:var(--text-body)}
.ammstat b{color:var(--text-heading)}
.ammrep{margin-top:10px;padding:10px 12px;border:1px solid var(--grey-200);border-radius:var(--radius-md);background:var(--card);font-size:12.5px}
.ammrep.bad{border-color:var(--cl-crimson,#c8102e)}
.ammrep>b{display:block;margin-bottom:6px;color:var(--text-heading)}
.ammrow{display:flex;gap:10px;padding:3px 0;border-top:1px dashed var(--grey-100)}
.ammrow>span{flex:0 0 170px;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding-top:2px}
.ammrow>em{font-style:normal;flex:1;min-width:0;color:var(--text-body)}
.ammrow.warn>em{color:var(--orange-700,#c25b00)}
.ammrow.bad>em{color:var(--cl-crimson,#c8102e)}
.ammtag{display:inline-block;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;border-radius:4px;padding:2px 6px;white-space:nowrap}
.ammtag.chosen{background:rgba(22,163,74,.12);color:#15803d}
.ammtag.guess{background:rgba(217,119,6,.12);color:#b45309}
.ammtag.waiting{background:rgba(200,16,46,.10);color:var(--cl-crimson,#c8102e)}
.ammtbl tr.waiting td:first-child b{color:var(--cl-crimson,#c8102e)}
.ammtbl td .amsel{max-width:320px;width:100%}
.ampfall{display:flex;align-items:center;gap:6px;padding:6px 12px;font-size:11.5px;color:var(--text-muted);border-bottom:1px solid var(--grey-100);cursor:pointer}
.ampfall input{margin:0}
.ammq tr.answered td{opacity:.45}
.ammq td b{margin-left:6px}
.ammq input[type=month]{width:150px}
/* FS: retained / ad hoc as two tabs on the project page */
.ampwtabs{display:flex;gap:6px;margin:14px 0 0}
.ampwtab{display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:9px 16px;border:1px solid var(--grey-200);border-bottom:0;border-radius:10px 10px 0 0;background:var(--grey-50);cursor:pointer;font-family:var(--font-body);text-align:left}
.ampwtab b{font-family:var(--font-brand);font-size:13px;font-weight:700;color:var(--text-muted)}
.ampwtab small{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.ampwtab.on{background:var(--card);box-shadow:inset 0 3px 0 var(--cl-orange)}
.ampwtab.on b{color:var(--am-ink)}
.ampwtabs+.amsec{margin-top:0;border-top-left-radius:0}
.amswap{display:none}

/* GB: the menu - in the tray, the define dialog, the Admin tab */
.amrmenu{border-style:dashed}
.amrmenu .amrlh b{color:var(--text-body)}
.ammline{display:flex;align-items:center;gap:6px;margin-top:3px}
.ammline span{flex:1}
.amrpen{background:none;border:0;color:var(--text-muted);cursor:pointer;font-size:11px;padding:0 3px;line-height:1}
.amrpen:hover{color:var(--cl-orange)}
.amradhoc{width:100%;text-align:center;margin-top:8px;font-size:11px;padding:6px 8px}
.amrdropzone{margin-top:8px;border:1.5px dashed var(--grey-200);border-radius:8px;padding:22px 12px;text-align:center;
  font-family:var(--font-mono);font-size:9.5px;color:var(--grey-400);min-height:72px;display:flex;align-items:center;justify-content:center}
.amrmonth.amrdrop .amrdropzone{border-color:var(--cl-orange);color:var(--orange-700);background:var(--orange-50)}
.amrmonth .amrbody{min-height:260px}
.ammdefcard{width:min(680px,94vw)}
.ammdeftbl{margin-top:6px}
.ammdeftbl td .aminp{width:100%;min-width:0;box-sizing:border-box}
.ammdeftbl td .amsel{width:100%;min-width:0}
.ammdeffoot{display:flex;align-items:center;gap:12px}
.ammdefsum{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}
.ammtbl td .ammtask{display:inline-block;margin:2px 6px 2px 0;padding:2px 8px;border:1px solid var(--grey-200);border-radius:12px;font-size:11.5px;color:var(--text-body)}
.ammtbl td .ammtask i{font-style:normal;color:var(--text-muted)}
.ammtbl td .ammtask b{color:var(--text-heading)}
.ammarch td{opacity:.55}
/* GA: the project card - one identity line, three tabs; the page head compact */
.amhead.compact{margin-bottom:10px}
.amhead.compact h2{font-size:16px}
.amhead.compact .ameyebrow{display:inline;margin-right:8px}
.ampnewb{padding:4px 9px;font-size:11px;border-radius:8px}
.ampfrail .sp{flex:1}
.ampcard{padding:0;overflow:hidden}
.ampid{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 18px 10px;border-bottom:1px solid var(--grey-100)}
.ampid h2{margin:0;font-family:var(--font-brand);font-weight:800;font-size:22px;color:var(--text-heading);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ampidn{display:flex;flex-direction:column;gap:2px;min-width:0}
/* 1008: the client reads first - a clear line above the project name, not a mono whisper under it */
.ampidcl{font-family:var(--font-brand);font-weight:700;font-size:13px;letter-spacing:.01em;color:var(--cl-orange);line-height:1.2}
.ampidsub{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);display:flex;gap:12px;flex-wrap:wrap}
.ampfigs.mini .amphint{flex-basis:100%;font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted)}
.ampfigs.mini{margin:0 0 0 auto;gap:14px;align-items:center;padding:0;border:0}
.ampfigs.mini .ampstage{margin-right:2px}
.ampif{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);white-space:nowrap}
.ampif b{font-family:var(--font-brand);font-size:13px;font-weight:800;color:var(--text-heading);margin-right:4px}
.ampfigs.mini.prep .ampif b{color:var(--cl-orange)}
.ampcard .ampwtabs{margin:0;padding:10px 18px 0;border-bottom:1px solid var(--grey-100)}
.ampcard .ampwtab.on{margin-bottom:-1px;border-bottom:1px solid var(--card)}
.ampwbadge{display:inline-block;margin-left:6px;background:var(--cl-crimson);color:#fff;border-radius:9px;padding:0 6px;font-family:var(--font-mono);font-size:9px;font-weight:500;vertical-align:1px}
.ampcard .amptab{padding:14px 18px 18px}
.ampcard .amptab.amsec{margin:0;border:0;border-radius:0;box-shadow:none}
.ampprojtab .amph{margin-bottom:4px}
.ampacts{display:flex;gap:6px;flex-wrap:wrap;align-items:flex-start}
.ampprojtab #amplinkssec{margin-top:12px}
/* the greeting shrinks to a line on Planner pages - the room goes to the work */
body:has(.view.on[id^="view-am-"]) .greet{margin-bottom:10px;gap:10px}
body:has(.view.on[id^="view-am-"]) .greet .avatar{width:28px;height:28px;font-size:11px}
body:has(.view.on[id^="view-am-"]) .greet>div:not(.teamask){display:flex;align-items:baseline;gap:10px}   /* 1021: not the Team app's Ask pill - that showed up on every Planner page and did nothing there */
body:has(.view.on[id^="view-am-"]) .greet h1{font-size:15px}
body:has(.view.on[id^="view-am-"]) .greet .sub{margin-top:0;font-size:12px}

/* GD: the Overview head on one row - the window and its arrows beside the title */
.amohd{flex-wrap:nowrap;gap:10px}
.amonav{display:flex;align-items:center;gap:4px;margin-left:6px}
.amorange{font-family:var(--font-mono);font-size:10.5px;color:var(--text-heading);white-space:nowrap;padding:0 4px}
.amohd .amoslider{min-width:0}
.amohd .amoslider input{width:110px}
.amohd .amplev{white-space:nowrap}
@media (max-width:1240px){.amohd{flex-wrap:wrap}}

.amostund{position:relative}
.amostund b[data-uopen]{cursor:pointer}
.amostund b[data-uopen]:hover{text-decoration:underline}
.amostundd{background:none;border:0;padding:0 0 0 2px;font-size:11px;line-height:1;cursor:pointer;opacity:.55}
.amostundd:hover{opacity:1}
.amostund.amrdragging{opacity:.5}

/* GF: purchases */
.amprcard{padding-bottom:6px}
.amprsum{font-family:var(--font-mono);font-size:10.5px;color:var(--text-body);margin-left:10px}
.amprsum b{color:var(--text-heading)}
.amprlate{color:var(--cl-crimson)}
.amprflt .amsel{padding:4px 8px;font-size:12px}
.amprflt .amhq{width:260px;padding:5px 9px;font-size:12px}
.amprtable{padding:0 10px 8px;overflow-x:auto}
.amprgrp{font-family:var(--font-brand);font-weight:800;font-size:12.5px;color:var(--text-heading);padding:12px 4px 4px}
.amprgrp small{font-family:var(--font-mono);font-weight:400;color:var(--text-muted);margin-left:6px}
.amprrow{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(200px,1.2fr) 90px 48px 150px 170px 236px 110px 30px;gap:8px;align-items:center;
  border-top:1px solid var(--grey-100);padding:6px 4px;min-width:max-content;width:100%}
.amprtable.compact .amprrow{grid-template-columns:minmax(220px,1.6fr) 90px 48px 150px 170px 236px 110px 30px}
.amprrow.amprhead{font-family:var(--font-mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);border-top:0;padding-bottom:2px}
.amprrow.done{opacity:.6}
.amprnm b{display:block;font-family:var(--font-brand);font-size:12.5px;color:var(--text-heading)}
.amprnm span{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.amprnm i,.amprcost i,.amprwhen i{font-style:normal;color:var(--cl-crimson);font-family:var(--font-mono);font-size:10px}
.amprwho{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);display:flex;flex-direction:column;gap:1px;min-width:0}
.amprwho .amolink{font-family:var(--font-brand);font-size:11.5px;text-align:left;padding:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amprwho span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amprcost{font-family:var(--font-mono);font-size:12px;color:var(--text-heading);font-variant-numeric:tabular-nums}
.amprlead{font-family:var(--font-mono);font-size:11px;color:var(--text-muted)}
.amprwhen{font-family:var(--font-mono);font-size:10.5px;color:var(--text-body);display:flex;flex-direction:column;gap:1px}
.amprwhen b{color:var(--text-heading);font-weight:500}
.amprwhen small{font-size:9px;color:var(--text-muted)}
.amprwhen em{font-style:normal;font-size:9px;color:var(--cl-crimson);font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.amprrow.late .amprwhen b{color:var(--cl-crimson)}
.amprowner .amsel{width:100%;padding:4px 6px;font-size:12px;min-width:0}
.amprowner.none .amsel{border-color:var(--cl-crimson);color:var(--cl-crimson)}
.amprowner.set .amsel{border-color:var(--am-ink)}
.amprseg{display:inline-flex;border:1px solid var(--grey-200);border-radius:8px;overflow:hidden}
.amprst{border:0;background:var(--card);color:var(--text-muted);font-family:var(--font-brand);font-weight:700;font-size:10.5px;padding:5px 9px;cursor:pointer;border-right:1px solid var(--grey-200)}
.amprst:last-child{border-right:0}
.amprst:hover{background:var(--grey-50)}
.amprst.on{color:#fff}
.amprst.on.to_order{background:var(--cl-orange)}
.amprst.on.ordered{background:#3b82f6}
.amprst.on.received{background:#16a34a}
.amprpo .aminp{width:100%;padding:4px 7px;font-family:var(--font-mono);font-size:11px;min-width:0}
@media (max-width:1200px){.amprrow{grid-template-columns:minmax(200px,1.4fr) minmax(160px,1fr) 80px 40px 130px 150px 220px 90px 30px}}

.adsub .adgoto{margin-left:10px;font-size:11px}

/* GG: the strip's rows say what they do; tasks and retainer months read as what they are */
.amogrprow>span,.amofltrow>span{min-width:76px;font-weight:700}
.amorowhint{font-style:normal;font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);margin-left:8px;text-transform:none;letter-spacing:0}
.amostbar.sub{height:14px;padding:0 6px 0 4px;border-radius:3px;background:var(--card);border:1px dashed var(--dc,#8aa0c4);color:var(--text-body);margin-left:14px;opacity:.95}
.amostbar.sub b{font-weight:600;font-size:10px}
.amosttag{font-style:normal;font-family:var(--font-mono);font-size:8px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-right:5px;flex:none}
.amostmonth{cursor:pointer}
.amostmonth::after{content:'month';position:absolute;right:8px;top:0;bottom:0;display:flex;align-items:center;font-family:var(--font-mono);font-size:8px;letter-spacing:.08em;text-transform:uppercase;opacity:.6}
/* GG: a folded strip block is one short line */
.amostgrp.fold{min-height:0}
.amostgrp.fold .amoname{padding-top:3px;padding-bottom:3px;align-items:center}
.amostgrp.fold .amosthead{max-width:100%}
.amostgrp.fold .amostname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:11.5px}
.amostfsum{font:400 9.5px var(--font-mono);color:var(--text-muted);white-space:nowrap;margin-left:4px}
.amostgrp.fold .amostlanes{padding:4px 0 3px}
.amostgrp.fold .amotail{padding-top:2px}
.ampbuy{margin-left:6px}
/* GO: the two quietening ticks on the strip's filter row */
.amoquiettick{color:var(--text-muted)}
.amoquiettick:has(input:checked){color:var(--cl-orange,#ff6a1f);font-weight:700}
/* GP: the part an item plays, changeable on its month row */
.amrtype{font-family:var(--font-mono);font-size:8.5px;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.12);color:inherit;border-radius:6px;padding:2px 4px;max-width:150px;cursor:pointer;min-width:110px}
.amrtype option{color:var(--text-body)}
.amrtok.o-recurring .amrtype,.amrtok.o-extra .amrtype,.amrtok.o-pool .amrtype,.amrtok.o-adhoc .amrtype{background:var(--grey-50);border-color:var(--grey-200);color:var(--text-body)}
/* GP: asset or task - said with a chip and a rail, so the hierarchy reads at a glance */
.amkind{font:700 8.5px/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;border-radius:4px;padding:4px 6px;flex:none;white-space:nowrap}
.amkind-asset{background:var(--cl-orange,#ff6a1f);color:#fff}
.amkind-task{background:#e6edfb;color:#2f4b8f}
:root[data-theme="dark"] .amkind-task{background:#25355c;color:#c7d5f5}
.amasset{border-left:3px solid var(--cl-orange,#ff6a1f)}
.amasset .amtasks{margin-left:6px;padding-left:10px;border-left:2px solid #c9d6f2}
.amasset .amtasks .th b{font-weight:600;color:var(--text-muted);text-transform:none;letter-spacing:0}
.amassetdlg .amtasks{padding-left:10px;border-left:2px solid #c9d6f2}
.amtbl .tname{border-left:2px solid #c9d6f2;padding-left:6px}
.trirc{font-style:normal;color:var(--text-muted);font-size:10.5px}
.trifixnote{flex-basis:100%;font-family:var(--font-mono);font-size:9.5px;color:#9a5b00;background:#fff6e5;border:1px solid #f1d9a6;border-radius:6px;padding:3px 8px;margin-top:4px}
/* GQ: press releases and draws over the allowance */
.amrpr{font:700 8px/1 var(--font-mono);letter-spacing:.08em;background:#7c3aed;color:#fff;border-radius:4px;padding:2px 4px;margin-left:6px;font-style:normal}
.amrover2{font:700 8px/1 var(--font-mono);letter-spacing:.06em;background:var(--cl-crimson,#c8102e);color:#fff;border-radius:4px;padding:2px 4px;margin-left:4px;font-style:normal}
.tripr{display:inline-flex;align-items:center;gap:4px}
.triover{font-family:var(--font-mono);font-size:9.5px;color:#fff;background:var(--cl-crimson,#c8102e);border-radius:6px;padding:2px 7px}
/* GQ: the house menu as a drawer of its own under the allowance rail */
.amrmenubox{margin-top:10px;border:1px dashed var(--grey-300,#d4d9e2);border-radius:10px;background:var(--grey-50,#f7f8fb)}
.amrmenutog{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;padding:9px 12px;cursor:pointer;text-align:left;font:inherit;color:var(--text-heading)}
.amrmenutog b{font-family:var(--font-brand);font-size:12.5px}
.amrmenutog small{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted)}
.amrmenutog .amrmw{font-size:10px;color:var(--text-muted);width:10px}
.amrmenubox.on{border-style:solid;background:var(--card,#fff)}
.amrmenuscroll{padding:0 8px 8px;max-height:40vh;overflow:auto}
.amrmenuscroll .amrgrp{display:none}

/* GR: step explainer under the rail, not over the pane */
.triintro.inrail{margin:6px 16px 0;padding-top:12px;border-top:1px solid var(--am-rule)}
.triintro.inrail h3{font-size:13.5px;line-height:1.3;margin:0 0 6px}
.triintro.inrail p{font-size:12px;line-height:1.45;max-width:none}
@media(max-width:900px){.triintro.inrail{display:none}}

/* GS: press-release mark in the asset editor */
.adpr{font:700 10px/1 var(--font-mono,monospace);letter-spacing:.06em;padding:4px 7px;border-radius:999px;border:1px solid var(--am-rule-firm,#d5d5d5);background:transparent;color:var(--text-muted);cursor:pointer;margin-left:6px}
.adpr:hover{color:var(--text-heading);border-color:var(--text-muted)}
.adpr.on{background:var(--cl-orange);border-color:var(--cl-orange);color:#fff}

/* GU: note beside the status */
.amstwrap{display:inline-flex;align-items:center;gap:3px;max-width:100%}
.amsnote{border:1px solid transparent;background:transparent;color:var(--text-muted);font-size:11px;line-height:1;padding:3px 4px;border-radius:4px;cursor:pointer;opacity:.45}
.amsnote:hover,.amsnote.on{opacity:1;color:var(--text-heading)}
.amsnote.on{border-color:var(--am-rule-firm,#d5d5d5);background:var(--am-sunk,#f6f6f6)}

/* GV: dragging a picture between the lines */
.bedit figure.bimg{cursor:grab}
.bedit figure.bimg.dragging{opacity:.4}
.bedit > .bdropline{box-shadow:0 -2px 0 0 var(--cl-orange,#ff6a1f)}
.bedit > .bdropline.bdropafter{box-shadow:0 2px 0 0 var(--cl-orange,#ff6a1f)}

/* GW: the press-release chip on a month row */
button.amrpr{cursor:pointer;border:1px solid #7c3aed;background:transparent;color:#7c3aed}
button.amrpr.on{background:#7c3aed;color:#fff}
button.amrpr:hover{filter:brightness(.92)}

/* GY: press release tick in the set-up dialogue */
.amrspr{display:flex;align-items:center;gap:5px;font:500 10.5px/1.2 var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:#7c3aed;margin-top:4px;cursor:pointer}
.amrspr input{margin:0}

/* HB: list view - set things from the row, colours per client, comments */
.amlcl{--cc:var(--cl-blue,#3b82f6);background:color-mix(in srgb, var(--cc) 14%, transparent);border-left:3px solid var(--cc);border-radius:3px 4px 4px 3px}
.amlsel.amlwho,.amlsel.amlskill{--sc:transparent;background:transparent;color:var(--text-body);border:1px solid transparent;max-width:150px;padding:2px 4px}
.amlsel.amlwho:hover,.amlsel.amlskill:hover{border-color:var(--am-rule-firm,#d5d5d5)}
.amlsel.amlwho.none{color:var(--text-muted);font-style:italic}
.amlsel.amlast.set{outline:2px solid color-mix(in srgb, var(--sc) 55%, transparent);outline-offset:1px}
.amlinfo,.amlcmt{border:0;background:transparent;color:var(--text-muted);cursor:pointer;font-size:11px;line-height:1;padding:2px 4px;border-radius:4px;opacity:.55;margin-left:4px;white-space:nowrap}
.amlrow:hover .amlinfo,.amlrow:hover .amlcmt,.amlinfo.on,.amlcmt.on{opacity:1}
.amlinfo:hover,.amlcmt:hover{background:var(--am-sunk,#f3f4f6);color:var(--text-heading)}
.amlcmt.on{color:var(--cl-orange,#ff6a1f);font-weight:700}
.amlmine.on{background:var(--cl-orange,#ff6a1f);color:#fff;border-color:var(--cl-orange,#ff6a1f)}
.amcmts{width:min(640px,94vw)}
.amcmts h3 small{display:block;font:500 12px/1.3 var(--font-mono);color:var(--text-muted);margin-top:4px}
.amcmtl{max-height:50vh;overflow:auto;margin:10px 0;display:flex;flex-direction:column;gap:8px}
.amcmt{border:1px solid var(--am-rule,#e5e7eb);border-radius:8px;padding:8px 10px;background:var(--card,#fff)}
.amcmt.reply{margin:6px 0 0 18px;background:var(--am-sunk,#f7f7f8)}
.amcmth{display:flex;gap:8px;align-items:baseline;font-size:12px;color:var(--text-muted)}
.amcmth b{color:var(--text-heading)}
.amcmth .sp{flex:1}
.amcmtb{font-size:13px;margin-top:3px;white-space:normal}
.amcmtnew textarea{width:100%;min-height:64px;resize:vertical;margin-top:4px}

/* ---- HK: people on the Overview - pinned at the top, the team beneath ---- */
.amoteam.shut .amobandhead,.amopeople .amobandhead{border-bottom:0}
.amopeople .amobandhead span:first-child{color:var(--cl-crimson)}
.amoppzone{border-top:2px solid var(--grey-100)}
.amoppzone.amopptop{border-top:2px solid var(--cl-crimson);}
.amoppzone .amopp .amoname{padding-left:14px}
.amotg .amoname{background:var(--grey-50,#fafafa)}
.amotg.fold+.amoppzone{display:none}
.amopplanes .amoname{padding-left:40px;align-items:flex-start}
.amopplanes .amostlanes{min-height:26px}
.amoppund .amoname{padding-left:40px}
.amostlane.amoppempty{height:22px}
/* while a task is being dragged out of somebody's block, every other block is a target */
body.amoppdrag .amoppzone{outline:2px dashed transparent;outline-offset:-3px;transition:outline-color .12s}
body.amoppdrag .amoppzone:hover{outline-color:var(--cl-crimson);background:rgba(190,30,60,.04)}
body.amoppdrag .amostbar{pointer-events:none}
body.amoppdrag .amostbar.amodragging{pointer-events:auto}

/* HR: the reviewed bulk set-up on the Drive page */
.amdrvlist{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:6px}
.amdrvlist .amtick{white-space:nowrap}

/* HS: the service ticks on a client card, and the last Drive note beside them */
.amcsvc label{display:inline-flex;align-items:center;gap:5px;cursor:pointer}
/* HT: brands under their company on Accounts, and on the card */
.amcc.brand{box-shadow:var(--shadow),inset 0 4px 0 var(--cl-purple)}
.amcc.brand .head{padding-top:4px}
.amcc .amckin{font-style:italic;color:var(--cl-purple)}
.amckinchip{padding:1px 8px;border-radius:999px;background:color-mix(in srgb,var(--cl-purple) 14%,transparent)}
.amckinrow select{max-width:260px}
.amcdrvnote{font-size:11px;margin-left:auto;max-width:60%;text-align:right}

/* HU: the Services dialog - every client, two ticks */
.amsvcdlg{width:min(760px,94vw)}
.amsvcbar{display:flex;align-items:center;gap:12px;margin:8px 0 10px}
.amsvcbar .aminp{max-width:260px}
.amsvcbody{max-height:min(60vh,620px);overflow:auto;border:1px solid var(--am-rule,rgba(0,0,0,.08));border-radius:8px}
.amsvctbl{width:100%}
.amsvctbl th.c,.amsvctbl td.c{text-align:center;width:110px}
.amsvctbl td.c input{width:18px;height:18px;cursor:pointer}
.amsvctbl tr.brand td:first-child{padding-left:26px}
.amsvctbl tr.st-dormant td,.amsvctbl tr.st-former td{opacity:.7}
.amsvcst{font-size:10.5px;padding:1px 7px;border-radius:999px;background:rgba(0,0,0,.06)}
.amsvcst.s-lead{background:color-mix(in srgb,var(--cl-purple) 14%,transparent)}
.amsvcst.s-dormant{background:rgba(138,148,166,.18)}
.amsvcst.s-former{background:color-mix(in srgb,var(--cl-crimson) 14%,transparent)}

/* HV: Drive setup needs attention */
.amdrvattn{border-left:3px solid var(--cl-crimson)}
.amdrvattn .amattnwhy{max-width:46%;white-space:normal}
.amdrvattn .amattnwhen{white-space:nowrap}

/* HW: the Overview in two halves - people (time bars) above, the Gantt of all the work below */
.amopp.amopplanes .amoname{padding-left:14px;align-items:center}
.amopp.amopplanes .amostlanes{min-height:22px}
.amostlanes.amothin{padding:6px 0 5px}
.amostlanes.amothin .amostlane{height:6px;margin-bottom:2px}
.amostlanes.amothin .amostbar,.amostlanes.amothin .amostbar.sub{height:6px;padding:0;border-radius:2px;border:0;background:var(--dc,#8aa0c4);margin-left:0;opacity:.85}
.amostlanes.amothin .amostbar b,.amostlanes.amothin .amostbar .amorag,.amostlanes.amothin .amostbar .amostseg,.amostlanes.amothin .amostgrip,.amostlanes.amothin .amosttag{display:none}
.amostlanes.amothin .amostbound{display:none}
.amotgbar .amoname{background:var(--grey-50,#fafafa)}
.amostlane.amoppempty{height:14px}

/* HX: weekend columns are slivers in the days view */
.amocell.amowe{overflow:hidden;padding-left:0;padding-right:0}
.amohead.amowe b{font-size:9px;letter-spacing:0}
.amohead.amowe span{font-size:8.5px}
.amoheat.amowe span,.amoheat.amowe .amoover,.amoheat.amowe .amopeak,.amoband.amowe .amobandcol,.amoband.amowe .amocapline{display:none}

/* HY: sample data on the Overview */
.amosamplelbl.on{color:var(--cl-purple);font-weight:700}
.amosamplewarn{border-left-color:var(--cl-purple)}
.amosamplewarn b{color:var(--cl-purple)}

/* IA: a quoted asset deleted off the bench */
.tricard.trigone{border-left:3px solid var(--cl-crimson)}
.tricard.trigone .trileft{color:var(--cl-crimson)}
.tricard.trigone .mt .ambtn{margin-left:8px;padding:1px 8px;font-size:11px}

/* ---- JR: the workbench's plain buttons and the way back ---- */
.tribulk{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:18px;padding-top:12px;border-top:1px solid var(--am-rule,#e3e3e3)}
.tribulk .ambtn{font-size:12px;padding:7px 13px}
.tribulk .ambtn.ghost.danger{margin-left:auto}
.amnow .trihd .trigrip.triback{color:var(--am-was,#5b6b8a);margin-right:2px}
.amnow .trihd .trigrip.triback:hover{color:var(--cl-orange)}
.tritask .trix.trisold{opacity:0;pointer-events:none}

/* 1001: the add-a-kind-of-work tab */
/* 1008: the kind of work a project does not have is a quiet link at the end of the strip, not a blank tab */
.ampwmore{margin-left:auto;align-self:center;display:flex;gap:10px;padding:0 6px}
.ampwadd{border:0;background:none;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);cursor:pointer;padding:4px 6px;border-radius:6px;opacity:.7}
.ampwadd:hover{opacity:1;color:var(--cl-orange);background:var(--am-sunk,#f3f4f6)}
.ampwtabs{display:flex;align-items:flex-end}

/* 1004: Commercials' confirm note, in full, with its links live */
.ampinbox{margin-top:8px;display:flex;flex-direction:column;gap:4px}
.ampinboxrow{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:4px 10px;align-items:baseline;font-size:12.5px;line-height:1.45;padding:6px 10px;border-left:3px solid var(--cl-crimson,#c8102e);background:rgba(200,16,46,.05);border-radius:0 6px 6px 0}
.ampinboxrow>b{font-family:var(--font-mono);font-size:11px;color:var(--cl-crimson,#c8102e)}
.ampinboxrow>em{font-style:normal;font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.ampinboxrow>span{color:var(--text-heading);white-space:pre-wrap;overflow-wrap:anywhere}
.ampinboxrow a,.ampnotes a,.ampnwnote a,.trinewnote a{color:var(--cl-orange);font-weight:600;text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
.ampnotes{white-space:pre-wrap;overflow-wrap:anywhere}
.ampnwnote{display:block;margin-top:2px;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text-heading)}
.trinewnote{flex-basis:100%;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--text-heading)}

/* ================= 1009: THE MONTH AS A WORKING AREA ======================
 * The lines are a strip across the top; the open month is a day-by-day
 * agenda with the month's notes beside it. The item rows fold into a block
 * above the agenda so hours/move/split/take-out are still one click away. */
.amrpanel.agenda{grid-template-columns:270px minmax(0,1fr)}
.amrpanel.agenda .amrrail{gap:0}
.amrpanel.agenda .amrscroll{max-height:none;overflow:visible}
.amrpanel.agenda .amrline{padding:6px 8px}
.amrpanel.agenda .amrmenubox{margin-top:8px}
.amritems{margin:0 0 12px;padding:0 0 8px;border-bottom:1px solid var(--am-rule)}
.amritems .amrsec{margin-top:6px}
/* the item rows as compact cards in the column: the name on top, its controls wrapped underneath */
.amritems .amrtok,.amritems .amrstand{flex-wrap:wrap;border-radius:10px;padding:5px 8px;font-size:9px;row-gap:3px;margin:0 0 5px}
.amritems .amrtok span[data-redit]{flex:1 1 100%;font-size:11px;font-family:var(--font-brand);font-weight:600}
.amritems .amrtok .amrtn,.amritems .amrtok .amrwk{display:none}
.amritems .amrtok .amrtype{min-width:0;max-width:120px}
.amritems .amrtok .amrx{margin-left:auto}
.amritems .amrdropzone{min-height:0;padding:6px 8px;margin-top:2px;font-size:9.5px}
.amritems.folded .amrdropzone{display:none}
.amritemsh{display:flex;align-items:center;gap:8px;width:100%;background:none;border:0;padding:8px 2px;cursor:pointer;text-align:left;font:inherit;color:var(--text-heading)}
.amritemsh b{font-family:var(--font-brand);font-size:12.5px}
.amritemsh small{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted)}
.amritemsh .amrmw{font-size:10px;color:var(--text-muted);width:10px}
.amritems .amrdropzone{min-height:0;padding:7px 8px;margin-top:4px}
.amritems.folded .amrdropzone{padding:4px 8px;font-size:9.5px}
.amrwork{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:14px;align-items:start}
@media(max-width:1560px){.amrwork{grid-template-columns:1fr}.amrpad{position:static}}
.amrag{min-width:0}
.amrhint{font-family:var(--font-mono);font-size:10px;color:var(--grey-400)}
.amrun{border:1px dashed var(--grey-300);border-radius:10px;padding:6px 8px;margin:0 0 8px}
.amrun .k{display:block;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--orange-700,#b45309);margin-bottom:2px}
.amrwk{display:flex;align-items:baseline;gap:10px;padding:7px 6px 5px 2px;border-top:1px solid var(--am-rule);background:var(--am-sunk,#f7f8fb);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.amrwk em{font-style:normal;text-transform:none;letter-spacing:0;color:var(--text-muted)}
.amrwk.now span{color:var(--cl-orange)}
.amrday{display:grid;grid-template-columns:96px minmax(0,1fr);border-top:1px solid var(--am-rule);min-height:30px}
.amrday .amrdh{padding:6px 6px 6px 2px;font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.amrday .amrdh b{display:block;font-family:var(--font-brand);font-size:12px;color:var(--text-heading)}
.amrday .amrdh small{font-size:9px;color:var(--cl-orange)}
.amrday .amrdb{padding:3px 0 3px 8px;min-width:0}
.amrday.today{background:rgba(255,120,0,.06)}
.amrday.today .amrdh b{color:var(--cl-orange)}
.amrday.empty .amrdh{padding:3px 6px 3px 2px;font-size:9.5px;color:var(--grey-400);white-space:nowrap}
.amrday.empty .amrdb{padding:3px 8px;font-family:var(--font-mono);font-size:9.5px;color:var(--grey-400)}
.amrday.amrdrop,.amrun.amrdrop{background:var(--orange-50);outline:2px dashed var(--cl-orange);outline-offset:-2px}
.amrday.justin{background:rgba(255,120,0,.14)}
.amrt{display:grid;grid-template-columns:22px minmax(120px,1fr) minmax(104px,140px) 52px minmax(96px,118px) 22px;gap:7px;align-items:center;padding:3px 4px;border-radius:7px;cursor:grab}
.amrt:hover{background:rgba(127,127,127,.08)}
.amrt.done{opacity:.6}
.amrt.done .amrtname b{text-decoration:line-through}
.amrt.amrdragging{opacity:.4}
.amrav{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;font-size:9px;font-weight:700;color:#0f1422;background:#ffd1ad}
.amrav.none{background:transparent;border:1px dashed var(--grey-300);color:var(--grey-400)}
.amrtname{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.25}
.amrtname b{display:inline;font-size:12.5px;color:var(--text-heading)}
.amrtname small{display:inline;font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);margin-left:8px}
.amragwho{width:100%;font-size:11px;padding:3px 4px}
.amragwho.none{color:var(--text-muted)}
.amraghrs{width:58px;text-align:right;font-family:var(--font-mono);font-size:11px;padding:3px 5px}
.amragst{width:100%;font-size:9px;padding-left:4px}
.amragpen{border:0;background:transparent;color:var(--text-muted);cursor:pointer;font-size:12px;opacity:.5;padding:2px 4px;border-radius:4px}
.amragpen.on,.amrt:hover .amragpen{opacity:1}
.amragpen:hover{background:var(--am-sunk,#f3f4f6);color:var(--text-heading)}
.amrtnote{margin:0 4px 6px 29px}
.amrtnote textarea{width:100%;min-height:54px;font-size:12px}
.amrtnoteb{display:flex;gap:6px;margin-top:4px}
/* a meeting on its day */
.amrmt{border:1px solid rgba(137,0,181,.35);background:rgba(137,0,181,.06);border-radius:9px;padding:5px 9px;margin:2px 0 4px}
.amrmth{display:flex;align-items:center;gap:8px;cursor:pointer}
.amrmth .sp{flex:1}
.amrmtcal{width:16px;height:16px;border-radius:4px;border:1px solid rgba(137,0,181,.6);display:inline-flex;align-items:center;justify-content:center;font-size:9px;color:var(--cl-purple,#8900b5)}
.amrmth b{font-size:12.5px;color:var(--text-heading)}
.amrmth small{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted)}
.amrmth .amrmtcnt{color:var(--cl-purple,#8900b5)}
.amrmtpen,.amrnx{border:0;background:transparent;color:var(--text-muted);cursor:pointer;font-size:12px;opacity:.5;padding:1px 4px;border-radius:4px}
.amrmth:hover .amrmtpen,.amrmth:hover .amrnx,.amrnl:hover .amrnx{opacity:1}
.amrmtn{padding:4px 0 2px 24px}
.amrnl{display:flex;align-items:flex-start;gap:8px;padding:3px 0;border-top:1px solid rgba(127,127,127,.12);font-size:12px}
.amrnl .amrntx{flex:1;cursor:text;line-height:1.35}
.amrnl.made .amrntx{color:var(--text-muted);text-decoration:line-through}
.amrnl .amrnmk{opacity:.6;white-space:nowrap}
.amrnl:hover .amrnmk{opacity:1}
.amrnl .amrnx{opacity:0}
.amrnchip{font-family:var(--font-mono);font-size:9px;letter-spacing:.05em;text-transform:uppercase;padding:1px 7px;border-radius:999px;border:1px solid var(--am-rule-firm);color:var(--text-muted);white-space:nowrap;font-style:normal}
.amrnchip.s7{color:#2e9e5b;border-color:#2e9e5b}
.amrnchip.s2,.amrnchip.s1{color:var(--cl-orange);border-color:var(--cl-orange)}
.amrnadd .aminp{width:100%;font-size:11.5px;padding:4px 7px;border-style:dashed;margin-top:3px}
.amrmk{margin:4px 0 6px;background:var(--card);border:1px solid var(--cl-orange);border-radius:10px;padding:8px 10px}
.amrmk .k{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:5px}
.amrmk .aminp{width:100%;font-size:12px;margin-bottom:6px}
.amrmkrow{display:flex;gap:6px;align-items:center;margin-bottom:6px;flex-wrap:wrap}
.amrmkrow .amsel{flex:1;min-width:120px;font-size:11.5px}
.amrmkrow .aminp{margin:0}
.amrmkrow .aminp.n{width:62px;flex:0 0 auto}
.amrmkrow .amdate{width:140px;flex:0 0 auto}
/* the notes of the month */
.amrpad{border:1px solid var(--am-rule);border-radius:12px;background:var(--am-sunk,#f7f8fb);padding:10px 12px;position:sticky;top:12px}
.amrpad h4{margin:0 0 2px;font-size:12.5px;font-family:var(--font-brand)}
.amrpad > .k{display:block;font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);margin-bottom:8px}
.amrpg{margin:0 0 10px}
.amrpgh{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:10px;color:var(--cl-purple,#8900b5);padding:4px 0;cursor:pointer}
.amrpgh.loose{color:var(--text-muted);cursor:default}
.amrpgh .sp{flex:1}
.amrpgh small{font-size:9.5px;color:var(--text-muted)}
.amrpadtx{width:100%;min-height:58px;margin-top:6px;font-size:12px;border-style:dashed}
.amrpadf{display:flex;align-items:center;gap:8px;margin-top:8px}
.amrpadf .ambtn{white-space:nowrap;flex:0 0 auto}
.amrpadf .sp{flex:1}
.ampam{color:var(--text-muted)}
.ampam::before{content:'· ';color:var(--grey-300)}
:root[data-theme="dark"] .amrpad,:root[data-theme="dark"] .amritems,:root[data-theme="dark"] .amrwk{background:var(--am-sunk)}

/* ================= 1011: THE PALETTE AND THE ITEM CARDS ===================
 * The left column is one kind of thing: tiles you drag onto a day. The month's
 * items are cards on the agenda, on the day they start (or are due by). */
.amrpalette .amrrh{margin-bottom:6px}
.amrtile{display:flex;align-items:center;gap:7px;padding:6px 7px 6px 6px;border-radius:9px;background:var(--card);border:1px solid var(--grey-200)}
.amrtile.amrgrab{cursor:grab}
.amrtile.amrgrab:hover{border-color:var(--cl-orange);box-shadow:0 1px 4px rgba(0,0,0,.08)}
.amrtile .amrgrip{width:12px;flex:0 0 12px;color:var(--grey-300);font-size:13px;line-height:1;text-align:center}
.amrtile.amrgrab:hover .amrgrip{color:var(--cl-orange)}
.amrtile .amrtb{flex:1;min-width:0}
.amrtile .amrlh{margin-bottom:2px}
.amrtile .amrdots{margin-top:2px}
.amrtile .amradd{flex:0 0 auto;width:22px;height:22px;border-radius:50%;border:1px solid var(--grey-300);background:var(--card);cursor:pointer;color:var(--text-heading);font-size:13px;line-height:1;padding:0}
.amrtile .amradd:hover{background:var(--am-ink-bg);color:#fff;border-color:var(--am-ink-bg)}
.amrtile.k-continuous{border-style:dashed;opacity:.7}
.amrtile.k-continuous .amrgrip{visibility:hidden}
.amrtile.k-new,.amrtile.k-meet{border-style:dashed}
.amrtile.k-meet{border-color:rgba(137,0,181,.45)}
.amrtile.k-meet .amrgrip{color:var(--cl-purple,#8900b5)}
.amrtile.k-menu .ammline{margin-top:2px}
.amrpalette .amrgrp{margin-top:8px}
.amrpalette .amrmenubox{margin-top:10px}
.amrpalette .amrmenuscroll .amrgrp{display:flex}
/* the card */
.amrcard{display:flex;flex-direction:column;align-items:stretch;gap:3px;padding:5px 8px 5px 6px;border-radius:10px;margin:2px 0 3px;cursor:grab;font-size:9px}
.amrcard1{display:flex;align-items:center;gap:6px;min-width:0}
.amrcard1 > .amrgrip{width:12px;flex:0 0 12px;opacity:.6;font-size:12px;text-align:center}
.amrcard1 > .amrh,.amrcard1 > .amranchor,.amrcard1 > .amrx,.amrcard1 > .amrpr,.amrcard1 > .amrover2,.amrcard1 > .amrorig{flex:0 0 auto}
.amrcard2 > *{flex:0 0 auto}
.amrcard1 span[data-redit]{flex:1;min-width:0;font-family:var(--font-brand);font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amrcard2{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-left:18px;opacity:.9}
.amrcard2 .amrtype{min-width:0;max-width:150px}
.amranchor{border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.12);color:inherit;border-radius:20px;padding:2px 7px;font-family:var(--font-mono);font-size:8.5px;cursor:pointer;white-space:nowrap}
.amranchor:hover{background:rgba(255,255,255,.28)}
.amrtok.o-recurring .amranchor,.amrtok.o-extra .amranchor,.amrtok.o-pool .amranchor,.amrtok.o-adhoc .amranchor{border-color:var(--grey-200);background:var(--grey-50);color:var(--text-body)}
.amrcard.amrdragging{opacity:.4}
.amrstandband{border:1px solid var(--am-rule);border-radius:10px;padding:6px 8px;margin:0 0 8px;background:var(--am-sunk,#f7f8fb)}
.amrstandband .k{display:block;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);margin-bottom:3px}
.amrstandband .amrstand{margin:2px 0 4px}
.amrag .amrdropzone{min-height:0;padding:8px 2px;border:0;text-align:left}
.amrday .amrdb .amrcard{margin-right:4px}

/* ================= 1012: THE CALL-OFF ======================================
 * The month is a list of what has been called off, a row each: name,
 * progress, who, when. Under it, the month at a glance. */
.amrcoh{display:flex;align-items:center;gap:10px;margin:0 0 6px}
.amrit{display:flex;flex-direction:column;align-items:stretch;gap:0;padding:0;border-radius:12px;margin:0 0 6px;cursor:default;font-size:11px;background:var(--card);color:var(--text-body);border:1px solid var(--am-rule)}
.amrit.o-draw,.amrit.o-recurring,.amrit.o-extra,.amrit.o-pool,.amrit.o-adhoc,.amrit.o-continuous{background:var(--card);color:var(--text-body)}
.amrit.o-extra{border-style:dashed;border-color:var(--cl-purple)}
.amrit.stand{border-style:dashed}
.amrit:hover{border-color:var(--am-rule-firm)}
.amrit.open{border-color:var(--cl-orange)}
.amritrow{display:grid;grid-template-columns:14px minmax(0,1.6fr) minmax(130px,1fr) minmax(120px,.9fr) minmax(110px,.9fr) 18px;gap:10px;align-items:center;padding:8px 10px;cursor:pointer}
.amritrow .amrgrip{font-size:13px;color:var(--grey-300);cursor:grab;text-align:center}
.amrit:hover .amritrow .amrgrip{color:var(--cl-orange)}
.amritnm{min-width:0}
.amritnm b{display:block;font-family:var(--font-brand);font-size:12.5px;color:var(--text-heading);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amritnm small{display:block;font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amritnm .amrorig{font-style:normal}
.amritnm [data-redit]{cursor:pointer}
.amritnm [data-redit]:hover{text-decoration:underline}
.amritprog{display:flex;flex-direction:column;gap:3px;min-width:0}
.amrpbar{display:flex;height:4px;border-radius:2px;background:var(--grey-100);overflow:hidden}
.amrpbar i{display:block;height:100%}
.amrpbar i.d{background:#2e9e5b}.amrpbar i.g{background:var(--cl-blue,#4c6ef5)}.amrpbar i.w{background:#f0b429}
.amritprog small{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amritwhen{min-width:0;font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.amritwhen b{display:block;font-weight:500;color:var(--text-heading);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amritwhen.booked b{color:var(--cl-blue,#4c6ef5)}
.amritwhen.due b{color:var(--cl-orange)}
.amritwhen.any b{color:var(--grey-400);font-style:italic;font-weight:400}
.amritwhen small{display:block;font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amritwho{display:flex;align-items:center;gap:6px;min-width:0}
.amritwho small{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amravs{display:inline-flex}
.amravs .amrav{margin-left:-6px;border:2px solid var(--card)}
.amravs .amrav:first-child{margin-left:0}
.amritcar{color:var(--text-muted);font-size:16px;line-height:1;text-align:center;transition:transform .15s}
.amrit.open .amritcar{transform:rotate(90deg)}
.amrittasks{border-top:1px solid var(--am-rule);padding:6px 10px 8px 30px}
.amrittasks .amrt{cursor:default}
.amrittools{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px;padding-top:8px;border-top:1px dashed var(--am-rule)}
.amrittools .sp{flex:1}
.amrittools .amrh{background:var(--grey-100);color:var(--text-body)}
.amrittools .amrmoveto,.amrittools .amrtype{background:var(--card);border:1px solid var(--grey-200);color:var(--text-body)}
.amrittools .amrsplit,.amrittools .amrbuy{border-color:var(--grey-200);color:var(--text-body)}
.amrpin{display:inline-flex;align-items:center;gap:5px}
.amrpin .k{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}
.amrpin .amdate{width:128px;font-size:11px;padding:2px 5px}
.amrbk{font-style:normal;color:var(--cl-blue,#4c6ef5)}
.amrnbk{font-style:normal;color:var(--grey-400)}
.amrag .amrdropzone{min-height:0;padding:9px;border:1px dashed var(--am-rule-firm);border-radius:10px;text-align:center;margin:4px 0 0}
.amrag .amrdropzone.amrdrop{background:var(--orange-50);border-color:var(--cl-orange)}
/* the month at a glance */
.amrcal{margin-top:14px}
.amrcalh{display:flex;align-items:center;gap:10px;margin:0 0 6px}
.amrcalh .sp{flex:1}
.amrcalg{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}
.amrcdh{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);text-align:center;padding:2px 0}
.amrcd{min-height:64px;background:var(--am-sunk,#f7f8fb);border:1px solid var(--am-rule);border-radius:8px;padding:4px 6px;min-width:0}
.amrcd .n{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.amrcd.today{border-color:var(--cl-orange)}
.amrcd.today .n{color:var(--cl-orange);font-weight:700}
.amrcd.out{opacity:.35}
.amrcd.amrdrop{background:var(--orange-50);outline:2px dashed var(--cl-orange);outline-offset:-2px}
.amrcev{font-size:10px;line-height:1.25;margin-top:3px;padding:1px 5px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.amrcev.mt{background:rgba(137,0,181,.14);color:var(--cl-purple,#8900b5);cursor:pointer}
.amrcev.sched{background:rgba(76,110,245,.14);color:var(--cl-blue,#4c6ef5)}
.amrcev.due{background:rgba(255,120,0,.16);color:var(--orange-700,#b45309)}
:root[data-theme="dark"] .amrcev.mt{color:#d9b8ff}
:root[data-theme="dark"] .amrcev.sched{color:#bcd3ff}
:root[data-theme="dark"] .amrcev.due{color:#ffd1ad}
.amrpg .amrpgh b{font-weight:700;color:var(--text-heading);font-family:var(--font-brand);font-size:11.5px}
.amrpg.justin{background:rgba(255,120,0,.12);border-radius:8px}
.amrpg .amrnadd .aminp{margin-top:4px}

/* folding the three regions */
.amrpanel.agenda.palfold{grid-template-columns:34px minmax(0,1fr)}
.amrrail.folded{padding:8px 4px;align-items:stretch}
.amrfoldb{writing-mode:vertical-rl;transform:rotate(180deg);background:var(--am-sunk,#f7f8fb);border:1px solid var(--am-rule);border-radius:8px;color:var(--text-muted);cursor:pointer;font:inherit;padding:10px 4px;display:flex;align-items:center;gap:6px;height:100%;min-height:120px}
.amrfoldb b{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:500}
.amrfoldb small{font-family:var(--font-mono);font-size:9px}
.amrfoldb span{font-size:14px;line-height:1}
.amrfoldb:hover{color:var(--cl-orange);border-color:var(--cl-orange)}
.amrfoldx{border:0;background:transparent;color:var(--text-muted);cursor:pointer;font-size:15px;line-height:1;padding:0 4px;border-radius:4px;margin-left:6px}
.amrfoldx:hover{color:var(--cl-orange);background:var(--am-sunk,#f3f4f6)}
.amrpad h4{display:flex;align-items:center}
.amrpad h4 .amrfoldx{margin-left:auto}
.amrwork.padfold{grid-template-columns:minmax(0,1fr) 34px}
.amrpad.folded{padding:6px 4px;display:flex;align-items:stretch;min-height:140px}
.amrfoldt{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:0;cursor:pointer;color:inherit;font:inherit}
.amrfoldt .amrmw{font-size:10px;color:var(--text-muted)}
.amrcal.folded{margin-top:8px}
@media(max-width:1560px){.amrwork.padfold{grid-template-columns:minmax(0,1fr) 34px}}
.amrit .amrav{flex:0 0 22px;overflow:hidden;white-space:nowrap}
.amrit .amritwho > small,.amrit .amritwhen > small{flex:0 1 auto}
.amrit .amravs{flex:0 0 auto}

/* ================= 1013 ==================================================
 * Notes on top, the list, the calendar - each a band across the full width,
 * each folding. A status word on the row; booked and due-by beside it. */
.amrwork{display:block}
.amrpad{position:static;margin:0 0 12px;padding:8px 12px 10px}
.amrpad.folded{padding:6px 12px;display:block;min-height:0}
.amrpad .amrcoh{margin:0 0 4px}
.amrpad .amrcoh .sp{flex:1}
.amrpadcols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:4px 22px;align-items:start}
.amrpadtx{resize:vertical;max-width:100%;box-sizing:border-box;min-height:44px}
.amrco{margin:0 0 12px}
.amrco .amrcoh{margin:0 0 6px}
.amrco.folded{margin:0 0 8px}
.amrcoh .amrhint{flex:1 1 auto}
.amrag .amrdropzone{border:0;padding:6px 2px;text-align:left;margin:2px 0 0}
.amrag .amrdropzone.amrdrop{background:transparent}
.amritrow{grid-template-columns:14px minmax(0,1.8fr) minmax(110px,.8fr) minmax(120px,.9fr) minmax(110px,.9fr) 18px}
.amrstw{display:block;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);margin-bottom:3px}
.amrstw.s-done{color:#2e9e5b}.amrstw.s-in-progress{color:var(--cl-blue,#4c6ef5)}.amrstw.s-waiting{color:#b45309}.amrstw.s-to-do{color:var(--text-muted)}
.amrskip{font-family:var(--font-mono);font-size:9.5px;color:var(--text-muted);text-decoration:none;opacity:.7}
.amrskip:hover{opacity:1;text-decoration:underline;color:var(--cl-orange)}
.amrbk{display:inline-block;font-style:normal;font-family:var(--font-mono);font-size:10px;color:var(--cl-blue,#4c6ef5);margin-left:8px}
.amrtname small{font-size:10px}
.amrcev.due{cursor:grab}
.amrcev.due.amrdragging{opacity:.4}
.amrcal{margin-top:4px}
:root[data-theme="dark"] .amrstw.s-waiting{color:#f0b429}

/* ===== 1015: MEETINGS FROM THE CALENDAR ===================================
   A word on whether the diaries were read, and the "is this the client's?"
   strip at the top of the notes, answered once per series. */
.amrcalst{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;margin-right:8px;cursor:help}
.amrcalst.off{color:var(--orange-700,#c25b00)}
.amrcalqn{color:var(--cl-orange);font-weight:700}
.amrcalq{margin:0 12px 10px;border:1px solid var(--am-sel-edge,#ffd1ad);background:var(--am-sel-bg,#fff3e8);border-radius:10px;padding:8px 10px}
.amrcalqh{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.amrcalqh b{font-family:var(--font-brand);font-size:12px;color:var(--am-ink)}
.amrcalqh small{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.amrcalqr{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:5px 0;border-top:1px dashed var(--am-sel-edge,#ffd1ad)}
.amrcalqw{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted);white-space:nowrap;min-width:84px}
.amrcalqr b{font-family:var(--font-brand);font-size:12.5px;color:var(--text-heading)}
.amrcalqr small{font-family:var(--font-mono);font-size:10px;color:var(--text-muted)}
.amrcalqr .sp{flex:1}
.amrcalqr .ambtn{padding:3px 9px;font-size:11px}
.amrpg.gcal .amrmtcal{color:#4c6ef5}

/* ===== 1017: THE MEETING'S TIME ============================================
   a line per person who was there, the whole length unless shortened */
.amrmtpeople{display:flex;flex-direction:column;gap:3px;max-height:220px;overflow:auto;border:1px solid var(--grey-200);border-radius:8px;padding:6px 8px}
.amrmtp{display:flex;align-items:center;gap:8px;font-family:var(--font-body);font-size:12.5px;text-transform:none;letter-spacing:0;color:var(--text-body);cursor:pointer}
.amrmtp input[type=checkbox]{margin:0}
.amrmtp span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.amrmtp .aminp.n{width:64px;padding:3px 6px;font-size:12px;text-align:right}
.amrmtp small{font-family:var(--font-mono);font-size:10px;color:var(--text-muted);width:24px}
.amrmtform .row3{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:10px}
.amrmtcost{font-family:var(--font-mono);font-size:10.5px;color:var(--am-ink);background:var(--am-sel-bg,#fff3e8);border:1px solid var(--am-sel-edge,#ffd1ad);border-radius:999px;padding:1px 8px;white-space:nowrap;cursor:help}
.amrmtlog{font-size:10.5px;margin-left:4px}

/* ===== 1022: Drive folders - brands under their company, create-in-place ===== */
.amdrvt tr.amdrvbrand td:first-child{padding-left:26px}
.amdrvarrow{color:var(--text-muted);margin-right:2px}
.amdrvpart{margin-top:3px;font-size:11px}
.amdrvpartsel{margin-top:3px;font-size:11px;padding:2px 6px;max-width:220px}
.amdrv.company{font-family:var(--font-mono);font-size:10.5px;color:var(--text-muted)}
.amdrv.company a{color:var(--text-muted)}
.amdrvt td .ambtn.small{margin-top:3px;white-space:nowrap}

/* ===== 1026: the Every client table fits the window ========================
   Six columns of chips, selects and buttons were wider than the screen. Fixed
   column widths, wrapping cells, compact controls stacked in the cell. */
.amdrvt{table-layout:fixed;width:100%}
.amdrvt th:first-child,.amdrvt td:first-child{width:24%}
.amdrvt td,.amdrvt th{white-space:normal;vertical-align:top}
.amdrvt td{padding:6px 6px;font-size:12px}
.amdrvt th{font-size:9.5px}
.amdrvt .amdrv{white-space:normal;line-height:1.4;font-size:9px;letter-spacing:.03em;padding:1px 6px}
.amdrvt .amsel.sm{display:block;width:100%;max-width:100%;font-size:11px;padding:3px 4px;margin-top:3px}
.amdrvt td .ambtn.small,.amdrvt td .ambtn.sm{display:inline-block;padding:2px 7px;font-size:10.5px;margin-top:3px;white-space:normal;line-height:1.3}
.amdrvt .amdrvnote{font-size:10.5px;line-height:1.3;max-height:3.9em;overflow:hidden;text-overflow:ellipsis}
.amdrvt .amdrvpartsel{max-width:100%;width:100%}
.amdrvt .amdrvpart{font-size:10.5px}
.amdrvt td b{font-size:12.5px}
.amdrvctl{margin-top:3px}
.amdrvstsel{font-size:11px;padding:2px 4px;max-width:110px}
/* 1050: the card says what the Drive door is doing for this client */
.amcdrvstate{display:flex;align-items:center;gap:9px;margin-top:8px;padding:9px 12px;border-radius:10px;border:1px solid var(--grey-200,#e5e7eb);background:var(--grey-50,#f6f7f9);font-size:12.5px;color:var(--text-body,#333);line-height:1.4}
.amcdrvstate.busy{border-color:var(--cl-orange,#e8702a);background:var(--orange-50,#fff3ea)}
.amcdrvstate.good{border-color:#2f9e6b;background:#eefaf3;color:#1d6b47}
.amcdrvstate.bad{border-color:var(--cl-crimson,#b3263c);background:var(--crimson-50,#fbeef1);color:var(--cl-crimson,#b3263c)}
.amspin{display:inline-block;width:14px;height:14px;border:2px solid var(--cl-orange,#e8702a);border-right-color:transparent;border-radius:50%;animation:amspin .8s linear infinite;flex:none}
@keyframes amspin{to{transform:rotate(360deg)}}
:root[data-theme="dark"] .amcdrvstate.good{background:#143324;color:#8fe0b4;border-color:#2f9e6b}
/* 1052: Projects as two tabs - the table, and the one project */
.ampxtabs{display:flex;gap:3px;margin-left:16px;padding:3px;border:1px solid var(--am-rule-firm,var(--grey-200));border-radius:11px;background:var(--am-sunk,var(--grey-50));align-self:center}
.ampxtab{background:none;border:0;border-radius:8px;padding:6px 13px;font:600 12.5px var(--font-brand);color:var(--text-muted);cursor:pointer;max-width:420px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ampxtab b{font-family:var(--font-mono);font-weight:600;font-size:11px;margin-left:4px;color:var(--text-muted)}
.ampxtab .muted{font-weight:500}
.ampxtab.on{background:var(--card);color:var(--text-heading);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.ampxtab:hover:not(.on){color:var(--text-heading)}
.amptbl{width:100%;table-layout:auto}
.amptbl th{position:sticky;top:0;background:var(--card);z-index:1;cursor:pointer;user-select:none;white-space:nowrap}
.amptbl th.on{color:var(--text-heading)}
.amptbl th.num,.amptbl td.num{text-align:right}
.amptbl td.mono{font-family:var(--font-mono);font-size:11.5px;color:var(--text-muted);white-space:nowrap}
.amptbl td.nm b{font-size:13px;color:var(--am-ink)}
.amptbl td.cl{font-weight:600;color:var(--text-body);white-space:nowrap}
.amptbl tr.amprow{cursor:pointer}
.amptbl tr.amprow:hover td{background:var(--grey-50)}
.amptbl tr.amprow.on td{background:var(--am-sel-bg,#fff3e8)}
.amptbl tr.amprow.on td:first-child,.amptbl tr.amprow.on td.nm{box-shadow:inset 3px 0 0 var(--cl-orange)}
.amptbl tr.amprow.hi td{outline:2px solid var(--cl-orange);outline-offset:-2px}
.amptbl tr.ampgrp td{background:var(--am-sunk,var(--grey-50));font:700 11px var(--font-brand);letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);padding:7px 10px}
.amptbl tr.ampgrp small{font-family:var(--font-mono);font-weight:500;letter-spacing:0;text-transform:none;margin-left:6px}
.amptbl tr.ampgrp em{font-style:normal;color:var(--cl-orange);margin-left:4px}
.amptbl tr.ampsec td{background:none;border-bottom:0;padding:12px 10px 2px;font:600 10px var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}
.amptbl td .late{color:var(--cl-crimson,#c8102e);font-weight:600}
.amptst{display:inline-block;font:700 9.5px var(--font-mono);letter-spacing:.07em;text-transform:uppercase;padding:2px 7px;border-radius:999px;border:1px solid var(--grey-200);color:var(--text-muted);white-space:nowrap}
.amptst.s-fresh,.amptst.s-newwork{border-color:#f0b48a;color:#b4531a;background:#fff3ea}
.amptst.s-newwork{border-color:var(--cl-crimson,#c8102e);color:var(--cl-crimson,#c8102e);background:var(--crimson-50,#fbeef1)}
.amptst.s-running{border-color:#9ed9bd;color:#1d6b47;background:#eefaf3}
.amptst.s-scheduled,.amptst.s-ready{border-color:#9fbce8;color:#2a4f86;background:#edf3fc}
.amptst.s-closed{opacity:.6}
.amptbl .ampdot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--cl-crimson,#c8102e);margin-left:6px;vertical-align:middle}
.ampswb{cursor:pointer}
:root[data-theme="dark"] .amptst.s-fresh{background:#2a1a10;border-color:#7a3b1c;color:#ffab5e}
:root[data-theme="dark"] .amptst.s-running{background:#0f2a21;border-color:#1f5a44;color:#2fbf8a}
:root[data-theme="dark"] .amptst.s-scheduled,:root[data-theme="dark"] .amptst.s-ready{background:#13213a;border-color:#2d4a7a;color:#8fb8ff}
.ampfind.page .ampfbody{columns:auto;column-gap:0;padding:0 0 10px}
.ampfind.page .amptbl{min-width:900px}

/* 1055: the task brief pen on a task row - lit when a brief is written */
.ambriefb.on{color:var(--cl-orange);border-color:var(--cl-orange)}

/* ================= 1055: MOVE FROM MONDAY - the sorting room ================= */
.amsp{flex:1}
.amvtabs{margin-left:16px}
.amvprog{display:flex;align-items:center;gap:12px;padding:8px 14px;margin:-6px 0 12px;border:1px solid var(--am-rule-firm,var(--grey-200));border-radius:10px;background:var(--card);font-size:12.5px;color:var(--text-muted);flex-wrap:wrap}
.amvprog b{color:var(--text-heading)}
.amvbar{flex:1;min-width:160px;height:10px;border-radius:999px;background:var(--am-sunk,var(--grey-100));border:1px solid var(--am-rule-firm,var(--grey-200));overflow:hidden;display:flex}
.amvbar i{display:block;height:100%}.amvbar .r{background:#2fbf8a}.amvbar .k{background:var(--grey-300)}
.amvwho{display:flex;gap:6px;flex-wrap:wrap}.amvwho b{font:600 11px var(--font-brand);background:var(--am-sunk,var(--grey-50));border:1px solid var(--am-rule-firm,var(--grey-200));border-radius:999px;padding:3px 9px;color:var(--text-muted)}.amvwho b i{font-style:normal;color:var(--cl-orange);margin-left:4px}
.amvlay{display:grid;grid-template-columns:360px 1fr;gap:0;border:1px solid var(--am-rule-firm,var(--grey-200));border-radius:var(--radius-lg);background:var(--card);box-shadow:var(--shadow);overflow:hidden;min-height:560px}
.amvlist{border-right:1px solid var(--am-rule-firm,var(--grey-200));display:flex;flex-direction:column;min-height:0}
.amvsearch{padding:10px 12px;border-bottom:1px solid var(--am-rule-firm,var(--grey-200))}.amvsearch .aminp{width:100%;box-sizing:border-box}
.amvseg{display:flex;flex-wrap:wrap;gap:4px;padding:8px 12px;border-bottom:1px solid var(--am-rule-firm,var(--grey-200))}
.amvseg b{font:600 11px var(--font-brand);color:var(--text-muted);background:var(--am-sunk,var(--grey-50));border:1px solid var(--am-rule-firm,var(--grey-200));border-radius:999px;padding:3px 9px;cursor:pointer}
.amvseg b i{font-style:normal;color:var(--text-heading);margin-left:4px}.amvseg b.on{border-color:var(--cl-orange);color:var(--cl-orange)}.amvseg b.on i{color:var(--cl-orange)}
.amvrows{overflow:auto;flex:1;max-height:calc(100vh - 290px)}
.amvgrp{display:flex;align-items:center;gap:8px;padding:9px 12px 4px;font:700 11.5px var(--font-brand);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}
.amvgrp small{font:600 10.5px var(--font-mono);color:var(--grey-400);text-transform:none;letter-spacing:0;margin-left:auto}
.amvrow{display:grid;grid-template-columns:1fr auto;gap:2px 10px;padding:8px 12px 8px 16px;border-left:3px solid transparent;cursor:pointer}
.amvrow:hover{background:var(--am-sunk,var(--grey-50))}.amvrow.on{background:var(--am-sunk,var(--grey-50));border-left-color:var(--cl-orange)}
.amvrow .n{font-weight:700;font-size:13px;color:var(--am-ink)}.amvrow .m{grid-column:1/-1;font:11.5px var(--font-mono);color:var(--text-muted)}
.amvpill{font:700 9.5px var(--font-mono);letter-spacing:.08em;text-transform:uppercase;padding:2px 7px;border-radius:999px;border:1px solid var(--grey-300);color:var(--text-muted);align-self:center;white-space:nowrap}
.amvpill.q{border-color:#d9a06a;color:#b4531a;background:#fff4ea}.amvpill.r{border-color:#8ad4b5;color:#1f7a53;background:#eefaf4}.amvpill.s{border-color:#9fb8e6;color:#2f5aa8;background:#eef3fc}.amvpill.k{border-color:var(--grey-300);color:var(--grey-500);background:var(--grey-50)}.amvpill.i{border-color:#8ad4b5;color:#1f7a53;background:#eefaf4}
.amvdetail{padding:14px 18px;min-width:0;overflow:auto;max-height:calc(100vh - 200px)}
.amvcrumb{font:12px var(--font-mono);color:var(--text-muted);display:flex;gap:8px;align-items:center}.amvcrumb b{color:var(--text-heading)}
.amvnav{display:flex;gap:2px}.amvnav .amx{border:1px solid var(--am-rule-firm,var(--grey-200));font-size:14px;padding:2px 8px}
.amvtitle{display:flex;align-items:baseline;gap:10px;margin:8px 0 10px}.amvtitle h3{margin:0;font-family:var(--font-brand);font-size:20px;font-weight:800;color:var(--text-heading)}
.amvtwo{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media (max-width:1240px){.amvtwo{grid-template-columns:1fr}}
.amvblock{background:var(--am-sunk,var(--grey-50));border:1px solid var(--am-rule-firm,var(--grey-200));border-radius:10px;padding:10px 12px;margin-bottom:10px;color:var(--text-muted);font-size:12.5px}
.amvblock h4{margin:0 0 6px;font:600 10px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.amvblock b{color:var(--text-heading)}
.amvkv{display:grid;grid-template-columns:84px 1fr;gap:3px 10px}.amvkv>span:nth-child(odd){color:var(--grey-400)}
.amvsub{width:100%;border-collapse:collapse;font-size:12px;margin-top:6px}.amvsub td{padding:4px 6px;border-top:1px solid var(--am-rule-firm,var(--grey-200));vertical-align:top}.amvsub td.c{font-family:var(--font-mono);color:var(--text-muted);font-size:11px;white-space:nowrap}
.amvbrief{white-space:pre-wrap;font-size:12.5px;color:var(--am-ink);line-height:1.5;max-height:220px;overflow:auto}
.amvf{display:grid;grid-template-columns:108px 1fr;gap:8px 10px;align-items:center;margin-bottom:8px}
.amvf label{font:600 11.5px var(--font-brand);color:var(--text-muted)}.amvf .amsel,.amvf .aminp{width:100%;box-sizing:border-box}
.amvguess{display:block;font:600 10.5px var(--font-mono);color:#1f7a53;margin-top:3px}.amvguess.bad{color:var(--cl-crimson)}
.amvchips{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.amvchips b{font:600 11px var(--font-brand);background:var(--am-sunk,var(--grey-50));border:1px solid var(--am-rule-firm,var(--grey-200));border-radius:999px;padding:3px 9px;color:var(--text-muted);cursor:pointer}.amvchips b.on{border-color:var(--cl-orange);color:var(--cl-orange)}
.amvopt{display:flex;flex-direction:column;gap:5px}
.amvopt label{display:flex;gap:8px;align-items:flex-start;background:var(--am-sunk,var(--grey-50));border:1px solid var(--am-rule-firm,var(--grey-200));border-radius:8px;padding:7px 9px;font-size:12.5px;cursor:pointer;color:var(--am-ink)}
.amvopt label.on{border-color:var(--cl-orange)}.amvopt small{color:var(--text-muted);display:block;font-size:11px}.amvopt input{margin-top:3px}
.amvacts{display:flex;gap:8px;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid var(--am-rule-firm,var(--grey-200));flex-wrap:wrap}
.ambtn.big{padding:10px 18px;font-size:14px}
.amvcards{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:12px}
.amvcard{background:var(--card);border:1px solid var(--am-rule-firm,var(--grey-200));border-radius:10px;padding:10px 12px}
.amvcard .k{font:600 10px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);margin-bottom:4px}
.amvcard .v{font-size:22px;font-weight:800;font-family:var(--font-brand);color:var(--text-heading)}.amvcard .v.good{color:#1f7a53}.amvcard .v.warn{color:var(--cl-orange)}.amvcard .v.info{color:#2f5aa8}.amvcard .s{font-size:11.5px;color:var(--text-muted)}
.amvstep{display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center;background:var(--card);border:1px solid var(--am-rule-firm,var(--grey-200));border-radius:10px;padding:12px 14px;margin-bottom:10px}
.amvstep .n{width:30px;height:30px;border-radius:50%;background:var(--am-sunk,var(--grey-50));border:1px solid var(--am-rule-firm,var(--grey-200));display:flex;align-items:center;justify-content:center;font:800 13px var(--font-mono)}
.amvstep.done .n{background:#eefaf4;border-color:#8ad4b5;color:#1f7a53}
.amvstep h5{margin:0 0 2px;font-family:var(--font-brand);font-size:14px;color:var(--text-heading)}.amvstep p{margin:0;color:var(--text-muted);font-size:12.5px}
.amvh4{margin:16px 0 6px;font:600 10px var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}
/* 1056: sorted rows stay in the list as a record */
.amvrow .n,.amvrow .m{text-transform:none;letter-spacing:0}
.amvrow.skipped .n{text-decoration:line-through;color:var(--text-muted)}.amvrow.skipped .m{opacity:.6}
.amvrow.ready .n::before{content:'\2713 ';color:#1f7a53}
.amvrow.inhub .n{color:var(--text-muted)}.amvrow.inhub .n::before{content:'\2713 ';color:#1f7a53}
