:root{
  /* Muted neutral palette — soft blush canvas, dusty slate-blue chrome,
     pale grey + olive-taupe + dusty pink accents. Quiet and editorial. */
  --blush-bg:#F5E9E7;   --blush-bg-l:#FBF4F3;  /* page background */
  --blush-rose:#ECC5C6; --blush-rose-l:#F5DEDE; /* primary accent — pink wash */
  --slate:#8A9DB1;      --slate-l:#D2DAE3;    /* mid slate-blue */
  --slate-d:#3D4854;    --slate-dd:#2A323A;   /* deep slate for chrome + type */
  --olive-taupe:#837D68;--olive-taupe-l:#D8D5C9; /* olive-taupe accent */
  --olive-taupe-d:#4D4936;                     /* deep olive for text alt */
  --pearl:#C1C0C2;      --pearl-l:#EAEAEB;    /* neutral grey */
  --cream:#FFFFFF;      --cream-l:#FFFFFF;    /* white card surface */

  /* Aliases mapped to existing palette tokens used across the code base */
  --butter:var(--olive-taupe);     --butter-l:var(--olive-taupe-l);
  --moss:var(--olive-taupe);       --moss-l:var(--olive-taupe-l);
  --palm:var(--olive-taupe);       --palm-l:var(--olive-taupe-l);
  --guava:var(--blush-rose);       --guava-l:var(--blush-rose-l);
  --sunset:var(--blush-rose);      --sunset-l:var(--blush-rose-l);
  --sangria:var(--blush-rose);     --sangria-l:var(--blush-rose-l);
  --seabreeze:var(--pearl-l);
  --lagoon:var(--slate);           --lagoon-l:var(--slate-l);
  --odyssey:var(--slate-d);        --odyssey-l:var(--slate-l);
  /* Provide the historic teal/mint/coral names too so any hard-coded
     references in JS/inline styles still resolve cleanly */
  --teal:var(--slate-d);           --teal-d:var(--slate-dd);
  --teal-l:var(--slate-l);
  --coral:var(--blush-rose);       --coral-l:var(--blush-rose-l);
  --mint-l:var(--blush-bg-l);
  --peach-l:var(--blush-rose-l);
  --butter-soft-l:var(--olive-taupe-l);
  --olive:var(--olive-taupe);      --olive-l:var(--olive-taupe-l);

  /* Semantic tokens — chrome wears deep slate, accents wear blush-rose.
     Borders use mid slate so cards feel editorial and quiet. */
  --dark:var(--slate-dd);        /* Deep slate — sidebar, borders, type chrome */
  --mid:var(--slate-d);          /* Mid slate for hover surfaces */
  --warm-deep:var(--blush-rose); /* Blush rose for warm callouts */
  --accent:var(--blush-rose);    /* primary — headlines, active states */
  --accent-l:var(--blush-rose-l);
  --accent-dk:#D9A7A8;
  --accent-2:var(--slate);       /* secondary — slate-blue counterpoint */
  --accent-2-l:var(--slate-l);
  --accent-3:var(--olive-taupe); /* tertiary — olive accent */
  --accent-3-l:var(--olive-taupe-l);

  --amber:#9A6428;      --amber-l:var(--butter-l);
  --red:var(--sangria); --red-l:var(--sangria-l);
  --green:var(--palm);  --green-l:var(--palm-l);

  --border:var(--slate-l);        /* soft slate borders */
  --border-strong:var(--slate);
  --bg:#FFFFFF;                   /* pure white canvas */
  --bg-2:#F7F7F7;                 /* very light grey for secondary surfaces */
  --surface:#FFFFFF;              /* white card body for strongest contrast */
  --accent-block:var(--blush-rose-l); /* soft pink for decorative blocks */
  --text:var(--slate-dd);         /* deep slate type — readable on white */
  --muted:#6B7480;                /* desaturated slate-grey for secondary copy */
  --font:'DM Sans','Inter',system-ui,sans-serif;
  --font-display:'DM Sans','Inter',system-ui,sans-serif;
}

/* Backdrop kept clean — bold colour blocking is the look now */
.topbar,.sidebar,.main{position:relative;z-index:2;}

/* Zigzag / serrated dividers between major colour blocks
   (apply with class="zigzag-top" or "zigzag-bottom" to any section) */
