*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:DM Sans,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}body,html{overflow-x:hidden}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.invisible{visibility:hidden}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.top-10{top:2.5rem}.isolate{isolation:isolate}.col-span-2{grid-column:span 2/span 2}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-auto{margin-left:auto;margin-right:auto}.-ml-4{margin-left:-1rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-5{margin-left:1.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-10{margin-top:2.5rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1\.5{height:.375rem}.h-11{height:2.75rem}.h-2{height:.5rem}.h-5{height:1.25rem}.h-9{height:2.25rem}.h-full{height:100%}.min-h-\[1rem\]{min-height:1rem}.min-h-\[44px\]{min-height:44px}.min-h-screen{min-height:100vh}.w-0{width:0}.w-11{width:2.75rem}.w-16{width:4rem}.w-2{width:.5rem}.w-3{width:.75rem}.w-5{width:1.25rem}.w-9{width:2.25rem}.w-full{width:100%}.min-w-0{min-width:0}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-\[minmax\(80px\2c auto\)_minmax\(0\2c 1fr\)_minmax\(40px\2c auto\)_minmax\(72px\2c auto\)_minmax\(40px\2c auto\)\]{grid-template-columns:minmax(80px,auto) minmax(0,1fr) minmax(40px,auto) minmax(72px,auto) minmax(40px,auto)}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-5{-moz-column-gap:1.25rem;column-gap:1.25rem}.gap-y-0{row-gap:0}.gap-y-0\.5{row-gap:.125rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.space-y-12>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(3rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(3rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-zee-border\/60>:not([hidden])~:not([hidden]){border-color:hsla(36,18%,89%,.6)}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0}.border-y{border-top-width:1px}.border-b,.border-y{border-bottom-width:1px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-sky-200{--tw-border-opacity:1;border-color:rgb(186 230 253/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-violet-200{--tw-border-opacity:1;border-color:rgb(221 214 254/var(--tw-border-opacity,1))}.border-zee-border{--tw-border-opacity:1;border-color:rgb(232 228 222/var(--tw-border-opacity,1))}.border-zee-border\/40{border-color:hsla(36,18%,89%,.4)}.border-zee-border\/50{border-color:hsla(36,18%,89%,.5)}.border-zee-border\/60{border-color:hsla(36,18%,89%,.6)}.border-zee-border\/80{border-color:hsla(36,18%,89%,.8)}.border-zee-gold\/30{border-color:rgba(196,154,26,.3)}.border-zee-gold\/40{border-color:rgba(196,154,26,.4)}.border-zee-muted\/30{border-color:hsla(0,0%,42%,.3)}.border-zee-primary{--tw-border-opacity:1;border-color:rgb(26 107 98/var(--tw-border-opacity,1))}.border-zee-primary\/20{border-color:rgba(26,107,98,.2)}.border-zee-primary\/30{border-color:rgba(26,107,98,.3)}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-sky-50{--tw-bg-opacity:1;background-color:rgb(240 249 255/var(--tw-bg-opacity,1))}.bg-transparent{background-color:transparent}.bg-violet-50{--tw-bg-opacity:1;background-color:rgb(245 243 255/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/50{background-color:hsla(0,0%,100%,.5)}.bg-zee-bg{--tw-bg-opacity:1;background-color:rgb(250 248 244/var(--tw-bg-opacity,1))}.bg-zee-border{--tw-bg-opacity:1;background-color:rgb(232 228 222/var(--tw-bg-opacity,1))}.bg-zee-border\/20{background-color:hsla(36,18%,89%,.2)}.bg-zee-border\/30{background-color:hsla(36,18%,89%,.3)}.bg-zee-border\/40{background-color:hsla(36,18%,89%,.4)}.bg-zee-gold{--tw-bg-opacity:1;background-color:rgb(196 154 26/var(--tw-bg-opacity,1))}.bg-zee-gold\/15{background-color:rgba(196,154,26,.15)}.bg-zee-gold\/5{background-color:rgba(196,154,26,.05)}.bg-zee-muted{--tw-bg-opacity:1;background-color:rgb(107 107 107/var(--tw-bg-opacity,1))}.bg-zee-muted\/20{background-color:hsla(0,0%,42%,.2)}.bg-zee-primary{--tw-bg-opacity:1;background-color:rgb(26 107 98/var(--tw-bg-opacity,1))}.bg-zee-primary\/10{background-color:rgba(26,107,98,.1)}.bg-zee-primary\/5{background-color:rgba(26,107,98,.05)}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pb-16{padding-bottom:4rem}.pb-2{padding-bottom:.5rem}.pb-4{padding-bottom:1rem}.pb-8{padding-bottom:2rem}.pl-1{padding-left:.25rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pl-7{padding-left:1.75rem}.pt-12{padding-top:3rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-center{text-align:center}.text-right{text-align:right}.indent-1{text-indent:.25rem}.indent-2{text-indent:.5rem}.indent-3{text-indent:.75rem}.indent-4{text-indent:1rem}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:DM Sans,system-ui,sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.normal-case{text-transform:none}.italic{font-style:italic}.not-italic{font-style:normal}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-\[1\.08\]{line-height:1.08}.leading-\[1\.15\]{line-height:1.15}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-normal{letter-spacing:0}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-sky-800{--tw-text-opacity:1;color:rgb(7 89 133/var(--tw-text-opacity,1))}.text-violet-800{--tw-text-opacity:1;color:rgb(91 33 182/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-zee-gold{--tw-text-opacity:1;color:rgb(196 154 26/var(--tw-text-opacity,1))}.text-zee-muted{--tw-text-opacity:1;color:rgb(107 107 107/var(--tw-text-opacity,1))}.text-zee-muted\/40{color:hsla(0,0%,42%,.4)}.text-zee-muted\/60{color:hsla(0,0%,42%,.6)}.text-zee-muted\/70{color:hsla(0,0%,42%,.7)}.text-zee-primary{--tw-text-opacity:1;color:rgb(26 107 98/var(--tw-text-opacity,1))}.text-zee-text{--tw-text-opacity:1;color:rgb(26 26 26/var(--tw-text-opacity,1))}.text-zee-text\/70{color:rgba(26,26,26,.7)}.text-zee-text\/80{color:rgba(26,26,26,.8)}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.underline-offset-2{text-underline-offset:2px}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.blur{--tw-blur:blur(8px)}.blur,.invert{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert:invert(100%)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-\[width\]{transition-property:width;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-75{transition-duration:75ms}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.prose{color:#1a1a1a;line-height:1.7}.prose p{font-size:1.0625rem;line-height:1.75;margin-bottom:1.35rem}@media (min-width:768px){.prose p{font-size:1.125rem;line-height:1.8;margin-bottom:1.5rem}}.prose h1{font-size:1.875rem;font-weight:700;margin-bottom:1.5rem;line-height:1.15}@media (min-width:768px){.prose h1{font-size:2.25rem}}.prose h2{font-size:1.5rem;font-weight:700;margin-top:2.5rem;margin-bottom:1rem;line-height:1.2}@media (min-width:768px){.prose h2{font-size:1.875rem}}.prose h3{font-size:1.25rem;font-weight:600;margin-top:2rem;margin-bottom:.75rem}@media (min-width:768px){.prose h3{font-size:1.5rem}}.prose strong{font-weight:600}.prose em{font-style:italic}.prose ul{list-style:disc}.prose ol,.prose ul{padding-left:1.5rem;margin-bottom:1.25rem}.prose ol{list-style:decimal}.prose ol>li+li,.prose ul>li+li{margin-top:.5rem}.prose blockquote{border-left:2px solid #1a6b62;padding-left:1rem;font-style:italic;color:#6b6b6b;margin:1.5rem 0}.placeholder\:text-zee-muted::-moz-placeholder{--tw-text-opacity:1;color:rgb(107 107 107/var(--tw-text-opacity,1))}.placeholder\:text-zee-muted::placeholder{--tw-text-opacity:1;color:rgb(107 107 107/var(--tw-text-opacity,1))}.placeholder\:text-zee-muted\/60::-moz-placeholder{color:hsla(0,0%,42%,.6)}.placeholder\:text-zee-muted\/60::placeholder{color:hsla(0,0%,42%,.6)}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:border-zee-primary:hover{--tw-border-opacity:1;border-color:rgb(26 107 98/var(--tw-border-opacity,1))}.hover\:border-zee-primary\/30:hover{border-color:rgba(26,107,98,.3)}.hover\:border-zee-primary\/40:hover{border-color:rgba(26,107,98,.4)}.hover\:border-zee-primary\/50:hover{border-color:rgba(26,107,98,.5)}.hover\:bg-zee-bg\/60:hover{background-color:hsla(40,37%,97%,.6)}.hover\:bg-zee-border\/20:hover{background-color:hsla(36,18%,89%,.2)}.hover\:bg-zee-border\/30:hover{background-color:hsla(36,18%,89%,.3)}.hover\:bg-zee-border\/50:hover{background-color:hsla(36,18%,89%,.5)}.hover\:text-zee-primary:hover{--tw-text-opacity:1;color:rgb(26 107 98/var(--tw-text-opacity,1))}.hover\:text-zee-text:hover{--tw-text-opacity:1;color:rgb(26 26 26/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-sm:hover{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:border-zee-primary:focus{--tw-border-opacity:1;border-color:rgb(26 107 98/var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-zee-primary\/30:focus{--tw-ring-color:rgba(26,107,98,.3)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:hover\:bg-transparent:hover:disabled{background-color:transparent}.group[open] .group-open\:rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:gap-3{gap:.75rem}.group:hover .group-hover\:text-zee-primary,.group\/row:hover .group-hover\/row\:text-zee-primary{--tw-text-opacity:1;color:rgb(26 107 98/var(--tw-text-opacity,1))}.group:hover .group-hover\:underline{text-decoration-line:underline}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-end{align-items:flex-end}.sm\:items-baseline{align-items:baseline}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-3{gap:.75rem}.sm\:gap-4{gap:1rem}.sm\:gap-6{gap:1.5rem}.sm\:pl-0{padding-left:0}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:768px){.md\:col-span-1{grid-column:span 1/span 1}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:p-5{padding:1.25rem}.md\:py-16{padding-top:4rem;padding-bottom:4rem}.md\:py-28{padding-top:7rem;padding-bottom:7rem}.md\:pb-16{padding-bottom:4rem}.md\:pt-10{padding-top:2.5rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}/*
 * Beat typography — standalone, not processed by Tailwind so the
 * custom-element selectors are never purged.
 *
 * Pre-Area-5, this file also held the pagination state machine
 * (lesson-shell[data-active] hide-all-but-current rules) and the
 * .beat-nav* navigation styles. Both removed when the daily page
 * flipped to single-scroll — beats now stack as continuous prose
 * always, no JS-driven visibility, no nav bar.
 *
 * Shape:
 *   <lesson-shell data-piece-id="…">
 *     <lesson-beat name="hook">
 *       <h2>Hook</h2>
 *       <p>…</p>
 *     </lesson-beat>
 *     <lesson-beat name="…">…</lesson-beat>
 *   </lesson-shell>
 */

lesson-shell {
  display: block;
}

lesson-beat {
  display: block;
  padding: 0.5rem 0;
  scroll-margin-top: 1.5rem;
}

/* First h2 inside a beat is the beat title — pull it tighter so it
   doesn't inherit the mid-article top margin from prose h2 rules. */
lesson-beat > h2:first-child {
  margin-top: 0.25rem;
  margin-bottom: 1.5rem;
  font-size: 1.5rem;
  letter-spacing: -0.01em;
  color: #1A1A1A;
}

@media (min-width: 768px) {
  lesson-beat > h2:first-child {
    font-size: 1.875rem;
  }
}

/* First paragraph of a beat: a touch heavier to anchor the eye. */
lesson-beat > p:first-of-type,
lesson-beat > h2:first-child + p {
  font-size: 1.0625rem;
  line-height: 1.7;
}
/*
 * Beat-by-beat pagination — standalone (not Tailwind-processed) so the
 * custom-element + data-attribute selectors are never purged.
 *
 * Single mode (since C7, 2026-05-08). Gated on three :root data
 * attributes — all JS-set, so no-JS readers never trigger the hide-
 * rules and the page renders as continuous prose fallback:
 *
 *   :root[data-lesson-hydrated="true"]       ← set by <lesson-shell>'s
 *                                               connectedCallback after
 *                                               the step list builds.
 *                                               THE no-JS guard. Without
 *                                               JS, never set, hide-rules
 *                                               never match.
 *   :root[data-lesson-current-step="<id>"]   ← updated on every
 *                                               stepchange. Informational
 *                                               (per-element data-current
 *                                               drives the hide-rule).
 *   :root[data-lesson-on-last-step="true"]   ← set when the active step
 *                                               is the final entry in
 *                                               <lesson-shell>'s step
 *                                               list. Drives the
 *                                               finish-footer hide-rule
 *                                               below — footer is hidden
 *                                               unless this attribute is
 *                                               present. Added in C8b
 *                                               (2026-05-08).
 *
 * Hide-rule (steps): any <lesson-beat> or [data-lesson-step] without a
 * `data-current` attribute is `display: none`. Lesson-shell sets
 * `data-current` on whichever element is the active step at any time.
 *
 * Hide-rule (finish footer): the [data-lesson-finish] footer is
 * hidden whenever the page is hydrated AND the active step is NOT the
 * last in the step list. Without JS, the hydrated attribute never
 * appears → the rule never matches → the footer renders at the bottom
 * of the article in continuous-prose fallback mode (alongside every
 * <lesson-beat> + [data-lesson-step] region, which are also visible
 * because their hide-rule is gated on the same hydrated attribute).
 * The footer is no longer paginated as its own step (C8b dropped
 * `data-lesson-step="finish"` from LessonLayout); it renders directly
 * below whichever step is last on the JS-paginated path.
 *
 * Step regions are SIBLINGS of the article that wraps lesson-shell, so
 * a descendant CSS selector won't reach them. The :root-level guard
 * scopes from the document root, which lets the same selectors hit
 * both lesson-beat (a descendant of lesson-shell) and the [data-lesson-
 * step] sections (siblings of the article).
 */

:root[data-lesson-hydrated="true"] lesson-beat:not([data-current]) {
  display: none;
}

:root[data-lesson-hydrated="true"] [data-lesson-step]:not([data-current]) {
  display: none;
}

:root[data-lesson-hydrated="true"]:not([data-lesson-on-last-step="true"]) [data-lesson-finish] {
  display: none;
}

/* Each visible step gets a min-height to avoid one-line screens (the
 * 9-word close beat on 2026-04-17 is the worst real case). NOT 100vh —
 * brief explicitly: content-sized, page scrolls vertically when a step
 * overflows. 60vh is the sweet spot. */
:root[data-lesson-hydrated="true"] lesson-beat[data-current],
:root[data-lesson-hydrated="true"] [data-lesson-step][data-current] {
  min-height: 60vh;
}

/* Progress dots — slim row near the top. Hidden until lesson-shell
 * hydrates so no-JS readers never see the empty container. */
lesson-progress {
  display: none;
}

:root[data-lesson-hydrated="true"] lesson-progress {
  display: block;
  margin-bottom: 1rem;
}

.lesson-progress-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center; /* centred row — easier to scan as a group */
  gap: 0.5rem;
  padding: 0.625rem 0.25rem;
}

.lesson-progress-dot {
  appearance: none;
  border: 0;
  background: transparent;
  padding: 0;
  cursor: pointer;
  width: 1.5rem;
  height: 1.5rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  -webkit-tap-highlight-color: transparent;
}

/* Group separator — extra margin on the first dot of a new kind. The
 * audio-beat run vs. the interactive/quiz run are different modes
 * (listening vs. doing); a small visible gap signals the boundary
 * without needing copy or icons. Triggers only when a beat dot is
 * IMMEDIATELY followed by a non-beat dot, so a no-companion piece
 * (beats only) gets no gap, and an interactive→quiz adjacency gets
 * no extra gap (they're both "doing" mode). */
.lesson-progress-dot[data-step-kind="beat"] + .lesson-progress-dot:not([data-step-kind="beat"]) {
  margin-left: 0.75rem;
}

/* The actual coloured pill is a pseudo-element so the tap target is
 * larger than the visible dot — touch ergonomics on mobile. */
.lesson-progress-dot::before {
  content: "";
  display: block;
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 999px;
  background: rgba(26, 107, 98, 0.3); /* zee-primary @ 30% */
  transition: background-color 120ms ease, width 120ms ease;
}

/* Non-beat dots (interactive / quiz) are rounded squares instead of
 * circles. Same colour rhythm — different silhouette signals the
 * different mode. No copy / no legend needed. */
.lesson-progress-dot:not([data-step-kind="beat"])::before {
  border-radius: 2px;
}

.lesson-progress-dot:hover::before,
.lesson-progress-dot:focus-visible::before {
  background: rgba(26, 107, 98, 0.6);
}

.lesson-progress-dot[data-active="true"]::before {
  width: 1.25rem;
  border-radius: 999px;
  background: #1A6B62; /* zee-primary */
}

/* Active non-beat dot keeps its rounded-square shape when expanded —
 * preserves the silhouette signal even on the active dot. */
.lesson-progress-dot[data-active="true"]:not([data-step-kind="beat"])::before {
  border-radius: 3px;
}

.lesson-progress-dot:focus-visible {
  outline: 2px solid #1A6B62;
  outline-offset: 2px;
}
/**
 * In-beat widget styles (PR #3, 2026-05-09).
 *
 * <lesson-reveal> / <lesson-compare> / <lesson-callout> are the three
 * earned-not-budgeted widgets a beat may carry. See drafter-prompt.ts
 * "When a beat earns a widget" for usage rules.
 *
 * Styling intent:
 * - Quiet, reader-respectful. Widgets sit inside prose, not over it.
 * - No animations beyond the native <details> open/close.
 * - Contrast against beat body via the same teal/cream palette as
 *   the rest of the lesson chrome.
 * - Mobile-respectable at 393px.
 */

/* ───── lesson-reveal ─────────────────────────────────────────── */

lesson-reveal {
  display: block;
  margin: 1.25rem 0;
}

lesson-reveal .widget-reveal {
  border: 1px solid color-mix(in oklch, var(--zee-border, #e6dfd3) 60%, transparent);
  border-radius: 0.5rem;
  padding: 0;
  background: color-mix(in oklch, var(--zee-bg-card, #faf8f4) 60%, transparent);
}

lesson-reveal summary {
  cursor: pointer;
  padding: 0.875rem 1rem;
  font-weight: 500;
  color: var(--zee-text, #1f1d18);
  list-style: none;
  position: relative;
}

lesson-reveal summary::-webkit-details-marker {
  display: none;
}

lesson-reveal summary::after {
  content: '↓';
  position: absolute;
  right: 1rem;
  top: 50%;
  transform: translateY(-50%);
  color: var(--zee-primary, #1A6B62);
  transition: transform 0.15s ease;
  font-weight: 600;
}

lesson-reveal details[open] summary::after {
  transform: translateY(-50%) rotate(180deg);
}

lesson-reveal .widget-reveal-body {
  padding: 0 1rem 1rem 1rem;
  color: var(--zee-text, #1f1d18);
}

lesson-reveal .widget-reveal-body :first-child { margin-top: 0; }
lesson-reveal .widget-reveal-body :last-child  { margin-bottom: 0; }

/* No-JS fallback — bare lesson-reveal renders as a flow container with
   the prompt and body visible. */
lesson-reveal:not([data-upgraded]) {
  display: block;
  border: 1px solid color-mix(in oklch, var(--zee-border, #e6dfd3) 60%, transparent);
  border-radius: 0.5rem;
  padding: 0.875rem 1rem;
  margin: 1.25rem 0;
}
lesson-reveal:not([data-upgraded])::before {
  content: attr(prompt);
  display: block;
  font-weight: 500;
  margin-bottom: 0.5rem;
}

/* ───── lesson-compare ────────────────────────────────────────── */

lesson-compare {
  display: grid;
  gap: 0.75rem;
  grid-template-columns: 1fr;
  margin: 1.25rem 0;
}

@media (min-width: 600px) {
  lesson-compare {
    grid-template-columns: 1fr 1fr;
  }
}

lesson-state {
  display: block;
  padding: 0.875rem 1rem;
  border: 1px solid color-mix(in oklch, var(--zee-border, #e6dfd3) 60%, transparent);
  border-radius: 0.5rem;
  background: color-mix(in oklch, var(--zee-bg-card, #faf8f4) 60%, transparent);
}

lesson-state .widget-compare-label {
  font-weight: 500;
  font-size: 0.875rem;
  color: var(--zee-muted, #67645a);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin-bottom: 0.5rem;
}

lesson-state .widget-compare-body {
  color: var(--zee-text, #1f1d18);
}

lesson-state .widget-compare-body :first-child { margin-top: 0; }
lesson-state .widget-compare-body :last-child  { margin-bottom: 0; }

/* ───── lesson-callout ────────────────────────────────────────── */

lesson-callout {
  display: block;
  margin: 1.25rem 0;
  padding: 0.875rem 1rem;
  border-left: 3px solid var(--zee-primary, #1A6B62);
  background: color-mix(in oklch, var(--zee-bg-card, #faf8f4) 50%, transparent);
  border-radius: 0 0.375rem 0.375rem 0;
}

lesson-callout[data-callout-type="aside"] {
  border-left-color: var(--zee-muted, #67645a);
  font-style: italic;
}

lesson-callout[data-callout-type="note"] {
  border-left-color: var(--zee-gold, #C49A1A);
}

lesson-callout :first-child { margin-top: 0; }
lesson-callout :last-child  { margin-bottom: 0; }
/*
 * Zita chat widget CSS — standalone, not Tailwind-processed.
 * Custom element selectors get purged by Tailwind, so this
 * lives outside the Tailwind pipeline.
 */

zita-chat {
  position: fixed;
  bottom: 1.5rem;
  right: 1.5rem;
  z-index: 50;
  font-family: 'DM Sans', system-ui, sans-serif;
}

.zita-toggle-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  background: #1A6B62;
  color: white;
  border-radius: 9999px;
  box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1);
  border: none;
  cursor: pointer;
  transition: opacity 0.15s ease, transform 0.15s ease;
}

.zita-toggle-btn:hover {
  opacity: 0.92;
  transform: translateY(-1px);
}

.zita-toggle-btn:focus-visible {
  outline: 2px solid #1A6B62;
  outline-offset: 3px;
}

.zita-icon-svg {
  width: 20px;
  height: 20px;
}

.zita-panel {
  background: white;
  border-radius: 1rem;
  box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
  border: 1px solid #E8E4DE;
  overflow: hidden;
  width: 340px;
  max-height: 480px;
  display: flex;
  flex-direction: column;
}

.zita-header {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid #E8E4DE;
}

.zita-name {
  font-weight: 700;
  font-size: 0.875rem;
  color: #1A6B62;
}

.zita-desc {
  font-size: 0.75rem;
  color: #6B6B6B;
  flex: 1;
}

.zita-close {
  width: 1.5rem;
  height: 1.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #6B6B6B;
  border-radius: 0.25rem;
  font-size: 1.125rem;
  border: none;
  background: none;
  cursor: pointer;
  transition: color 0.15s;
}

.zita-close:hover {
  color: #1A1A1A;
}

.zita-messages {
  flex: 1;
  overflow-y: auto;
  padding: 0.75rem 1rem;
  max-height: 340px;
}

.zita-messages > * + * {
  margin-top: 0.75rem;
}

.zita-msg {
  font-size: 0.875rem;
  line-height: 1.625;
  max-width: 85%;
  padding: 0.5rem 0.75rem;
  border-radius: 0.75rem;
}

.zita-msg-user {
  background: #1A6B62;
  color: white;
  margin-left: auto;
}

.zita-msg-assistant {
  background: #FAF8F4;
  color: #1A1A1A;
}

.zita-typing {
  animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

.zita-input {
  display: flex;
  gap: 0.5rem;
  padding: 0.625rem 0.75rem;
  border-top: 1px solid #E8E4DE;
}

.zita-input input {
  flex: 1;
  font-size: 0.875rem;
  padding: 0.375rem 0.75rem;
  border-radius: 0.5rem;
  border: 1px solid #E8E4DE;
  background: #FAF8F4;
  outline: none;
}

.zita-input input:focus {
  border-color: #1A6B62;
  box-shadow: 0 0 0 2px rgba(26, 107, 98, 0.15);
}

.zita-input button {
  width: 2rem;
  height: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #1A6B62;
  color: white;
  border-radius: 0.5rem;
  border: none;
  cursor: pointer;
  font-size: 0.875rem;
  font-weight: 700;
}

.zita-input button:hover {
  opacity: 0.9;
}

@media (max-width: 400px) {
  .zita-panel {
    width: calc(100vw - 2rem);
  }
}
/*
 * "How this was made" transparency drawer — standalone CSS.
 * Not processed by Tailwind (like beats.css / zita.css). Custom-element
 * selectors are safe from purging.
 *
 * Shape:
 *   <made-drawer date="YYYY-MM-DD">
 *     <button class="made-open">…</button>       ← open affordance (inline on page)
 *     <div class="made-panel" hidden>            ← slide-in drawer
 *       <header class="made-panel-header">…</header>
 *       <div class="made-panel-body">
 *         <section class="made-section">…</section>
 *         …
 *       </div>
 *     </div>
 *   </made-drawer>
 */

/* --- Open affordance — small inline link inside the meta line ------- */
/* Sits on line 2 of the meta block alongside Source + Save (since
   2026-05-08). Composes into the parent <p>'s flex row via inline-flex
   on the host element. Bottom-margin moved to the parent <p>'s mb-8.
   Font-size unified with text-sm peers (Source link, Save button). */

made-drawer {
  display: inline-flex;
  align-items: center;
}

.made-open {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  font-family: inherit;
  font-size: 0.875rem;
  font-weight: 500;
  color: #6B6B6B;
  cursor: pointer;
  transition: color 0.15s ease;
}

.made-open:hover {
  color: #1A6B62;
}

.made-open:hover .made-open-label {
  text-decoration: underline;
  text-underline-offset: 2px;
}

.made-open-icon {
  flex-shrink: 0;
  color: #1A6B62;
}

.made-open-label {
  letter-spacing: -0.005em;
}

.made-open:focus-visible {
  outline: 2px solid #1A6B62;
  outline-offset: 2px;
  border-radius: 2px;
}

/* --- Backdrop + panel ----------------------------------------------- */

.made-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(26, 26, 26, 0.35);
  z-index: 60;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
}

.made-panel {
  position: fixed;
  top: 0;
  right: 0;
  height: 100vh;
  width: min(560px, 100vw);
  background: #FAF8F4;
  border-left: 1px solid #E8E4DE;
  box-shadow: -12px 0 32px rgba(26, 26, 26, 0.08);
  z-index: 70;
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform 0.28s cubic-bezier(0.22, 0.61, 0.36, 1);
}

made-drawer[data-open] .made-backdrop {
  opacity: 1;
  pointer-events: auto;
}

made-drawer[data-open] .made-panel {
  transform: translateX(0);
}

@media (max-width: 560px) {
  .made-panel {
    width: 100vw;
    border-left: 0;
  }
}

/* --- Header --------------------------------------------------------- */

.made-panel-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.5rem 1.5rem 1rem;
  border-bottom: 1px solid #E8E4DE;
}

.made-panel-title {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: #1A1A1A;
}

.made-panel-subtitle {
  margin: 0.25rem 0 0;
  font-size: 0.8125rem;
  color: #6B6B6B;
  line-height: 1.5;
}

.made-close {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 9999px;
  border: 1px solid #E8E4DE;
  background: #FAF8F4;
  color: #6B6B6B;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s ease, color 0.15s ease;
}

.made-close:hover {
  background: #E8E4DE;
  color: #1A1A1A;
}

.made-close:focus-visible {
  outline: 2px solid #1A6B62;
  outline-offset: 2px;
}

/* --- Body ----------------------------------------------------------- */

.made-panel-body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 1rem 1.5rem 3rem;
  scroll-behavior: smooth;
}

.made-section {
  margin: 1.5rem 0 2rem;
}

.made-section-header {
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #6B6B6B;
  margin: 0 0 0.75rem;
}

.made-section-note {
  font-size: 0.8125rem;
  color: #6B6B6B;
  margin: 0 0 1rem;
  line-height: 1.6;
}

/* --- Collapsible section (native <details>/<summary>) -------------- */
/* Each named section is wrapped in a <details class="made-section">.
 * Default: collapsed. Click summary to expand; native browser handles
 * expand/collapse + keyboard (Space, Enter) + screen-reader semantics.
 * No JS toggle wiring needed.
 *
 * Summary line carries the section title (uppercase, letter-spaced —
 * matches the prior `.made-section-header` typography) plus an at-a-
 * glance hint derived from the envelope (mixed-case, lighter weight)
 * plus a teal caret that rotates 90° on open.
 */

details.made-section > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 0;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #6B6B6B;
  transition: color 0.15s ease;
}

details.made-section > summary::-webkit-details-marker {
  display: none;
}

details.made-section > summary:hover {
  color: #1A1A1A;
}

details.made-section > summary:focus-visible {
  outline: 2px solid #1A6B62;
  outline-offset: 2px;
  border-radius: 2px;
}

.made-section-hint {
  font-size: 0.6875rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: none;
  color: #6B6B6B;
  margin-left: 0.25rem;
  flex: 1 1 auto;
}

.made-section-caret {
  flex-shrink: 0;
  color: #1A6B62;
  transition: transform 0.15s ease;
}

details.made-section[open] > summary .made-section-caret {
  transform: rotate(90deg);
}

.made-section-body {
  margin-top: 0.75rem;
}

.made-skeleton {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding: 2rem 0;
}

.made-skeleton-line {
  height: 0.875rem;
  background: linear-gradient(90deg, #E8E4DE 0%, #F1EEE8 50%, #E8E4DE 100%);
  background-size: 200% 100%;
  border-radius: 0.25rem;
  animation: made-shimmer 1.4s infinite;
}

.made-skeleton-line:nth-child(1) { width: 40%; }
.made-skeleton-line:nth-child(2) { width: 90%; }
.made-skeleton-line:nth-child(3) { width: 75%; }
.made-skeleton-line:nth-child(4) { width: 85%; }

@keyframes made-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* --- Piece summary (hero strip inside the drawer) ------------------- */

.made-piece {
  padding: 1rem 0;
  border-bottom: 1px solid #E8E4DE;
}

.made-piece-headline {
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.35;
  color: #1A1A1A;
  margin: 0;
}

.made-piece-meta {
  margin: 0.5rem 0 0;
  font-size: 0.8125rem;
  color: #6B6B6B;
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.5rem;
}

.made-piece-meta .sep {
  opacity: 0.4;
}

.made-tier {
  font-weight: 600;
}

.made-tier-polished { color: #1A6B62; }
.made-tier-solid    { color: #1A1A1A; }
.made-tier-rough    { color: #6B6B6B; }

/* --- Timeline ------------------------------------------------------- */

.made-timeline {
  list-style: none;
  margin: 0;
  padding: 0;
  position: relative;
}

.made-timeline::before {
  content: '';
  position: absolute;
  left: 0.4375rem;
  top: 0.4375rem;
  bottom: 0.4375rem;
  width: 1px;
  background: #E8E4DE;
}

.made-step {
  position: relative;
  padding: 0 0 1rem 1.75rem;
}

.made-step:last-child {
  padding-bottom: 0;
}

.made-step-dot {
  position: absolute;
  left: 0;
  top: 0.375rem;
  width: 0.9375rem;
  height: 0.9375rem;
  border-radius: 9999px;
  border: 2px solid #E8E4DE;
  background: #FAF8F4;
}

.made-step[data-state='done']   .made-step-dot { border-color: #1A6B62; background: #1A6B62; }
.made-step[data-state='failed'] .made-step-dot { border-color: #6B6B6B; background: #FAF8F4; }
.made-step[data-state='running'] .made-step-dot { border-color: #1A6B62; }

.made-step-label {
  font-size: 0.9375rem;
  font-weight: 600;
  color: #1A1A1A;
  line-height: 1.4;
}

.made-step-time {
  font-size: 0.75rem;
  color: #6B6B6B;
  margin-left: 0.5rem;
  font-weight: 400;
  font-variant-numeric: tabular-nums;
}

.made-step-detail {
  margin: 0.25rem 0 0;
  font-size: 0.8125rem;
  color: #6B6B6B;
  line-height: 1.55;
}

/* --- Round cards (auditors said …) --------------------------------- */

.made-round {
  border: 1px solid #E8E4DE;
  border-radius: 0.75rem;
  padding: 1rem;
  margin: 0 0 0.875rem;
  background: rgba(255, 255, 255, 0.4);
}

.made-round-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.875rem;
}

.made-round-title {
  font-size: 0.875rem;
  font-weight: 600;
  color: #1A1A1A;
}

.made-round-summary {
  font-size: 0.75rem;
  color: #6B6B6B;
  font-variant-numeric: tabular-nums;
}

.made-gate {
  margin: 0.75rem 0;
  padding-top: 0.75rem;
  border-top: 1px dashed #E8E4DE;
}

.made-gate:first-of-type {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}

.made-gate-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 0.5rem;
  margin-bottom: 0.375rem;
}

.made-gate-label {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #6B6B6B;
}

.made-gate-verdict {
  font-size: 0.8125rem;
  font-weight: 600;
}

.made-gate-verdict-ok   { color: #1A6B62; }
.made-gate-verdict-mixed{ color: #6B6B6B; }

.made-gate-bar {
  height: 0.1875rem;
  background: #E8E4DE;
  border-radius: 9999px;
  overflow: hidden;
  margin: 0.375rem 0 0.625rem;
}

.made-gate-bar-fill {
  height: 100%;
  background: #1A6B62;
  border-radius: 9999px;
}

.made-gate-bar-fill-muted {
  background: #6B6B6B;
}

.made-list {
  list-style: none;
  padding: 0;
  margin: 0.375rem 0 0;
}

.made-list li {
  font-size: 0.8125rem;
  line-height: 1.55;
  color: #1A1A1A;
  padding: 0.375rem 0 0.375rem 1.125rem;
  position: relative;
}

.made-list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.875rem;
  width: 0.375rem;
  height: 1px;
  background: #E8E4DE;
}

/* .made-claim*, .made-fact-sources* — removed 2026-05-19 (evening)
 * with the Tavily-as-source simplification. No fact-check section in
 * the made-drawer means no claims to style. */

.made-list-empty {
  font-size: 0.8125rem;
  color: #6B6B6B;
  font-style: italic;
  margin: 0.25rem 0 0;
}

/* --- Final state block --------------------------------------------- */
/* Mirrors the .made-rules pattern (lighter background, rounded card)
 * so it reads as a summary destination, not another audit-detail row.
 * Sits between "What the auditors said" and "Rules applied". */

.made-final-state {
  background: rgba(232, 228, 222, 0.35);
  border-radius: 0.75rem;
  padding: 1rem 1.125rem;
  display: grid;
  gap: 0.4rem;
}

.made-final-state-headline {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.45;
  color: #1A1A1A;
}

.made-final-state-headline strong {
  color: #1A6B62;
}

.made-final-state-meta {
  margin: 0;
  font-size: 0.8125rem;
  color: #1A1A1A;
}

.made-final-state-foot {
  margin: 0;
  font-size: 0.8125rem;
  color: #6B6B6B;
}

/* --- Section break before learning-forward content ----------------- */
/* Visually separates making-history (timeline, audits, final state,
 * rules, scanner, audio, categories, interactives, commit) from the
 * learning-forward section that follows. No header text — the visual
 * gap plus the rewritten section header carry the framing. */

.made-section-break {
  height: 0;
  border-top: 1px solid #E8E4DE;
  margin: 2rem 0 1rem;
}

/* --- Rules card ----------------------------------------------------- */

.made-rules {
  background: rgba(232, 228, 222, 0.35);
  border-radius: 0.75rem;
  padding: 1rem 1.125rem;
}

.made-rules-title {
  font-size: 0.8125rem;
  font-weight: 700;
  color: #1A1A1A;
  margin: 0 0 0.5rem;
}

.made-rules-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 0.375rem;
}

.made-rule {
  font-size: 0.8125rem;
  line-height: 1.5;
  color: #1A1A1A;
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
}

.made-rule::before {
  content: '·';
  color: #6B6B6B;
}

.made-rules-footer {
  margin: 0.75rem 0 0;
  font-size: 0.75rem;
  color: #6B6B6B;
}

.made-rules-footer a {
  color: #1A6B62;
  text-decoration: none;
}

.made-rules-footer a:hover {
  text-decoration: underline;
}

/* --- Candidates collapsible ---------------------------------------- */

.made-candidates {
  border: 1px solid #E8E4DE;
  border-radius: 0.75rem;
}

.made-candidates-toggle {
  width: 100%;
  padding: 0.875rem 1rem;
  background: transparent;
  border: 0;
  font-family: inherit;
  font-size: 0.8125rem;
  color: #1A1A1A;
  text-align: left;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}

.made-candidates-toggle svg {
  transition: transform 0.2s ease;
}

.made-candidates[data-expanded] .made-candidates-toggle svg {
  transform: rotate(90deg);
}

.made-candidates-body {
  display: none;
  border-top: 1px solid #E8E4DE;
  padding: 0.5rem 0;
}

.made-candidates[data-expanded] .made-candidates-body {
  display: block;
}

.made-candidate {
  padding: 0.625rem 1rem;
  display: grid;
  gap: 0.125rem;
}

.made-candidate + .made-candidate {
  border-top: 1px solid #E8E4DE;
}

.made-candidate-headline {
  font-size: 0.8125rem;
  color: #1A1A1A;
  line-height: 1.45;
  font-weight: 500;
}

.made-candidate-headline a {
  color: inherit;
  text-decoration: none;
}

.made-candidate-headline a:hover {
  color: #1A6B62;
}

.made-candidate-meta {
  font-size: 0.6875rem;
  color: #6B6B6B;
  font-variant-numeric: tabular-nums;
}

/* --- Categories Categoriser assigned ------------------------------- */

.made-categories {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.made-category-chip {
  display: inline-flex;
  align-items: baseline;
  gap: 0.5rem;
  padding: 0.5rem 0.75rem;
  border: 1px solid #E8E4DE;
  border-radius: 9999px;
  background: rgba(255, 255, 255, 0.4);
  color: #1A1A1A;
  text-decoration: none;
  font-size: 0.8125rem;
  line-height: 1.2;
  min-height: 44px;
  transition: background 0.15s ease, border-color 0.15s ease;
}

.made-category-chip:hover {
  background: rgba(232, 228, 222, 0.7);
  border-color: #1A6B62;
}

.made-category-chip:focus-visible {
  outline: 2px solid #1A6B62;
  outline-offset: 2px;
}

.made-category-name {
  font-weight: 600;
}

.made-category-confidence {
  font-size: 0.6875rem;
  color: #6B6B6B;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}

/* --- Interactive (sibling artefact built from this piece) ---------- */

.made-interactive-low {
  margin: 0 0 0.75rem;
  font-size: 0.75rem;
  line-height: 1.5;
  color: #6B6B6B;
}

.made-interactive-cta {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.625rem 1rem;
  border-radius: 0.5rem;
  background: #1A6B62;
  color: #FAF8F4;
  text-decoration: none;
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: -0.005em;
  transition: background 0.15s ease;
}

.made-interactive-cta:hover {
  background: #145048;
}

.made-interactive-cta:focus-visible {
  outline: 2px solid #1A6B62;
  outline-offset: 2px;
}

/* --- Commit link ---------------------------------------------------- */

.made-commit {
  font-size: 0.8125rem;
  color: #6B6B6B;
  line-height: 1.55;
}

.made-commit a {
  color: #1A6B62;
  text-decoration: none;
}

.made-commit a:hover {
  text-decoration: underline;
}

.made-commit code {
  font-size: 0.75rem;
  background: rgba(232, 228, 222, 0.6);
  padding: 0.125rem 0.375rem;
  border-radius: 0.25rem;
  font-family: 'SF Mono', 'Menlo', monospace;
}

/* --- What the system learned from this piece --------------------- */

.made-learning-group {
  margin-top: 1rem;
}

.made-learning-group:first-child {
  margin-top: 0.5rem;
}

.made-learning-group-title {
  font-size: 0.8125rem;
  font-weight: 700;
  color: #1A1A1A;
  margin: 0 0 0.5rem;
}

/* Override the default .made-list li dash-bullet for learning rows —
 * the italic quote + gold left-border carries more per-row weight than
 * a shared bullet line would. */
.made-learning {
  font-style: italic;
  border-left: 2px solid #C49A1A;
  padding: 0.25rem 0 0.25rem 0.75rem;
  margin-bottom: 0.5rem;
}

.made-learning::before {
  display: none;
}

.made-learning:last-child {
  margin-bottom: 0;
}

/* --- Curator's "Why this story" + rejection breakdown -------------- */
/* Foundation Fix Task 03 (2026-05-06) — Curator records pick_reasoning
 * on the picked candidate and rejection_category on every rejection.
 * Drawer surfaces both: pick_reasoning sits at the top of the Scanner
 * section in a teal-bordered narrative block; the rejection breakdown
 * sits underneath as small count-pill chips. */

.made-pick {
  border-left: 3px solid #1A6B62;
  background: rgba(26, 107, 98, 0.04);
  border-radius: 0 0.5rem 0.5rem 0;
  padding: 0.625rem 0.875rem;
  margin: 0 0 0.875rem;
}

.made-pick-label {
  margin: 0 0 0.25rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #6B6B6B;
}

.made-pick-reasoning {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  color: #1A1A1A;
}

.made-rej-breakdown {
  margin: 0 0 0.875rem;
}

.made-rej-breakdown-label {
  margin: 0 0 0.375rem;
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: #6B6B6B;
  text-transform: uppercase;
}

.made-rej-breakdown-list {
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
}

.made-rej-pill {
  display: inline-flex;
  align-items: baseline;
  gap: 0.25rem;
  padding: 0.25rem 0.5rem;
  border-radius: 9999px;
  background: rgba(232, 228, 222, 0.6);
  font-size: 0.6875rem;
  color: #1A1A1A;
  font-variant-numeric: tabular-nums;
}

.made-rej-pill strong {
  font-weight: 700;
  color: #1A6B62;
}

.made-candidate-rej {
  display: inline-block;
  margin-left: 0.375rem;
  padding: 0.0625rem 0.375rem;
  border-radius: 9999px;
  background: rgba(232, 228, 222, 0.7);
  font-size: 0.625rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: #6B6B6B;
  vertical-align: middle;
}

.made-candidate-reason {
  font-size: 0.6875rem;
  color: #6B6B6B;
  line-height: 1.5;
  font-style: italic;
}

/* --- Integrator decisions (per round) ----------------------------- */
/* Foundation Fix Task 06 (2026-05-07) — for each piece of audit
 * feedback, Integrator decided accepted / overruled / partial with
 * reasoning + resulting_change. Drawer nests these UNDER each round's
 * voice/structure/fact gates so the audit verdict and the editorial
 * response sit visually paired.
 */

.made-decisions {
  margin-top: 0.875rem;
  padding-top: 0.875rem;
  border-top: 1px dashed #E8E4DE;
}

.made-decisions-title {
  margin: 0 0 0.625rem;
  font-size: 0.6875rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #6B6B6B;
}

.made-decisions-group + .made-decisions-group {
  margin-top: 0.625rem;
}

.made-decisions-group-title {
  margin: 0 0 0.25rem;
  font-size: 0.75rem;
  font-weight: 600;
  color: #1A1A1A;
}

.made-decisions-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 0.5rem;
}

.made-decision {
  padding: 0.5rem 0.75rem;
  background: rgba(255, 255, 255, 0.5);
  border-radius: 0.375rem;
  border: 1px solid #E8E4DE;
}

.made-decision-feedback {
  margin: 0 0 0.25rem;
  font-size: 0.75rem;
  line-height: 1.5;
  color: #6B6B6B;
  font-style: italic;
}

.made-decision-verdict {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.5;
  color: #1A1A1A;
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 0.375rem;
}

.made-decision-label {
  display: inline-block;
  font-size: 0.625rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 0.125rem 0.375rem;
  border-radius: 0.25rem;
  flex-shrink: 0;
}

.made-decision-accepted  { color: #1A6B62; background: rgba(26, 107, 98, 0.1); }
.made-decision-overruled { color: #6B6B6B; background: rgba(107, 107, 107, 0.12); }
.made-decision-partial   { color: #B85c00; background: rgba(184, 92, 0, 0.1); }

.made-decision-reasoning {
  font-size: 0.8125rem;
  line-height: 1.55;
  color: #1A1A1A;
}

.made-decision-change {
  margin: 0.375rem 0 0;
  font-size: 0.75rem;
  color: #6B6B6B;
  line-height: 1.55;
  padding-left: 0.625rem;
  border-left: 2px solid #C49A1A;
}

/* --- Audio audit verdict (inside Audio section) ------------------- */
/* Foundation Fix Task 05 (2026-05-12) verdict line — sits between the
 * top-of-section summary line and the per-beat list. Reads at a glance:
 *   "Audio audit: passed · Audited 7 beats, 0 issues (0 major)"
 */

.made-audio-audit {
  margin: 0.5rem 0;
  font-size: 0.75rem;
  color: #6B6B6B;
  line-height: 1.55;
}

.made-audio-audit-label {
  font-weight: 600;
  margin-right: 0.25rem;
}

.made-audio-audit-verdict {
  font-weight: 700;
  text-transform: uppercase;
  font-size: 0.6875rem;
  letter-spacing: 0.06em;
}

.made-audio-audit-ok    { color: #1A6B62; }
.made-audio-audit-mixed { color: #B85c00; }

.made-audio-audit-issues {
  margin-top: 0.375rem;
}

/* --- Loaded-learnings attribution line ---------------------------- */
/* Read-side of the loop — shows which earlier piece originally wrote
 * each loaded learning. Quiet sub-line so the observation is the
 * visual focus, not the attribution. */

.made-learning-from {
  font-style: normal;
  color: #6B6B6B;
  font-size: 0.6875rem;
  letter-spacing: 0.02em;
}

/* --- Affordance glyphs (↗ on external links inside the drawer) ---- */

.made-glyph-teal {
  color: #1A6B62;
}

/* --- Lock body scroll when drawer is open -------------------------- */

body.made-locked {
  overflow: hidden;
}
/*
 * Quiz card CSS — standalone, not processed by Tailwind.
 * Matches the beat-nav / made-drawer / zita palette.
 *
 * Colours inherited from beats.css:
 *   #1A6B62 — primary (button, correct, active border)
 *   #E8E4DE — hairline border
 *   #1A1A1A — ink
 *   #6B6B6B — muted
 *   #F5F2ED — subtle surface
 */

.quiz {
  margin-top: 1.5rem;
}

.quiz-counter {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: #6B6B6B;
  margin: 0 0 0.75rem 0;
}

.quiz-question {
  font-size: 1.25rem;
  line-height: 1.4;
  font-weight: 600;
  color: #1A1A1A;
  margin: 0 0 1.5rem 0;
  letter-spacing: -0.01em;
}

@media (min-width: 768px) {
  .quiz-question {
    font-size: 1.5rem;
  }
}

.quiz-options {
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
}

.quiz-option {
  display: block;
  width: 100%;
  text-align: left;
  padding: 0.875rem 1rem;
  font-family: inherit;
  font-size: 0.9375rem;
  line-height: 1.5;
  color: #1A1A1A;
  background: #FFFFFF;
  border: 1px solid #E8E4DE;
  border-radius: 0.625rem;
  cursor: pointer;
  transition: border-color 0.12s ease, background 0.12s ease, box-shadow 0.12s ease;
  min-height: 44px;
}

.quiz-option:hover {
  border-color: #1A6B62;
  background: rgba(26, 107, 98, 0.04);
}

.quiz-option:focus-visible {
  outline: 2px solid #1A6B62;
  outline-offset: 2px;
}

.quiz-option[data-selected] {
  border-color: #1A6B62;
  background: rgba(26, 107, 98, 0.08);
  box-shadow: inset 0 0 0 1px #1A6B62;
}

.quiz-actions {
  margin-top: 1.5rem;
  display: flex;
  justify-content: flex-end;
}

.quiz-next {
  display: inline-flex;
  align-items: center;
  padding: 0.75rem 1.5rem;
  font-family: inherit;
  font-size: 0.9375rem;
  font-weight: 500;
  color: #FFFFFF;
  background: #1A6B62;
  border: 1px solid #1A6B62;
  border-radius: 0.5rem;
  min-height: 44px;
  cursor: pointer;
  transition: background 0.15s ease, opacity 0.15s ease;
}

.quiz-next:hover:not(:disabled) {
  background: #155951;
}

.quiz-next:disabled {
  opacity: 0.35;
  cursor: not-allowed;
}

.quiz-next:focus-visible {
  outline: 2px solid #1A6B62;
  outline-offset: 2px;
}

/* --- Results screen ---------------------------------------------- */

.quiz-summary {
  padding: 1.5rem;
  background: #F5F2ED;
  border-radius: 0.75rem;
  text-align: center;
  margin-bottom: 1.5rem;
}

.quiz-score {
  margin: 0;
  font-size: 1rem;
  color: #1A1A1A;
}

.quiz-score-num {
  font-size: 2.25rem;
  font-weight: 700;
  color: #1A6B62;
  letter-spacing: -0.02em;
}

.quiz-score-total {
  color: #6B6B6B;
  margin-left: 0.25rem;
}

.quiz-review {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.quiz-review-item {
  padding: 1rem 1.25rem;
  border: 1px solid #E8E4DE;
  border-left-width: 3px;
  border-radius: 0.5rem;
}

.quiz-review-item[data-correct="true"] {
  border-left-color: #1A6B62;
}

.quiz-review-item[data-correct="false"] {
  border-left-color: #B54747;
}

.quiz-review-q {
  margin: 0 0 0.5rem 0;
  font-weight: 600;
  color: #1A1A1A;
  line-height: 1.45;
}

.quiz-review-mark {
  display: inline-block;
  width: 1.25em;
  margin-right: 0.25em;
  font-weight: 700;
}

.quiz-review-item[data-correct="true"] .quiz-review-mark {
  color: #1A6B62;
}

.quiz-review-item[data-correct="false"] .quiz-review-mark {
  color: #B54747;
}

.quiz-review-user,
.quiz-review-correct {
  margin: 0.25rem 0 0 1.5em;
  font-size: 0.875rem;
  color: #6B6B6B;
}

.quiz-review-correct {
  color: #1A6B62;
}

.quiz-review-exp {
  margin: 0.625rem 0 0 1.5em;
  font-size: 0.9375rem;
  color: #1A1A1A;
  line-height: 1.6;
}
/*
 * <interactive-frame> — sandboxed iframe styling.
 *
 * Standalone CSS file (NOT Tailwind-processed) so the selectors stay
 * stable when consumed from the Web Component. Same convention as
 * src/styles/quiz.css.
 *
 * The iframe uses `srcdoc` to inline the full HTML interactive (Phase
 * 2 sub-task 2.6's call vs. a separate `/embed` route). srcdoc adds
 * up to 50 KB to the parent page; lazy-loading + the small per-piece
 * count keep that tolerable. The future hardening path is documented
 * in docs/INTERACTIVES.md "Loading strategy: srcdoc vs src".
 *
 * Auto-resize (Area 5, single-scroll layout): the iframe used to ship
 * with a fixed `height: 600px` which forced an inner scrollbar inside
 * the already-scrolling daily piece page. Now `min-height` only —
 * src/lib/interactive-html.ts injects a tiny `postMessage` probe into
 * the srcdoc HTML at render time, and src/interactive/interactive-frame.ts
 * listens for it and sets the iframe's inline `height` to match the
 * inner content. With `scrolling="no"` on the iframe element, no nested
 * scrollbar ever appears even before the first probe message arrives.
 */

interactive-frame {
  display: block;
  width: 100%;
}

.interactive-frame-iframe {
  display: block;
  width: 100%;
  /* Reserve a sensible block before the resize probe lands so the
     page doesn't reflow violently on first paint. The actual height
     is set by the parent listener in interactive-frame.ts as soon as
     the inner document body reports its scrollHeight. */
  min-height: 320px;
  border: 1px solid var(--zee-border, #e5e0d6);
  border-radius: 8px;
  background: #fff;
  /* Keep the iframe contained on tablet and below — the sandbox
     blocks any same-origin manipulation, so a poorly-sized inner
     document can't bleed out. */
  max-width: 100%;
  /* Belt + braces: the parent script sets height to inner content, and
     the iframe carries `scrolling="no"`. Hiding overflow here is the
     final guard against a stray internal scrollbar before the probe
     fires. */
  overflow: hidden;
}

/* Mobile: trim the reserved first-paint height a touch. */
@media (max-width: 640px) {
  .interactive-frame-iframe {
    min-height: 240px;
  }
}
/*
 * Lesson interactive + finish state — single-scroll layout (Area 5).
 *
 * Two sibling sections that sit below the article (after <slot/>):
 *   .lesson-interactive  — embedded companion interactive(s)
 *   .lesson-finish       — tagline + read-another / library / share row
 *
 * Standalone, not Tailwind-processed, so the data-attribute selectors
 * are never purged. Palette matches beats.css / quiz.css / made.css.
 */

/* --- Lesson interactive (inline embed) --------------------------- */

.lesson-interactive {
  margin-top: 4rem;
  padding-top: 2.5rem;
  border-top: 1px solid #E8E4DE;
  scroll-margin-top: 1.5rem;
}

.lesson-interactive-eyebrow {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: #6B6B6B;
  margin: 0 0 0.75rem 0;
}

.lesson-interactive-title {
  font-size: 1.5rem;
  letter-spacing: -0.01em;
  color: #1A1A1A;
  margin: 0 0 0.5rem 0;
  line-height: 1.25;
}

@media (min-width: 768px) {
  .lesson-interactive-title {
    font-size: 1.75rem;
  }
}

.lesson-interactive-concept {
  font-size: 1.0625rem;
  line-height: 1.65;
  color: rgba(26, 26, 26, 0.8);
  margin: 0 0 2rem 0;
}

.lesson-interactive-block {
  margin-top: 2.5rem;
}

.lesson-interactive-block:first-of-type {
  margin-top: 0;
}

.lesson-interactive-subhead {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: #6B6B6B;
  margin: 0 0 0.75rem 0;
}

.lesson-interactive-low {
  font-size: 0.75rem;
  color: #6B6B6B;
  border: 1px solid rgba(232, 228, 222, 0.5);
  border-radius: 0.375rem;
  padding: 0.5rem 0.75rem;
  margin: 0 0 0.75rem 0;
}

.lesson-interactive-noscript {
  list-style: decimal;
  list-style-position: inside;
  display: grid;
  gap: 1.5rem;
}

.lesson-interactive-noscript ul {
  list-style: disc;
  list-style-position: inside;
  padding-left: 1rem;
  color: rgba(26, 26, 26, 0.8);
  margin-top: 0.5rem;
}

.lesson-interactive-answer {
  font-size: 0.75rem;
  color: #6B6B6B;
  margin-top: 0.5rem;
}

/* --- Lesson finish state ----------------------------------------- */

.lesson-finish {
  margin-top: 4rem;
  padding-top: 2.5rem;
  padding-bottom: 0.5rem;
  border-top: 1px solid #E8E4DE;
  text-align: center;
  scroll-margin-top: 1.5rem;
}

.lesson-finish-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 0.5rem 1.5rem;
}

.lesson-finish-link,
.lesson-finish-share {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-family: inherit;
  font-size: 0.9375rem;
  font-weight: 500;
  color: #1A6B62;
  background: transparent;
  border: 0;
  padding: 0.5rem 0.25rem;
  min-height: 44px;
  text-decoration: none;
  cursor: pointer;
  transition: color 0.15s ease, gap 0.2s ease;
}

.lesson-finish-link:hover,
.lesson-finish-share:hover {
  color: #155951;
}

.lesson-finish-link:hover {
  gap: 0.6rem;
}

.lesson-finish-link:focus-visible,
.lesson-finish-share:focus-visible {
  outline: 2px solid #1A6B62;
  outline-offset: 3px;
  border-radius: 0.25rem;
}

.lesson-finish-toast {
  font-size: 0.8125rem;
  color: #6B6B6B;
  font-style: italic;
}

@media (max-width: 480px) {
  .lesson-finish-actions {
    flex-direction: column;
    gap: 0.25rem;
  }
  .lesson-finish-link,
  .lesson-finish-share {
    justify-content: center;
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .lesson-finish-link,
  .lesson-finish-share {
    transition: none;
  }
}
