/* Round three: the corner menu, the tools exhibit, the extras and the shared note. */

/* ── the corners: the logo top left; “get nōts” and the menu top right ── */
:root{--capsule:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 224 58' preserveAspectRatio='none'%3E%3Cpath d='M30 4C72 1 150 2 196 6C214 8 222 21 221 33C220 46 208 53 190 54C140 57 70 56 28 53C10 51 2 41 3 28C4 14 14 5 30 4Z' fill='%23F4F2EB'/%3E%3C/svg%3E")}
/* The lettering is the headline's: paper cut-out letters that hop when pointed at. */
.nw{display:inline-flex;align-items:baseline;font:26px/1 NotSmooth;letter-spacing:-.02em;white-space:pre}
.nw i{display:inline-block;font-style:normal;transform-origin:50% 85%}
.nw i.nw-o{display:inline-flex;line-height:0;white-space:normal}
.nw b{font-weight:400}
.nw-o svg{display:block;height:.796em;width:.616em;margin:0 -.01em 0 .05em;fill:currentColor;overflow:visible;transform:translateY(.006em)}
.nw-mac{transform-box:fill-box;transform-origin:50% 50%;transition:transform .45s cubic-bezier(.3,1.6,.5,1)}
@keyframes nw-hop{0%{transform:none}28%{transform:translateY(-.24em) scale(.94,1.1)}52%{transform:translateY(0) scale(1.1,.88)}72%{transform:translateY(-.05em) scale(.98,1.03)}100%{transform:none}}
a:hover>.nw i{animation:nw-hop .62s cubic-bezier(.3,.7,.4,1) both;animation-delay:calc(var(--i) * 38ms)}
a:hover>.nw .nw-mac{transform:translateY(-22%) rotate(-6deg)}

/* the logo: cut-out paper over the dark sections, ink over the light ones */
.site-logo{position:fixed;top:clamp(16px,2.4vw,30px);left:clamp(16px,2.6vw,38px);z-index:60;display:flex;align-items:center;height:56px}
.site-logo .nw{font-size:42px;color:var(--paper);text-shadow:0 .05em 0 #CFC7B3,0 .14em .2em rgba(3,22,92,.45);transition:color .3s ease}
.site-logo .nw svg{filter:drop-shadow(0 2px 0 #CFC7B3) drop-shadow(0 6px 8px rgba(3,22,92,.45))}
.site-logo[data-tone=light] .nw{color:var(--ink);text-shadow:0 .14em .2em rgba(28,41,73,.25)}
.site-logo[data-tone=light] .nw svg{filter:drop-shadow(0 6px 8px rgba(28,41,73,.25))}
/* at the footer the top bar steps aside (main.js sets .bar-away once the footer fills the upper half) */
.site-logo,.site-menu{transition:opacity .3s ease,transform .4s var(--ease),visibility 0s}
.bar-away .site-logo,.bar-away .site-menu{opacity:0;transform:translateY(-20px);visibility:hidden;transition:opacity .25s ease,transform .4s var(--ease),visibility 0s .4s}

/* “get nōts” and the menu: one soft paper capsule; the menu is two macrons */
.site-menu{position:fixed;top:clamp(16px,2.4vw,30px);right:clamp(16px,2.6vw,38px);z-index:60;display:flex;align-items:center;height:56px;padding:0 8px 0 24px}
.site-menu:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--capsule) center/100% 100% no-repeat;filter:drop-shadow(0 3px 0 #CFC7B3) drop-shadow(0 14px 16px rgba(3,22,92,.42))}
.site-menu:hover:before{animation:nw-squish .62s cubic-bezier(.3,.7,.4,1)}
@keyframes nw-squish{0%{transform:none}30%{transform:scale(1.05,.9)}58%{transform:scale(.98,1.05)}80%{transform:scale(1.01,.99)}100%{transform:none}}
.get-nots,.menu-button{position:relative;display:inline-flex;align-items:center;height:100%;padding:0;background:none;color:var(--ink)}
.get-nots .nw{padding-right:16px}
.get-nots:after{content:"";display:block;width:6px;height:34px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 6 40'%3E%3Cpath d='M3 2C4 12 2 26 3.5 38' fill='none' stroke='%23111' stroke-opacity='.28' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat}
.mb-macrons{display:flex;flex-direction:column;gap:5px;padding:0 14px 0 12px}
.mb-macrons svg{display:block;width:24px;height:9.5px;fill:var(--ink);transition:transform .4s cubic-bezier(.3,1.6,.5,1)}
.menu-button:hover .mb-macrons svg:first-child{transform:translateX(-3px) rotate(-6deg)}
.menu-button:hover .mb-macrons svg:last-child{transform:translateX(3px) rotate(5deg)}
.is-open .mb-macrons svg:first-child{transform:translateY(7px) rotate(40deg)}
.is-open .mb-macrons svg:last-child{transform:translateY(-7px) rotate(-40deg)}
.menu-panel{position:absolute;top:calc(100% + 10px);right:0;width:min(340px,calc(100vw - 28px));padding:10px;background:var(--paper);color:var(--ink);border-radius:8px 8px 34px 8px;box-shadow:0 30px 70px -24px rgba(3,18,70,.55),0 2px 8px rgba(3,18,70,.14);display:flex;flex-direction:column;transform-origin:calc(100% - 24px) -10px;opacity:0;visibility:hidden;transform:translateY(-6px) scale(.96);transition:opacity .18s ease,transform .3s var(--ease),visibility 0s .3s}
.is-open .menu-panel{opacity:1;visibility:visible;transform:none;transition:opacity .18s ease,transform .35s var(--ease)}
.menu-panel a{display:flex;align-items:center;gap:14px;padding:12px 14px;border-radius:6px;font:clamp(22px,6.5vw,29px)/1.1 NotSmooth;letter-spacing:-.02em;white-space:nowrap}
.menu-panel a:hover{background:#e8e5da;color:var(--deep-blue)}
.menu-panel img{width:22px;height:22px;transform:rotate(-9deg)}
.menu-language{display:flex;align-items:center;gap:8px;margin:8px 14px 0;padding:13px 0 11px;border-top:1px solid var(--edge)}
.menu-language button{flex:1;min-height:44px;padding:10px 8px;background:#e8e5da;border-radius:3px 3px 12px 3px;color:var(--ink);font:800 15px/1 Manrope;transition:background .18s var(--ease),color .18s var(--ease)}
.menu-language button[aria-pressed=true]{background:var(--deep-blue);color:var(--paper)}
.menu-language button:hover:not([aria-pressed=true]){background:#d9d5c7}
/* the footer's call to action: Apple's App Store badge, used as supplied. It stands on the
   heading's first line, on the same right edge as the © line below */
.footer-top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 40px;align-items:start}
.footer-top h2{grid-area:1/1;align-self:start;align-self:first baseline}
.release-info{display:contents}
.store-badge{display:block;grid-area:1/2;justify-self:end;align-self:start;align-self:first baseline;line-height:0;border-radius:9px;transition:transform .3s var(--ease)}
.store-badge img{display:block;width:168px;height:56px}
.store-badge[href]:hover{transform:translateY(-2px)}
.store-badge[href]:focus-visible{outline:3px solid var(--blue-light);outline-offset:4px}
/* the wordmark starts where “Never learn…” starts, ink to ink: the n and the M carry .067em and
   .072em of side bearing (the second term follows .footer h2's size) */
.footer-wordmark{text-align:left;margin-left:calc(.072 * clamp(50px,6vw,90px) - .067em)}
@media (max-width:700px){
  .site-logo,.site-menu{height:50px}
  .footer-top{grid-template-columns:minmax(0,1fr)}
  .store-badge{grid-area:2/1;justify-self:start;align-self:start;margin-top:34px}
  .footer-wordmark{margin-left:calc(.072 * 47px - .067em)}
  .site-logo .nw{font-size:34px}
  .site-menu{padding-left:20px}
  .site-menu .nw{font-size:22px}
}
@media (prefers-reduced-motion:reduce){
  .menu-panel,.is-open .menu-panel,.nw-mac,.mb-macrons svg{transition:none}
  a:hover>.nw i,.site-menu:hover:before{animation:none}
  .store-badge{transition:none}
  .site-logo,.site-menu,.bar-away .site-logo,.bar-away .site-menu{transform:none;transition:none}
}

/* ── the tools: one fixed stage, a short demo per tool ─── */
/* Every description shares one grid cell, so switching tools never moves the page. */
.brush-exhibit{grid-template-columns:240px minmax(0,1fr);gap:4.5%}
.brush-catalog{gap:4px;padding-top:0}
.brush-catalog button{display:flex;align-items:center;gap:15px;padding:11px 14px;border-radius:8px 8px 20px 8px;opacity:.6;font-size:18px;transition:opacity .2s ease,background-color .2s ease}
.brush-catalog button:hover{opacity:.9}
.brush-catalog button[aria-selected=true]{opacity:1;background:var(--white);color:var(--deep-blue);box-shadow:0 1px 0 var(--edge),0 12px 26px -18px rgba(28,41,73,.45)}
.brush-catalog img{width:28px;height:28px}
.tool-name{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15;font-weight:800}
.tool-name small{margin-top:3px;font-size:12.5px;font-weight:700;color:var(--muted)}
.tool-stage{position:relative;height:440px;border:1px solid var(--edge);border-radius:16px 16px 40px 16px;overflow:hidden;background:#fcfbf7 radial-gradient(circle,#d9dbd3 1.15px,transparent 1.5px) 0 0/24px 24px}
#brush-sample{display:block;width:100%;height:100%}
.tool-copy{display:grid;margin-top:30px}
.tool-info{grid-area:1/1;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto 1fr;gap:14px 44px;visibility:hidden;opacity:0;transition:opacity .25s ease,visibility 0s .25s}
.tool-info.is-active{visibility:visible;opacity:1;transition:opacity .25s ease}
.tool-info h3{grid-row:1/3;margin:0;font:32px/1.12 NotSmooth;letter-spacing:-.03em}
.tool-info p{margin:0;font-size:16px;line-height:1.6}
.tool-facts{display:flex;flex-wrap:wrap;align-content:flex-start;gap:8px;margin:0;padding:0;list-style:none}
.tool-facts li{padding:6px 12px;border-radius:999px;background:#e3ebfb;color:var(--deep-blue);font-size:12px;font-weight:800}
@media (max-width:1000px){
  .brush-exhibit{grid-template-columns:190px minmax(0,1fr)}
  .tool-name small{font-size:11.5px}
  .tool-stage{height:380px}
  .tool-info{grid-template-columns:1fr;gap:12px}
  .tool-info h3{grid-row:auto}
}
@media (max-width:700px){
  .brush-catalog button{flex-direction:column;gap:6px;padding:8px 2px;border-radius:8px;font-size:11px}
  .brush-catalog img{width:26px;height:26px}
  .tool-name{align-items:center}
  .tool-name small{display:none}
  .tool-stage{height:auto;aspect-ratio:16/11;margin-top:14px;border-radius:12px 12px 28px 12px}
  .tool-copy{margin-top:22px}
  .tool-info h3{font-size:27px}
  .tool-info p{font-size:14.5px}
}
@media (prefers-reduced-motion:reduce){.tool-info,.tool-info.is-active{transition:none}}

/* ── the extras: stacked panes, each a looping product view ── */
#module-detail{display:grid}
.module-pane{grid-area:1/1;min-width:0;visibility:hidden;opacity:0;transition:opacity .25s ease,visibility 0s .25s}
.module-pane.is-active{visibility:visible;opacity:1;transition:opacity .25s ease}
.module-pane .product-module{position:relative;height:480px;min-height:0}
.module-explanation{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px 7%;padding-top:30px;align-items:start}
.module-explanation h3{margin:0 0 12px;font:30px/1.12 NotSmooth;letter-spacing:-.03em}
.module-explanation p{margin:0;font-size:15px;line-height:1.65}
.x-steps{display:grid;gap:9px;margin:0 0 14px;padding:0;list-style:none;counter-reset:step}
.x-steps li{display:flex;align-items:center;gap:12px;font-size:14px;font-weight:750;line-height:1.35;counter-increment:step}
.x-steps li:before{content:counter(step);flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--blue);color:#fff;font-size:12px;font-weight:800}
.module-explanation .module-fineprint{font-size:11px;line-height:1.6;color:var(--muted)}
/* labels that narrate each loop */
.x-tag{position:absolute;z-index:6;padding:7px 13px 8px;border-radius:5px 5px 16px 5px;background:var(--ink);color:var(--paper);font-size:12.5px;font-weight:750;line-height:1.2;white-space:nowrap;pointer-events:none;opacity:0}
/* handwriting on the example pages */
.x-hand{margin:0 0 9px;font:22px/1.25 NotSmooth;letter-spacing:-.01em;color:var(--ink)}
.x-hand-title{margin:14px 0 16px;font-size:30px;color:var(--blue)}
.x-hand-dim{color:#858c87}
.x-hand-svg{font:26px NotSmooth;fill:var(--blue)}
.x-box{flex:none;width:28px;height:28px;fill:none;stroke:var(--ink);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;overflow:visible}
.x-box path{stroke-dasharray:1 1}
.x-box-frame{stroke-dashoffset:0}
.x-box-tick{stroke:var(--blue);stroke-width:2.6;stroke-dashoffset:1}
.x-box.is-ticked .x-box-tick{stroke-dashoffset:0}

/* calculator: the note's function is picked up, solved and plotted */
.x-mark{padding:0 4px;margin:0 -4px;background:linear-gradient(#e2f896,#e2f896) no-repeat 0 62%/100% 70%}
.x-calc-1{left:300px;top:186px}
.x-calc-2{right:22px;top:72px}
.module-calculator .x-plot{stroke-dasharray:1 1;stroke-dashoffset:0}
.is-active .module-calculator .x-mark{animation:x-mark 7s infinite}
.is-active .module-calculator .x-entry{animation:x-entry 7s infinite}
.is-active .module-calculator .x-plot{animation:x-plot 7s infinite}
.is-active .module-calculator .x-plot-dot{animation:x-plot-dot 7s infinite}
.is-active .module-calculator .x-result{animation:x-result 7s infinite}
.is-active .x-calc-1{animation:x-show 7s infinite;--a:4%;--b:34%}
.is-active .x-calc-2{animation:x-show-2 7s infinite}
@keyframes x-mark{0%,4%{background-size:0% 70%}16%,88%{background-size:100% 70%}96%,100%{background-size:0% 70%}}
@keyframes x-entry{0%,18%{opacity:.25;background:transparent}24%{opacity:1;background:#e3ebfb}40%,90%{opacity:1;background:transparent}97%,100%{opacity:.25}}
@keyframes x-plot{0%,28%{stroke-dashoffset:1}50%,90%{stroke-dashoffset:0}97%,100%{stroke-dashoffset:1}}
@keyframes x-plot-dot{0%,50%{opacity:0}55%,90%{opacity:1}97%,100%{opacity:0}}
@keyframes x-result{0%,54%{opacity:.2}60%,90%{opacity:1}97%,100%{opacity:.2}}
@keyframes x-show{0%,4%{opacity:0;transform:translateY(6px)}9%,30%{opacity:1;transform:none}35%,100%{opacity:0;transform:translateY(-4px)}}
@keyframes x-show-2{0%,30%{opacity:0;transform:translateY(6px)}35%,86%{opacity:1;transform:none}91%,100%{opacity:0;transform:translateY(-4px)}}
@keyframes x-show-3{0%,57%{opacity:0;transform:translateY(6px)}61%,88%{opacity:1;transform:none}92%,100%{opacity:0;transform:translateY(-4px)}}

/* todos: draw a box → it becomes a task → tick it in the list, the note follows */
.x-hand-note{padding-top:28px}
.x-hand-task{display:flex;align-items:center;gap:11px;margin:14px 0;font:22px/1.2 NotSmooth;color:var(--ink)}
.x-hand-task.is-done span{color:#8a918c;text-decoration:line-through 2px}
.x-due{padding:6px 10px;border-radius:999px;background:#e3ebfb;color:var(--deep-blue);font:normal 800 11px/1 Manrope;opacity:0}
.x-tasks .module-panel-title{margin-bottom:10px}
.x-task{display:flex;align-items:flex-start;gap:11px;margin:0 -12px 4px;padding:10px 12px;border-radius:8px}
.x-task i{flex:none;display:grid;place-items:center;width:17px;height:17px;margin-top:1px;border:1.6px solid #9aa39e;border-radius:5px}
.x-task i svg{width:12px;height:12px;fill:none;stroke:#fff;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.x-task i svg path{stroke-dasharray:1 1;stroke-dashoffset:0}
.x-task strong{display:block;font-size:13px;line-height:1.3}
.x-task span{font-size:10px;color:var(--preview-blue)}
.x-task.is-done i{background:var(--blue);border-color:var(--blue)}
.x-task.is-done strong{color:#8a918c;text-decoration:line-through}
.x-task.is-new i svg path{stroke-dashoffset:1}
.x-todo-1{left:40px;bottom:58px}
.x-todo-2{right:20px;top:64px}
.x-todo-3{left:50%;bottom:18px;transform:translateX(-50%)}
.module-todos .x-hand-task.is-new .x-due{opacity:1}
.is-active .module-todos .x-draw .x-box-frame{animation:x-draw-box 9s infinite}
.is-active .module-todos .x-draw{animation:x-recognise 9s infinite}
.is-active .module-todos .x-draw .x-box-tick{animation:x-note-tick 9s infinite}
.is-active .module-todos .x-due{animation:x-due 9s infinite}
.is-active .module-todos .x-task.is-new{animation:x-new-task 9s infinite}
.is-active .module-todos .x-task.is-new i{animation:x-tick-box 9s infinite}
.is-active .module-todos .x-task.is-new i svg path{animation:x-tick 9s infinite}
.is-active .module-todos .x-task.is-new strong{animation:x-strike 9s infinite}
.is-active .module-todos .x-hand-task.is-new span{animation:x-fade-done 9s infinite}
.is-active .x-todo-1{animation:x-show 9s infinite}
.is-active .x-todo-2{animation:x-show-2b 9s infinite}
.is-active .x-todo-3{animation:x-show-3c 9s infinite}
@keyframes x-draw-box{0%,6%{stroke-dashoffset:1}18%,92%{stroke-dashoffset:0}97%,100%{stroke-dashoffset:1}}
@keyframes x-recognise{0%,19%{stroke:var(--ink);filter:none}22%{stroke:var(--blue);filter:drop-shadow(0 0 5px rgba(22,105,232,.6))}30%,92%{stroke:var(--blue);filter:none}97%,100%{stroke:var(--ink)}}
@keyframes x-due{0%,21%{opacity:0;transform:scale(.6)}25%,92%{opacity:1;transform:none}97%,100%{opacity:0}}
@keyframes x-new-task{0%,30%{opacity:0;transform:translateX(-12px);background:#e3ebfb}35%{opacity:1;transform:none;background:#e3ebfb}52%,92%{opacity:1;background:transparent}97%,100%{opacity:0}}
@keyframes x-tick-box{0%,58%{background:transparent;border-color:#9aa39e}60%,92%{background:var(--blue);border-color:var(--blue)}97%,100%{background:transparent;border-color:#9aa39e}}
@keyframes x-tick{0%,58%{stroke-dashoffset:1}62%,92%{stroke-dashoffset:0}97%,100%{stroke-dashoffset:1}}
@keyframes x-strike{0%,60%{color:var(--ink);text-decoration-color:transparent}64%,92%{color:#8a918c;text-decoration-color:currentColor}97%,100%{color:var(--ink);text-decoration-color:transparent}}
@keyframes x-note-tick{0%,64%{stroke-dashoffset:1}72%,92%{stroke-dashoffset:0}97%,100%{stroke-dashoffset:1}}
@keyframes x-fade-done{0%,70%{color:var(--ink)}74%,92%{color:#8a918c}97%,100%{color:var(--ink)}}
@keyframes x-show-2b{0%,30%{opacity:0;transform:translateY(6px)}34%,55%{opacity:1;transform:none}59%,100%{opacity:0;transform:translateY(-4px)}}
@keyframes x-show-3c{0%,57%{opacity:0;transform:translate(-50%,6px)}61%,88%{opacity:1;transform:translate(-50%,0)}92%,100%{opacity:0;transform:translate(-50%,-4px)}}
.x-task.is-new strong{text-decoration:line-through;text-decoration-color:transparent}

/* calendar: notes on their days; one is dragged to the day it's due */
.module-calendar .calendar-topline{padding:24px 28px 18px}
.x-week{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding:0 28px;height:calc(100% - 118px)}
.x-day{display:flex;flex-direction:column;gap:10px;min-width:0;padding-top:12px;border-top:1px solid var(--preview-rule)}
.x-day .calendar-date{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}
.x-day .calendar-date span{font-size:9px;font-weight:750;letter-spacing:.08em;color:var(--preview-muted)}
.x-day .calendar-date strong{font-size:20px}
.x-card{position:relative;flex:none;height:112px;padding:12px 12px 10px;border:1px solid var(--preview-rule);border-radius:6px 6px 18px 6px;background:#fff;box-shadow:0 1px 0 rgba(28,41,73,.04);overflow:hidden}
.x-card b{display:block;font:19px/1.05 NotSmooth;color:var(--blue);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.x-card small{display:block;margin-top:3px;font-size:9.5px;color:var(--preview-muted)}
.x-lines{display:block;width:100%;height:34px;margin-top:10px;fill:none;stroke:#b7c0cb;stroke-width:2.4;stroke-linecap:round;vector-effect:non-scaling-stroke}
.x-lines path{vector-effect:non-scaling-stroke}
.x-slot{flex:none;height:112px;border:1.5px dashed transparent;border-radius:6px 6px 18px 6px}
.x-move{z-index:3}
.x-cal-1{left:28px;bottom:18px}
.x-cal-2{left:28px;bottom:18px}
.is-active .module-calendar .x-move{animation:x-drag 8s infinite}
.is-active .module-calendar .x-slot{animation:x-slot 8s infinite}
.is-active .module-calendar .x-target .calendar-date strong{animation:x-target 8s infinite}
.is-active .x-cal-1{animation:x-show-c1 8s infinite}
.is-active .x-cal-2{animation:x-show-c2 8s infinite}
@keyframes x-drag{0%,12%{transform:none;box-shadow:0 1px 0 rgba(28,41,73,.04)}17%{transform:translateY(-6px) rotate(-2.5deg) scale(1.05);box-shadow:0 22px 40px -18px rgba(28,41,73,.45)}46%{transform:translate(calc(200% + 24px),calc(100% + 4px)) rotate(-2.5deg) scale(1.05);box-shadow:0 22px 40px -18px rgba(28,41,73,.45)}52%,86%{transform:translate(calc(200% + 24px),calc(100% + 10px));box-shadow:0 1px 0 rgba(28,41,73,.04);opacity:1}92%{transform:translate(calc(200% + 24px),calc(100% + 10px));opacity:0}93%{transform:none;opacity:0}100%{transform:none;opacity:1}}
@keyframes x-slot{0%,15%{border-color:transparent;background:transparent}20%,48%{border-color:var(--blue);background:#eef3fd}53%,100%{border-color:transparent;background:transparent}}
@keyframes x-target{0%,48%{color:var(--ink)}53%,88%{color:var(--blue)}94%,100%{color:var(--ink)}}
@keyframes x-show-c1{0%,2%{opacity:0;transform:translateY(6px)}6%,13%{opacity:1;transform:none}16%,100%{opacity:0;transform:translateY(-4px)}}
@keyframes x-show-c2{0%,17%{opacity:0;transform:translateY(6px)}21%,80%{opacity:1;transform:none}85%,100%{opacity:0;transform:translateY(-4px)}}

/* ruler: placed along the base, turned to 30°, the third side drawn along it */
.x-ruler-note{padding:26px 30px 0}
.x-q{font-size:21px}
.x-geo{display:block;width:100%;height:330px;margin-top:4px;overflow:visible}
.x-ruler{transform-box:view-box;transform-origin:160px 262px;transform:rotate(-30deg);opacity:0}
.x-hyp,.x-angle{stroke-dasharray:1 1;stroke-dashoffset:0}
.x-rul-1{left:30px;bottom:22px}
.x-rul-2{left:30px;bottom:22px}
.is-active .module-ruler .x-ruler{animation:x-turn 8s infinite}
.is-active .module-ruler .x-readout{animation:x-readout 8s infinite}
.is-active .module-ruler .x-hyp{animation:x-hyp 8s infinite}
.is-active .module-ruler .x-angle{animation:x-arc 8s infinite}
.is-active .module-ruler .x-angle-label{animation:x-arc-label 8s infinite}
.is-active .x-rul-1{animation:x-show-r1 8s infinite}
.is-active .x-rul-2{animation:x-show-r2 8s infinite}
@keyframes x-turn{0%{transform:none;opacity:0}5%,8%{transform:none;opacity:1}22%,48%{transform:rotate(-30deg);opacity:1}55%,92%{transform:rotate(-30deg);opacity:0}93%,100%{transform:none;opacity:0}}
@keyframes x-readout{0%,18%{opacity:0}22%,100%{opacity:1}}
@keyframes x-hyp{0%,26%{stroke-dashoffset:1}46%,92%{stroke-dashoffset:0;opacity:1}97%{stroke-dashoffset:0;opacity:0}98%,100%{stroke-dashoffset:1;opacity:1}}
@keyframes x-arc{0%,55%{stroke-dashoffset:1}61%,92%{stroke-dashoffset:0;opacity:1}97%{opacity:0}98%,100%{stroke-dashoffset:1;opacity:1}}
@keyframes x-arc-label{0%,58%{opacity:0}62%,92%{opacity:1}97%,100%{opacity:0}}
@keyframes x-show-r1{0%,4%{opacity:0;transform:translateY(6px)}8%,22%{opacity:1;transform:none}25%,100%{opacity:0;transform:translateY(-4px)}}
@keyframes x-show-r2{0%,26%{opacity:0;transform:translateY(6px)}30%,64%{opacity:1;transform:none}68%,100%{opacity:0;transform:translateY(-4px)}}

/* zen: the interface steps aside, the page stays */
.module-zen{background:#e9ebe6}
.x-zen{position:absolute;inset:0;overflow:hidden;background:#e9ebe6;transition:background-color .6s ease}
.x-zen-bar,.x-zen-side,.x-zen-rail,.x-zen-foot{position:absolute;transition:transform .6s var(--ease),opacity .45s ease}
.x-zen-bar{left:0;right:0;top:0;height:52px;display:flex;align-items:center;gap:18px;padding:0 128px 0 22px;background:#fff;border-bottom:1px solid var(--preview-rule)}
.x-zen-bar img{width:16px;height:16px;opacity:.8}
.x-zen-bar span{margin:0 auto;font-size:11px;color:var(--preview-muted)}
.x-zen-side{left:0;top:52px;bottom:34px;width:96px;display:flex;flex-direction:column;gap:12px;padding:16px 18px;background:#f6f7f5;border-right:1px solid var(--preview-rule)}
.x-zen-side i{display:block;height:74px;border:1px solid #d3d8d5;border-radius:4px;background:#fff linear-gradient(#e2e6ea,#e2e6ea) no-repeat 9px 14px/50% 3px}
.x-zen-side i.is-on{border:2px solid var(--blue)}
.x-zen-rail{right:16px;top:50%;display:flex;flex-direction:column;align-items:center;gap:14px;padding:14px 10px;margin-top:-6px;border-radius:30px;background:#fff;box-shadow:0 10px 26px -14px rgba(28,41,73,.45);translate:0 -50%}
.x-zen-rail img{width:20px;height:20px}
.x-zen-rail b{width:18px;height:18px;border-radius:50%;background:var(--blue)}
.x-zen-page{position:absolute;left:122px;right:86px;top:74px;bottom:54px;padding:22px 34px;border-radius:4px;background:#fff;box-shadow:0 1px 2px rgba(28,41,73,.08);transition:transform .6s var(--ease),box-shadow .6s ease}
.x-zen-page .x-hand{font-size:24px}
.x-zen-page .x-hand-title{font-size:32px}
.x-zen-foot{left:96px;right:0;bottom:0;height:34px;display:flex;align-items:center;justify-content:center;gap:28px;background:#f6f7f5;border-top:1px solid var(--preview-rule);font-size:10px;color:var(--preview-muted)}
.x-zen-note{position:absolute;left:50%;bottom:62px;z-index:4;padding:7px 13px 8px;border-radius:5px 5px 16px 5px;background:var(--ink);color:var(--paper);font-size:12.5px;font-weight:750;white-space:nowrap;translate:-50% 0;transition:opacity .4s ease}
.x-zen-on{opacity:0}
.x-zen-switch{position:absolute;right:14px;top:10px;z-index:7;display:flex;align-items:center;gap:9px;height:32px;padding:0 13px 0 8px;border-radius:999px;background:var(--ink);color:var(--paper);font-size:12px;font-weight:800}
.x-switch{position:relative;width:30px;height:18px;border-radius:9px;background:#5b5f5a;transition:background-color .3s ease}
.x-switch i{position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:transform .3s var(--ease)}
.is-zen{background:#f1efe8}
.is-zen .x-zen-bar{transform:translateY(-100%);opacity:0}
.is-zen .x-zen-side{transform:translateX(-100%);opacity:0}
.is-zen .x-zen-rail{transform:translateX(140%);opacity:0}
.is-zen .x-zen-foot{transform:translateY(100%);opacity:0}
.is-zen .x-zen-page{transform:translate(-18px,-30px) scale(1.07);box-shadow:0 30px 60px -30px rgba(28,41,73,.35)}
.is-zen .x-zen-off{opacity:0}
.is-zen .x-zen-on{opacity:1}
.is-zen .x-switch{background:var(--blue)}
.is-zen .x-switch i{transform:translateX(12px)}

/* the loops rest when motion is paused; reduced motion shows each one finished */
.motion-paused .module-pane *{animation-play-state:paused!important}
@media (prefers-reduced-motion:reduce){
  .module-pane *{animation:none!important}
  .x-tag{display:none}
  .x-zen *{transition:none!important}
}
@media (max-width:1000px){
  .x-calc-1{left:auto;right:calc(48% + 14px);top:auto;bottom:30px}
  .x-week{gap:8px;padding:0 18px}
  .x-card{padding:10px 9px}
  .x-card b{font-size:16px}
  .module-explanation{grid-template-columns:1fr}
}
@media (max-width:700px){
  .module-pane .product-module{height:440px}
  .module-explanation{display:grid;padding-top:24px}
  .module-explanation h3{font-size:26px}
  .x-tag{font-size:11px;padding:6px 10px 7px}
}

/* ── together: one shared assignment, three people writing at once ── */
.shared-workspace{padding:0;overflow:hidden;border-radius:15px 15px 40px 15px}
#shared-note{display:block;width:100%;height:auto}
.together-caption p:first-child{font-size:16px;line-height:1.6}
@media (max-width:700px){
  .shared-workspace{padding:0;border-radius:12px 12px 28px 12px}
  .together-caption p:first-child{font-size:14px}
  .together-caption br{display:none}
}

/* ── the extras on phones: one column, fewer words, same stories ── */
@media (max-width:700px){
  .x-tag{left:0!important;right:0!important;top:auto!important;bottom:12px!important;width:max-content;margin:0 auto;transform:none}
  @keyframes x-show-3c{0%,57%{opacity:0}61%,88%{opacity:1}92%,100%{opacity:0}}
  /* todos: the note on top, the task list below */
  .x-todo{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .x-hand-note{padding:16px 18px 6px}
  .x-hand-note .x-hand:not(.x-hand-title){display:none}
  .x-hand-note .x-hand-title{margin:8px 0 6px;font-size:22px}
  .x-hand-task{margin:8px 0;font-size:17px;gap:8px}
  .x-box{width:22px;height:22px}
  .x-due{font-size:10px;padding:5px 8px}
  .x-tasks{padding:12px 18px;border-left:0;border-top:1px solid var(--preview-rule)}
  .x-tasks .module-panel-title{margin-bottom:4px}
  .x-tasks .task-section-label{margin:8px 0 4px}
  .x-tasks .task-section-label:nth-last-of-type(1),.x-task.is-done{display:none}
  .x-task{padding:6px 12px}
  /* zen: a slimmer frame around the same page */
  .x-zen-bar{gap:14px;padding:0 96px 0 14px}
  .x-zen-bar span,.x-zen-bar img:nth-of-type(n+4){display:none}
  .x-zen-side{width:52px;padding:12px 9px;gap:9px}
  .x-zen-side i{height:46px}
  .x-zen-rail{right:8px;gap:11px;padding:11px 8px}
  .x-zen-rail img{width:16px;height:16px}
  .x-zen-rail b{width:14px;height:14px}
  .x-zen-page{left:64px;right:52px;top:66px;bottom:46px;padding:16px 16px}
  .x-zen-page .x-hand{font-size:16px}
  .x-zen-page .x-hand-title{margin:8px 0 10px;font-size:21px}
  .x-zen-foot{left:52px;gap:16px}
  .x-zen-note{bottom:54px}
  .x-zen-switch{right:8px}
  .is-zen .x-zen-page{transform:translate(-6px,-26px) scale(1.04)}
  /* calendar: three days are enough to see the drag */
  .x-week{grid-template-columns:repeat(3,minmax(0,1fr));padding:0 16px}
  .x-day:nth-child(-n+2){display:none}
  .module-calendar .calendar-topline{padding:18px 16px 14px}
  .x-card{height:104px;padding:10px 9px}
  .x-card b{font-size:14.5px}
  .x-slot{height:104px}
  /* ruler */
  .x-ruler-note{padding:18px 18px 0}
  .x-q{font-size:17px}
  .x-geo{height:300px}
}

/* ── the iPad view: just the title and its two buttons ── */
.studio-caption{justify-content:flex-end}

/* ── the recording: level with its heading; the player tucked onto its note ── */
.audio-section{align-items:start}
.audio-artifact{padding-top:6px}
.recording-link{display:none}
.recorded-moment{position:relative;z-index:2;margin:-54px -4% 0 34%;box-shadow:0 30px 50px -26px rgba(2,20,70,.75)}
@media (max-width:700px){
  .recorded-moment{margin:-34px -2% 0 12%}
}

/* ── together: the three voices of the shared note, written as you arrive ── */
.together-heading .voices{display:flex;flex-direction:column;align-items:flex-start;gap:6px;width:auto;margin:0 4% 8px 0;font-size:inherit;line-height:inherit}
.voice{position:relative;display:inline-block;font:31px/1.18 NotSmooth;letter-spacing:-.02em}
.voice:nth-child(1){color:#1669e8;transform:rotate(-1.4deg)}
.voice:nth-child(2){color:#c4532c;margin-left:7%;transform:rotate(1deg)}
.voice:nth-child(3){color:#23855a;transform:rotate(-.6deg)}
.voice:after{content:attr(data-who);position:absolute;left:100%;top:-2px;margin-left:8px;padding:3px 8px 4px;border-radius:3px 9px 9px 9px;background:currentColor;font:800 10.5px/1.2 Manrope;letter-spacing:0;white-space:nowrap;-webkit-text-fill-color:#fff}
/* written out live, one voice after the other, once the section is in view */
.voices.is-live .voice{animation:voice-write .9s cubic-bezier(.4,0,.2,1) both}
.voices.is-live .voice:nth-child(2){animation-delay:.75s}
.voices.is-live .voice:nth-child(3){animation-delay:1.5s}
.voices.is-live .voice:after{animation:voice-tag .9s cubic-bezier(.4,0,.2,1) both;animation-delay:inherit}
@keyframes voice-write{from{clip-path:inset(-80% 100% -20% 0)}to{clip-path:inset(-80% -40% -20% 0)}}
@keyframes voice-tag{0%,60%{opacity:0;transform:translateY(4px)}100%{opacity:1;transform:none}}
.voices:not(.is-live) .voice{clip-path:inset(-80% 100% -20% 0)}
html:not(.journey-ready) .voices .voice{clip-path:none}
@media (max-width:700px){
  .together-heading .voices{gap:16px;margin-top:26px}
  .voice{font-size:24px}
  .voice:nth-child(2){margin-left:5%}
  .voice:after{left:0;top:-15px;margin-left:0;font-size:9.5px;padding:2px 7px 3px}
}
@media (prefers-reduced-motion:reduce){
  .voices .voice,.voices.is-live .voice{clip-path:none;animation:none}
  .voices.is-live .voice:after{animation:none}
}

/* ── the extras are add-ons; more are coming ── */
.module-side{display:flex;flex-direction:column;gap:14px;min-width:0}
.module-more{display:flex;align-items:center;gap:10px;margin:2px 0 0;padding:10px 12px;border:1.5px dashed #c9cbc2;border-radius:8px 8px 18px 8px;color:var(--muted);font-size:12.5px;font-weight:750;line-height:1.3}
.module-more b{flex:none;display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#e3ebfb;color:var(--deep-blue);font-size:15px;line-height:1}
@media (max-width:700px){
  .module-more{margin:-8px 0 20px;justify-content:center}
}
.module-opening>span{display:inline-flex;align-items:center;gap:9px;grid-column:1/-1;justify-self:start;margin:0 0 -4px;padding:6px 13px 6px 8px;border-radius:999px;background:#e3ebfb;color:var(--deep-blue);font-size:12.5px;font-weight:800;letter-spacing:.01em}
.module-opening>span:before{content:"";flex:none;width:24px;height:14px;border-radius:7px;background:var(--blue) radial-gradient(circle at 17px 7px,#fff 0 4.6px,transparent 5.2px)}
@media (max-width:700px){
  .module-opening>span{margin-bottom:18px}
}

/* ── the scrubbed opening gets a longer runway: the macron's edit is scrolled, not played ── */
@media (prefers-reduced-motion:no-preference){
  .journey-ready.opening-scrub .hero-scroll{height:680svh}
}