.zigzag-top{
  -webkit-mask:linear-gradient(135deg,#0000 12px,#000 0) top left/16px 16px repeat-x,
              linear-gradient(225deg,#0000 12px,#000 0) top left/16px 16px repeat-x;
  -webkit-mask-composite:source-in;mask-composite:intersect;
  padding-top:16px;
}
.zigzag-bottom{
  -webkit-mask:linear-gradient(45deg,#0000 12px,#000 0) bottom left/16px 16px repeat-x,
              linear-gradient(-45deg,#0000 12px,#000 0) bottom left/16px 16px repeat-x;
  padding-bottom:16px;
}

/* Marquee / ticker strip — horizontally scrolling text, used as a section divider */
.marquee{background:var(--dark);color:var(--accent);overflow:hidden;white-space:nowrap;border-top:3px solid #1a1a1a;border-bottom:3px solid #1a1a1a;padding:8px 0;font-family:var(--font-display);font-weight:900;letter-spacing:.06em;text-transform:uppercase;font-size:13px;}
.marquee-track{display:inline-block;animation:marquee 32s linear infinite;}
.marquee-track span{padding:0 22px;display:inline-block;}
.marquee-track span::before{content:'◆';margin-right:22px;color:var(--accent);}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* Block-style decorative diamond badge */
.diamond-badge{display:inline-flex;align-items:center;justify-content:center;background:var(--sangria);color:#fbf0dd;font-family:var(--font-display);font-weight:900;letter-spacing:.06em;text-transform:uppercase;padding:14px 32px;border:3px solid #1a1a1a;clip-path:polygon(8% 0,92% 0,100% 50%,92% 100%,8% 100%,0 50%);font-size:14px;}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;font-family:var(--font);background:var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased;}
.shell{display:grid;grid-template-columns:220px 1fr;grid-template-rows:52px 1fr;height:100vh;overflow:hidden;}
.topbar{grid-column:1/-1;background:var(--bg);display:flex;align-items:center;padding:8px 18px;gap:12px;z-index:20;border-bottom:2px solid var(--dark);min-height:56px;flex-wrap:nowrap;overflow-x:auto;}
.topbar::-webkit-scrollbar{height:4px;}
.topbar > *{flex-shrink:0;}
.brand-logo{height:26px;width:auto;display:block;}
.logo{color:var(--dark);font-family:var(--font-display);font-size:14px;font-weight:800;letter-spacing:.5px;background:var(--dark);color:#fff;padding:8px 16px;border-radius:24px;text-transform:uppercase;}
.logo span{color:var(--accent);font-weight:800;}
.version{font-size:9px;background:transparent;color:var(--muted);padding:2px 7px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;border:1px solid var(--border-strong);border-radius:10px;}
.proj-btn{display:flex;align-items:center;gap:8px;background:var(--surface);border:2px solid var(--dark);border-radius:24px;padding:7px 18px;cursor:pointer;color:var(--dark);font-size:12px;min-width:140px;max-width:200px;font-family:var(--font);font-weight:600;letter-spacing:.02em;transition:all .15s;}
.proj-btn:hover{background:var(--accent);}
.save-badge{font-size:10px;padding:4px 12px;border-radius:24px;font-weight:600;letter-spacing:.04em;background:var(--green-l)!important;color:var(--green)!important;border:1.5px solid var(--green);}
.pills{margin-left:auto;display:flex;gap:6px;}
.pill{font-size:12px;padding:8px 18px;border-radius:24px;border:2px solid var(--dark);color:var(--dark);background:transparent;cursor:pointer;font-family:var(--font);letter-spacing:.02em;transition:all .15s;font-weight:600;}
.pill:hover{background:var(--dark);color:var(--accent);}
.pill.active{background:var(--accent);color:var(--dark);border-color:var(--dark);}
.sidebar{background:var(--dark);overflow-y:auto;display:flex;flex-direction:column;}
.sb-inner{padding:18px 0;flex:1;}
.sb-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 16px 14px;}
.sb-stat{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.06);border-radius:2px;padding:12px 12px;}
.sb-n{font-family:var(--font-display);font-size:28px;font-weight:500;color:white;line-height:1;letter-spacing:-.5px;}
.sb-l{font-size:9px;color:rgba(255,255,255,.4);margin-top:6px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;}
.sb-lbl{font-size:9px;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:rgba(255,255,255,.3);padding:18px 16px 8px;border-top:1px solid rgba(255,255,255,.05);margin-top:8px;}
.sb-lbl:first-child,.sb-stats + .sb-lbl{border-top:none;margin-top:0;}
.sb-item{display:flex;align-items:center;gap:10px;padding:9px 16px;cursor:pointer;color:rgba(255,255,255,.72);font-size:12px;transition:all .15s ease;letter-spacing:.02em;border-left:3px solid transparent;position:relative;font-weight:500;}
.sb-item:hover{background:rgba(255,216,59,.08);color:white;border-left-color:var(--accent);padding-left:18px;}
.sb-item:hover .sb-cnt{background:var(--accent);color:var(--dark);}
.sb-item:hover .sb-dot{transform:scale(1.4);}
.sb-item:active{transform:scale(0.98);}
.sb-item.active{background:var(--accent);color:var(--dark);border-left-color:var(--dark);font-weight:700;}
.sb-item.active .sb-cnt{background:var(--dark);color:var(--accent);}
.sb-item.active .sb-dot{display:none;}
.sb-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.sb-cnt{margin-left:auto;font-size:11px;background:rgba(255,255,255,.08);padding:2px 8px;border-radius:2px;font-weight:500;font-variant-numeric:tabular-nums;}
.sb-bottom{padding:14px 16px;border-top:1px solid rgba(255,255,255,.08);background:rgba(110,33,27,.35);}
.sb-btn{width:100%;font-size:10px;color:rgba(255,255,255,.55);border:1px solid rgba(255,255,255,.1);border-radius:2px;padding:8px;cursor:pointer;background:none;font-family:var(--font);text-align:center;margin-bottom:5px;letter-spacing:.05em;text-transform:uppercase;font-weight:500;transition:all .15s;}
.sb-btn:hover{background:rgba(255,255,255,.06);color:white;border-color:rgba(255,255,255,.2);}
.main{overflow:hidden;display:flex;flex-direction:column;}
.view{display:none;flex-direction:column;height:100%;overflow:hidden;}
.view.active{display:flex;}
.scroll{flex:1;overflow-y:auto;padding:20px;}
.cfg-bar{background:var(--surface);border-bottom:1px solid var(--border);padding:12px 22px;display:flex;align-items:center;gap:14px;flex-shrink:0;flex-wrap:wrap;}
.card{background:var(--surface);border:1px solid rgba(0,0,0,.04);border-radius:14px;padding:24px;margin-bottom:18px;box-shadow:0 1px 3px rgba(42,50,58,.04),0 4px 14px rgba(42,50,58,.06);}
label.lbl{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--dark);margin-bottom:7px;}
input,select,textarea{width:100%;padding:11px 14px;border:1.5px solid var(--dark);border-radius:12px;font-size:13px;font-family:var(--font);color:var(--text);background:var(--surface);transition:all .12s;font-weight:500;}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--dark);background:var(--accent-l);box-shadow:0 0 0 3px var(--accent);}
input:hover:not(:focus),select:hover:not(:focus),textarea:hover:not(:focus){border-color:var(--dark);}
textarea{resize:vertical;}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;}
.g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-bottom:16px;}
.btn{padding:12px 26px;font-size:13px;font-weight:700;background:var(--dark);color:var(--accent);border:2px solid var(--dark);border-radius:30px;cursor:pointer;font-family:var(--font);display:inline-flex;align-items:center;gap:8px;letter-spacing:.04em;transition:all .15s;}
.btn:hover:not(:disabled){background:var(--accent);color:var(--dark);}
.btn:disabled{opacity:.4;cursor:not-allowed;}
.btn-full{width:100%;justify-content:center;}
.btn-ghost{padding:10px 18px;font-size:12px;background:var(--surface);border:2px solid var(--dark);border-radius:30px;cursor:pointer;font-family:var(--font);color:var(--dark);letter-spacing:.03em;font-weight:600;transition:all .15s;}
.btn-ghost:hover{background:var(--accent);}
.btn-edit{padding:6px 14px;font-size:11px;font-weight:600;background:var(--dark);border:2px solid var(--dark);border-radius:20px;cursor:pointer;color:var(--accent);font-family:var(--font);letter-spacing:.04em;transition:all .12s;}
.btn-edit:hover{background:var(--accent);color:var(--dark);}
.btn-del{padding:6px 12px;font-size:11px;background:var(--surface);border:2px solid var(--dark);border-radius:20px;cursor:pointer;color:var(--dark);font-family:var(--font);font-weight:600;transition:all .12s;}
.btn-del:hover{background:var(--red);color:white;border-color:var(--red);}
.err{background:var(--red-l);border:1px solid #f5c0c0;border-radius:7px;padding:8px 12px;color:var(--red);font-size:12px;margin-bottom:10px;}
.spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:white;border-radius:50%;animation:spin .6s linear infinite;flex-shrink:0;}
@keyframes spin{to{transform:rotate(360deg);}}
.api-banner{border:1.5px solid #f6a623;border-radius:10px;padding:12px 14px;margin-bottom:14px;display:flex;align-items:center;gap:10px;background:#fff8ee;font-size:12px;}
.api-banner.ok{border-color:#4caf50;background:#f0faf0;}
.result-card{background:#f9fff9;border:1.5px solid #b7dfca;border-radius:10px;padding:14px;margin-bottom:14px;animation:fadeIn .2s ease;}
@keyframes fadeIn{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:translateY(0);}}
.pill-row{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px;}
.pill2{font-size:10px;font-weight:600;padding:2px 8px;border-radius:20px;display:inline-block;}
.rc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;}
.rc-f .rfl{font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;margin-bottom:1px;}
.rc-f .rfv{font-size:11px;}
/* Photo */
.photo-thumb{width:56px;height:56px;border-radius:6px;object-fit:cover;border:1px solid var(--border);cursor:pointer;}
.photo-ph{width:56px;height:56px;border-radius:6px;border:1.5px dashed var(--border);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted);font-size:18px;background:var(--bg);}
.photo-ph:hover{border-color:var(--accent);color:var(--accent);}
/* Table */
.toolbar{padding:16px 24px;background:var(--bg);border-bottom:2px solid var(--dark);display:flex;align-items:center;gap:10px;flex-shrink:0;flex-wrap:wrap;}
.toolbar-title{font-family:var(--font-display);font-size:24px;font-weight:800;color:var(--dark);letter-spacing:-.5px;margin-right:8px;}
.tbl-wrap{flex:1;overflow:auto;position:relative;}
table{border-collapse:separate;border-spacing:0;font-size:12px;table-layout:fixed;}
.sch-compact{width:max-content;min-width:100%;}
thead th{background:var(--dark);color:rgba(255,255,255,.85);padding:12px 24px 12px 10px;text-align:left;font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;white-space:nowrap;position:sticky;top:0;z-index:10;border-bottom:2px solid var(--accent);overflow:hidden;text-overflow:ellipsis;user-select:none;box-shadow:0 4px 8px -2px rgba(15,15,15,.25);}
/* Sticky header corner cells (Actions / NS) sit above both axes */
thead th.fcol,thead th.fcol-2{z-index:12;}
thead th.sortable{cursor:pointer;}
thead th.sortable:hover{background:#2a2a2a;color:var(--accent);}
thead th .sort-ind{position:absolute;right:10px;top:50%;transform:translateY(-50%);font-size:11px;color:var(--accent);opacity:.4;transition:opacity .15s;}
thead th.sort-active .sort-ind{opacity:1;}
thead th.sort-active{color:var(--accent);background:#0d0d0d;}
tbody tr{background:var(--surface);}
tbody tr:nth-child(even) td{background:#f9f4e8;}
tbody tr.row-clickable{cursor:pointer;transition:box-shadow .15s ease;}
/* Row shadow rendered on the <tr> itself so it wraps the whole row as one
   uniform card-shadow — no cell-boundary seams. position:relative is required
   for the shadow to render; we deliberately don't add z-index so the sticky
   Actions/NS cells keep their own stacking. */
tbody tr.row-clickable:hover{
  position:relative;
  box-shadow:
    0 12px 28px -6px rgba(42,50,58,.20),    /* main soft drop */
    0 6px 12px -4px rgba(42,50,58,.10),     /* shorter close drop */
    6px 6px 0 -1px rgba(42,50,58,.10);      /* hard bottom-right offset for the card-lift feel */
}
/* Remove any leftover per-cell hover shadow so we don't double up */
tbody tr.row-clickable:hover td{box-shadow:none;}
/* All NATSPEC fields filled — soft green wash + green left edge so the user
   can scan which rows are ready for spec issue */
/* Status row tints — soft wash matching the status pill so the workflow
   stage is readable at a glance from the row colour alone */
tbody tr.row-status-not-started td{background:#FBF1F0!important;}
tbody tr.row-status-drafted     td{background:#FBF6F4!important;}
tbody tr.row-status-reviewed    td{background:#F2F2F3!important;}
tbody tr.row-status-approved    td{background:#EFEDE3!important;}
tbody tr.row-status-issued      td{background:#E8EDF2!important;}
tbody tr.row-status-on-hold     td{background:#F8E5E6!important;}
/* Hover handled by box-shadow on the row (see .row-clickable:hover above) —
   the row tint stays constant so the workflow stage colour isn't overwritten */
/* Inline status select inside the Actions column (under the round buttons) */
.st-sel-inline{
  font-size:11px;font-weight:700;letter-spacing:.02em;
  padding:4px 8px;border-radius:14px;border:1.5px solid var(--dark)!important;
  cursor:pointer;font-family:var(--font);width:auto;min-width:96px;text-align:center;
  appearance:none;-webkit-appearance:none;background-image:none;
}

tbody tr.row-complete td{background:#E8F1E2!important;}
tbody tr.row-complete:nth-child(even) td{background:#DDEBD4!important;}
tbody tr.row-complete td.fcol{border-left:3px solid #2F7A3C!important;background:#E8F1E2!important;}
tbody tr.row-complete:nth-child(even) td.fcol{background:#DDEBD4!important;}
tbody tr.row-complete td.fcol-2{background:#E8F1E2!important;}
tbody tr.row-complete:nth-child(even) td.fcol-2{background:#DDEBD4!important;}
tbody td{padding:10px 12px;border-bottom:1px solid #eef1f5;vertical-align:top;overflow:hidden;}
/* Wrap content within whatever width the column has — content stays visible, columns stay resizable */
.sch-compact tbody td{font-size:12px;line-height:1.4;vertical-align:top;white-space:normal;word-break:break-word;}
.sch-compact .cell-wrap{white-space:normal;word-break:break-word;}
.sch-compact .cell-ratings{font-size:11px;line-height:1.5;white-space:normal;}
.sch-compact .cell-flags{text-align:center;white-space:normal;}
.sch-compact .cell-spec{font-family:var(--font);font-size:11px;line-height:1.45;}

/* Column resize handle on every th.resizable — drag the right edge */
th.resizable{position:relative;}
th.resizable .col-resizer{position:absolute;top:0;right:0;width:6px;height:100%;cursor:col-resize;user-select:none;z-index:5;}
th.resizable .col-resizer:hover,th.resizable .col-resizer.resizing{background:var(--accent);}
body.resizing-col,body.resizing-col *{cursor:col-resize!important;user-select:none!important;}
/* Two sticky-left columns: NS first (slim), Actions second */
th.fcol,td.fcol{position:sticky;left:0;z-index:2;min-width:64px;text-align:center;}
th.fcol{z-index:4;}
td.fcol{background:var(--surface);}
th.fcol-2,td.fcol-2{position:sticky;left:130px;z-index:2;min-width:64px;}
th.fcol-2{z-index:4;}
td.fcol-2{background:var(--surface);border-right:2px solid var(--border);}
/* Round icon-only action buttons in the slim Actions column */
.btn-edit-round,.btn-dup-round,.btn-del-round{
  width:28px;height:28px;border-radius:50%;padding:0;font-size:12px;font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;
  cursor:pointer;font-family:var(--font);transition:all .12s;line-height:1;
}
.btn-edit-round{background:var(--dark);color:var(--accent);border:1.5px solid var(--dark);}
.btn-edit-round:hover{background:var(--accent);color:var(--dark);transform:scale(1.08);}
.btn-dup-round{background:var(--surface);color:var(--dark);border:1.5px solid var(--dark);}
.btn-dup-round:hover{background:var(--accent-2-l);transform:scale(1.08);}
.btn-del-round{background:var(--surface);color:var(--dark);border:1.5px solid var(--dark);}
.btn-del-round:hover{background:var(--coral-l,#FBD5CE);color:var(--coral,#EE7E72);transform:scale(1.08);}
tbody tr:nth-child(even) td.fcol,
tbody tr:nth-child(even) td.fcol-2{background:#fafbfc;}
tbody tr:hover td.fcol,
tbody tr:hover td.fcol-2{background:var(--accent-l)!important;}
/* Photo scales to fit the Photo column width — drag the column wider and the
   thumbnail grows with it. Aspect ratio stays square. */
.tbl-photo{width:100%;max-width:240px;aspect-ratio:1/1;border-radius:12px;object-fit:cover;border:2px solid var(--dark);cursor:pointer;display:block;transition:transform .12s;}
.tbl-photo:hover{transform:scale(1.03);}
.tbl-photo-ph{width:100%;max-width:240px;aspect-ratio:1/1;border-radius:12px;border:1.5px dashed var(--dark);display:flex;align-items:center;justify-content:center;color:var(--dark);font-size:clamp(20px,4vw,40px);cursor:pointer;background:var(--surface);transition:all .12s;}
.tbl-photo-ph:hover{background:var(--accent);}
.chip{font-size:10px;font-weight:700;padding:3px 9px;border-radius:12px;display:inline-block;letter-spacing:.02em;border:1.5px solid var(--dark);}
.st-sel{font-size:11px;font-weight:700;padding:5px 12px;border-radius:14px;border:1.5px solid var(--dark)!important;cursor:pointer;font-family:var(--font);letter-spacing:.02em;}
.tbl-bar{background:var(--dark);padding:4px 16px;font-size:10px;color:rgba(255,255,255,.45);display:flex;gap:18px;flex-shrink:0;}
.tbl-bar span{color:rgba(255,255,255,.65);}
/* Combo box — input + always-available dropdown panel */
.combo{position:relative;display:flex;align-items:stretch;width:100%;}
.cb-input{flex:1;padding-right:34px!important;}
.cb-toggle{position:absolute;right:0;top:0;bottom:0;width:32px;background:transparent;border:none;border-left:1.5px solid var(--dark);cursor:pointer;color:var(--dark);font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;border-radius:0 10px 10px 0;transition:all .12s;z-index:2;}
.cb-toggle:hover{background:var(--accent);}
.cb-panel{display:none;position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--surface);border:2px solid var(--dark);border-radius:10px;max-height:240px;overflow-y:auto;z-index:200;box-shadow:4px 4px 0 rgba(110,33,27,.18);}
.cb-panel.open{display:block;}
.cb-options{padding:4px 0;}
.cb-opt{padding:8px 14px;cursor:pointer;font-size:12px;color:var(--text);border-left:3px solid transparent;}
.cb-opt:hover{background:var(--accent-l);border-left-color:var(--accent);}
.cb-opt.selected{background:var(--accent);font-weight:700;color:var(--dark);}
.cb-opt.hidden{display:none;}
.cb-empty{padding:10px 14px;font-size:11px;color:var(--muted);font-style:italic;border-top:1px dashed var(--border);}

/* Natspec — enriched view */
.ns-group{font-family:var(--font-display);font-size:20px;font-weight:800;color:var(--dark);background:transparent;padding:18px 0 10px;border-bottom:2px solid var(--dark);margin:28px 0 14px;letter-spacing:-.4px;display:flex;align-items:baseline;gap:12px;}
.ns-group-cnt{font-family:var(--font);font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-weight:500;}
.ns-row{display:flex;flex-direction:column;border:1px solid rgba(0,0,0,.04);border-radius:14px;margin-bottom:10px;overflow:hidden;background:var(--surface);transition:all .2s;box-shadow:0 1px 3px rgba(42,50,58,.04),0 4px 14px rgba(42,50,58,.06);}
.ns-row:hover{transform:translateX(2px);}
.ns-row.used{background:var(--accent-l);}
.ns-row.expanded{background:var(--surface);box-shadow:6px 6px 0 var(--dark);}
.ns-row-main{display:flex;align-items:stretch;cursor:pointer;}
.ns-row-main:hover{background:var(--bg);}
.ns-row.used .ns-row-main{background:var(--accent-l);}
.ns-row.used .ns-row-main:hover{background:var(--accent-l);}
.ns-code{width:78px;flex-shrink:0;background:var(--dark);color:var(--accent);padding:14px;font-weight:700;font-size:13px;display:flex;align-items:center;justify-content:center;font-family:var(--font);letter-spacing:.02em;}
.ns-row.used .ns-code{background:var(--accent);color:var(--dark);}
.ns-body{flex:1;padding:12px 16px;}
.ns-tag{font-size:10px;background:var(--bg-2);color:var(--muted);padding:3px 9px;border-radius:2px;font-weight:600;margin-left:6px;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--border);}
.ns-tag-fields{background:var(--accent-l);color:var(--dark);border-color:var(--dark);}
.ns-meta-line{margin-top:8px;display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--muted);letter-spacing:.02em;}
.ns-meta-bit strong{color:var(--text);font-weight:600;}
.ns-row-stats{display:flex;align-items:center;gap:6px;padding:0 16px;flex-shrink:0;}
.ns-stat-pill{display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);padding:6px 10px;min-width:48px;border-radius:2px;}
.ns-stat-pill.ns-stat-approved{background:var(--green-l);border-color:var(--green);}
.ns-stat-pill.ns-stat-flagged{background:var(--amber-l);border-color:var(--amber);}
.ns-stat-n{font-family:var(--font-display);font-size:18px;font-weight:500;color:var(--dark);line-height:1;}
.ns-stat-l{font-size:8px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-top:2px;font-weight:500;}
.ns-chev{color:var(--muted);font-size:14px;margin-left:6px;}
.ns-row.expanded .ns-chev{color:var(--accent);}

/* Detail panel */
.ns-detail{padding:24px 28px;background:var(--bg);border-top:1px solid var(--border);}
.ns-detail-block{margin-bottom:22px;}
.ns-detail-block:last-child{margin-bottom:0;}
.ns-detail-hdr{font-family:var(--font);font-size:9px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--border);display:flex;align-items:baseline;gap:10px;}
.ns-detail-cnt{font-family:var(--font-display);font-size:14px;color:var(--muted);font-weight:400;letter-spacing:0;text-transform:none;}
.ns-std-list{display:flex;flex-wrap:wrap;gap:6px;}
.ns-std{font-size:11px;background:var(--surface);border:1px solid var(--border);padding:6px 12px;border-radius:2px;color:var(--text);font-family:'Courier New',monospace;letter-spacing:.02em;}
.ns-clauses{display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px;}
.ns-clause-col{background:var(--surface);border:1px solid var(--border);padding:14px 16px;border-radius:2px;}
.ns-clause-hdr{font-family:var(--font-display);font-size:14px;color:var(--accent);font-weight:500;margin-bottom:10px;padding-bottom:6px;border-bottom:1px solid var(--accent-l);font-style:italic;}
.ns-clause-list{margin:0;padding-left:16px;list-style:'— ';}
.ns-clause-list li{font-size:12px;line-height:1.7;color:var(--text);margin-bottom:6px;padding-left:4px;}
.ns-notes{background:var(--surface);border-left:3px solid var(--accent);padding:14px 18px;font-size:12px;line-height:1.7;color:var(--text);font-style:italic;font-family:var(--font-display);font-size:14px;}
.ns-items{display:flex;flex-direction:column;gap:4px;}
.ns-item{display:grid;grid-template-columns:80px 1fr 200px 100px;gap:12px;align-items:center;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:2px;cursor:pointer;font-size:12px;transition:all .12s;}
.ns-item:hover{border-color:var(--accent);background:var(--accent-l);}
.ns-item-id{font-family:'Courier New',monospace;color:var(--accent);font-weight:600;font-size:10px;letter-spacing:.05em;}
.ns-item-name{font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ns-item-loc{color:var(--muted);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ns-item-st{font-size:9px;font-weight:600;padding:3px 8px;border-radius:2px;text-align:center;letter-spacing:.04em;}
.ns-related{display:flex;flex-direction:column;gap:4px;}
.ns-related-row{font-size:11px;padding:8px 14px;background:var(--surface);border:1px solid var(--border);border-radius:2px;cursor:pointer;transition:all .12s;}
.ns-related-row:hover{border-color:var(--accent);background:var(--accent-l);color:var(--accent);}
.ns-related-row strong{font-family:'Courier New',monospace;color:var(--accent);margin-right:8px;font-size:10px;letter-spacing:.05em;}
.ns-detail-actions{display:flex;gap:10px;margin-top:8px;}
.ns-t{font-weight:700;font-size:14px;color:var(--dark);}
.ns-d{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.5;}
/* Custom worksection field editor */
.cf-row{display:flex;gap:8px;align-items:center;margin-bottom:6px;}
.cf-row input,.cf-row select{font-size:12px;padding:7px 9px;}

/* NATSPEC mapping audit */
.audit-stat{background:var(--bg-2);border-radius:10px;padding:10px 16px;font-size:11px;color:var(--muted);}
.audit-stat .audit-n{font-size:22px;font-weight:800;color:var(--text);display:block;}
.audit-section{margin-bottom:18px;}
.audit-hdr{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text);margin-bottom:8px;padding-bottom:5px;border-bottom:1.5px solid var(--border);display:flex;align-items:center;}
.audit-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;margin-bottom:4px;background:var(--bg-2);cursor:pointer;transition:background .12s;}
.audit-row:hover{background:var(--accent-l);}

/* Certificates & compliance */
.cert-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;margin-bottom:5px;background:var(--bg-2);transition:opacity .15s;}
.cert-row-off{opacity:.45;}
.cert-status{width:120px;flex-shrink:0;font-size:11px;font-weight:700;padding:6px 8px;border-radius:10px;border:1.5px solid var(--border-strong);cursor:pointer;font-family:var(--font);}
.cert-status-required{background:var(--guava-l);color:#7A3A3B;border-color:var(--guava)!important;}
.cert-status-received{background:var(--olive-taupe-l);color:#4D4936;border-color:var(--olive-taupe)!important;}
.cert-status-na,.cert-status-none{background:var(--surface);color:var(--muted);}
.cert-info{flex:1;min-width:0;}
.cert-label{font-size:12px;font-weight:700;color:var(--text);}
.cert-hint{font-size:10px;color:var(--muted);line-height:1.4;}
.cert-ref{width:200px;flex-shrink:0;font-size:11px;padding:6px 10px;}
.cert-attach{flex-shrink:0;width:30px;height:30px;border-radius:50%;border:1.5px dashed var(--border-strong);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:13px;transition:all .12s;background:var(--surface);}
.cert-attach:hover{border-color:var(--dark);background:var(--accent-l);}
.cert-file{flex-shrink:0;display:inline-flex;align-items:center;gap:4px;font-size:10px;font-weight:600;background:var(--olive-taupe-l);border:1px solid var(--olive-taupe);border-radius:10px;padding:4px 8px;max-width:160px;}
.cert-file a{color:#4D4936;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cert-file-x{background:none;border:none;cursor:pointer;font-size:10px;color:var(--muted);padding:0 2px;}
.cert-file-x:hover{color:var(--coral);}
.cert-chip{display:inline-block;font-size:10px;font-weight:700;padding:3px 10px;border-radius:12px;letter-spacing:.02em;}
.cert-chip-req{background:var(--guava-l);color:#7A3A3B;border:1px solid var(--guava);}
.cert-chip-ok{background:var(--olive-taupe-l);color:#4D4936;border:1px solid var(--olive-taupe);}
.cert-item-row{display:flex;align-items:flex-start;gap:14px;padding:14px 16px;background:var(--surface);border-radius:14px;margin-bottom:8px;cursor:pointer;box-shadow:0 1px 3px rgba(42,50,58,.04),0 4px 14px rgba(42,50,58,.06);transition:box-shadow .15s;}
.cert-item-row:hover{box-shadow:0 8px 20px rgba(42,50,58,.14);}

/* Spec section picker */
.sp-group{margin-bottom:16px;border:1px solid rgba(0,0,0,.04);border-radius:14px;overflow:hidden;background:var(--surface);box-shadow:0 1px 3px rgba(42,50,58,.04),0 4px 14px rgba(42,50,58,.06);}
.sp-group-hdr{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--bg-2);border-bottom:2px solid var(--dark);font-weight:700;font-size:12px;}
.sp-group-stats{font-size:10px;color:var(--muted);font-weight:600;letter-spacing:.05em;}
.sp-group-toggle{margin-left:auto;background:transparent;border:1.5px solid var(--dark);border-radius:14px;padding:3px 12px;font-size:9px;font-weight:600;cursor:pointer;text-transform:uppercase;letter-spacing:.05em;}
.sp-group-toggle:hover{background:var(--accent);}
.sp-group-items{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--border);}
.sp-item{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--surface);cursor:pointer;font-size:12px;transition:all .12s;}
.sp-item:hover{background:var(--bg);}
.sp-item-on{background:var(--accent-l);}
.sp-item-on:hover{background:var(--accent-l);}
.sp-item input{width:auto!important;margin:0!important;padding:0!important;border:none!important;}
.sp-code{font-family:var(--font);font-weight:700;background:var(--dark);color:var(--accent);padding:3px 10px;border-radius:10px;font-size:11px;letter-spacing:.04em;flex-shrink:0;}
.sp-title{flex:1;color:var(--dark);font-weight:500;}
.sp-tag{font-size:9px;font-weight:700;padding:2px 8px;border-radius:8px;text-transform:uppercase;letter-spacing:.04em;flex-shrink:0;}
.sp-tag-sched{background:var(--green);color:white;}
.sp-tag-std{background:var(--accent);color:var(--dark);}

/* Spec output */
.spec-draft{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:14px;}
.spec-ns-block{margin-bottom:20px;}
.spec-ns-hdr{background:var(--dark);color:white;padding:10px 14px;border-radius:8px 8px 0 0;font-weight:700;font-size:12px;}
.spec-clause-row{padding:8px 14px;border-left:1px solid var(--border);border-right:1px solid var(--border);border-bottom:1px solid #eef1f5;font-size:11px;line-height:1.6;display:flex;align-items:flex-start;gap:8px;}
.spec-clause-row:last-child{border-radius:0 0 8px 8px;border-bottom:1px solid var(--border);}
.spec-clause-row.keep{background:#f9fff9;border-left:3px solid #4caf50;}
.spec-clause-row.review{background:var(--amber-l);border-left:3px solid #f6a623;}
.spec-clause-row.ref{background:var(--accent-l);border-left:3px solid var(--accent);}
.cb{font-size:9px;font-weight:700;padding:2px 6px;border-radius:8px;flex-shrink:0;margin-top:1px;}
.cb-keep{background:#c8e6c9;color:#1b5e20;}
.cb-review{background:#ffe0b2;color:#7a3b00;}
.cb-ref{background:#bbdefb;color:#0d47a1;}
/* Modal */
.modal-bg{position:fixed;inset:0;background:rgba(26,25,22,.45);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;}
.modal-bg.hidden{display:none;}
.modal{background:var(--surface);border-radius:24px;width:720px;max-width:100%;max-height:92vh;overflow:hidden;display:flex;flex-direction:column;border:3px solid var(--dark);}
.modal-sm{width:480px;}
.modal-hdr{padding:20px 28px 16px;border-bottom:2px solid var(--dark);display:flex;align-items:center;justify-content:space-between;flex-shrink:0;background:var(--accent);}
.modal-hdr h2{font-family:var(--font-display);font-size:22px;font-weight:800;letter-spacing:-.3px;color:var(--dark);}
.modal-close{background:none;border:none;font-size:22px;cursor:pointer;color:var(--muted);line-height:1;}
.modal-body{padding:20px;overflow-y:auto;flex:1;}
.modal-footer{padding:12px 20px;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;flex-shrink:0;}
.es{margin-bottom:24px;}
.es-hdr{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--dark);margin-bottom:14px;padding-bottom:8px;border-bottom:2px solid var(--dark);font-family:var(--font);display:inline-block;background:var(--accent);padding:6px 14px;border-radius:20px;border-bottom:none;}
/* Natspec extended fields */
.ns-ext-section{background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:14px;margin-top:4px;}
.ns-ext-title{font-size:11px;font-weight:700;color:var(--dark);margin-bottom:10px;display:flex;align-items:center;gap:6px;}
.ns-ext-badge{font-size:10px;background:var(--accent-l);color:var(--accent);padding:2px 8px;border-radius:10px;font-weight:600;}
.field-review{border-color:#f6a623!important;background:#fffdf5!important;}
.field-review-label{color:#b36200;font-weight:700;}
.proj-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:9px;margin-bottom:6px;cursor:pointer;}
.proj-item:hover,.proj-item.active-p{border-color:var(--accent);background:var(--accent-l);}
.proj-icon{width:36px;height:36px;border-radius:8px;background:var(--accent-l);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;}
.new-form{background:var(--bg);border-radius:10px;padding:16px;margin-top:14px;}
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:200;display:flex;align-items:center;justify-content:center;}
.lightbox.hidden{display:none;}
.lightbox img{max-width:90vw;max-height:90vh;border-radius:8px;object-fit:contain;}
.lb-close{position:absolute;top:20px;right:24px;color:white;font-size:32px;cursor:pointer;background:none;border:none;}
/* ── Import modal ── */
.col-map-row{display:grid;grid-template-columns:180px 1fr 140px;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid #eef1f5;}
.col-map-row:last-child{border-bottom:none;}
.col-map-header{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:4px 0 8px;}
.preview-table{width:100%;border-collapse:collapse;font-size:11px;margin-top:12px;}
.preview-table th{background:var(--dark);color:white;padding:6px 8px;text-align:left;font-size:9px;font-weight:700;}
.preview-table td{padding:5px 8px;border-bottom:1px solid #eef1f5;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.preview-table tr:nth-child(even) td{background:#fafbfc;}
.import-progress{background:var(--accent-l);border:1px solid #b8d4f5;border-radius:8px;padding:12px 14px;margin-bottom:10px;}
.progress-bar{height:6px;background:#e0e0e0;border-radius:3px;overflow:hidden;margin-top:6px;}
.progress-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .3s;}
.toast{position:fixed;bottom:24px;right:24px;background:var(--dark);color:white;padding:10px 18px;border-radius:9px;font-size:12px;z-index:300;opacity:0;transition:opacity .25s;pointer-events:none;}
.toast.show{opacity:1;}
/* Sidebar toggle button */
.sidebar-toggle{background:none;border:1px solid rgba(255,255,255,.18);border-radius:6px;color:rgba(255,255,255,.6);font-size:16px;cursor:pointer;padding:4px 8px;line-height:1;font-family:var(--font);}
.sidebar-toggle:hover{color:white;background:rgba(255,255,255,.1);}
/* Collapsible sidebar */
.shell.sidebar-collapsed{grid-template-columns:0px 1fr;}
.shell.sidebar-collapsed .sidebar{overflow:hidden;width:0;min-width:0;padding:0;border:none;}
.shell.sidebar-collapsed .sidebar .sb-inner,
.shell.sidebar-collapsed .sidebar .sb-bottom{display:none;}
/* Dashboard */
.dash-header{margin-bottom:32px;padding-bottom:24px;position:relative;}
.dash-header::after{content:'';position:absolute;bottom:0;left:0;width:60px;height:4px;background:var(--accent);border-radius:2px;}
.dash-header h1{font-family:var(--font-display);font-size:44px;font-weight:700;color:var(--dark);letter-spacing:-1.5px;line-height:1.05;}
.dash-header p{font-size:12px;color:var(--muted);margin-top:8px;letter-spacing:.05em;font-weight:500;}
.dash-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:28px;}
.dash-card{background:var(--surface);border:1px solid rgba(0,0,0,.04);border-radius:14px;padding:22px 22px 24px;text-align:left;position:relative;transition:all .2s;box-shadow:0 1px 3px rgba(42,50,58,.04),0 4px 14px rgba(42,50,58,.06);}
.dash-card:hover{transform:translateY(-2px);box-shadow:6px 6px 0 var(--dark);}
.dash-card:nth-child(2){background:var(--accent);}
.dash-card::before{display:none;}
.dash-card-n{font-family:var(--font-display);font-size:52px;font-weight:800;color:var(--dark);line-height:1;letter-spacing:-2px;margin-top:8px;}
.dash-card-l{font-size:11px;color:var(--dark);margin-top:14px;text-transform:uppercase;letter-spacing:.1em;font-weight:700;}
.dash-status-row{display:flex;align-items:center;gap:10px;margin-bottom:10px;}
.dash-status-label{width:90px;font-size:11px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px;}
.dash-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.dash-status-bar-bg{flex:1;height:10px;background:#eef1f5;border-radius:5px;overflow:hidden;}
.dash-status-bar-fill{height:100%;border-radius:5px;transition:width .3s;}
.dash-status-count{width:32px;font-size:11px;color:var(--muted);text-align:right;}
.dash-recent-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border:1.5px solid var(--dark);border-radius:12px;margin-bottom:6px;cursor:pointer;font-size:13px;transition:all .12s;}
.dash-recent-item:hover{background:var(--accent-l);border-color:var(--accent);}
.dash-recent-id{font-family:monospace;font-size:10px;color:var(--accent);background:var(--accent-l);padding:2px 6px;border-radius:6px;font-weight:700;}
.dash-recent-product{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dash-recent-status{font-size:10px;font-weight:700;padding:2px 8px;border-radius:8px;}
.dash-actions{display:flex;gap:10px;margin-top:18px;}
/* Status bar improvements */
.tbl-bar .stat-dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:4px;vertical-align:middle;}
.tbl-bar .mini-progress{display:inline-flex;align-items:center;gap:6px;margin-left:8px;}
.tbl-bar .mini-progress-bar{width:60px;height:5px;background:rgba(255,255,255,.15);border-radius:3px;overflow:hidden;display:inline-block;}
.tbl-bar .mini-progress-fill{height:100%;background:#66bb6a;border-radius:3px;display:block;}
.tbl-bar .mini-progress-text{font-size:9px;color:rgba(255,255,255,.55);}
/* Duplicate button */
.btn-dup{padding:4px 8px;font-size:11px;background:transparent;border:1px solid #c8e6c9;border-radius:6px;cursor:pointer;color:#2e7d32;font-family:var(--font);}
.btn-dup:hover{background:#eaf5ee;}
/* Row flash on status change */
@keyframes rowFlash{0%{background:#fffde7;}100%{background:transparent;}}
.row-flash td{animation:rowFlash .8s ease;}
/* Keyboard shortcuts overlay */
.kb-overlay{position:fixed;inset:0;background:rgba(110,33,27,.55);z-index:150;display:flex;align-items:center;justify-content:center;padding:16px;}
.kb-overlay.hidden{display:none;}
.kb-card{background:var(--surface);border-radius:14px;width:440px;max-width:100%;box-shadow:0 24px 64px rgba(110,33,27,.35);overflow:hidden;}
.kb-hdr{padding:16px 20px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}
.kb-hdr h2{font-size:15px;font-weight:700;}
.kb-body{padding:16px 20px 20px;}
.kb-row{display:flex;align-items:center;gap:14px;padding:6px 0;border-bottom:1px solid #eef1f5;}
.kb-row:last-child{border-bottom:none;}
.kb-row kbd{display:inline-block;min-width:70px;text-align:center;background:var(--bg);border:1px solid var(--border);border-radius:5px;padding:3px 8px;font-size:11px;font-family:var(--font);font-weight:700;color:var(--dark);box-shadow:0 1px 2px rgba(0,0,0,.06);}
.kb-row span{font-size:12px;color:var(--text);}
::-webkit-scrollbar{width:5px;height:5px;}
::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:3px;}

/* ── Onboarding animated illustrations ───────────────────────────────────── */
.ob-stage{position:relative;height:184px;border:1.5px solid var(--border);border-radius:14px;background:linear-gradient(180deg,var(--surface),var(--bg));overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;margin-bottom:6px;}
.ob-fadeup{opacity:0;animation:ob-fadeup .55s ease forwards;}
@keyframes ob-fadeup{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.ob-cloud{font-size:34px;animation:ob-pulse 2s ease-in-out infinite;}
@keyframes ob-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.12)}}
.ob-arrow{font-size:18px;color:var(--coral);animation:ob-down 1.4s ease-in-out infinite;}
@keyframes ob-down{0%{transform:translateY(-5px);opacity:.3}50%{opacity:1}100%{transform:translateY(6px);opacity:.2}}
.ob-row{background:var(--surface);border:1.5px solid var(--dark);border-radius:9px;padding:5px 12px;font-size:12px;font-weight:600;color:var(--dark);min-width:190px;text-align:center;}
.ob-pick{opacity:0;border-color:var(--green);color:var(--green);animation:ob-fadeup .5s ease forwards, ob-glow 1.6s ease-in-out 1s infinite;}
@keyframes ob-glow{0%,100%{box-shadow:0 0 0 0 rgba(26,107,58,0)}50%{box-shadow:0 0 0 4px rgba(26,107,58,.2)}}
.ob-caret{display:inline-block;color:var(--accent-dk,#b5838d);font-weight:700;animation:ob-blink 1s steps(1) infinite;}
@keyframes ob-blink{50%{opacity:0}}
.ob-type{display:inline-block;overflow:hidden;white-space:nowrap;vertical-align:bottom;animation:ob-type 1.8s steps(24) infinite alternate;}
@keyframes ob-type{from{width:0}to{width:100%}}
.ob-chip{display:inline-block;background:var(--dark);color:var(--accent);border-radius:9px;padding:4px 11px;font-size:11px;font-weight:700;animation:ob-pop .5s ease both;}
@keyframes ob-pop{0%{transform:scale(.2);opacity:0}70%{transform:scale(1.15)}100%{transform:scale(1);opacity:1}}
.ob-pulsebtn{background:var(--dark);color:#fff;border-radius:20px;padding:6px 16px;font-size:12px;font-weight:700;animation:ob-pulse 1.3s ease-in-out infinite;}
.ob-half{flex:1;display:flex;flex-direction:column;align-items:center;gap:7px;}
.ob-cap{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);}
.ob-doc{background:#fff;border:1px solid var(--border);border-radius:6px;padding:8px 9px;width:170px;display:flex;flex-direction:column;gap:4px;}
.ob-line{height:5px;border-radius:3px;background:var(--border);opacity:0;animation:ob-fadeup .4s ease forwards;}
.ob-field{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:10.5px;font-weight:600;padding:3px 9px;border-radius:6px;background:var(--surface);border:1px solid var(--border);color:var(--dark);opacity:0;animation:ob-fadeup .5s ease forwards;}
.ob-field b{color:var(--green);font-weight:800;}
.ob-field-review{background:var(--amber-l);border:1px solid var(--amber);color:var(--amber);}
.ob-review-tag{font-size:8px;font-weight:800;letter-spacing:.05em;background:var(--amber);color:#fff;border-radius:4px;padding:1px 6px;animation:ob-pulse 1.4s ease-in-out infinite;}

/* ═══════════════════════════════════════════════════════════════════════════
   PROGRAMA-INSPIRED RESTYLE (2026-07) — warm-neutral palette, light editorial
   serif headings, mono uppercase captions. Token overrides + a few targeted
   selectors; layout unchanged. Fully reversible: delete this block to revert.
   ═══════════════════════════════════════════════════════════════════════════ */
:root{
  --font:'Inter',system-ui,-apple-system,sans-serif;
  --font-display:'Fraunces',Georgia,'Times New Roman',serif;      /* light serif */
  --font-mono:'Roboto Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --font-strong:'DM Sans','Inter',sans-serif;                     /* bold marks */

  /* Warm-neutral canvas + chrome (measured off programa.design) */
  --bg:#FCFBF9; --bg-2:#F4F1EA; --surface:#FFFFFF;
  --blush-bg:#F4F1EA; --blush-bg-l:#FBF9F5;
  --dark:#211F1B; --mid:#3A362F; --slate-dd:#211F1B; --slate-d:#3A362F;
  --text:#1A1916; --muted:#5A534C;
  --border:#E7E3DB; --border-strong:#D3CDC2;

  /* Green whisper — a soft sage that preserves --accent's dual role:
     light text on the dark chrome AND a light background for dark text.
     Deep forest reserved for rare emphasis (--warm-deep). */
  --accent:#C3CDAF; --accent-l:#EAEEE0; --accent-dk:#7E8B62; --warm-deep:#2F3830;
  --accent-2:#8C8470; --accent-2-l:#E2DDD2;   /* secondary → warm taupe */
  --accent-3:#9A9376; --accent-3-l:#DED9C9;   /* tertiary → olive */
}

/* Editorial light-serif headings (were heavy sans) */
.toolbar-title,.ns-group{font-family:var(--font-display);font-weight:400;letter-spacing:-.4px;}
.ns-clause-hdr{font-family:var(--font-display);font-weight:400;}
.dash-header h1,#dash-welcome,.view h1{font-family:var(--font-display)!important;font-weight:300;letter-spacing:-1px;}
.sb-n,.ns-stat-n,.dash-card-n{font-family:var(--font-display);font-weight:400;}

/* Keep the bold decorative marks on a strong sans */
.logo,.marquee,.diamond-badge{font-family:var(--font-strong);}

/* Mono uppercase captions / eyebrows — Programa's signature label treatment */
.sb-lbl,.sb-btn,.ns-detail-hdr,.ns-group-cnt,.dash-card-l,thead th,.cfg-bar{font-family:var(--font-mono);}
.lbl{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.07em;font-size:10.5px;color:var(--muted);}

/* Warm a stray hot-yellow sidebar hover left from an older palette */
.sb-item:hover{background:rgba(195,205,175,.10);}

/* ── Programa-style schedule card grid ── */
.sch-cards{flex:1;overflow:auto;padding:16px 18px;display:flex;flex-direction:column;gap:10px;background:var(--bg);}
.pcard-empty{text-align:center;color:var(--muted);padding:52px 20px;font-size:13px;}
.pcard{display:flex;align-items:stretch;flex-shrink:0;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;cursor:pointer;transition:box-shadow .15s,border-color .15s,transform .15s;}
.pcard:hover{box-shadow:0 8px 26px -14px rgba(30,28,24,.4);border-color:var(--border-strong);}
.pcard-thumb{flex-shrink:0;width:94px;display:flex;align-items:center;justify-content:center;padding:14px;}
.pcard-img{width:66px;height:66px;object-fit:cover;border-radius:10px;background:#efece6;border:1px solid var(--border);}
.pcard-img-ph{display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--muted);cursor:pointer;}
.pcard-img-ph:hover{border-color:var(--accent);color:var(--dark);}
.pcard-body{flex:1;display:flex;align-items:stretch;min-width:0;}
.pcard-cell{flex:1;min-width:0;padding:15px 15px;border-left:1px solid var(--border);display:flex;flex-direction:column;justify-content:center;gap:3px;}
.pcard-cell:first-child{border-left:none;}
.pcard-cell-id{flex:1.7;}
.pc-val{font-size:13px;font-weight:500;color:var(--text);line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pc-name{font-family:var(--font-display);font-size:17px;font-weight:400;letter-spacing:-.3px;white-space:normal;overflow:visible;text-overflow:clip;line-height:1.2;color:var(--dark);}
.pc-cap{font-family:var(--font-mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);}
.pc-sub{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pc-dim{color:var(--muted);opacity:.5;}
.pc-idrow{display:flex;align-items:center;gap:6px;margin-top:4px;}
.pc-code{font-family:var(--font-mono);font-size:11px;color:var(--dark);background:var(--bg-2);border:1px solid var(--border);border-radius:6px;padding:1px 8px;letter-spacing:.03em;}
.pc-flag{width:9px;height:12px;background:#c06a3d;display:inline-block;clip-path:polygon(0 0,100% 0,100% 68%,50% 100%,0 68%);flex-shrink:0;}
.pc-nschip{display:inline-block;font-family:var(--font-mono);font-size:9px;padding:2px 8px;border-radius:20px;background:var(--accent-l);color:var(--dark);letter-spacing:.03em;margin-top:2px;}
.pc-nschip.ok{background:var(--green-l);color:var(--green);}
.pc-nschip.rev{background:var(--amber-l);color:var(--amber);}
.pcard-side{flex-shrink:0;width:196px;padding:14px 16px;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:11px;border-left:1px solid var(--border);}
.pcard-status{width:auto;min-width:130px;padding:7px 12px;border-radius:20px;border:1px solid rgba(0,0,0,.06);font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;appearance:none;-webkit-appearance:none;text-align:center;}
.pcard-actions{display:flex;align-items:center;gap:6px;}
.pcard-btn{padding:6px 17px;font-size:11px;font-weight:600;border:1px solid var(--dark);border-radius:20px;background:var(--surface);color:var(--dark);cursor:pointer;font-family:var(--font);letter-spacing:.02em;transition:all .12s;}
.pcard-btn:hover{background:var(--dark);color:var(--surface);}
.pcard-ic{width:29px;height:29px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;font-size:12px;transition:all .12s;padding:0;}
.pcard-ic:hover{border-color:var(--dark);color:var(--dark);}
@media(max-width:1160px){
  .pcard{flex-wrap:wrap;}
  .pcard-body{flex-wrap:wrap;flex-basis:calc(100% - 94px);}
  .pcard-cell{flex:1 1 33%;border-left:none;border-top:1px solid var(--border);}
  .pcard-side{width:100%;border-left:none;border-top:1px solid var(--border);flex-direction:row;justify-content:space-between;align-items:center;}
}
/* Inline-editable card cells (edit in place) */
.pc-edit{outline:none;border-radius:5px;cursor:text;transition:background .12s,box-shadow .12s;min-height:1.15em;padding:1px 4px;margin:-1px -4px;}
.pc-edit:hover{background:var(--bg-2);}
.pc-edit:focus{background:var(--surface);box-shadow:0 0 0 2px var(--accent);white-space:normal;overflow:visible;}
.pc-edit:empty:before{content:'—';color:var(--muted);opacity:.4;}
.pc-name.pc-edit:empty:before{content:attr(data-ph);opacity:.4;}
.pc-code-edit{font-family:var(--font-mono);letter-spacing:.02em;}
/* Inline "add product" bar */
.pcard-add{display:flex;gap:8px;padding:4px 2px 2px;flex-wrap:wrap;}
.pcard-add-btn{padding:9px 16px;font-size:12px;font-weight:600;border:1px dashed var(--border-strong);border-radius:12px;background:var(--surface);color:var(--muted);cursor:pointer;font-family:var(--font);letter-spacing:.02em;transition:all .12s;}
.pcard-add-btn:hover{border-color:var(--dark);color:var(--dark);}
.pcard-add-btn.primary{border-style:solid;border-color:var(--dark);color:var(--dark);}
.pcard-add-btn.primary:hover{background:var(--dark);color:var(--surface);}
.pcard-add-url{display:flex;gap:8px;padding:4px 2px 6px;align-items:center;flex-wrap:wrap;}
.pcard-add-url input{flex:1;min-width:240px;max-width:560px;padding:9px 13px;}
.pcard-add{flex-shrink:0;}
/* Sections (user-defined grouping) */
.psec{flex-shrink:0;margin-bottom:14px;}
.psec-hdr{display:flex;align-items:center;gap:10px;padding:6px 2px 10px;border-bottom:1px solid var(--border);margin-bottom:10px;}
.psec-name{font-family:var(--font-display);font-size:18px;font-weight:400;color:var(--dark);letter-spacing:-.3px;}
.psec-name.pc-edit{padding:1px 6px;margin:-1px -6px;border-radius:6px;min-width:60px;}
.psec-ung{color:var(--muted);font-style:italic;font-size:16px;}
.psec-count{font-family:var(--font-mono);font-size:10px;color:var(--muted);background:var(--bg-2);border:1px solid var(--border);border-radius:20px;padding:2px 9px;letter-spacing:.03em;}
.psec-sp{flex:1;}
.psec-del{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:none;border:1px solid var(--border);border-radius:16px;padding:4px 11px;cursor:pointer;transition:all .12s;}
.psec-del:hover{border-color:#b23b3b;color:#b23b3b;}
.psec-empty{color:var(--muted);font-size:12px;padding:12px 4px 4px;font-style:italic;}
.psec .pcard{margin-bottom:8px;}
.pcard-section{width:auto;max-width:160px;padding:4px 9px;border-radius:16px;border:1px solid var(--border);font-family:var(--font-mono);font-size:9px;letter-spacing:.02em;color:var(--muted);background:var(--surface);cursor:pointer;text-transform:uppercase;}
.pcard-section:hover{border-color:var(--dark);color:var(--dark);}
.pcard-add-into{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);align-self:center;margin-left:8px;}
.pcard-add-sec{width:auto;padding:8px 11px;border-radius:12px;border:1px solid var(--border);font-size:12px;font-family:var(--font);cursor:pointer;}

/* ══ Programa-matched button system — compact rects, Inter 13 / weight 500,
   near-black text, hairline borders, no uppercase / letter-spacing.
   Primary = dark fill + near-white text. (measured off app.programa.design) ══ */
.btn,.btn-ghost,.pill,.pcard-btn,.pcard-add-btn,.proj-btn{
  font-family:var(--font);font-size:13px;font-weight:500;letter-spacing:normal;
  text-transform:none;border-radius:9999px;border:none;transition:all .13s;
}
/* Primary — dark fill + soft shadow ring */
.btn{background:var(--dark);color:#FCFBF9;padding:6px 15px;box-shadow:0 1px 2px rgba(0,0,0,.20),0 0 0 1px rgba(0,0,0,.10);}
.btn:hover:not(:disabled){background:#34302a;box-shadow:0 2px 6px rgba(0,0,0,.22),0 0 0 1px rgba(0,0,0,.12);}
/* Secondary — white + Programa's soft double shadow (no hard border) */
.btn-ghost,.pill,.pcard-btn,.proj-btn{background:#fff;color:var(--text);padding:5px 13px;box-shadow:0 1px 2px rgba(0,0,0,.10),0 0 0 1px rgba(0,0,0,.07);}
.btn-ghost:hover,.pill:hover,.pcard-btn:hover,.proj-btn:hover{background:#fff;color:var(--dark);box-shadow:0 2px 5px rgba(0,0,0,.13),0 0 0 1px rgba(0,0,0,.11);}
.pill.active{background:var(--dark);color:#FCFBF9;box-shadow:0 1px 2px rgba(0,0,0,.20),0 0 0 1px rgba(0,0,0,.10);}
.pcard-add-btn{padding:6px 13px;border-radius:9999px;}
.pcard-add-btn.primary{background:var(--dark);color:#FCFBF9;box-shadow:0 1px 2px rgba(0,0,0,.20),0 0 0 1px rgba(0,0,0,.10);}
.pcard-add-btn.primary:hover{background:#34302a;color:#fff;}

/* ══ Programa-matched inputs + status pill (softer controls) ══ */
input,select,textarea{border:1px solid var(--border-strong);border-radius:8px;font-weight:400;}
input:focus,select:focus,textarea:focus{border-color:var(--dark);box-shadow:0 0 0 3px var(--accent-l);background:var(--surface);}
/* Status pill on cards: Inter, sentence case (was mono uppercase) */
.pcard-status{font-family:var(--font);text-transform:none;font-size:11px;font-weight:500;letter-spacing:normal;border-color:rgba(0,0,0,.05);}

/* ══ Programa-style Dashboard / Overview ══ */
.dash2{max-width:1120px;margin:0 auto;padding:6px 4px 44px;}
.dash2-top{display:flex;gap:34px;align-items:flex-start;flex-wrap:wrap;padding:16px 0 30px;border-bottom:1px solid var(--border);}
.dash2-info{flex:1;min-width:280px;}
.dash2-title{font-family:var(--font-display);font-size:36px;font-weight:400;letter-spacing:-.9px;color:var(--dark);line-height:1.08;margin:0;}
.dash2-meta{font-size:12px;color:var(--muted);margin-top:9px;}
.dash2-pills{display:flex;gap:8px;margin-top:18px;flex-wrap:wrap;}
.dpill{font-size:12px;font-weight:500;padding:5px 13px;border-radius:9999px;background:var(--bg-2);color:var(--dark);box-shadow:0 0 0 1px rgba(0,0,0,.05);}
.dpill-ghost{background:transparent;color:var(--muted);box-shadow:0 0 0 1px var(--border);transition:all .12s;}
.dpill-ghost:hover{color:var(--dark);box-shadow:0 0 0 1px var(--border-strong);}
.dash2-hero{width:430px;max-width:100%;height:230px;border-radius:14px;overflow:hidden;cursor:pointer;flex-shrink:0;display:block;}
.dash2-hero-inner{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(135deg,#f3f0ea,#f3f0ea 11px,#efece4 11px,#efece4 22px);box-shadow:0 0 0 1px var(--border) inset;border-radius:14px;transition:box-shadow .15s;}
.dash2-hero:hover .dash2-hero-inner{box-shadow:0 0 0 1px var(--border-strong) inset;}
.dash2-hero-ph{font-size:13px;color:var(--muted);font-weight:500;}
.dash2-hero-img{width:100%;height:100%;object-fit:cover;display:block;}
.dash2-stats{display:flex;flex-wrap:wrap;padding:28px 0;border-bottom:1px solid var(--border);}
.dstat{flex:1;min-width:150px;padding:0 24px;border-left:1px solid var(--border);}
.dstat:first-child{border-left:none;padding-left:0;}
.dstat-n{font-family:var(--font-display);font-size:32px;font-weight:400;color:var(--dark);line-height:1;letter-spacing:-.6px;}
.dstat-l{font-size:13px;color:var(--dark);font-weight:500;margin-top:9px;}
.dstat-sub{font-size:12px;color:var(--muted);margin-top:3px;}
.dash2-sec-hdr{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.11em;color:var(--muted);margin:28px 0 12px;}
.dash2-recent{display:flex;flex-direction:column;gap:6px;}
@media(max-width:820px){.dash2-hero{width:100%;height:180px;}.dstat{min-width:44%;padding:12px 16px 0 0;border-left:none;}}

/* ══ Web-clip inbox (browser-extension clips) ══ */
.wc-banner{display:flex;align-items:center;gap:10px;background:var(--accent-l);border:1px solid var(--accent);border-radius:10px;padding:10px 14px;font-size:13px;color:var(--dark);}
.wc-badge{font-weight:600;background:var(--dark);color:#FCFBF9;border-radius:9999px;padding:2px 10px;font-size:12px;}
.wc-panel{margin-top:8px;display:flex;flex-direction:column;gap:8px;}
.wc-card{display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px;}
.wc-img{width:52px;height:52px;object-fit:cover;border-radius:8px;background:#efece6;border:1px solid var(--border);flex-shrink:0;}
.wc-img-ph{display:flex;align-items:center;justify-content:center;font-size:20px;color:var(--muted);}
.wc-info{flex:1;min-width:0;}
.wc-name{font-family:var(--font-display);font-size:16px;font-weight:400;color:var(--dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wc-sub{font-size:12px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wc-src{font-family:var(--font-mono);font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2px;}
.wc-act{display:flex;align-items:center;gap:8px;flex-shrink:0;}

/* ── Project information (pinfo modal + dashboard block) ── */
.pi-note{font-size:12px;padding:9px 12px;border-radius:10px;margin-bottom:12px;line-height:1.45;}
.pi-note-lock{background:#F6EEE2;border:1px solid #E8D9BF;color:#6b5223;}
.pi-note-ok{background:#EEF2EC;border:1px solid #D9E2D5;color:#3d5237;}
.pi-hint{font-size:11px;color:var(--muted);margin:0 0 8px;line-height:1.45;}
.pi-subhdr{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:12px 0 6px;}
.pi-row{display:grid;gap:6px;margin-bottom:6px;align-items:center;}
.pi-row input,.pi-row select{width:100%;min-width:0;}
.pi-row-team{grid-template-columns:1.2fr 1fr 1.2fr 28px;}
.pi-row-cons{grid-template-columns:1fr 1.1fr 1fr 1.1fr 28px;}
.pi-row-stage{grid-template-columns:1fr 1fr 1fr 1fr 28px;}
.pi-del{border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:13px;padding:4px;border-radius:6px;line-height:1;}
.pi-del:hover{background:#F1EDE6;color:#8a2f2f;}
.pi-empty{font-size:11px;color:var(--muted);padding:4px 0 8px;}
.pi-edit-link{font-size:10px;font-weight:600;color:var(--muted);cursor:pointer;text-decoration:underline;text-underline-offset:2px;margin-left:8px;text-transform:none;letter-spacing:0;}
.pi-edit-link:hover{color:var(--dark);}
.pi-dash-empty{font-size:12px;color:var(--muted);padding:4px 0 8px;}
.pi-dash-empty a{color:var(--dark);text-decoration:underline;cursor:pointer;text-underline-offset:2px;}
.pi-dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 22px;margin:4px 0 10px;}
.pi-dash-k{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:2px;}
.pi-dash-v{font-size:13px;color:var(--dark);line-height:1.4;}
.pi-stagestrip{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:2px 0 10px;}
.pi-stagechip{font-size:11px;font-weight:600;padding:4px 12px;border-radius:20px;border:1px solid var(--border);color:var(--muted);background:var(--surface);}
.pi-stagechip.pi-done{background:var(--dark);color:#FCFBF9;border-color:var(--dark);}
.pi-stagechip.pi-now{border-color:var(--dark);color:var(--dark);box-shadow:0 0 0 1px var(--dark) inset;}
.pi-stagearrow{color:var(--muted);font-size:10px;}
.pi-chiprow{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 8px;}
.pi-chip{font-size:11px;padding:4px 11px;border-radius:20px;background:#F1EDE6;color:var(--dark);border:1px solid var(--border);}
.pi-chip i{font-style:normal;color:var(--muted);font-size:10px;}
.pi-chip-cons{background:var(--surface);}
#dash-pinfo{margin-top:16px;}
#dash-pinfo .pi-dash-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px 18px;}

/* ── Programa-style shell: light left nav rail + slim topbar ── */
.topbar{border-bottom:1px solid var(--border);}
.sidebar{background:var(--bg);border-right:1px solid var(--border);}
.nav{display:flex;flex-direction:column;gap:2px;padding:8px 10px;}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;font-size:13px;font-weight:500;color:var(--dark);cursor:pointer;border:1px solid transparent;transition:background .12s;user-select:none;white-space:nowrap;}
.nav-item:hover{background:#F1EDE6;}
.nav-item.active{background:#fff;border-color:var(--border);box-shadow:0 1px 2px rgba(0,0,0,.06);font-weight:600;}
.nav-ic{width:18px;text-align:center;font-size:12px;opacity:.72;flex-shrink:0;}
.sb-bottom{background:transparent;border-top:1px solid var(--border);}
.sb-btn{color:var(--muted);border:none;background:#fff;border-radius:9999px;box-shadow:0 1px 2px rgba(0,0,0,.08),0 0 0 1px rgba(0,0,0,.06);text-transform:none;letter-spacing:.02em;font-size:11px;}
.sb-btn:hover{background:#F1EDE6;color:var(--dark);}

/* ── Card ⋯ context menu ── */
.cmenu{position:fixed;z-index:400;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 32px rgba(0,0,0,.14),0 2px 8px rgba(0,0,0,.07);padding:6px;min-width:236px;}
.cmenu-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;font-size:13px;font-weight:500;color:var(--dark);cursor:pointer;white-space:nowrap;user-select:none;}
.cmenu-item:hover{background:#F5F2EC;}
.cmenu-ic{width:16px;text-align:center;opacity:.7;font-size:12px;flex-shrink:0;}
.cmenu-arr{margin-left:auto;color:var(--muted);font-size:13px;}
.cmenu-div{height:1px;background:var(--border);margin:6px 4px;}
.cmenu-danger{color:#8a2f2f;}
.cmenu-danger:hover{background:#F7ECEA;}
.cmenu-on{font-weight:700;}
.pcard-more{font-weight:700;letter-spacing:1px;}

/* Card side column: one fixed-width stack so the status pill and the
   Details/⋯ row share both edges (Programa-style alignment). */
.pcard-status{width:150px;min-width:0;}
.pcard-actions{width:150px;}
.pcard-actions .pcard-btn{flex:1;}

/* ── Modal polish: no hard outline, soft elevation, quiet rhythm ── */
.modal{border:none;box-shadow:0 24px 64px rgba(26,25,22,.22),0 4px 16px rgba(26,25,22,.10);}
.modal-hdr{border-bottom:none;padding:18px 28px;}
.modal-hdr h2{font-size:19px;font-weight:600;letter-spacing:-.2px;color:var(--dark);}
.modal-close{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;transition:background .12s;color:var(--dark);opacity:.6;}
.modal-close:hover{background:rgba(0,0,0,.07);opacity:1;}
.modal-body{padding:24px 28px;}
.modal-body .es:not(:last-child){border-bottom:1px solid var(--border);padding-bottom:22px;}
.es-hdr{font-size:10px;letter-spacing:.1em;padding:5px 13px;margin-bottom:14px;}
.modal-footer{padding:14px 28px;background:#FBFAF7;}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--dark);box-shadow:0 0 0 3px rgba(26,25,22,.08);}

/* ── Type refinement: Inter at its natural weight/tracking, lighter serif
   display, compact buttons (Programa: 13px/500, no tracking, no bold). ── */
.btn{font-size:12.5px;font-weight:500;letter-spacing:0;padding:6px 14px;}
.btn-ghost{font-size:12.5px;font-weight:500;letter-spacing:0;padding:5px 12px;}
.btn-edit,.btn-del{font-weight:500;letter-spacing:0;}
.pill,.proj-btn,.pcard-btn{font-weight:500;letter-spacing:0;}
.pcard-btn{font-size:12.5px;}
.sb-btn{font-weight:500;letter-spacing:0;}
.toolbar-title{font-weight:500;font-size:22px;letter-spacing:-.2px;}
.ns-group{font-weight:500;}
.modal-hdr h2{font-weight:500;}
.st-sel{font-weight:500;}
input,select,textarea{font-weight:400;}

/* ── Wordmark: sage pill, deep-forest two-weight type ── */
.logo{background:var(--accent);color:var(--warm-deep);font-family:var(--font);font-size:12.5px;font-weight:700;letter-spacing:.09em;padding:7px 15px;}
.logo span{color:var(--warm-deep);font-weight:400;opacity:.75;}

/* Library material already in the open project + flash highlight on jump */
.pcard-btn-in{background:var(--accent-l);color:var(--accent-dk);}
@keyframes pcardFlash{0%{box-shadow:0 0 0 3px var(--accent);}100%{box-shadow:0 0 0 6px rgba(0,0,0,0);}}
.pcard-flash{animation:pcardFlash 2.2s ease-out;}


/* ═════════════════════════════════════════════════════════════════
   UI REFRESH (2026-08, v165) — append-only override block.
   Topbar declutter, SVG nav icons, Add launcher, edit-modal rail,
   light Natspec/Certs/Keynotes/Sources/table restyle, toasts.
   Fully reversible: delete this block + js/ui-refresh.js to revert.
   ═════════════════════════════════════════════════════════════════ */
.topbar{overflow:visible;gap:10px;}
.save-badge{display:none!important;}
.save-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:#4C9B57;display:inline-block;}
.save-dot-saving{background:#E0A45C;animation:sdPulse 1s infinite;}
.save-dot-error{background:#B5544C;}
@keyframes sdPulse{50%{opacity:.35;}}
.hist-seg{display:inline-flex;background:var(--surface);border-radius:9999px;box-shadow:0 1px 2px rgba(0,0,0,.10),0 0 0 1px rgba(0,0,0,.07);overflow:hidden;}
.hist-seg button{background:none;border:none;padding:6px 13px;font-size:13px;color:var(--text);cursor:pointer;line-height:1;font-family:var(--font);}
.hist-seg button+button{border-left:1px solid var(--border);}
.hist-seg button:hover{background:var(--bg-2);}
.hist-seg button.hidden{display:none;}
.hist-seg:not(:has(button:not(.hidden))){display:none;}
.tb-overflow{margin-left:auto;position:relative;}
.tb-more{width:30px;height:30px;border-radius:50%;border:none;background:var(--surface);box-shadow:0 1px 2px rgba(0,0,0,.10),0 0 0 1px rgba(0,0,0,.07);cursor:pointer;font-size:15px;font-weight:700;color:var(--muted);line-height:1;font-family:var(--font);}
.tb-more:hover{color:var(--text);}
.tb-menu{position:absolute;top:36px;right:0;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 32px rgba(26,25,22,.14);padding:6px;min-width:236px;z-index:400;display:flex;flex-direction:column;}
.tb-menu.hidden{display:none;}
.tb-menu button{display:flex;justify-content:space-between;align-items:center;gap:14px;background:none;border:none;border-radius:8px;padding:8px 11px;font-family:var(--font);font-size:12.5px;font-weight:500;color:var(--text);cursor:pointer;text-align:left;}
.tb-menu button:hover{background:var(--bg-2);}
.tb-kbd{font-family:var(--font-mono);font-size:9px;color:var(--muted);background:var(--bg-2);border-radius:5px;padding:2px 6px;}
.tb-menu-note{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:8px 11px 5px;border-top:1px solid var(--border);margin-top:4px;}
.nav-ic{width:18px;height:16px;display:flex;align-items:center;justify-content:center;font-size:0;}
.nav-ic svg{display:block;}
.nav-item.active .nav-ic{color:var(--accent-dk);opacity:1;}
.card-eyebrow{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-dk);margin-bottom:12px;font-weight:500;}
.card-eyebrow svg{flex-shrink:0;}
.admin-pill{margin-left:auto;font-family:var(--font-mono);font-size:9px;letter-spacing:.05em;background:#F6EEE2;color:#8a5a00;border-radius:9999px;padding:2px 9px;text-transform:none;}
/* Add launcher */
.add-wrap{max-width:780px;margin:0 auto;}
.add-launcher{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.add-card{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px 20px;cursor:pointer;transition:border-color .12s,box-shadow .12s;position:relative;}
.add-card:hover{border-color:var(--accent);box-shadow:0 2px 10px rgba(126,139,98,.10);}
.add-card-hero{grid-column:1/-1;border-color:var(--accent);box-shadow:0 2px 8px rgba(126,139,98,.08);}
.add-card-wide{grid-column:1/-1;padding:14px 20px;}
.add-card-ic{width:38px;height:38px;border-radius:10px;background:var(--accent-l);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--accent-dk);}
.add-card-t{font-size:13.5px;font-weight:600;color:var(--text);}
.add-card-d{font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.45;}
.add-kbd{font-family:var(--font-mono);font-size:10px;color:var(--muted);background:var(--bg-2);border-radius:6px;padding:2px 8px;letter-spacing:.05em;margin-left:auto;flex-shrink:0;}
.add-badge{margin-left:auto;font-family:var(--font-mono);font-size:10.5px;font-weight:500;background:var(--accent-dk);color:#fff;border-radius:9999px;padding:1px 8px;flex-shrink:0;}
.add-badge.hidden{display:none;}
.add-panel.hidden{display:none;}
.add-launcher.hidden{display:none;}
.add-back{background:none;border:none;font-family:var(--font);font-size:12px;font-weight:500;color:var(--accent-dk);cursor:pointer;padding:0 2px;margin-bottom:10px;}
.add-back:hover{text-decoration:underline;}
.add-url-row{display:flex;gap:8px;margin-bottom:14px;}
.add-url-row input{flex:1;}
.add-actions{display:flex;align-items:center;gap:10px;margin-top:14px;flex-wrap:wrap;}
.add-actions-hint{font-size:11px;color:var(--muted);flex-basis:100%;}
.add-import-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.add-import-card{display:block;background:var(--surface);border:1.5px dashed var(--border-strong);border-radius:12px;padding:16px 18px;cursor:pointer;font-family:var(--font);text-align:left;transition:border-color .12s;}
.add-import-card:hover{border-color:var(--accent-dk);}
.add-clips-empty{font-size:12px;color:var(--muted);border:1.5px dashed var(--border-strong);border-radius:12px;padding:26px 20px;text-align:center;line-height:1.6;}
.add-clips-empty.hidden{display:none;}
.det-dot{width:7px;height:7px;border-radius:50%;background:var(--accent-dk);flex-shrink:0;display:inline-block;}
/* Keynotes */
.kn-setup{display:flex;gap:12px;align-items:flex-start;background:var(--accent-l);border-radius:12px;padding:12px 16px;margin-bottom:14px;font-size:11.5px;line-height:1.7;color:var(--warm-deep);}
.kn-setup svg{flex-shrink:0;margin-top:2px;}
.kn-setup code{background:var(--surface);border-radius:5px;padding:1px 6px;font-family:var(--font-mono);font-size:10.5px;}
#kn-pre{background:var(--surface);border:1px solid var(--border);border-radius:12px;font-family:var(--font-mono);}
/* Sources help */
.src-help{margin-bottom:14px;}
.src-help summary{list-style:none;display:flex;align-items:center;gap:10px;background:var(--accent-l);border-radius:12px;padding:11px 16px;font-size:12px;font-weight:600;color:var(--warm-deep);cursor:pointer;}
.src-help summary::-webkit-details-marker{display:none;}
.src-help summary::before{content:'▸';font-size:10px;color:var(--accent-dk);transition:transform .12s;}
.src-help[open] summary::before{transform:rotate(90deg);}
.src-help .card{margin:10px 0 0;}
/* Schedule table */
/* Natspec index */
.ns-group{font-family:var(--font-display);font-size:16px;font-weight:500;letter-spacing:-.2px;color:var(--dark);border-bottom:1px solid var(--border);padding:18px 0 8px;margin-bottom:10px;display:flex;align-items:baseline;gap:10px;}
.ns-group-cnt{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-weight:400;}
.ns-row{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin-bottom:8px;overflow:hidden;box-shadow:none;}
.ns-row.used{border-color:var(--accent);}
.ns-row-main{display:flex;gap:14px;padding:13px 16px;cursor:pointer;align-items:flex-start;background:none;}
.ns-row.used .ns-row-main{background:#FBFCF8;}
.ns-code{font-family:var(--font-mono);font-size:11px;color:var(--text);background:var(--bg-2);border:1px solid var(--border);border-radius:6px;padding:3px 9px;letter-spacing:.03em;flex-shrink:0;height:fit-content;font-weight:400;}
.ns-row.used .ns-code{color:var(--warm-deep);background:var(--accent-l);border-color:var(--accent);}
.ns-body{flex:1;min-width:0;}
.ns-t{font-size:13px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.ns-tag{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--bg-2);border-radius:9999px;padding:2px 8px;font-weight:400;}
.ns-tag-fields{color:var(--accent-dk);background:var(--accent-l);}
.ns-d{font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.45;}
.ns-meta-line{font-size:10.5px;color:var(--muted);margin-top:4px;display:flex;gap:12px;flex-wrap:wrap;}
.ns-row-stats{display:flex;gap:6px;align-items:center;flex-shrink:0;margin-left:auto;}
.ns-stat-pill{display:flex;flex-direction:column;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:5px 10px;min-width:38px;}
.ns-stat-n{font-family:var(--font-display);font-size:15px;line-height:1;color:var(--dark);}
.ns-stat-l{font-family:var(--font-mono);font-size:7.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:2px;}
.ns-stat-approved{background:#DFF5E1;border-color:#BCE0C0;}
.ns-stat-approved .ns-stat-n,.ns-stat-approved .ns-stat-l{color:#1B5E20;}
.ns-stat-flagged{background:#F6EEE2;border-color:#E8C68C;}
.ns-stat-flagged .ns-stat-n,.ns-stat-flagged .ns-stat-l{color:#8a5a00;}
.ns-chev{color:var(--muted);font-size:11px;align-self:center;}
.ns-detail{border-top:1px solid var(--border);background:var(--bg);padding:16px;display:flex;flex-direction:column;gap:16px;}
.ns-detail-hdr{font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-dk);border-bottom:1px solid var(--border);padding-bottom:5px;margin-bottom:8px;font-weight:500;}
.ns-detail-cnt{color:var(--muted);letter-spacing:0;}
.ns-std-list{display:flex;flex-wrap:wrap;gap:6px;}
.ns-std{font-family:var(--font-mono);font-size:10.5px;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:4px 10px;color:var(--text);}
.ns-items{display:flex;flex-direction:column;gap:6px;}
.ns-item{display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:9px 13px;font-size:12px;cursor:pointer;transition:border-color .12s;}
.ns-item:hover{border-color:var(--accent);}
.ns-item-id{font-family:var(--font-mono);font-size:10px;color:var(--accent-dk);flex-shrink:0;}
.ns-item-name{font-weight:500;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ns-item-loc{color:var(--muted);font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:180px;}
.ns-item-st{font-size:10px;font-weight:500;border-radius:9999px;padding:3px 10px;flex-shrink:0;}
.ns-clauses{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;}
.ns-clause-hdr{font-size:11px;font-weight:600;margin-bottom:4px;color:var(--text);}
.ns-clause-list{margin:0;padding-left:16px;font-size:11px;color:var(--muted);line-height:1.7;}
.ns-notes{font-size:11.5px;color:var(--muted);line-height:1.6;}
.ns-related{display:flex;flex-direction:column;gap:4px;}
.ns-related-row{font-size:11.5px;color:var(--muted);cursor:pointer;}
.ns-related-row:hover{color:var(--accent-dk);}
.ns-detail-actions{display:flex;gap:8px;flex-wrap:wrap;}
/* Certificates */
.cert-row{display:flex;gap:12px;align-items:center;padding:9px 0;border-bottom:1px solid #F0EDE6;}
.cert-row:last-child{border-bottom:none;}
.cert-row-off{opacity:.55;}
.cert-status{font-size:11px;font-weight:500;border:none;border-radius:9999px;padding:4px 26px 4px 12px;cursor:pointer;font-family:var(--font);background:var(--bg-2);color:var(--muted);width:auto;}
.cert-status-required{background:#F6EEE2;color:#8a5a00;}
.cert-status-received{background:#DFF5E1;color:#1B5E20;}
.cert-status-na{background:var(--bg-2);color:var(--muted);}
.cert-info{flex:1;min-width:0;}
.cert-label{font-size:12.5px;font-weight:500;color:var(--text);}
.cert-hint{font-size:10.5px;color:var(--muted);margin-top:1px;}
.cert-ref{width:170px;font-size:11px;}
.cert-file{font-size:10.5px;white-space:nowrap;}
.cert-attach{cursor:pointer;font-size:13px;opacity:.7;}
.cert-attach:hover{opacity:1;}
.cert-item-row{display:flex;gap:12px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 16px;margin-bottom:8px;cursor:pointer;transition:border-color .12s;}
.cert-item-row:hover{border-color:var(--accent);}
.cert-chip{font-size:10px;border-radius:9999px;padding:2px 9px;background:var(--bg-2);color:var(--muted);display:inline-block;margin:1px 2px 1px 0;}
.cert-chip-ok{background:#DFF5E1;color:#1B5E20;}
.cert-chip-req{background:#F6EEE2;color:#8a5a00;}
/* Edit modal: eyebrow section headers + sticky rail */
.es-hdr{background:none;padding:0 0 6px;border-radius:0;border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-dk);font-weight:500;}
#edit-modal .modal.has-rail{display:grid;grid-template-columns:180px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;width:900px;}
#edit-modal .modal.has-rail .modal-hdr{grid-column:1/-1;grid-row:1;}
#edit-modal .modal.has-rail .modal-footer{grid-column:1/-1;grid-row:3;}
#edit-modal .modal.has-rail .ed-rail{grid-row:2;grid-column:1;border-right:1px solid var(--border);background:var(--bg);padding:14px 10px;display:flex;flex-direction:column;gap:2px;overflow-y:auto;}
#edit-modal .modal.has-rail .modal-body{grid-row:2;grid-column:2;position:relative;}
.ed-rail-item{background:none;border:1px solid transparent;border-radius:8px;padding:7px 11px;font-family:var(--font);font-size:12px;font-weight:500;color:var(--muted);cursor:pointer;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.ed-rail-item:hover{color:var(--text);}
.ed-rail-item.active{background:var(--surface);border-color:var(--border);box-shadow:0 1px 2px rgba(0,0,0,.05);color:var(--text);font-weight:600;}
/* Toast */
.toast{border-radius:12px;padding:11px 16px;font-size:12.5px;box-shadow:0 8px 24px rgba(26,25,22,.25);transform:translateY(8px);transition:opacity .2s,transform .2s;}
.toast.show{transform:translateY(0);}
/* Focus */
:focus-visible{outline:2px solid var(--accent-dk);outline-offset:1px;}

/* Sidebar footer utilities — quiet text buttons, not pills (v165.1) */
.sb-bottom{padding:10px 10px 12px;display:flex;flex-direction:column;gap:1px;}
.sb-util-hd{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:0 8px 6px;}
.sb-util{display:flex;align-items:center;gap:8px;background:none;border:none;box-shadow:none;border-radius:8px;padding:6px 8px;font-family:var(--font);font-size:11.5px;font-weight:500;color:var(--muted);cursor:pointer;text-align:left;letter-spacing:0;text-transform:none;line-height:1;}
.sb-util:hover{background:#F1EDE6;color:var(--text);}
.sb-util svg{flex-shrink:0;opacity:.75;}
.sb-util-row{display:flex;gap:1px;}
.sb-util-row .sb-util{flex:1;}
.sb-note{font-size:9px;color:var(--muted);opacity:.6;text-align:center;margin-top:5px;line-height:1.5;}

/* Sidebar footer option B — one hairline cloud card + text links (v165.2) */
.sb-cloud-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:8px;}
.sb-cc-hd{display:flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);}
.sb-cc-dot{width:6px;height:6px;border-radius:50%;background:#4C9B57;flex-shrink:0;}
.sb-cc-status{margin-left:auto;font-size:8.5px;letter-spacing:0;text-transform:none;}
.sb-cc-row{display:flex;gap:6px;}
.sb-cc-btn{flex:1;background:var(--bg-2);border:none;border-radius:9999px;padding:6px 0;font-family:var(--font);font-size:11.5px;font-weight:500;color:var(--text);cursor:pointer;letter-spacing:0;text-transform:none;}
.sb-cc-btn:hover{background:var(--accent-l);color:var(--warm-deep);}
.sb-links{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:9px;}
.sb-link{background:none;border:none;padding:0;font-family:var(--font);font-size:10.5px;font-weight:500;color:var(--muted);cursor:pointer;letter-spacing:0;text-transform:none;}
.sb-link:hover{color:var(--text);text-decoration:underline;text-underline-offset:2px;}
.sb-link-sep{color:var(--border-strong);font-size:10px;}
.sb-note{margin-top:6px;}

/* ── Type unification (v165.3) — one family set, one size scale ──
   Families: Inter (all UI), Roboto Mono (codes, eyebrows, labels),
   Fraunces (view/modal display headings only). DM Sans retired.
   Scale: 19 display · 13 body · 11.5 secondary · 10.5 chips · 9.5 eyebrows */
:root{
  --font-strong:'Inter',system-ui,sans-serif;
  --fs-display:19px; --fs-body:13px; --fs-small:11.5px; --fs-meta:10.5px; --fs-eyebrow:9.5px;
}
html,body{font-size:var(--fs-body);}
button,input,select,textarea,label{font-family:var(--font);}
input,select,textarea{font-size:var(--fs-body);}
.logo{font-family:var(--font-strong);}
.btn,.btn-ghost,.sb-btn{font-size:12.5px;font-weight:500;letter-spacing:0;}
.nav-item{font-size:var(--fs-body);}
.toolbar-title{font-family:var(--font-display);font-size:var(--fs-display);font-weight:500;letter-spacing:-.2px;color:var(--dark);}
.modal-hdr h2{font-size:var(--fs-display);font-weight:600;}
.lbl{font-family:var(--font-mono);font-size:var(--fs-eyebrow);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:500;}
.es-hdr,.card-eyebrow,.ns-detail-hdr,.sb-cc-hd,.tb-menu-note{font-size:var(--fs-eyebrow);}
.sch-hint,.tbl-bar,.ns-group-cnt{font-size:var(--fs-eyebrow);}
.chip,.st-sel,.ns-item-st,.cert-chip,.dpill{font-size:var(--fs-meta);font-weight:500;}
.ns-code,.ns-item-id,.ns-std,.add-kbd,.tb-kbd,.add-badge{font-size:var(--fs-meta);}
.ns-d,.cert-hint,.add-card-d,.ns-item-loc,.add-actions-hint,.kn-setup,.add-clips-empty{font-size:var(--fs-small);}
.ns-t,.cert-label,.add-card-t,.ns-item-name,.cert-item-row,.ns-item{font-size:var(--fs-body);}
.ed-rail-item,.tb-menu button,.sb-cc-btn,.sb-util{font-size:12px;}
.sb-link,.sb-note{font-size:var(--fs-meta);}
.sb-note{font-size:9px;}

/* Wrap guards (v165.4) — labels never break mid-word or mid-code */
.btn,.btn-ghost,.sb-btn,.sb-cc-btn,.tb-menu button,.add-back,.hist-seg button,.sb-link,.sb-util{white-space:nowrap;}
.chip,.dpill,.st-sel,.ns-item-st,.cert-chip,.cert-status,.add-kbd,.tb-kbd,.add-badge,.ns-code,.admin-pill,.cert-file{white-space:nowrap;}
.ns-tag{white-space:nowrap;line-height:1;}
.es-hdr{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.card-eyebrow,.ns-detail-hdr{white-space:nowrap;}
.card-eyebrow .admin-pill{overflow:visible;}
.ns-group{flex-wrap:wrap;}
.ns-group-cnt,.sb-cc-hd,.sb-cc-status,.tb-menu-note{white-space:nowrap;}
.ed-rail-item{line-height:1.4;}

/* Hierarchy layer (v165.5) — three clear levels everywhere:
   kicker (9px mono sage) > title (15.5px Fraunces) > body (13px Inter).
   View titles up to 21px so each screen has one unmistakable anchor. */
.toolbar-title{font-size:21px;}
.card-kicker{font-family:var(--font-mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-dk);font-weight:500;margin-bottom:3px;white-space:nowrap;}
.card-title{font-family:var(--font-display);font-size:15.5px;font-weight:500;letter-spacing:-.1px;color:var(--dark);margin-bottom:10px;display:flex;align-items:center;gap:10px;}
.card-title svg{flex-shrink:0;color:var(--accent-dk);}
.card-title .admin-pill{margin-left:auto;}
.dash2-sec-hdr{font-family:var(--font-display);font-size:15.5px;font-weight:500;letter-spacing:-.1px;color:var(--dark);}
.add-card-hero .add-card-t{font-size:14.5px;}
.ns-group{font-size:17px;}
.modal-hdr h2{font-size:21px;}

/* Card-view ID chip wrap guard (v165.6) */
.pc-code{white-space:nowrap;}
.pc-idrow{flex-wrap:nowrap;}

/* ── Type scale = hierarchy (v165.7) ─────────────────────────────
   Every text level has exactly one size step. Change a step here
   and the whole level moves together.
   T1 21px  Fraunces 500  view / modal titles — one anchor per screen
   T2 15.5  Fraunces 500  card & section titles (incl. Natspec groups)
   T3 13.5  Inter 600     item names, primary row text
   T4 13    Inter 400/500 body, forms, buttons, nav
   T5 11.5  Inter 400     secondary prose, hints, row meta
   T6 10.5  Inter 500     chips, status pills, code chips
   T7 9.5   Mono 500      eyebrows, field labels, table headers
   T8 9     Mono 500      kickers, footnotes                        */
:root{
  --t1:21px;--t2:15.5px;--t3:13.5px;--t4:13px;--t5:11.5px;--t6:10.5px;--t7:9.5px;--t8:9px;
  --fs-display:var(--t1);--fs-body:var(--t4);--fs-small:var(--t5);--fs-meta:var(--t6);--fs-eyebrow:var(--t7);
}
.toolbar-title,.modal-hdr h2{font-size:var(--t1);}
.card-title,.dash2-sec-hdr,.ns-group{font-size:var(--t2);}
.ns-t,.cert-label,.add-card-t,.ns-item-name{font-size:var(--t3);font-weight:600;}
.add-card-hero .add-card-t{font-size:var(--t3);}
.btn,.btn-ghost,.sb-btn,.nav-item,input,select,textarea{font-size:var(--t4);}
.ns-d,.cert-hint,.add-card-d,.ns-item-loc,.add-actions-hint,.kn-setup,.add-clips-empty,.cfg-bar{font-size:var(--t5);}
.chip,.dpill,.st-sel,.ns-item-st,.cert-chip,.cert-status,.ns-code,.ns-item-id,.ns-std,.add-kbd,.tb-kbd,.add-badge{font-size:var(--t6);}
.lbl,.es-hdr,.card-eyebrow,.ns-detail-hdr,.sb-cc-hd,.ns-group-cnt{font-size:var(--t7);}
.card-kicker,.tb-menu-note,.sb-note{font-size:var(--t8);}

/* Scale escapees (v165.8): match specificity of older rules */
label.lbl,.lbl{font-size:var(--t7);}

/* Brand mark (v165.9) — dark pill, schedule glyph, two-tone wordmark */
.logo{display:inline-flex;align-items:center;gap:7px;background:var(--dark);color:#FCFBF9;font-family:var(--font-strong);font-size:10.5px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;padding:7px 14px;border-radius:9999px;line-height:1;white-space:nowrap;}
.logo svg{color:var(--accent);flex-shrink:0;}
.logo span{font-weight:400;color:var(--accent);letter-spacing:.11em;}

/* Brand mark option C (v165.10) — no pill: quiet serif wordmark */
.logo{display:inline-flex;align-items:baseline;gap:0;background:none;color:var(--dark);font-family:var(--font-display);font-size:16.5px;font-weight:600;letter-spacing:-.2px;text-transform:none;padding:0 2px;border-radius:0;line-height:1;white-space:nowrap;}
.logo span{font-weight:400;color:var(--accent-dk);letter-spacing:-.2px;}

/* Brand mark option D (v165.11) — serif wordmark + googly blob buddy */
.logo{gap:7px;align-items:center;}
.logo-blob{flex-shrink:0;transition:transform .25s cubic-bezier(.34,1.56,.64,1);}
.logo:hover .logo-blob{transform:rotate(-10deg) scale(1.08);}
.logo .logo-eye{transition:transform .2s;}
.logo:hover .logo-eye{transform:translateX(.8px);}

/* Schedule view exempt from the refresh (v165.14) — original look kept */
#view-schedule .toolbar-title{font-size:24px;font-weight:800;letter-spacing:-.5px;}

/* ── Add → New product: plain-language shortcut + grouped form (v166) ── */
.add-shortcut{background:var(--bg-2);border-radius:12px;padding:14px 16px;margin:4px 0 22px;}
.add-shortcut-t{font-size:13px;font-weight:600;color:var(--text);margin-bottom:9px;}
.add-shortcut .add-url-row{margin:0;}
.add-shortcut-d{font-size:11.5px;color:var(--muted);line-height:1.55;margin-top:8px;}
.add-grp{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);
  padding-bottom:7px;border-bottom:1px solid var(--border);margin:24px 0 14px;display:flex;align-items:baseline;gap:9px;}
.add-grp:first-of-type{margin-top:4px;}
.add-grp-opt{font-family:var(--font);font-size:10.5px;letter-spacing:0;text-transform:none;color:var(--muted);opacity:.85;font-weight:400;}
.lbl .req{font-family:var(--font);font-size:9.5px;letter-spacing:0;text-transform:none;color:var(--accent-dk);
  font-weight:500;background:var(--accent-l);padding:1px 7px;border-radius:9px;margin-left:5px;}

/* ── NATSPEC field block: paste-to-sort, live completion, extra notes (v167) ── */
.ns-paste{background:var(--bg-2);border-radius:12px;padding:13px 15px;margin-bottom:16px;}
.ns-paste-t{font-size:12.5px;font-weight:600;color:var(--text);margin-bottom:8px;}
.ns-paste textarea{width:100%;font-size:12.5px;line-height:1.5;resize:vertical;}
.ns-paste-row{display:flex;align-items:center;gap:12px;margin-top:9px;flex-wrap:wrap;}
.ns-paste-msg{font-size:11px;color:var(--muted);line-height:1.5;flex:1;min-width:180px;}
.nsf{margin-bottom:8px;}
.nsf-flag{font-family:var(--font);font-size:9px;letter-spacing:0;text-transform:none;font-weight:500;
  color:#8a5a00;background:#F6EEE2;padding:1px 7px;border-radius:9px;margin-left:5px;white-space:nowrap;}
.nsf-done .nsf-flag{color:#1B5E20;background:#DFF5E1;}
.nsf-done input,.nsf-done select,.nsf-done .cb-input{border-color:#BFDCC4;}
.ns-ext-badge#ns-fill-badge{background:#F6EEE2;color:#8a5a00;}
.ns-ext-badge#ns-fill-badge.ns-fill-ok{background:#DFF5E1;color:#1B5E20;}
.ns-extra{margin-top:16px;padding-top:14px;border-top:1px solid var(--border);}
.ns-extra textarea{width:100%;font-size:12.5px;line-height:1.55;resize:vertical;}
.ns-extra-opt{font-family:var(--font);font-size:10.5px;letter-spacing:0;text-transform:none;color:var(--muted);font-weight:400;}

/* ── Deploy watcher banner ── */
.vc-bar{position:fixed;right:18px;bottom:18px;z-index:600;display:flex;align-items:center;gap:11px;
  background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:11px 13px;
  box-shadow:0 12px 32px rgba(26,25,22,.16),0 2px 8px rgba(26,25,22,.08);
  font-size:12.5px;color:var(--text);max-width:440px;line-height:1.45;}
.vc-dot{width:8px;height:8px;border-radius:50%;background:var(--accent-dk);flex-shrink:0;}
.vc-btn{border:none;background:var(--dark);color:#FCFBF9;border-radius:9999px;padding:6px 14px;
  font-family:var(--font);font-size:12.5px;font-weight:500;cursor:pointer;white-space:nowrap;flex-shrink:0;}
.vc-x{border:none;background:none;color:var(--muted);cursor:pointer;font-size:13px;line-height:1;padding:4px;flex-shrink:0;}
.vc-x:hover{color:var(--text);}

/* ── Stages (start date only) + revision/issue system (v173) ── */
.pi-row-stage{grid-template-columns:1fr 1fr auto 28px;}
.pi-row-stage .pi-stagechip{justify-self:start;font-size:10px;}
.rev-label-box{background:var(--accent-l);border-radius:12px;padding:14px 16px;text-align:center;}
.rev-label-cap{font-family:var(--font-mono);font-size:9px;letter-spacing:.11em;text-transform:uppercase;color:var(--accent-dk);margin-bottom:5px;}
.rev-label{font-family:var(--font-display);font-size:24px;font-weight:500;color:var(--warm-deep);letter-spacing:-.2px;}
.rev-hist{margin-top:16px;padding-top:13px;border-top:1px solid var(--border);}
.rev-hist-t{font-family:var(--font-mono);font-size:9px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted);margin-bottom:7px;}
.rev-hist-row{display:flex;justify-content:space-between;gap:12px;align-items:baseline;font-size:12px;padding:5px 0;border-bottom:1px solid var(--border);}
.rev-hist-row:last-child{border-bottom:none;}
.rev-hist-row b{font-weight:600;color:var(--text);white-space:nowrap;}
.rev-hist-row span{color:var(--muted);font-size:11px;text-align:right;}

/* Editable issue history rows (Project Information) */
.pi-row-rev{grid-template-columns:70px 1fr 96px 80px 28px;align-items:center;}
.pi-rev-head{font-family:var(--font-mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:2px;}
.pi-rev-head span{padding-left:2px;}
.pi-rev-sub{font-size:10px;color:var(--muted);margin:-2px 0 8px 2px;}

/* ── v194: collapsible Abbreviations section on the Keynotes page ── */
.abv-hdr{display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none;}
.abv-hdr:hover .abv-chev{color:var(--accent-dk);}
.abv-chev{font-size:13px;color:var(--muted);padding:2px 6px;transition:color .15s;}
.abv-count{display:inline-block;font-size:10.5px;font-weight:700;background:var(--accent-l);color:var(--accent-dk);border-radius:9px;padding:1px 8px;margin-left:6px;vertical-align:2px;}

/* ── v204: schedule cards — Ratings cell replaced by a full Description cell ── */
.pcard-cell-desc{flex:2.4;justify-content:flex-start;}
.pc-desc{white-space:normal;text-overflow:clip;font-size:11px;font-weight:400;line-height:1.4;max-height:108px;overflow-y:auto;padding-right:4px;scrollbar-width:thin;}
@media(max-width:1160px){
  .pcard-cell-desc{flex:1 1 100%;}
  .pc-desc{max-height:150px;}
}

/* ── v206: accounts — welcome gate, share modal, invites banner ── */
.auth-card{max-width:400px;padding:28px 30px;display:flex;flex-direction:column;gap:10px;}
.auth-brand{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-size:20px;font-weight:800;letter-spacing:-.4px;}
.auth-brand span{color:var(--accent-dk);}
.auth-title{font-size:19px;font-weight:800;letter-spacing:-.3px;margin-top:6px;}
.auth-sub{font-size:12px;color:var(--muted);line-height:1.55;margin-bottom:6px;}
.auth-error{font-size:12px;color:var(--coral);font-weight:600;background:rgba(224,90,70,.08);border-radius:8px;padding:8px 10px;}
.auth-go{width:100%;padding:11px;font-size:13px;margin-top:2px;}
.auth-switch{font-size:12px;color:var(--muted);text-align:center;}
.auth-switch a{color:var(--accent-dk);font-weight:700;text-decoration:none;}
.auth-skip{font-size:11px;text-align:center;margin-top:2px;}
.auth-skip a{color:var(--muted);text-decoration:underline;}
/* Top-bar Share button — matches the other top-bar pills (light surface,
   dark text, subtle shadow, accent hover). The old white-on-transparent style
   was invisible against the light top bar. */
.share-btn{border:none;background:var(--surface);color:var(--dark);border-radius:9999px;padding:6px 15px;font-size:12px;font-weight:600;cursor:pointer;font-family:var(--font);box-shadow:0 1px 2px rgba(0,0,0,.10),0 0 0 1px rgba(0,0,0,.07);transition:all .12s;}
.share-btn:hover{background:var(--accent);color:var(--dark);}
.invites-banner{display:flex;flex-direction:column;gap:8px;padding:10px 16px 0;}
.inv-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--accent-l);border:1px solid var(--accent);border-radius:10px;padding:10px 14px;font-size:12.5px;}
.inv-row>span:first-child{flex:1;min-width:200px;}
.inv-actions{display:flex;gap:6px;}
.shr-list{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;}
.shr-row{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:9px;padding:8px 12px;font-size:12.5px;}
.shr-who{flex:1;font-weight:600;display:flex;flex-direction:column;}
.shr-mail{font-weight:400;font-size:11px;color:var(--muted);}
.shr-role{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--accent-dk);background:var(--accent-l);border-radius:8px;padding:2px 8px;}
.shr-pending{opacity:.75;border-style:dashed;}
.shr-invite{display:flex;gap:8px;}
.shr-invite input{flex:1;}
.acct-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;}

/* ── v208: email verification banner ── */
.verify-banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--amber-l,#fdf1d6);color:var(--amber,#8a5a12);border:1px solid var(--amber,#d8b877);border-radius:10px;padding:10px 14px;margin:10px 16px 0;font-size:12.5px;}
.verify-banner>span:first-child{flex:1;min-width:200px;}

/* ── v211: profile button, avatars, role chips ── */
.profile-btn{display:inline-flex;align-items:center;gap:7px;border:none;background:var(--surface);color:var(--dark);border-radius:9999px;padding:4px 12px 4px 4px;cursor:pointer;font-family:var(--font);font-size:12px;font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.10),0 0 0 1px rgba(0,0,0,.07);transition:all .12s;max-width:190px;}
.profile-btn:hover{background:var(--accent);}
.profile-btn-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background-size:cover;background-position:center;font-weight:700;flex-shrink:0;overflow:hidden;line-height:1;}
.avatar-sm{width:26px;height:26px;font-size:10.5px;}
.avatar-lg{width:84px;height:84px;font-size:30px;box-shadow:0 0 0 1px var(--border);}
.avatar-lg-inner{width:84px;height:84px;font-size:30px;}
.shr-row .avatar{margin-right:2px;}
.shr-btn{border:1px solid var(--border);background:var(--surface);color:var(--dark);border-radius:8px;padding:3px 9px;font-size:10.5px;font-weight:600;cursor:pointer;font-family:var(--font);transition:all .12s;}
.shr-btn:hover{background:var(--bg-2);border-color:var(--dark);}
.shr-role-owner{background:var(--dark);color:var(--surface);}
.shr-role-admin{background:var(--accent);color:var(--dark);}
.shr-role-editor{background:var(--bg-2);color:var(--muted);}
