.essay{background:var(--paper);border:1px solid var(--line);border-radius:28px;gap:clamp(28px,4vw,56px);margin-top:clamp(40px,6vw,80px);padding:clamp(24px,4vw,48px);display:grid}@media (width>=960px){.essay{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}}.essay h3{font-family:var(--serif);letter-spacing:-.02em;margin:10px 0 0;font-size:clamp(2.2rem,4.8vw,3.9rem);font-weight:300;line-height:1}.essay h3 em{color:var(--sun-ink);font-style:italic;font-weight:400}.essay .dek{font-family:var(--serif);color:var(--ink-2);max-width:42ch;margin:16px 0 0;font-size:1.12rem;line-height:1.6}.essay blockquote{font-family:var(--serif);border-left:3px solid var(--sun);margin:22px 0 0;padding-left:16px;font-size:1.22rem;font-style:italic;line-height:1.45}.essay .meta{margin-top:16px}.stones h4{letter-spacing:-.01em;margin:8px 0 0;font-size:1.3rem;font-weight:700}.stones .intro{color:var(--ink-2);max-width:46ch;margin:6px 0 16px;font-size:.98rem}.msgs{gap:12px;margin:0;padding:0;list-style:none;display:grid}.msg{gap:0;display:grid}.bubble{text-align:left;font:inherit;background:var(--ground);color:var(--ink);border:1.5px solid var(--line-2);cursor:pointer;transition:border-color .25s,transform .25s var(--ease);border-radius:18px 18px 18px 4px;padding:13px 15px;font-size:.98rem;line-height:1.45}.bubble:hover{border-color:var(--ink);transform:translate(3px)}.bubble .from{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:4px;font-size:.78rem;font-weight:700;display:block}.bubble mark{color:inherit;background:0 0;transition:background .4s,box-shadow .4s}.msg.open mark{background:color-mix(in srgb,var(--sun) 22%,transparent);box-shadow:inset 0 -2px 0 var(--sun)}.msg.open .bubble{border-color:var(--ink)}.verdict{color:var(--ink-2);margin:10px 0 0;padding:2px 4px 0 16px;font-size:.94rem}.verdict b{color:var(--ink)}.v-ok b{color:var(--fynbos-ink)}.v-bad b{color:var(--sun-ink)}.fine{color:var(--muted);margin-top:12px;font-size:.82rem}.creds{gap:clamp(24px,4vw,56px);margin-top:clamp(40px,6vw,80px);display:grid}@media (width>=960px){.creds{grid-template-columns:minmax(0,4fr) minmax(0,7fr)}}.creds h3{letter-spacing:-.02em;margin:8px 0 0;font-size:clamp(1.6rem,3vw,2.3rem);line-height:1.05}.creds .label{text-shadow:var(--halo)}.cert{margin:0;padding:0;list-style:none}.cert li{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 16px;padding:15px 0;display:flex}.cert li:last-child{border-bottom:1px solid var(--line)}.cert .n{font-size:1.15rem;font-weight:600}.cert .by{color:var(--muted);text-shadow:var(--halo);font-size:.88rem;font-weight:400;display:block}.pill{letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:.78rem;font-weight:700}.pill.done{background:var(--ink);color:var(--ground)}.pill.prog{border:1.5px dashed var(--ink-2);color:var(--ink-2)}.cissp{font-family:var(--serif);color:var(--ink-2);max-width:60ch;margin-top:18px;font-size:1.04rem;line-height:1.65}.sheet{margin-top:clamp(48px,7vw,96px)}.sheet-head{gap:12px;display:grid}.sheet-head .legend{margin:0}.sheet-head h3{letter-spacing:-.02em;max-width:20ch;margin:6px 0 0;font-size:clamp(1.7rem,3.4vw,2.7rem);line-height:1.02}.legend{color:var(--muted);max-width:44ch;text-shadow:var(--halo);flex-wrap:wrap;gap:6px 18px;font-size:.88rem;display:flex}.sheet-head .label{text-shadow:var(--halo)}.frames{grid-template-columns:minmax(0,1fr);gap:clamp(12px,1.8vw,24px);margin-top:clamp(24px,3vw,36px);display:grid}@media (width>=640px){.frames{grid-template-columns:repeat(2,minmax(0,1fr))}}.frame{all:unset;box-sizing:border-box;cursor:pointer;background:var(--paper);border:1.5px solid var(--line);color:var(--ink);transition:transform .35s var(--ease),border-color .3s;border-radius:18px;grid-template-columns:clamp(104px,34%,190px) minmax(0,1fr);align-items:center;gap:clamp(14px,2vw,26px);padding:clamp(10px,1.2vw,14px);display:grid}.frame:hover{border-color:var(--line-2);transform:translateY(-4px)rotate(-.4deg)}.frame:focus-visible{outline:2.5px solid var(--sun);outline-offset:3px}.frame .pic{aspect-ratio:4/5;background:var(--ground-2);border-radius:12px;max-width:100%;overflow:hidden}.frame .pic svg{width:100%;height:100%;display:block}.card-text{align-content:center;gap:8px;padding-right:clamp(0px,1vw,10px);display:grid}.frame .nm{letter-spacing:-.01em;font-size:clamp(1.15rem,1.7vw,1.5rem);font-weight:700;line-height:1.1}.card-kick{font-family:var(--serif);color:var(--ink-2);font-size:clamp(.95rem,1.1vw,1.04rem);line-height:1.5}.frame .go{color:var(--muted);font-size:.86rem;font-weight:600;transition:color .25s}.frame:hover .go,.frame:focus-visible .go{color:var(--ink)}.frame .stg{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);align-items:center;gap:7px;font-size:.78rem;font-weight:700;display:flex}.stg i{border:1.5px solid;border-radius:50%;width:9px;height:9px;display:inline-block}.s-live i,.s-running i{background:currentColor}.s-prototype i{background:linear-gradient(90deg,currentColor 50%,#0000 50%)}.s-live{color:var(--sun-ink)}.s-running{color:var(--fynbos-ink)}.pic .f{transition:fill-opacity .6s,stroke-dasharray .6s}.st-concept .pic .f{fill-opacity:0;stroke:var(--ink-2);stroke-width:1.6px;stroke-dasharray:5 4}.st-concept .pic .bg{fill:var(--ground-2)}.st-prototype .pic .f{fill-opacity:.5;stroke:var(--ink-2);stroke-width:1px;stroke-dasharray:3 3}.sheet+.detail{margin-top:clamp(28px,4vw,48px)}.detail{background:var(--paper);border:1px solid var(--line);border-radius:24px;margin-top:20px;padding:clamp(20px,3.5vw,40px)}.detail-in{animation:develop .7s var(--ease)}@keyframes develop{0%{opacity:.25;filter:blur(3px)}to{opacity:1;filter:none}}.detail h4{letter-spacing:-.03em;font-variation-settings:"wdth" 85;margin:8px 0 0;font-size:clamp(2rem,4.2vw,3.2rem);line-height:1}.dgrid{gap:22px;margin-top:26px;display:grid}@media (width>=880px){.dgrid{grid-template-columns:repeat(3,minmax(0,1fr))}}.dgrid h5{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 8px;font-size:.78rem;font-weight:700}.dgrid p,.dgrid ul{font-family:var(--serif);color:var(--ink-2);margin:0;font-size:1.02rem;line-height:1.6}.dgrid ul{gap:4px;padding-left:1.1em;display:grid}.case{gap:26px clamp(28px,4vw,56px);margin-top:26px;display:grid}@media (width>=880px){.case{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}.case-next{grid-column:1/-1}}.case h5{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 10px;font-size:.78rem;font-weight:700}.case p{font-family:var(--serif);color:var(--ink-2);max-width:60ch;margin:0 0 .75em;font-size:1.05rem;line-height:1.65}.case p:last-child{margin-bottom:0}.case-next{border-top:1px solid var(--line);padding-top:22px}.built{gap:12px;margin:0;padding:0;list-style:none;display:grid}.built li{grid-template-columns:12px minmax(0,1fr);gap:12px;font-size:1.02rem;line-height:1.45;display:grid}.built li:before{content:"";background:var(--sun);border-radius:50%;width:9px;height:9px;margin-top:.45em}.case .built-note{color:var(--muted);margin-top:14px;font-size:.92rem;font-style:italic;line-height:1.5}.parts{border-collapse:collapse;width:100%;margin-top:22px;font-size:.95rem}.parts caption{text-align:left;padding-bottom:6px}.parts td,.parts th{text-align:left;border-top:1px solid var(--line);padding:8px 10px 8px 0}.parts th{font-weight:600}.dfoot{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:24px;padding-top:16px;font-size:.95rem;display:flex}.dfoot .muted{color:var(--muted)}.lb{--lb-ink:#eee5d4;--lb-bg:#0a0f12f2;--lb-pad:clamp(12px,4vw,56px);--lb-top:clamp(64px,8vh,84px);--lb-bar:clamp(76px,10vh,92px);background:var(--lb-bg);width:100vw;max-width:none;height:100dvh;max-height:none;color:var(--lb-ink);font-family:var(--display);border:0;margin:0;padding:0;position:fixed;inset:0;overflow:hidden}.lb::backdrop{background:#0a0f12f2}.lb[open]{grid-template-rows:minmax(0,1fr) var(--lb-bar);animation:.18s ease-out lb-in;display:grid}@keyframes lb-in{0%{opacity:0}to{opacity:1}}.lb-stage{min-height:0;padding:var(--lb-top) var(--lb-pad) 0;touch-action:pan-y pinch-zoom;place-items:center;display:grid}.lb-stage picture{display:contents}.lb-stage img{width:auto;height:auto;max-width:calc(100vw - 2 * var(--lb-pad));max-height:calc(100dvh - var(--lb-top) - var(--lb-bar));object-fit:contain;background:#eee5d40f 50%/100% 100% no-repeat;border-radius:6px;display:block}.lb-bar{padding:0 var(--lb-pad);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;display:grid}.lb-cap{text-align:center;margin:0;font-size:.95rem;line-height:1.35}.lb-title{font-weight:700}.lb-detail:not(:empty):before{content:" · "}.lb-detail{opacity:.78}.lb-count{letter-spacing:.12em;opacity:.7;font-variant-numeric:tabular-nums;margin-top:2px;font-size:.78rem;font-weight:600;display:block}.lb-btn{cursor:pointer;width:44px;height:44px;color:var(--lb-ink);background:#eee5d40f;border:1.5px solid #eee5d46b;border-radius:999px;place-items:center;padding:0;transition:border-color .2s,background .2s;display:grid}.lb-btn:hover{border-color:var(--lb-ink);background:#eee5d41f}.lb-btn svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.lb-btn:focus-visible{outline-offset:3px;outline:2.5px solid #f18a64}.lb-close{top:calc(var(--lb-top) / 2 - 22px);right:var(--lb-pad);position:absolute}html.lb-lock{overflow:hidden}.eye-grid{gap:clamp(32px,5vw,72px);margin-top:clamp(32px,4vw,56px);display:grid}@media (width>=960px){.eye-grid{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}}.wall{grid-template-columns:repeat(6,1fr);gap:10px;display:grid}.wall figure{background:var(--ground-2);border-radius:14px;margin:0;position:relative;overflow:hidden}.wall picture,.wall img{width:100%;height:100%;display:block}.ph-open{cursor:zoom-in;border-radius:inherit;width:100%;height:100%;display:block}.ph-open:focus-visible{outline:2.5px solid var(--sun);outline-offset:-4px}.wall figcaption{pointer-events:none}.wall img{object-fit:cover}.ph-view img{object-position:50% 50%}.ph-pilot img{object-position:50% 2%}.ph-explorer img{object-position:50% 57%}.wall .w1{aspect-ratio:16/9;grid-column:span 6}.wall .w2,.wall .w3{aspect-ratio:4/5;grid-column:span 3}.wall figcaption{background:color-mix(in srgb,var(--ground) 88%,transparent);color:var(--ink);border-radius:999px;padding:4px 9px;font-size:.75rem;font-weight:600;position:absolute;bottom:10px;left:10px}@media (width<=520px){.wall .w2 .cap-detail,.wall .w3 .cap-detail{display:none}}.likes{gap:0;margin:26px 0 0;padding:0;list-style:none;display:grid}.likes li{border-top:1px solid var(--line);grid-template-columns:minmax(0,9rem) minmax(0,1fr);gap:14px;padding:13px 0;display:grid}.likes li:last-child{border-bottom:1px solid var(--line)}.likes b{font-weight:600}.likes span{font-family:var(--serif);color:var(--ink-2);line-height:1.55}@media (width<=520px){.likes li{grid-template-columns:1fr;gap:2px}}.contact{background:var(--ink);color:var(--ground);border-radius:32px;margin-top:clamp(56px,8vw,110px);padding:clamp(24px,4vw,56px)}.contact h3{letter-spacing:-.03em;font-variation-settings:"wdth" 82;max-width:14ch;margin:0;font-size:clamp(2.2rem,5.4vw,4.4rem);line-height:.98}.contact .sub{font-family:var(--serif);opacity:.85;max-width:46ch;margin:14px 0 0;font-size:1.15rem;line-height:1.55}.cgrid{gap:28px;margin-top:32px;display:grid}@media (width>=960px){.cgrid{grid-template-columns:minmax(0,4fr) minmax(0,7fr)}}.intents{border:0;gap:10px;min-width:0;margin:0;padding:0;display:grid}.intents legend{letter-spacing:.12em;text-transform:uppercase;opacity:.75;padding:0 0 10px;font-size:.78rem;font-weight:700}.intent{border:1.5px solid color-mix(in srgb,var(--ground) 25%,transparent);cursor:pointer;border-radius:16px;grid-template-columns:auto 1fr;gap:2px 12px;padding:14px 16px;transition:border-color .25s,background .25s;display:grid}.intent:has(input:checked){border-color:var(--sun);background:color-mix(in srgb,var(--sun) 14%,transparent)}.intent input{appearance:none;border:1.5px solid var(--ground);cursor:pointer;border-radius:50%;width:16px;height:16px;margin:4px 0 0}.intent input:checked{background:var(--sun);border-color:var(--sun)}.intent input:focus-visible{outline:2.5px solid var(--sun);outline-offset:3px}.intent b{font-size:1.1rem}.intent span{opacity:.75;grid-column:2;font-size:.92rem}.f,.two{gap:14px;display:grid}@media (width>=620px){.two{grid-template-columns:1fr 1fr}}.fld{gap:6px;display:grid}.fld label{letter-spacing:.1em;text-transform:uppercase;opacity:.75;font-size:.78rem;font-weight:700}.fld input,.fld textarea{font:inherit;color:var(--ground);background:color-mix(in srgb,var(--ground) 8%,transparent);border:1.5px solid color-mix(in srgb,var(--ground) 25%,transparent);border-radius:12px;width:100%;padding:12px 14px}.fld input::placeholder,.fld textarea::placeholder{color:color-mix(in srgb,var(--ground) 55%,transparent)}.fld textarea{resize:vertical;min-height:150px;font-family:var(--serif);font-size:1.05rem;line-height:1.5}.fld input:focus,.fld textarea:focus{border-color:var(--sun);outline:none}.contact .btn{background:var(--sun);border-color:var(--sun);color:#111618}.status{border:1.5px solid var(--sun);border-radius:12px;margin:0;padding:12px 14px;font-size:.95rem}.fld input[aria-invalid=true],.fld textarea[aria-invalid=true]{border-color:var(--sun)}.err{border-left:2px solid var(--sun);margin:0;padding-left:10px;font-size:.9rem;line-height:1.4}.contact .btn[aria-disabled=true]{opacity:.7;cursor:progress;transform:none}.hp{width:1px;height:1px;position:absolute;left:-10000px;overflow:hidden}.clinks{opacity:.85;flex-wrap:wrap;gap:8px 22px;margin-top:20px;font-size:.92rem;display:flex}.drone{z-index:14;pointer-events:none;visibility:hidden;opacity:0;will-change:transform,opacity;width:clamp(58px,6.2vw,96px);position:fixed;top:0;left:0}.drone svg{width:100%;height:auto;display:block;overflow:visible}.drone .disc{fill:var(--ink);fill-opacity:.08;stroke:var(--ink);stroke-opacity:.28;stroke-width:1px}.drone .blade{stroke:var(--ink);stroke-opacity:.5;stroke-width:1.4px;stroke-linecap:round;fill:none}.drone .arm{stroke:var(--ink);stroke-width:3.2px;stroke-linecap:round;fill:none}.drone .hub,.drone .body,.drone .gimbal{fill:var(--ink)}.drone .seam{fill:var(--ground);fill-opacity:.16}.drone .lens{fill:var(--sea)}.drone .led{fill:var(--sun)}.drone.is-flying{visibility:visible;animation:6s linear forwards drone-flight}.drone.is-flying .drone-craft{animation:.9s ease-in-out infinite alternate drone-bob}.drone.is-flying .blade{transform-box:fill-box;transform-origin:50%;animation:.11s linear infinite drone-spin}.drone.is-flying .blade.b2{animation-delay:-.055s}@keyframes drone-flight{0%{opacity:0;transform:translate(104vw,66vh)rotate(-3deg)}18%{opacity:1;transform:translate(82vw,62vh)rotate(-5deg)}34%{transform:translate(66vw,59.5vh)rotate(-7deg)}50%{transform:translate(52vw,58.5vh)rotate(-7deg)}66%{transform:translate(38vw,59.5vh)rotate(-6deg)}82%{transform:translate(20vw,63vh)rotate(-4deg)}88%{opacity:1;transform:translate(8vw,64.7vh)rotate(-3.3deg)}to{opacity:0;transform:translate(-16vw,68vh)rotate(-2deg)}}@keyframes drone-bob{0%{transform:translateY(-1.5px)}to{transform:translateY(1.5px)}}@keyframes drone-spin{0%{transform:scaleX(1)}50%{transform:scaleX(.15)}to{transform:scaleX(1)}}@media (prefers-reduced-motion:reduce){.drone{display:none}}
