:root{--de-canvas: #f7f2e8;--de-surface: #fffcf6;--de-sunken: #efe7d7;--de-ink: #1a1410;--de-ink-2: #5a4c3c;--de-ink-3: #7a6a57;--de-line: rgba(26, 20, 16, .1);--de-line-2: rgba(26, 20, 16, .22);--de-accent: #a8482a;--de-accent-soft: #d9714b;--de-gold: #d4af37;--de-ok: #3f5a46;--de-bad: #a23b2a;--de-focus: #1a1410;--de-serif: "Instrument Serif", "Newsreader", Georgia, serif;--de-sans: "Inter Variable", "Inter", system-ui, -apple-system, sans-serif;--de-t-xs: .8125rem;--de-t-sm: .9375rem;--de-t-md: 1.0625rem;--de-t-lg: 1.25rem;--de-t-xl: 1.5625rem;--de-t-2xl: 1.953rem;--de-t-3xl: 2.441rem;--de-t-4xl: clamp(2.441rem, 6vw, 3.815rem);--de-s1: 4px;--de-s2: 8px;--de-s3: 12px;--de-s4: 16px;--de-s5: 24px;--de-s6: 32px;--de-s7: 48px;--de-s8: 64px;--de-s9: 96px;--de-r-sm: 8px;--de-r-md: 14px;--de-r-lg: 22px;--de-r-pill: 999px;--de-shadow-1: 0 1px 2px rgba(26, 20, 16, .06), 0 2px 8px rgba(26, 20, 16, .05);--de-shadow-2: 0 8px 28px rgba(26, 20, 16, .12), 0 2px 6px rgba(26, 20, 16, .06);--de-ease: cubic-bezier(.2, 0, 0, 1);--de-d-fast: .15s;--de-d-base: .24s;--de-d-slow: .42s;--de-max: 1180px;--de-tap: 44px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body.de-body{margin:0;background:var(--de-canvas);color:var(--de-ink);font:400 var(--de-t-md)/1.55 var(--de-sans);-webkit-font-smoothing:antialiased}.de-body img{max-width:100%;display:block}.de-body a{color:inherit}.de-body :focus-visible{outline:2px solid var(--de-focus);outline-offset:2px;border-radius:6px}.de-skip{position:absolute;left:-9999px}.de-skip:focus{left:var(--de-s4);top:var(--de-s4);z-index:100;background:var(--de-ink);color:var(--de-canvas);padding:var(--de-s3) var(--de-s4);border-radius:var(--de-r-sm)}.de-wrap{max-width:var(--de-max);margin:0 auto;padding:0 clamp(var(--de-s4),5vw,var(--de-s7))}.de-visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.de-display{font:400 var(--de-t-4xl)/1.02 var(--de-serif);letter-spacing:-.015em;margin:0}.de-h1{font:400 var(--de-t-3xl)/1.08 var(--de-serif);letter-spacing:-.01em;margin:0}.de-h2{font:400 var(--de-t-2xl)/1.12 var(--de-serif);margin:0}.de-h3{font:400 var(--de-t-xl)/1.2 var(--de-serif);margin:0}.de-lede{font-size:var(--de-t-lg);line-height:1.5;color:var(--de-ink-2);max-width:40ch}.de-muted{color:var(--de-ink-2)}.de-small{font-size:var(--de-t-sm);color:var(--de-ink-2)}.de-overline{font:600 var(--de-t-xs)/1.2 var(--de-sans);letter-spacing:.12em;text-transform:uppercase;color:var(--de-ink-3);margin:0 0 var(--de-s3)}.de-link{color:var(--de-accent)!important;text-underline-offset:3px}.de-bar{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--de-canvas) 88%,transparent);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--de-line)}.de-bar-in{display:flex;align-items:center;gap:var(--de-s4);height:64px}.de-logo{display:inline-flex;align-items:baseline;gap:2px;text-decoration:none;font:400 1.75rem/1 var(--de-serif);letter-spacing:-.02em}.de-logo i{font-style:italic;color:var(--de-accent)}.de-logo svg{align-self:center;margin-left:6px}.de-chip-sample{font:600 .6875rem var(--de-sans);letter-spacing:.08em;text-transform:uppercase;padding:4px 8px;border-radius:var(--de-r-pill);background:#d4af372e;color:#6b5410;white-space:nowrap}.de-nav{display:flex;gap:var(--de-s1);margin-left:auto;align-items:center}.de-nav a,.de-iconbtn{display:inline-flex;align-items:center;gap:var(--de-s2);min-height:var(--de-tap);padding:0 var(--de-s4);border-radius:var(--de-r-pill);text-decoration:none;font:500 var(--de-t-sm) var(--de-sans);color:var(--de-ink-2);transition:background var(--de-d-fast) var(--de-ease),color var(--de-d-fast) var(--de-ease)}.de-nav a:hover,.de-iconbtn:hover{background:var(--de-sunken);color:var(--de-ink)}.de-nav a[aria-current=page]{color:var(--de-ink);background:var(--de-sunken)}.de-nav .de-cta{background:var(--de-ink);color:var(--de-canvas)}.de-nav .de-cta:hover{background:#000;color:var(--de-canvas)}.de-iconbtn{border:0;background:transparent;cursor:pointer;min-width:var(--de-tap);justify-content:center}.de-searchbtn{display:inline-flex;align-items:center;gap:var(--de-s3);min-height:var(--de-tap);min-width:240px;padding:0 var(--de-s4);border:1px solid var(--de-line-2);border-radius:var(--de-r-pill);background:var(--de-surface);color:var(--de-ink-3);font:400 var(--de-t-sm) var(--de-sans);cursor:pointer}.de-searchbtn kbd{margin-left:auto;font:500 .75rem var(--de-sans);border:1px solid var(--de-line-2);border-radius:6px;padding:1px 6px}.de-badge{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--de-r-pill);background:var(--de-accent);color:#fff;font:600 .75rem var(--de-sans)}.de-badge[data-zero=true]{background:var(--de-line-2);color:var(--de-ink-2)}.de-tabs{display:none}@media(max-width:760px){.de-nav,.de-searchbtn{display:none}.de-bar-in{height:56px}.de-tabs{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;left:0;right:0;bottom:0;z-index:45;background:color-mix(in srgb,var(--de-surface) 94%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--de-line);padding-bottom:env(safe-area-inset-bottom)}.de-tabs a,.de-tabs button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;border:0;background:transparent;text-decoration:none;font:500 .75rem var(--de-sans);color:var(--de-ink-3);cursor:pointer;position:relative}.de-tabs [aria-current=page]{color:var(--de-ink)}.de-tabs [aria-current=page]:before{content:"";position:absolute;top:0;left:30%;right:30%;height:2px;border-radius:2px;background:var(--de-accent)}.de-tabs .de-badge{position:absolute;top:6px;left:calc(50% + 6px);min-width:18px;height:18px;font-size:.6875rem}body.de-body{padding-bottom:calc(64px + env(safe-area-inset-bottom))}}@media(min-width:761px){.de-only-phone{display:none!important}}.de-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--de-s2);min-height:48px;padding:0 var(--de-s5);border-radius:var(--de-r-pill);border:1px solid transparent;font:600 var(--de-t-sm) var(--de-sans);text-decoration:none;cursor:pointer;transition:transform var(--de-d-fast) var(--de-ease),background var(--de-d-fast) var(--de-ease),box-shadow var(--de-d-fast) var(--de-ease)}.de-btn:active{transform:scale(.98)}.de-btn-primary{background:var(--de-ink);color:var(--de-canvas)!important}.de-btn-primary:hover{background:#000;box-shadow:var(--de-shadow-1)}.de-btn-accent{background:var(--de-accent);color:#fff!important}.de-btn-secondary{background:var(--de-surface);color:var(--de-ink)!important;border-color:var(--de-line-2)}.de-btn-secondary:hover{border-color:var(--de-ink)}.de-btn-ghost{background:transparent;color:var(--de-ink)!important}.de-btn-ghost:hover{background:var(--de-sunken)}.de-btn[disabled],.de-btn[aria-disabled=true]{opacity:.45;cursor:not-allowed;transform:none}.de-btn[aria-pressed=true]{background:var(--de-accent);color:#fff!important;border-color:var(--de-accent)}.de-btn-row{display:flex;gap:var(--de-s3);flex-wrap:wrap;align-items:center}.de-card{background:var(--de-surface);border:1px solid var(--de-line);border-radius:var(--de-r-md);padding:var(--de-s5)}.de-pill{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:0 var(--de-s3);border-radius:var(--de-r-pill);background:var(--de-sunken);font:500 var(--de-t-xs) var(--de-sans);color:var(--de-ink-2)}.de-pill.sample{background:#d4af372e;color:#6b5410}.de-chiprow{display:flex;gap:var(--de-s2);flex-wrap:wrap}.de-chip{display:inline-flex;align-items:center;min-height:var(--de-tap);padding:0 var(--de-s4);border-radius:var(--de-r-pill);border:1px solid var(--de-line-2);background:var(--de-surface);font:500 var(--de-t-sm) var(--de-sans);color:var(--de-ink);text-decoration:none;cursor:pointer;transition:all var(--de-d-fast) var(--de-ease)}.de-chip:hover{border-color:var(--de-ink)}.de-chip[aria-pressed=true],.de-chip[aria-current=page]{background:var(--de-ink);color:var(--de-canvas);border-color:var(--de-ink)}.de-cover{position:relative;aspect-ratio:2 / 3;border-radius:4px 10px 10px 4px;overflow:hidden;color:#fffaf0;box-shadow:var(--de-shadow-2);isolation:isolate}.de-cover:before{content:"";position:absolute;inset:0 auto 0 0;width:9%;background:linear-gradient(90deg,rgba(0,0,0,.28),rgba(255,255,255,.08) 70%,transparent);z-index:2}.de-cover:after{content:"";position:absolute;inset:0;background:radial-gradient(120% 80% at 80% 0%,rgba(255,255,255,.18),transparent 60%);z-index:1}.de-cover-art{position:absolute;inset:0;z-index:0}.de-cover-text{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;justify-content:space-between;padding:26% 10% 10% 16%}.de-cover-text strong{font:400 clamp(1.1rem,2.4vw,1.75rem)/1.05 var(--de-serif);letter-spacing:-.01em;text-wrap:balance}.de-cover-text span{font:500 .6875rem var(--de-sans);letter-spacing:.1em;text-transform:uppercase;opacity:.85}.de-cover-flag{position:absolute;z-index:4;top:10px;right:10px;font:700 .625rem var(--de-sans);letter-spacing:.1em;text-transform:uppercase;padding:3px 7px;border-radius:var(--de-r-pill);background:#fffaf0eb;color:#6b5410}.de-tile{display:block;text-decoration:none}.de-tile .de-cover{transition:transform var(--de-d-base) var(--de-ease),box-shadow var(--de-d-base) var(--de-ease)}.de-tile:hover .de-cover{transform:translateY(-4px) rotate(-.4deg);box-shadow:0 16px 36px #1a14102e}.de-tile h3{font:400 var(--de-t-lg)/1.2 var(--de-serif);margin:var(--de-s3) 0 2px}.de-tile p{margin:0;font-size:var(--de-t-sm);color:var(--de-ink-2)}.de-row{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,1fr);gap:var(--de-s5);overflow-x:auto;scroll-snap-type:x mandatory;padding:var(--de-s3) 2px var(--de-s5);scrollbar-width:none;overscroll-behavior-x:contain}.de-row::-webkit-scrollbar{display:none}.de-row>*{scroll-snap-align:start}@media(max-width:760px){.de-row{grid-auto-columns:44%;gap:var(--de-s4)}}.de-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:var(--de-s6) var(--de-s5)}@media(max-width:760px){.de-grid{grid-template-columns:1fr 1fr;gap:var(--de-s5) var(--de-s4)}}.de-section{padding-top:var(--de-s8)}.de-sechead .de-btn{white-space:nowrap}.de-sechead{display:flex;align-items:end;justify-content:space-between;gap:var(--de-s4);margin-bottom:var(--de-s3)}.de-field{margin:0 0 var(--de-s5)}.de-label{display:block;font:600 var(--de-t-md) var(--de-sans);margin-bottom:var(--de-s1)}.de-hint{display:block;font-size:var(--de-t-sm);color:var(--de-ink-2);margin-bottom:var(--de-s2)}.de-input,.de-select,.de-textarea{width:100%;min-height:52px;padding:var(--de-s3) var(--de-s4);border:1.5px solid var(--de-line-2);border-radius:var(--de-r-sm);background:var(--de-surface);font:400 1rem var(--de-sans);color:var(--de-ink);transition:border-color var(--de-d-fast) var(--de-ease)}.de-input:focus,.de-select:focus,.de-textarea:focus{border-color:var(--de-ink);outline:none;box-shadow:0 0 0 3px #1a14101f}.de-textarea{min-height:120px;resize:vertical;line-height:1.5}.de-check{display:grid;grid-template-columns:28px 1fr;gap:var(--de-s3);align-items:start;padding:var(--de-s4);border:1.5px solid var(--de-line-2);border-radius:var(--de-r-sm);background:var(--de-surface);cursor:pointer;margin-bottom:var(--de-s3)}.de-check:has(input:checked){border-color:var(--de-ink);background:#fff}.de-check input{width:24px;height:24px;margin:1px 0 0;accent-color:var(--de-ink)}.de-error{color:var(--de-bad);font-weight:600;font-size:var(--de-t-sm);margin:var(--de-s2) 0 0}.de-errorsum{border:3px solid var(--de-bad);border-radius:var(--de-r-sm);padding:var(--de-s4);margin-bottom:var(--de-s5);background:#fff}.de-notice{display:flex;gap:var(--de-s3);align-items:flex-start;padding:var(--de-s4);border-radius:var(--de-r-sm);background:var(--de-sunken);font-size:var(--de-t-sm);color:var(--de-ink-2)}.de-notice b{color:var(--de-ink)}.de-notice.ok{background:#3f5a461a}.de-notice.warn{background:#a8482a17}.de-progress{display:flex;gap:6px;margin-bottom:var(--de-s5)}.de-progress span{flex:1;height:4px;border-radius:4px;background:var(--de-line-2);transition:background var(--de-d-base) var(--de-ease)}.de-progress span.on{background:var(--de-ink)}.de-sheet{border:0;padding:0;background:transparent;max-width:640px;width:calc(100% - 32px);margin:10vh auto auto}.de-sheet::backdrop{background:#1a141059;backdrop-filter:blur(3px)}.de-sheet-in{background:var(--de-surface);border-radius:var(--de-r-lg);box-shadow:var(--de-shadow-2);overflow:hidden}.de-sheet[open] .de-sheet-in{animation:de-rise var(--de-d-slow) var(--de-ease)}@media(max-width:760px){.de-sheet{width:100%;max-width:none;margin:0;height:100%;max-height:none}.de-sheet-in{border-radius:0;height:100%}}@keyframes de-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.de-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);opacity:0;z-index:60;background:var(--de-ink);color:var(--de-canvas);padding:var(--de-s3) var(--de-s5);border-radius:var(--de-r-pill);font:500 var(--de-t-sm) var(--de-sans);box-shadow:var(--de-shadow-2);transition:all var(--de-d-base) var(--de-ease);pointer-events:none}.de-toast.show{opacity:1;transform:translate(-50%)}@media(max-width:760px){.de-toast{bottom:calc(80px + env(safe-area-inset-bottom))}}.de-foot{margin-top:var(--de-s9);border-top:1px solid var(--de-line);padding:var(--de-s6) 0 var(--de-s5);color:var(--de-ink-2);font-size:var(--de-t-sm)}.de-foot-in{display:flex;justify-content:space-between;gap:var(--de-s4);flex-wrap:wrap}.de-foot nav{display:flex;gap:var(--de-s2);flex-wrap:wrap}.de-foot nav a{display:inline-flex;align-items:center;min-height:var(--de-tap);padding:0 var(--de-s2);text-decoration:none}.devshop-sig{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;margin:16px auto 0;padding:0 16px;font-size:.72rem;line-height:1.4;opacity:.55;text-align:center}.devshop-sig a{display:inline-flex;align-items:center;min-height:44px;color:inherit}.devshop-sig span a{text-decoration:underline}.devshop-sig img{display:block;height:22px;width:auto}.de-in{animation:de-rise var(--de-d-slow) var(--de-ease) both}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
