/* SSmd homepage: pigment boards over the Ink Flow background (ink.js). */
@font-face{font-family:'SSmd Serif';src:url('/fonts/serif-subset.woff2') format('woff2');font-weight:200 900;font-style:normal;font-display:swap;}
@font-face{font-family:'SSmd Mono';src:url('/fonts/mono-subset.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'SSmd Mono';src:url('/fonts/mono-medium-subset.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap;}

:root{
  --serif:'SSmd Serif','Songti SC','Noto Serif CJK SC',Georgia,serif;
  --sans:-apple-system,BlinkMacSystemFont,'PingFang SC','Hiragino Sans GB','Microsoft YaHei','Noto Sans SC',sans-serif;
  --mono:'SSmd Mono',ui-monospace,'SF Mono',Menlo,Consolas,monospace;
  --ease:cubic-bezier(0.22,1,0.36,1);
  --gutter:clamp(24px,6vw,96px);
  --light:#FFF8F2; --light-soft:rgba(255,248,242,.9);
}
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;background:#141413;}
body{margin:0;font-family:var(--sans);color:var(--light);-webkit-font-smoothing:antialiased;overflow-x:hidden;}
a{color:inherit;text-underline-offset:4px;text-decoration-thickness:1px;}
a:hover{text-decoration-thickness:2px;}
img{display:block;max-width:100%;height:auto;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0;}
.skip{position:fixed;top:10px;left:16px;z-index:50;transform:translateY(-200%);padding:12px 16px;border-radius:12px;background:#141413;color:#fff;}
.skip:focus{transform:none;}
html[lang="zh-CN"] .en{display:none !important;}
html[lang="en"] .zh{display:none !important;}
:focus-visible{outline:2px solid #fff;outline-offset:3px;border-radius:6px;}

/* The ink itself: one canvas behind everything. Without WebGL each board shows a still of its own ground. */
#inkCanvas{position:fixed;inset:0;width:100vw;height:100vh;z-index:-1;display:block;background:#D9472B;}
.no-ink #inkCanvas{display:none;}
.no-ink .board{background-size:cover;background-position:center;}
.no-ink .board[data-ink="vermilion"]{background-image:url('/assets/ink/ground-vermilion.jpg');background-color:#D9472B;}
.no-ink .board[data-ink="indigo"]{background-image:url('/assets/ink/ground-indigo.jpg');background-color:#2F5DA8;}
.no-ink .board[data-ink="malachite"]{background-image:url('/assets/ink/ground-malachite.jpg');background-color:#2E8B6A;}
.no-ink .board[data-ink="moonwhite"]{background-image:url('/assets/ink/ground-moonwhite.jpg');background-color:#E3E8EE;}
.no-ink .board[data-ink="ochre"]{background-image:url('/assets/ink/ground-ochre.jpg');background-color:#A9572E;}
.no-ink .board[data-ink="teal"]{background-image:url('/assets/ink/ground-teal.jpg');background-color:#2A8796;}
.no-ink .board[data-ink="ink"]{background-image:url('/assets/ink/ground-ink.jpg');background-color:#141413;}

/* Header: a strip of glass that reads over every pigment. */
.bar{position:fixed;top:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;
  padding:12px var(--gutter);background:rgba(20,20,19,.16);-webkit-backdrop-filter:blur(18px) saturate(1.4);backdrop-filter:blur(18px) saturate(1.4);
  border-bottom:1px solid rgba(255,255,255,.14);color:#fff;}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;}
.brand svg{width:22px;height:22px;}
.brand .word{font-family:var(--serif);font-weight:900;font-size:21px;letter-spacing:.01em;}
.bar nav{display:flex;align-items:center;gap:8px;}
.bar .tag{font-size:13px;opacity:.82;margin-right:6px;}
.bar .lang{font-size:14px;text-decoration:none;min-height:40px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;}
.bar .lang:hover{background:rgba(255,255,255,.14);}
.bar .nav-link{font-size:14px;text-decoration:none;min-height:40px;padding:0 12px;display:inline-flex;align-items:center;border-radius:10px;}
.bar .nav-link:hover{background:rgba(255,255,255,.14);}
.bar .dl{font-size:14px;font-weight:600;text-decoration:none;color:#141413;background:#fff;border-radius:999px;padding:9px 16px;min-height:40px;display:inline-flex;align-items:center;}
.bar .dl:hover{background:#FFF1E8;}

/* A board: one pigment, a headline, the real App in front. */
.board{position:relative;overflow:hidden;min-height:100vh;padding:clamp(108px,15vh,160px) 0 clamp(72px,10vh,120px);}
.board[data-ink="moonwhite"]{color:#1F2A38;}
.board[data-ink="moonwhite"] :focus-visible{outline-color:#1F2A38;}
.lead{display:grid;grid-template-columns:minmax(360px,40%) 1fr;align-items:start;}
.copy{position:relative;z-index:3;padding-left:var(--gutter);max-width:520px;}
.kicker{margin:0 0 22px;font-size:14px;font-weight:600;letter-spacing:.04em;opacity:.86;}
/* The hero's kicker sits inside the h1 so the heading names the product; it keeps the look of the lead paragraph. */
h1>.kicker{display:block;margin:24px 0 0;font:500 clamp(17px,1.5vw,21px)/1.7 var(--sans);letter-spacing:.04em;color:var(--light-soft);}
.badge{display:inline-block;margin:0 0 20px;padding:6px 12px;border-radius:999px;font-size:13px;font-weight:600;letter-spacing:.03em;
  background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.45);}
h1,h2{margin:0;font-family:var(--serif);font-weight:900;line-height:1.08;letter-spacing:-.005em;font-size:clamp(44px,5.4vw,80px);}
html[lang="en"] h1,html[lang="en"] h2{font-size:clamp(40px,4.6vw,68px);line-height:1.08;}
h3{margin:0;font-family:var(--serif);font-weight:900;line-height:1.15;font-size:clamp(30px,3.2vw,46px);}
.copy p,.feature-copy p{margin:24px 0 0;font-size:clamp(17px,1.5vw,21px);line-height:1.7;font-weight:500;color:var(--light-soft);max-width:30em;}
.board[data-ink="moonwhite"] .copy p{color:rgba(31,42,56,.86);}
.more{display:inline-block;margin-top:18px;font-size:16px;font-weight:600;}

/* The App window, large and running off the edge; loupes sit on top in the window's own proportions. */
.stage{position:relative;z-index:2;margin-top:clamp(120px,19vh,220px);}
.shot{position:relative;width:135%;}
.shot>.window{width:100%;filter:drop-shadow(0 40px 70px rgba(10,5,0,.42)) drop-shadow(0 4px 12px rgba(10,5,0,.24));}
.loupe{position:absolute;z-index:3;padding:6px;border-radius:26px;background:rgba(255,255,255,.3);border:1px solid rgba(255,255,255,.75);
  -webkit-backdrop-filter:blur(8px) saturate(1.4);backdrop-filter:blur(8px) saturate(1.4);
  box-shadow:0 34px 70px rgba(10,5,0,.42),0 6px 16px rgba(10,5,0,.22);}
.loupe>.lens{border-radius:20px;overflow:hidden;background:#fff;}
.loupe>.lens>img{width:100%;}
.loupe.dark{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.45);}
.loupe.dark>.lens{background:#2A2A2E;}
.loupe.rows>.lens{display:flex;flex-direction:column;gap:10px;padding:16px 20px;}
.loupe.rows .row{display:flex;align-items:center;gap:12px;}
.loupe.rows .row span{flex:0 0 auto;width:4.6em;font-size:14px;font-weight:600;color:#8C7A5E;}
.loupe.rows .row img{flex:1 1 auto;min-width:0;}

/* Secondary features under a board's lead. */
.feature{display:grid;grid-template-columns:minmax(360px,40%) 1fr;align-items:center;margin-top:clamp(80px,12vh,140px);}
.feature-copy{position:relative;z-index:3;padding-left:var(--gutter);max-width:520px;}
.feature-media{position:relative;z-index:2;padding-right:var(--gutter);}
.card{border-radius:24px;overflow:hidden;padding:6px;background:rgba(255,255,255,.3);border:1px solid rgba(255,255,255,.75);
  -webkit-backdrop-filter:blur(8px) saturate(1.4);backdrop-filter:blur(8px) saturate(1.4);
  box-shadow:0 34px 70px rgba(10,5,0,.42),0 6px 16px rgba(10,5,0,.22);}
.card>.lens{border-radius:18px;overflow:hidden;background:#fff;}

/* Hero: the try-it line. */
.cta-row{display:flex;flex-wrap:wrap;align-items:center;gap:14px 18px;margin-top:34px;}
.store{display:inline-flex;align-items:center;gap:10px;min-height:52px;padding:0 24px;border-radius:999px;background:#fff;color:#141413;
  font-size:17px;font-weight:700;text-decoration:none;box-shadow:0 14px 30px rgba(60,10,0,.28);transition:transform .2s var(--ease),box-shadow .2s var(--ease);}
.store:hover{transform:translateY(-2px);box-shadow:0 18px 36px rgba(60,10,0,.32);}
.store svg{width:20px;height:20px;}
.meta{font-size:14px;opacity:.86;}
.try{margin-top:40px;max-width:440px;padding:18px 22px;border-radius:22px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.4);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);}
.try-line{display:flex;align-items:center;flex-wrap:wrap;column-gap:3px;min-height:44px;font-family:var(--serif);font-weight:700;font-size:clamp(20px,1.9vw,24px);
  cursor:pointer;border:0;background:none;color:inherit;padding:0;text-align:left;}
.try-line .tok{font-family:var(--mono);font-weight:500;color:#FFE1CF;opacity:0;width:0;overflow:hidden;transition:opacity .25s var(--ease);}
.try-line .caret{width:2px;height:1.15em;background:#fff;opacity:0;margin-left:2px;}
.try[data-editing="true"] .try-line .tok{opacity:1;width:1.25em;}
.try[data-editing="true"] .try-line .caret{opacity:1;animation:blink 1.06s steps(1) infinite;}
.try-note{margin:10px 0 0 !important;font-size:14px !important;line-height:1.6 !important;opacity:.86;}
@keyframes blink{50%{opacity:0;}}

/* Diagrams: the Markdown source beside the drawing. */
.source{margin-top:30px;max-width:460px;padding:22px 26px;border-radius:22px;background:rgba(6,34,25,.78);border:1px solid rgba(255,255,255,.2);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 30px 60px rgba(3,25,18,.45);
  font-family:var(--mono);font-size:15px;line-height:1.75;color:#E6F5EE;overflow-x:auto;}
.source>div{white-space:pre;}
.source .k{color:#7FD3AA;}

/* Papers: four sheets fanned out. */
.papers{position:relative;aspect-ratio:1.55/1;margin-right:var(--gutter);}
.papers figure{position:absolute;width:68%;margin:0;border-radius:16px;overflow:hidden;border:1px solid rgba(255,255,255,.6);
  box-shadow:0 30px 60px rgba(20,35,60,.3),0 4px 12px rgba(20,35,60,.16);transition:transform .5s var(--ease);}
.papers figure:nth-child(1){left:0;top:0;}
.papers figure:nth-child(2){left:10.5%;top:14%;}
.papers figure:nth-child(3){left:21%;top:28%;}
.papers figure:nth-child(4){left:31.5%;top:42%;}
.papers figcaption{position:absolute;top:10px;right:12px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;background:rgba(255,255,255,.85);color:#1F2A38;}
@media (hover:hover){.papers:hover figure:nth-child(2){transform:translate(4%,4%);} .papers:hover figure:nth-child(3){transform:translate(8%,8%);} .papers:hover figure:nth-child(4){transform:translate(12%,12%);}}

/* Files: the extension as a mark. */
.ext{position:absolute;left:var(--gutter);bottom:-0.1em;z-index:1;font-family:var(--mono);font-weight:500;font-size:clamp(120px,18vw,260px);line-height:1;
  letter-spacing:-.06em;color:rgba(255,244,236,.16);pointer-events:none;user-select:none;}

/* Closing: download. */
.finale{position:relative;z-index:3;text-align:center;margin:clamp(110px,16vh,180px) auto 0;padding:0 24px;max-width:720px;}
.finale img.icon{width:96px;height:96px;margin:0 auto 26px;filter:drop-shadow(0 16px 30px rgba(0,0,0,.45));}
.finale p{margin:18px auto 0;font-size:18px;line-height:1.7;color:var(--light-soft);}
.finale .cta-row{justify-content:center;}
.finale .text-button{background:none;border:0;color:inherit;font:inherit;font-size:16px;text-decoration:underline;text-underline-offset:5px;cursor:pointer;min-height:44px;padding:8px 4px;}
.finale .fine{font-size:14px;opacity:.82;}
.copy-status{min-height:1.6em;margin-top:6px;font-size:14px;}
.page-link{display:none;}
footer{position:relative;z-index:3;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:clamp(90px,12vh,140px);
  padding:22px var(--gutter);font-size:14px;border-top:1px solid rgba(255,255,255,.14);color:rgba(255,248,242,.8);}
footer .links{display:flex;gap:20px;}

/* Arrival: things settle in as their board scrolls into view. */
.has-js .reveal{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease),transform .9s var(--ease);}
.has-js .reveal.loupe,.has-js .reveal.card{transform:translateY(18px) scale(.96);}
.has-js .reveal.seen{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){
  .has-js .reveal{opacity:1;transform:none;transition:none;}
  .try[data-editing="true"] .try-line .caret{animation:none;}
  .papers figure{transition:none;}
}

/* Narrow screens: copy first, the App underneath, still running off the right edge. */
@media (max-width:1023px){
  .board{min-height:96vh;}
  .history-rows{left:2% !important;width:94% !important;top:12% !important;}
  .lead,.feature{grid-template-columns:1fr;}
  .copy,.feature-copy{padding-right:var(--gutter);max-width:640px;}
  .stage{margin-top:48px;padding-left:var(--gutter);}
  .shot{width:128%;}
  .feature-media{padding-left:var(--gutter);margin-top:36px;}
  .papers{margin:40px var(--gutter) 0;}
  .bar .tag{display:none;}
}
@media (max-width:560px){
  .loupe{padding:4px;border-radius:16px;}
  .loupe>.lens{border-radius:12px;}
  .loupe.rows>.lens{padding:10px 12px;gap:6px;}
  .loupe.rows .row span{font-size:11px;}
  .source{font-size:13px;padding:16px 18px;}
}
