
*{box-sizing:border-box}
:root{--muted:rgba(0,0,0,.55);--line:rgba(0,0,0,.12)}
body{margin:0;color:#16161a;font:16px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;background:#fcfcfb;background-image:linear-gradient(180deg,var(--wash),rgba(255,255,255,0) 560px)}
.palette{max-width:980px;margin:0 auto;padding:0 20px 64px}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
header.site,footer.site{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 0;flex-wrap:wrap}
.brand{font-weight:700;color:#16161a}
header.site nav{display:flex;gap:14px;align-items:center}
.cta{padding:8px 15px;border-radius:999px;background:color-mix(in srgb,var(--accent) 10%,#fff);color:var(--accent);font-weight:600;font-size:14px}.cta:hover{text-decoration:none;background:var(--accent);color:#fff}
footer.site{border-top:1px solid var(--line);margin-top:40px;color:var(--muted);font-size:14px}
footer.site .foot-l{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
footer.site .foot-l small{color:var(--muted);font-size:12.5px}
.crumbs{font-size:13px;color:var(--muted);padding:6px 0 10px}.crumbs span{margin:0 4px}
h1{font-size:34px;font-weight:800;line-height:1.12;margin:10px 0 18px;letter-spacing:-.022em}
h2{font-size:18px;margin:32px 0 12px;padding-left:12px;border-left:3px solid var(--accent)}
h3{font-size:14px;margin:0 0 10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.top{display:grid;grid-template-columns:minmax(0,1fr) 272px;gap:30px;align-items:start;margin-bottom:8px}
.hero{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:20px}
.swatchcard{flex:1;min-width:150px;display:flex;flex-direction:column;gap:8px}
.chip{border:0;cursor:pointer;border-radius:12px;padding:16px;width:100%;text-align:left;font-size:15px;box-shadow:0 6px 18px rgba(0,0,0,.12)}
.chip b{display:block;font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:600;margin-top:6px;letter-spacing:.5px}
.nearcss{font-size:12px;color:var(--muted);padding-left:2px}
.nearcss code{background:var(--wash);border:1px solid var(--line);padding:1px 7px;border-radius:5px;color:#333}
.intro p{margin:0 0 12px;font-size:17px;max-width:64ch}
.copy-sw{display:inline-block;width:.72em;height:.72em;border-radius:3px;vertical-align:-.06em;margin-right:.3em;box-shadow:inset 0 0 0 1px rgba(0,0,0,.22)}
.facts{background:#fff;border:1px solid var(--line);border-top:3px solid var(--accent);border-radius:12px;padding:16px 18px;box-shadow:0 6px 18px rgba(0,0,0,.06)}
.facts-h{margin:0 0 14px;font-size:13px;text-transform:uppercase;letter-spacing:.07em;color:var(--accent)}
.facts dl{margin:0;display:grid;gap:13px}
.facts dt{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.facts dd{margin:3px 0 0;font-size:14px;line-height:1.4}
.facts-tags{display:flex;gap:6px;flex-wrap:wrap}
.facts-tags i{font-style:normal;background:var(--wash);border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:12px;color:#444}
.scale{display:grid;grid-template-columns:repeat(10,1fr);gap:6px}
.scale.blend{grid-template-columns:repeat(10,1fr)}
.blend-strip{height:42px;border-radius:10px;margin-bottom:8px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.07)}
@media(max-width:760px){.top{grid-template-columns:1fr;gap:18px}}
@media(max-width:640px){.scale,.scale.blend{grid-template-columns:repeat(5,1fr)}}
.sw{border:0;cursor:pointer;border-radius:8px;height:74px;display:flex;flex-direction:column;justify-content:space-between;padding:8px;font-family:ui-monospace,Menlo,Consolas,monospace}
.sw-k{font-size:12px;font-weight:700;opacity:.85}
.sw-h{font-size:10px;opacity:.85}
.hint{font-size:13px;color:var(--muted);margin-top:10px}
.export-wrap{margin:30px 0}
.export{margin:10px 0;border:1px solid var(--line);border-radius:10px;padding:6px 14px}
.export summary{cursor:pointer;font-size:14px;color:var(--muted)}
.export summary code{background:#efeee9;padding:1px 6px;border-radius:5px;color:#333}
.export pre{cursor:pointer;overflow:auto;font-size:12px;line-height:1.5;background:#1c1c1f;color:#e6e6e6;padding:14px;border-radius:8px}
.a11y{margin:28px 0}
.a11y-badges{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 12px}
.a11y-badges .badge{font-size:13px;font-weight:600;padding:5px 12px;border-radius:999px;border:1px solid}
.a11y-badges .pass{color:#1a7f37;background:rgba(26,127,55,.08);border-color:rgba(26,127,55,.30)}
.a11y-badges .fail{color:#b22222;background:rgba(178,34,34,.07);border-color:rgba(178,34,34,.28)}
.a11y code,.hint code{background:#efeee9;padding:1px 6px;border-radius:5px;font-size:.92em}
.a11y-lead{font-size:13px;color:var(--muted);align-self:center;margin-right:2px}
/* glossary tooltips: work on hover, keyboard focus, AND tap (button focuses reliably on mobile). Pure CSS, no JS. */
.gloss{position:relative;display:inline-block;border:0;background:none;padding:0;margin:0;font:inherit;color:inherit;line-height:inherit;vertical-align:baseline;cursor:help;text-decoration:underline dotted;text-underline-offset:3px;text-decoration-thickness:1px;text-decoration-color:var(--muted)}
.gloss:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
.gloss-pop{position:absolute;left:0;bottom:calc(100% + 9px);z-index:40;width:max-content;max-width:min(280px,calc(100vw - 28px));background:#1c1c1f;color:#f4f4f4;font:400 12.5px/1.45 system-ui,-apple-system,sans-serif;letter-spacing:0;text-transform:none;text-align:left;padding:9px 12px;border-radius:9px;box-shadow:0 10px 30px rgba(0,0,0,.3);opacity:0;visibility:hidden;transform:translateY(4px);transition:opacity .14s ease,transform .14s ease;pointer-events:none;white-space:normal}
.gloss--right .gloss-pop{left:auto;right:0}
.gloss-pop b{color:#fff;font-weight:600}
.gloss-pop::after{content:"";position:absolute;top:100%;left:16px;border:6px solid transparent;border-top-color:#1c1c1f}
.gloss--right .gloss-pop::after{left:auto;right:16px}
.gloss:hover .gloss-pop,.gloss:focus .gloss-pop,.gloss:focus-within .gloss-pop{opacity:1;visibility:visible;transform:translateY(0)}
.related{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:22px;margin-top:34px;border-top:1px solid var(--line);padding-top:24px}
.links{display:flex;flex-direction:column;gap:6px}
.naming-note{margin-top:32px;border-top:1px solid var(--line);padding-top:22px}
.naming-note p{max-width:74ch;font-size:14px;color:var(--muted)}
.naming-note .sources{font-size:13px}
.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-bottom:8px}
.hub-card{display:flex;align-items:center;gap:12px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fff;color:#16161a;box-shadow:0 4px 12px rgba(0,0,0,.05)}
.hub-card:hover{text-decoration:none;box-shadow:0 8px 20px rgba(0,0,0,.1);transform:translateY(-1px)}
.hub-sw{display:inline-flex;flex:0 0 auto;width:46px;height:46px;border-radius:9px;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.hub-sw i{flex:1}
.hub-name{font-size:14px;font-weight:600;line-height:1.3}
.hub-count{font-size:12px;color:var(--muted);font-weight:400}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:#16161a;color:#fff;padding:10px 16px;border-radius:999px;font-size:14px;opacity:0;pointer-events:none;transition:opacity .18s}
.toast.show{opacity:1}

.tcp-mocks{margin:18px 0}
.tcp-mocks > .bgr{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.mocks-toggle{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;font-size:13px}
.mocks-toggle-label{color:var(--muted);margin-right:2px}
.mocks-toggle label{padding:6px 12px;border:1px solid var(--line);border-radius:999px;cursor:pointer;color:var(--muted);user-select:none}
.bgr:nth-of-type(1):checked ~ .mocks-toggle label[for$="-w"],
.bgr:nth-of-type(2):checked ~ .mocks-toggle label[for$="-k"],
.bgr:nth-of-type(3):checked ~ .mocks-toggle label[for$="-c"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.mocks-stage{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px;padding:18px;border-radius:14px;background:#fff;transition:background .2s ease}
.bgr:nth-of-type(2):checked ~ .mocks-stage{background:#0b0b0b}
.bgr:nth-of-type(3):checked ~ .mocks-stage{background:var(--stage-color)}
.mk{margin:0;display:flex;flex-direction:column;gap:8px}
.mk-obj{height:168px;border-radius:10px;overflow:hidden;position:relative;box-shadow:0 6px 18px rgba(0,0,0,.16);background:var(--paper);cursor:pointer;transition:background-color .3s ease,transform .12s ease}
.mk-obj:hover{transform:translateY(-2px)}
.mk-obj:active{transform:translateY(0)}
.mk-obj *{transition:background-color .3s ease,color .3s ease,border-color .3s ease}
.mocks-swap-hint{font-size:12px;color:var(--muted);margin-left:auto}
.mk figcaption{font-size:12px;color:var(--muted);text-align:center}
.bgr:nth-of-type(2):checked ~ .mocks-stage .mk figcaption{color:rgba(255,255,255,.72)}

/* logo */
.logo{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px}
.logo-mark{position:relative;width:58px;height:40px}
.logo-mark span{position:absolute;top:0;width:40px;height:40px;border-radius:50%;mix-blend-mode:multiply}
.logo-mark span:first-child{left:0;background:var(--a)}
.logo-mark span:last-child{right:0;background:var(--b)}
.logo-word{font:700 23px/1 "Helvetica Neue",Arial,sans-serif;letter-spacing:1px;color:var(--ink)}
.logo-dot{color:var(--b-700)}
.logo-tag{font-size:9px;letter-spacing:.35em;color:var(--ink-soft)}

/* poster */
.poster{background:var(--a);display:flex;flex-direction:column;justify-content:space-between;padding:16px}
.poster-big{font:800 56px/.9 "Helvetica Neue",Arial,sans-serif;color:var(--paper)}
.poster-blocks{display:flex;gap:6px}
.poster-blocks i{flex:1;height:16px;border-radius:3px}
.poster-blocks i:nth-child(1){background:var(--paper)}.poster-blocks i:nth-child(2){background:var(--b)}.poster-blocks i:nth-child(3){background:var(--blend)}

/* business card */
.bcard{background:var(--a-100);display:flex;align-items:center;justify-content:center}
.bcard-face{width:168px;height:98px;background:var(--paper);border-radius:8px;box-shadow:0 6px 16px rgba(0,0,0,.2);padding:15px;position:relative;overflow:hidden}
.bcard-logo{display:flex}
.bcard-logo span{width:17px;height:17px;border-radius:50%;mix-blend-mode:multiply}
.bcard-logo span:last-child{margin-left:-6px;background:var(--b)}.bcard-logo span:first-child{background:var(--a)}
.bcard-name{font:600 13px/1.2 Georgia,serif;color:var(--ink);margin-top:13px}
.bcard-role{font-size:8px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin-top:3px}
.bcard-bar{position:absolute;left:0;bottom:0;height:7px;width:100%;background:var(--a)}

/* app UI */
.ui{background:var(--paper)}
.ui-head{height:36px;background:var(--a);display:flex;align-items:center;gap:7px;padding:0 12px}
.ui-dot{width:12px;height:12px;border-radius:50%;background:var(--paper);opacity:.9}
.ui-bars{flex:1;height:6px;border-radius:3px;background:rgba(255,255,255,.5)}
.ui-line{height:9px;border-radius:4px;background:var(--ink-soft);opacity:.32;margin:15px 16px 0}
.ui-line.w80{width:80%}.ui-line.w60{width:60%}
.ui-btns{display:flex;gap:8px;padding:16px}
.ui-btn{font:600 11px/1 system-ui,sans-serif;padding:9px 12px;border-radius:7px}
.ui-btn.pri{background:var(--b);color:var(--b-50)}
.ui-btn.sec{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1px var(--line)}

/* mobile screen */
.mob{background:var(--a-50);display:flex;align-items:center;justify-content:center}
.mob-frame{width:100px;height:152px;background:var(--paper);border-radius:16px;box-shadow:0 6px 16px rgba(0,0,0,.22);overflow:hidden;position:relative}
.mob-status{height:16px;background:var(--a)}
.mob-card{height:34px;margin:9px;border-radius:7px;background:var(--a-100)}
.mob-line{height:6px;border-radius:3px;background:var(--ink-soft);opacity:.3;margin:7px 9px}
.mob-line.w70{width:70%}.mob-line.w50{width:50%}
.mob-cta{margin:9px;text-align:center;font:600 9px/26px system-ui;height:26px;border-radius:7px;background:var(--b);color:var(--b-50)}
.mob-nav{position:absolute;bottom:0;left:0;right:0;height:22px;background:var(--a-50);display:flex;justify-content:space-around;align-items:center}
.mob-nav i{width:11px;height:11px;border-radius:3px;background:var(--ink-soft);opacity:.4}
.mob-nav i:first-child{opacity:1;background:var(--b)}

/* data viz */
.viz{background:var(--paper);padding:15px;display:flex;flex-direction:column;gap:10px}
.viz-title{height:8px;width:48%;border-radius:4px;background:var(--ink-soft);opacity:.4}
.viz-bars{flex:1;display:flex;align-items:flex-end;gap:8px}
.viz-bars i{flex:1;border-radius:4px 4px 0 0}
.viz-bars i:nth-child(1){background:var(--a-300)}.viz-bars i:nth-child(2){background:var(--a)}
.viz-bars i:nth-child(3){background:var(--blend)}.viz-bars i:nth-child(4){background:var(--b)}.viz-bars i:nth-child(5){background:var(--b-700)}
.viz-legend{display:flex;gap:16px}
.viz-legend span{font-size:9px;color:var(--ink-soft);display:flex;align-items:center;gap:5px}
.viz-legend span::before{content:"";width:9px;height:9px;border-radius:2px}
.viz-legend span:first-child::before{background:var(--a)}.viz-legend span:last-child::before{background:var(--b)}

/* marketing hero */
.hero2{background:var(--paper);padding:15px;display:flex;flex-direction:column;gap:8px}
.hero2-nav{display:flex;align-items:center;gap:7px}
.hero2-nav b{width:15px;height:15px;border-radius:4px;background:var(--a)}
.hero2-nav span{height:5px;width:22px;border-radius:3px;background:var(--ink-soft);opacity:.3}
.hero2-h{font:800 26px/1.04 "Helvetica Neue",Arial,sans-serif;color:var(--ink);margin-top:4px}
.hero2-sub{height:6px;width:78%;border-radius:3px;background:var(--ink-soft);opacity:.3}
.hero2-cta{align-self:flex-start;margin-top:4px;font:600 10px/1 system-ui;padding:10px 15px;border-radius:7px;background:var(--b);color:var(--b-50)}

/* wedding invite */
.inv{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;color:var(--ink);font-family:Georgia,"Times New Roman",serif;padding:14px}
.inv-rule{width:44px;height:1px;background:var(--a)}
.inv-names{font-size:22px;letter-spacing:.5px;text-align:center;line-height:1.15}
.inv-names em{display:block;font-size:13px;color:var(--b-700);font-style:italic;margin:1px 0}
.inv-sub{font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}
.inv-date{font-size:10px;letter-spacing:.22em;color:var(--a-700)}

/* interior */
.intr{background:var(--a-100)}
.intr-wall{position:absolute;inset:0 0 38% 0;background:var(--a)}
.intr-art{position:absolute;top:22px;left:24px;width:46px;height:58px;background:var(--paper);border:3px solid var(--ink)}
.intr-floor{position:absolute;inset:62% 0 0 0;background:var(--b-100)}
.intr-sofa{position:absolute;left:20px;right:20px;bottom:18px;height:44px;border-radius:8px 8px 4px 4px;background:var(--b)}
.intr-cushion{position:absolute;right:34px;bottom:44px;width:26px;height:26px;border-radius:5px;background:var(--a-300);box-shadow:0 2px 5px rgba(0,0,0,.25)}

/* product label */
.prod{display:flex;align-items:flex-end;justify-content:center;background:var(--a-50)}
.prod-jar{width:104px;height:140px;background:var(--paper);border-radius:8px 8px 6px 6px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06);overflow:hidden}
.prod-cap{height:24px;background:var(--b)}
.prod-band{padding:18px 10px;text-align:center;color:var(--ink)}
.prod-band b{display:block;font:600 15px/1 Georgia,serif;letter-spacing:2px}
.prod-band span{display:block;font-size:8px;letter-spacing:.12em;color:var(--ink-soft);margin-top:7px}
.prod-band i{display:block;font-size:8px;color:var(--a-700);margin-top:16px;font-style:normal}

/* fashion bag */
.bag{display:flex;align-items:center;justify-content:center;background:var(--b-50)}
.bag-body{position:relative;width:112px;height:80px;background:var(--a);border-radius:6px;box-shadow:0 5px 12px rgba(0,0,0,.25)}
.bag-flap{position:absolute;inset:0 0 55% 0;background:var(--a-700);border-radius:6px 6px 0 0}
.bag-clasp{position:absolute;top:38%;left:50%;transform:translateX(-50%);width:20px;height:13px;border-radius:3px;background:var(--b)}
.bag-strap{position:absolute;width:104px;height:50px;border:6px solid var(--ink);border-bottom:none;border-radius:60px 60px 0 0;margin-bottom:70px}


.feat-note{font-size:13px;color:var(--muted);max-width:72ch;margin:4px 0 14px}
.feat-grad-row{display:flex;align-items:center;gap:14px;margin:10px 0}
.feat-grad-lab{flex:0 0 150px;font-size:13px;font-weight:600}
.feat-grad-lab i{display:block;font-style:normal;font-weight:400;font-size:11px;color:var(--muted);margin-top:2px}
.feat-good .feat-grad-lab::before{content:"\2713 ";color:#1a7f37;font-weight:700}
.feat-bad .feat-grad-lab{color:var(--muted)}
.feat-bad .feat-grad-lab::before{content:"\2717 ";color:#b22222;font-weight:700}
.feat-grad-bar{flex:1;height:40px;border-radius:8px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1)}
.feat-bad .feat-grad-bar{opacity:.9}
.cgrid-wrap{overflow-x:auto}
.cgrid{border-collapse:separate;border-spacing:3px;font:700 12px/1 ui-monospace,Menlo,Consolas,monospace}
.cgrid th{font-size:10px;font-weight:600;color:var(--muted);padding:2px;text-align:center}
.cgrid td{width:30px;height:30px;text-align:center;border-radius:5px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
.cg-key{display:inline-block;font-size:12px;margin-right:14px}
.cg-pass{color:#1a7f37}.cg-fail{color:#b22222}
@media(max-width:560px){
  .feat-grad-row{flex-direction:column;align-items:stretch;gap:5px}
  .feat-grad-lab{flex:none}
  .feat-grad-bar{flex:none;height:40px}
  .cgrid td{width:26px;height:26px}
  .cgrid th{font-size:9px}
}
@media (prefers-reduced-motion: reduce){*,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;scroll-behavior:auto !important}}