@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/93a6e477e1480c92-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/c7e0cf6c760983e7-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Bricolage Grotesque;font-style:normal;font-weight:200 800;font-stretch:100%;font-display:swap;src:url(/_next/static/media/9d5a263311222317-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Bricolage Grotesque Fallback;src:local("Arial");ascent-override:88.21%;descent-override:25.61%;line-gap-override:0.00%;size-adjust:105.43%}.__className_a4bae9{font-family:Bricolage Grotesque,Bricolage Grotesque Fallback;font-style:normal}.__variable_a4bae9{--font-bricolage:"Bricolage Grotesque","Bricolage Grotesque Fallback"}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/a6c19694cd327cd4-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/851c4691abdf3def-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/a8a8dd7277bab4cf-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Hanken Grotesk;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/313510e2713fb214-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Hanken Grotesk Fallback;src:local("Arial");ascent-override:99.07%;descent-override:30.02%;line-gap-override:0.00%;size-adjust:100.94%}.__className_9c618b{font-family:Hanken Grotesk,Hanken Grotesk Fallback;font-style:normal}.__variable_9c618b{--font-hanken:"Hanken Grotesk","Hanken Grotesk Fallback"}@font-face{font-family:Caveat;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e44cdba7d0878bc5-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Caveat;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/07fccecd6728972a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Caveat;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/486fce9f36bc8f45-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Caveat;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/46bdd75a3ff56824-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Caveat;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/e44cdba7d0878bc5-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Caveat;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/07fccecd6728972a-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Caveat;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/486fce9f36bc8f45-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Caveat;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/46bdd75a3ff56824-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Caveat Fallback;src:local("Arial");ascent-override:124.77%;descent-override:38.99%;line-gap-override:0.00%;size-adjust:76.94%}.__className_6e83a6{font-family:Caveat,Caveat Fallback;font-style:normal}.__variable_6e83a6{--font-caveat:"Caveat","Caveat Fallback"}:root{--magenta:#e3057f;--magenta-hover:#c4046d;--magenta-deep:#a80460;--magenta-soft:#fdeaf4;--magenta-tint:#fbf4f8;--bg:#ffffff;--surface:#f7f7fa;--surface-2:#eff0f4;--ink:#211f24;--ink-soft:#5d5b63;--ink-mute:#8a8792;--line:#e7e6ec;--line-strong:#d6d4dd;--success:#1eb980;--warning:#f59e0b;--error:#e5484d;--info:var(--magenta);--font-display:"Bricolage Grotesque",ui-sans-serif,system-ui,sans-serif;--font-body:"Hanken Grotesk",ui-sans-serif,system-ui,sans-serif;--font-hand:"Caveat",cursive;--fs-display:clamp(2.4rem,5vw,4rem);--fs-h1:clamp(2rem,4vw,3rem);--fs-h2:clamp(1.5rem,2.6vw,2.25rem);--fs-h3:clamp(1.2rem,1.6vw,1.5rem);--fs-lead:clamp(1.06rem,1.4vw,1.3rem);--fs-body:1.0625rem;--fs-sm:0.9375rem;--fs-xs:0.8125rem;--lh-tight:1.08;--lh-snug:1.3;--lh-body:1.6;--tracking-tight:-0.02em;--maxw:1160px;--maxw-prose:68ch;--gutter:clamp(20px,4vw,40px);--section-y:clamp(56px,8vw,112px);--r-sm:10px;--r-md:16px;--r-lg:24px;--r-pill:999px;--shadow-sm:0 2px 10px rgba(33,31,36,.05);--shadow-md:0 10px 34px rgba(33,31,36,.08);--shadow-lg:0 24px 60px rgba(33,31,36,.12);--shadow-accent:0 16px 40px rgba(227,5,127,.22);--ease:cubic-bezier(.2,.75,.2,1);--dur-fast:160ms;--dur:280ms;--dur-slow:560ms}*,:after,:before{box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);background:var(--bg);-webkit-font-smoothing:antialiased}body,h1,h2,h3,h4{margin:0;color:var(--ink)}h1,h2,h3,h4{font-family:var(--font-display);line-height:var(--lh-tight);letter-spacing:var(--tracking-tight)}p{margin:0;color:var(--ink-soft)}a{color:var(--magenta);text-decoration-thickness:1px;text-underline-offset:2px}.container{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:var(--section-y)}.prose{max-width:var(--maxw-prose)}.eyebrow{font-family:var(--font-display);font-weight:600;font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase}.eyebrow,.script{color:var(--magenta)}.script{font-family:var(--font-hand)}.btn{display:inline-flex;align-items:center;gap:.6em;font-family:var(--font-display);font-weight:600;font-size:var(--fs-body);padding:.85em 1.5em;border-radius:var(--r-pill);border:none;cursor:pointer;text-decoration:none;transition:transform var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease),box-shadow var(--dur-fast) var(--ease)}.btn--primary{background:var(--magenta);color:#fff;box-shadow:var(--shadow-accent)}.btn--primary:hover{background:var(--magenta-hover);transform:translateY(-2px)}.btn--ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line-strong)}.btn--ghost:hover{box-shadow:inset 0 0 0 1.5px var(--magenta);color:var(--magenta)}.card{background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}:root{--font-display:var(--font-bricolage),ui-sans-serif,system-ui,sans-serif;--font-body:var(--font-hanken),ui-sans-serif,system-ui,sans-serif;--font-hand:var(--font-caveat),cursive;--sidebar-w:264px;--topbar-h:60px}body{background:var(--surface)}.auth-shell{min-height:100dvh;display:grid;place-items:center;padding:var(--gutter);background:radial-gradient(120% 80% at 100% 0,var(--magenta-tint) 0,transparent 55%),var(--surface)}.auth-card{width:100%;max-width:420px;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-md);padding:clamp(1.6rem,4vw,2.6rem)}.auth-card__brand{display:flex;align-items:center;gap:.7rem;margin-bottom:1.6rem}.auth-card__brand img{height:40px;width:auto}.auth-card h1{font-size:var(--fs-h2);margin-bottom:.4rem}.auth-card p.sub{margin-bottom:1.6rem}.auth-field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1.2rem}.auth-field label{font-family:var(--font-display);font-weight:600;font-size:var(--fs-sm);color:var(--ink)}.auth-field input{padding:.8em 1em;border:1.5px solid var(--line-strong);border-radius:var(--r-sm);font:inherit;background:var(--surface-2)}.auth-field input:focus{outline:none;border-color:var(--magenta);box-shadow:0 0 0 3px var(--magenta-soft)}.auth-note{color:var(--ink-mute)}.auth-note,.auth-status{margin-top:1rem;font-size:var(--fs-sm)}.auth-status{padding:.9rem 1rem;border-radius:var(--r-sm)}.auth-status--ok{background:color-mix(in srgb,var(--success) 12%,white);color:color-mix(in srgb,var(--success) 60%,black)}.auth-status--err{background:color-mix(in srgb,var(--error) 12%,white);color:color-mix(in srgb,var(--error) 55%,black)}.shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100dvh}.shell__sidebar{background:var(--bg);border-right:1px solid var(--line);padding:1.2rem 1rem;display:flex;flex-direction:column;gap:1.2rem;position:-webkit-sticky;position:sticky;top:0;height:100dvh}.shell__brand{display:flex;align-items:center;gap:.6rem;padding:.3rem .5rem}.shell__brand img{height:34px;width:auto}.shell__nav{display:flex;flex-direction:column;gap:.2rem}.shell__nav a{display:flex;align-items:center;gap:.7rem;padding:.7rem .8rem;border-radius:var(--r-sm);color:var(--ink-soft);text-decoration:none;font-weight:500;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.shell__nav a:hover{background:var(--surface);color:var(--ink)}.shell__nav a[aria-current=page]{background:var(--magenta-soft);color:var(--magenta-deep)}.shell__nav a .ico{font-size:1.15rem;line-height:1}.shell__spacer{margin-top:auto}.shell__user{border-top:1px solid var(--line);padding-top:1rem;font-size:var(--fs-sm)}.shell__user .name{font-family:var(--font-display);font-weight:600;color:var(--ink)}.shell__user .role{color:var(--magenta);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.08em}.shell__logout{margin-top:.7rem;display:inline-block;font-size:var(--fs-sm);color:var(--ink-mute);background:none;border:none;padding:0;cursor:pointer;text-decoration:underline}.shell__main{padding:clamp(1.4rem,3vw,2.6rem);max-width:1100px}.page-head{margin-bottom:2rem}.page-head h1{font-size:var(--fs-h1)}.page-head p{margin-top:.5rem}.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:1rem;gap:1rem}.module-card{display:block;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);padding:1.4rem;text-decoration:none;color:inherit;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.module-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.module-card__icon{font-size:1.8rem;line-height:1}.module-card h3{font-size:var(--fs-h3);margin:.8rem 0 .4rem}.module-card__soon{display:inline-block;margin-top:.9rem;font-size:var(--fs-xs);font-weight:600;color:var(--magenta);text-transform:uppercase;letter-spacing:.08em}.data-table{width:100%;border-collapse:collapse;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}.data-table td,.data-table th{text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--line);font-size:var(--fs-sm)}.data-table th{font-family:var(--font-display);background:var(--surface);color:var(--ink)}.data-table tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:.2em .7em;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:600}.badge--admin{background:var(--magenta-soft);color:var(--magenta-deep)}.badge--co_admin{background:color-mix(in srgb,var(--info) 14%,white);color:var(--magenta-deep)}.badge--member{background:var(--surface-2);color:var(--ink-soft)}.badge--pending{background:color-mix(in srgb,var(--warning) 16%,white);color:color-mix(in srgb,var(--warning) 55%,black)}.wiki-toolbar{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center;margin-bottom:1.6rem}.wiki-search{flex:1 1 260px;padding:.7em 1em;border:1.5px solid var(--line-strong);border-radius:var(--r-pill);font:inherit;background:var(--bg)}.wiki-search:focus{outline:none;border-color:var(--magenta);box-shadow:0 0 0 3px var(--magenta-soft)}.wiki-back{display:inline-block;margin-bottom:1rem;font-size:var(--fs-sm);color:var(--ink-mute);text-decoration:none}.wiki-back:hover{color:var(--magenta)}.wiki-empty{color:var(--ink-mute)}.device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:1rem;gap:1rem}.device-card{display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;text-decoration:none;color:inherit;box-shadow:var(--shadow-sm);transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.device-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.device-card__media{aspect-ratio:4/3;background:var(--surface);display:grid;place-items:center;overflow:hidden}.device-card__media img{width:100%;height:100%;object-fit:cover}.device-card__placeholder{font-size:2.4rem;opacity:.4}.device-card__body{padding:1rem}.device-card__cat{font-size:var(--fs-xs);font-weight:600;color:var(--magenta);text-transform:uppercase;letter-spacing:.06em}.device-card__body h3{font-size:var(--fs-h3);margin:.3rem 0}.device-card__nick{font-family:var(--font-hand);color:var(--ink-soft);font-size:1.05rem}.device-card__loc{font-size:var(--fs-sm);color:var(--ink-mute);margin-top:.3rem}.device-detail{max-width:780px}.device-detail__head{display:flex;gap:1.6rem;align-items:flex-start;justify-content:space-between;flex-wrap:wrap}.device-detail__head h1{font-size:var(--fs-h1)}.device-detail__nick{font-family:var(--font-hand);font-size:1.2rem;color:var(--ink-soft);margin-top:.2rem}.device-detail__img{width:200px;max-width:40%;border-radius:var(--r-lg);object-fit:cover}.device-meta{display:flex;gap:1.6rem;margin-top:1rem}.device-meta dt{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-mute)}.device-meta dd{margin:.1rem 0 0;font-family:var(--font-display);color:var(--ink)}.device-detail__desc{margin-top:1.4rem;padding:1.2rem;background:var(--surface);border-radius:var(--r-md)}.device-tutorials{margin-top:2rem}.device-tutorials h2{font-size:var(--fs-h2);margin-bottom:1rem}.tutorial{border:1px solid var(--line);border-radius:var(--r-md);margin-bottom:.8rem;background:var(--bg);overflow:hidden}.tutorial>summary{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.2rem;cursor:pointer;font-family:var(--font-display);font-weight:600;list-style:none}.tutorial>summary::-webkit-details-marker{display:none}.tutorial__count{font-size:var(--fs-xs);color:var(--ink-mute);font-weight:500}.tutorial__intro{padding:0 1.2rem;color:var(--ink-soft)}.tutorial__steps{margin:.6rem 0 0;padding:0 1.2rem 1rem 2.6rem;display:flex;flex-direction:column;gap:1rem}.tutorial__steps li{padding-left:.3rem}.tutorial__img{display:block;max-width:100%;border-radius:var(--r-sm)}.tutorial__img,.tutorial__video{margin-top:.6rem}.device-qr{margin-top:2rem;display:flex;gap:1.4rem;align-items:center;flex-wrap:wrap;padding:1.4rem;border:1px dashed var(--line-strong);border-radius:var(--r-lg);background:var(--magenta-tint)}.device-qr__code{width:132px;height:132px;flex-shrink:0;background:#fff;padding:8px;border-radius:var(--r-sm)}.device-qr__code svg{width:100%;height:100%;display:block}.device-qr__hint{color:var(--ink-soft);margin-bottom:.8rem}.device-qr__actions{display:flex;gap:.6rem;flex-wrap:wrap}.device-form{padding:1.6rem;max-width:620px}.device-form textarea{min-height:90px;resize:vertical}.device-form__actions{display:flex;gap:.7rem;margin-top:.6rem}.qr-print__bar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.4rem}.qr-sheet{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8mm;gap:8mm}.qr-label{border:1px solid var(--line);border-radius:var(--r-sm);padding:6mm;text-align:center;background:#fff}.qr-label--single{max-width:320px;margin:2rem auto;border-width:1px}.qr-label__code{width:100%;aspect-ratio:1;margin:0 auto 4mm}.qr-label__code svg{width:100%;height:100%;display:block}.qr-label__caption strong{display:block;font-family:var(--font-display);font-size:.95rem;color:#000}.qr-label__caption span{font-size:.8rem;color:#444}@media print{.no-print,.shell__sidebar{display:none!important}.shell,.shell__main{display:block;padding:0;max-width:none}.qr-label{page-break-inside:avoid;break-inside:avoid}}@media (max-width:640px){.device-detail__head{flex-direction:column-reverse}.device-detail__img{max-width:100%;width:100%}.qr-sheet{grid-template-columns:repeat(2,1fr)}}@media (max-width:820px){.shell{grid-template-columns:1fr}.shell__sidebar{position:static;height:auto;align-items:center;border-right:none;border-bottom:1px solid var(--line)}.shell__nav,.shell__sidebar{flex-direction:row;flex-wrap:wrap}.shell__nav{gap:.4rem}.shell__spacer{margin:0}.shell__user{border-top:none;padding-top:0}}