:root{--bg:#121212;--surface:#1e1e1e;--surface-2:#272727;--surface-3:#333;--line:#ffffff17;--line-strong:#ffffff29;--text:#f2efe9;--text-dim:#a5a09a;--text-faint:#6f6b66;--danger:#ff6b6b;--r-sm:10px;--r-md:16px;--r-lg:22px;--r-xl:28px;--pad:20px;--control-h:48px;--gap-xs:6px;--gap-sm:10px;--gap-md:16px;--gap-lg:20px;--gap-xl:28px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--screen:100dvh;--ease:cubic-bezier(.32, .72, 0, 1);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);height:100%;margin:0}body{color:var(--text);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,system-ui,sans-serif;font-size:16px;line-height:1.45}#root{min-height:100%}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}input,select,textarea{font:inherit;color:inherit}h1,h2,h3,p{margin:0}:focus-visible{outline:2px solid var(--text);outline-offset:2px;border-radius:6px}.app{min-height:var(--screen);flex-direction:column;max-width:620px;margin:0 auto;display:flex}.topbar{z-index:20;align-items:center;gap:var(--gap-sm);padding:calc(var(--safe-top) + var(--gap-md)) var(--pad) var(--gap-md);background:linear-gradient(var(--bg) 62%, #12121200);display:flex;position:sticky;top:0}.topbar h1{letter-spacing:-.02em;flex:1;min-width:0;font-size:26px;font-weight:650}.icon-btn{background:var(--surface);width:40px;height:40px;color:var(--text-dim);border:1px solid var(--line);border-radius:999px;flex:none;place-items:center;transition:background .15s,color .15s;display:grid}.icon-btn:active{background:var(--surface-3);color:var(--text)}.icon-btn.is-active{color:var(--text);background:var(--surface-2)}.content{padding:var(--gap-xs) var(--pad) calc(var(--safe-bottom) + 108px);flex:1}.search{margin:0 var(--pad) var(--gap-md);position:relative}.search svg{color:var(--text-faint);pointer-events:none;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.search input{width:100%;height:var(--control-h);border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);outline:none;padding:0 14px 0 44px}.search input::placeholder{color:var(--text-faint)}.search input:focus{border-color:var(--line-strong)}.fab-layer{height:var(--screen);z-index:30;padding-bottom:calc(var(--safe-bottom) + 24px);pointer-events:none;justify-content:center;align-items:flex-end;display:flex;position:fixed;top:0;left:0;right:0}.fab{pointer-events:auto;background:var(--text);color:#171717;transition:transform .15s var(--ease);border-radius:999px;align-items:center;gap:8px;padding:14px 22px 14px 18px;font-weight:600;display:flex;box-shadow:0 10px 30px #00000080}.fab:active{transform:scale(.96)}.brandmark{letter-spacing:-.02em;border-radius:12px;flex:none;place-items:center;font-weight:700;display:grid;position:relative;overflow:hidden}.brandmark-initials{-webkit-user-select:none;user-select:none;grid-area:1/1}.brandmark img{object-fit:contain;opacity:0;width:100%;height:100%;transition:opacity .2s var(--ease);background:#fff;grid-area:1/1}.brandmark img[data-loaded=true]{opacity:1}.stack{flex-direction:column;display:flex}.stack-item{touch-action:manipulation;text-align:left;border-radius:var(--r-lg);width:100%;padding:var(--gap-md);min-height:104px;transition:transform .18s var(--ease), margin .18s var(--ease);border:1px solid #ffffff1f;margin-top:-18px;display:block;position:relative;box-shadow:0 -6px 18px #00000073}.stack-item:first-child{margin-top:0}.stack-item.is-dragging,.grid-item.is-dragging,.row-item.is-dragging{opacity:.97;cursor:grabbing;box-shadow:0 18px 40px #0009}.stack-item:not(.is-dragging):active{transform:translateY(-4px)}.stack-head{align-items:center;gap:12px;display:flex}.stack-name{letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;font-size:17px;font-weight:620;overflow:hidden}.stack-code{letter-spacing:.06em;opacity:.72;white-space:nowrap;text-overflow:ellipsis;margin-top:6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;overflow:hidden}.grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.grid-item{touch-action:manipulation;aspect-ratio:1;border-radius:var(--r-lg);text-align:left;transition:transform .15s var(--ease);border:1px solid #ffffff1f;flex-direction:column;gap:12px;padding:16px;display:flex}.grid-item:not(.is-dragging):active{transform:scale(.97)}.grid-name{-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:auto;font-size:15px;font-weight:620;line-height:1.25;display:-webkit-box;overflow:hidden}.grid-code{letter-spacing:.05em;opacity:.7;white-space:nowrap;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;overflow:hidden}.rows{flex-direction:column;gap:8px;display:flex}.row-item{touch-action:manipulation;border-radius:var(--r-md);background:var(--surface);border:1px solid var(--line);text-align:left;align-items:center;gap:14px;width:100%;padding:12px 14px;transition:background .15s;display:flex}.row-item:active{background:var(--surface-2)}.row-body{flex:1;min-width:0}.row-name{white-space:nowrap;text-overflow:ellipsis;font-weight:560;overflow:hidden}.row-code{color:var(--text-faint);letter-spacing:.05em;white-space:nowrap;text-overflow:ellipsis;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;overflow:hidden}.row-accent{border-radius:999px;flex:none;align-self:stretch;width:4px}.empty{text-align:center;padding:72px var(--gap-md);color:var(--text-dim);flex-direction:column;align-items:center;gap:10px;display:flex}.empty-icon{background:var(--surface);border:1px solid var(--line);width:64px;height:64px;color:var(--text-faint);border-radius:20px;place-items:center;margin-bottom:4px;display:grid}.empty strong{color:var(--text);font-size:17px;font-weight:600}.empty p{max-width:30ch;font-size:14px}.sheet-layer{height:var(--screen);z-index:50;flex-direction:column;justify-content:flex-end;display:flex;position:fixed;top:0;left:0;right:0}.scrim{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade .2s var(--ease);background:#0009;position:absolute;inset:0}.sheet{background:var(--sheet-bg,var(--surface));width:100%;max-height:92%;color:var(--sheet-fg,var(--text));border-radius:var(--r-xl) var(--r-xl) 0 0;border-top:1px solid var(--sheet-line,var(--line-strong));animation:rise .28s var(--ease);will-change:transform;flex-direction:column;max-width:620px;margin:0 auto;display:flex;position:relative}.sheet:after{content:"";background:var(--sheet-edge,var(--surface));pointer-events:none;height:50vh;position:absolute;top:100%;left:0;right:0}.sheet.is-tall{min-height:82%}.sheet.is-tall .sheet-body{flex-direction:column;flex:1;min-height:0;display:flex}.sheet-grip{touch-action:none;cursor:grab;flex:none;width:100%;padding:14px 0 10px;display:block}.sheet-grip:after{content:"";background:var(--surface-3);border-radius:999px;width:36px;height:4px;margin:0 auto;display:block}.sheet-grip:active{cursor:grabbing}.sheet-head{align-items:center;gap:var(--gap-sm);padding:2px var(--pad) var(--gap-md);touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;flex:none;display:flex}.sheet-head:active{cursor:grabbing}.sheet-head h2{letter-spacing:-.01em;flex:1;min-width:0;font-size:19px;font-weight:640}.sheet-body{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:4px var(--pad) var(--gap-lg);overflow-y:auto}.sheet-body:last-child{padding-bottom:calc(var(--safe-bottom) + var(--gap-lg))}.sheet:not(.is-tall) .sheet-body>:first-child{margin-top:0}.sheet-foot{gap:var(--gap-sm);padding:12px var(--pad) calc(var(--safe-bottom) + 12px);border-top:1px solid var(--line);background:var(--sheet-edge,var(--surface));flex:none;display:flex}@keyframes rise{0%{transform:translateY(100%)}}@keyframes fade{0%{opacity:0}}.btn{border-radius:var(--r-md);white-space:nowrap;transition:transform .12s var(--ease), background .15s;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:13px 16px;font-size:15px;font-weight:580;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;pointer-events:none}.btn-primary{background:var(--text);color:#171717;flex:1}.btn-ghost{background:var(--surface-2);color:var(--text);border-color:var(--line)}.btn-danger{color:var(--danger);background:0 0;border-color:#ff6b6b4d;width:100%}.sheet-body>.btn-danger{margin-top:var(--gap-xl)}.custom-field:first-child{margin-top:0}.field{margin-top:var(--gap-lg);display:block}.field-label{color:var(--text-dim);margin-bottom:7px;font-size:13px;font-weight:560;display:block}.hint{color:var(--text-faint);margin-top:var(--gap-xs);font-size:12.5px}.field-error{color:var(--danger);margin-top:6px;font-size:12px}.control{width:100%;height:var(--control-h);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--line);outline:none;padding:0 14px;transition:border-color .15s}.control:focus{border-color:var(--line-strong)}.control::placeholder{color:var(--text-faint)}textarea.control{resize:vertical;height:auto;min-height:88px;padding:12px 14px}select.control{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23a5a09a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>");background-position:right 14px center;background-repeat:no-repeat;padding-right:40px}.control-mono{letter-spacing:.06em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.input-group{gap:var(--gap-sm);align-items:center;display:flex}.input-group .control{flex:1;min-width:0}.input-group .icon-btn,.custom-field .icon-btn{width:var(--control-h);height:var(--control-h);border-radius:var(--r-md);background:var(--surface-2)}.input-group .brandmark{align-self:center}.toggle-group{margin-top:var(--gap-lg);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--line);padding:0 14px}.toggle-row{align-items:center;gap:var(--gap-md);text-align:left;border-bottom:1px solid var(--line);width:100%;padding:13px 0;display:flex}.toggle-row:last-child{border-bottom:none}.toggle-row .toggle-body{flex:1;min-width:0}.toggle-row .toggle-body>span{display:block}.toggle-row .toggle-sub{color:var(--text-faint);margin-top:2px;font-size:12.5px}.switch{background:var(--surface-3);width:48px;height:29px;transition:background .18s var(--ease);border-radius:999px;flex:none;padding:3px}.switch span{width:23px;height:23px;transition:transform .18s var(--ease);background:#fff;border-radius:999px;display:block}.switch[data-on=true]{background:#3ba55d}.switch[data-on=true] span{transform:translate(19px)}.segmented{border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--line);gap:4px;padding:4px;display:flex}.segmented+.segmented{margin-top:var(--gap-sm)}.segmented button{color:var(--text-dim);border-radius:11px;flex:1;justify-content:center;align-items:center;gap:6px;padding:9px 6px;font-size:13.5px;font-weight:560;transition:background .15s,color .15s;display:flex}.segmented button[aria-pressed=true]{background:var(--surface-3);color:var(--text)}.swatches{gap:var(--gap-sm);grid-template-columns:repeat(6,1fr);justify-items:center;display:grid}.swatch{aspect-ratio:1;width:100%;max-width:38px;transition:transform .12s var(--ease);border:2px solid #0000;border-radius:999px}.swatch[aria-pressed=true]{border-color:var(--text);transform:scale(1.06)}.swatch-custom{background:var(--surface-3);color:var(--text-dim);place-items:center;display:grid;position:relative;overflow:hidden}.swatch-custom input{opacity:0;cursor:pointer;position:absolute;inset:0}.chips{padding:2px var(--pad) var(--gap-xs);margin:0 calc(var(--pad) * -1);scrollbar-width:none;gap:8px;display:flex;overflow-x:auto}.chips::-webkit-scrollbar{display:none}.chip{background:var(--surface-2);border:1px solid var(--line);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:8px;padding:8px 14px 8px 8px;font-size:14px;font-weight:540;display:flex}.chip:active{background:var(--surface-3)}.custom-field{gap:var(--gap-sm);margin-top:var(--gap-sm);align-items:center;display:flex}.custom-field .control{min-width:0}.custom-field .control:first-child{flex:0 0 38%}.custom-field .control:nth-child(2){flex:1}.link-btn{margin-top:var(--gap-sm);color:var(--text-dim);align-items:center;gap:6px;font-size:14px;font-weight:540;display:inline-flex}.link-btn:active{color:var(--text)}.detail{height:var(--screen);z-index:40;background:var(--bg);animation:fade .18s var(--ease);flex-direction:column;display:flex;position:fixed;top:0;left:0;right:0}.detail-top{padding:calc(var(--safe-top) + 12px) var(--pad) 12px;flex:none;align-items:center;gap:12px;width:100%;max-width:620px;margin:0 auto;display:flex}.detail-title{flex:1;min-width:0}.detail-title h2{white-space:nowrap;text-overflow:ellipsis;font-size:18px;font-weight:620;overflow:hidden}.detail-scroll{padding:0 var(--pad) calc(var(--safe-bottom) + 28px);flex-direction:column;flex:1;display:flex;overflow-y:auto}.detail-inner{width:100%;max-width:440px;margin:auto}.barcode-panel{border-radius:var(--r-lg);background:#fff;flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:180px;padding:22px;display:flex}.barcode-panel img{width:100%;max-width:100%;height:auto;display:block}.barcode-panel.is-square{aspect-ratio:1;width:100%;max-width:340px;min-height:0;margin:0 auto}.barcode-panel.is-square img{aspect-ratio:1;object-fit:contain;flex:0 auto;width:auto;max-width:100%;height:auto;min-height:0;max-height:100%}.barcode-value{letter-spacing:.14em;color:#171717;word-break:break-all;text-align:center;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:15px}.barcode-error{color:#b42318;text-align:center;padding:0 8px;font-size:14px}.detail-meta{margin-top:var(--gap-lg);border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);padding:0 var(--gap-md)}.meta-row{gap:var(--gap-md);border-bottom:1px solid var(--line);align-items:baseline;padding:14px 0;display:flex}.meta-row:last-child{border-bottom:none}.meta-label{color:var(--text-faint);flex:0 0 34%;font-size:13px}.meta-value{word-break:break-word;flex:1;min-width:0;font-size:14.5px}.button-row{gap:var(--gap-sm);margin-top:var(--gap-md);display:flex}.button-row .btn{flex:1}.sheet .detail-meta{background:var(--surface-2)}.sheet.is-accented .sheet-grip:after{background:var(--sheet-line)}.sheet.is-accented .meta-row{border-bottom-color:var(--sheet-line)}.sheet.is-accented .detail-meta{background:var(--sheet-wash);border-color:var(--sheet-line)}.sheet.is-accented .meta-label{color:inherit;opacity:.72}.sheet.is-accented .btn-ghost{background:var(--sheet-wash);border-color:var(--sheet-line);color:inherit}.sheet.is-accented .btn-ghost:active{background:var(--sheet-line)}.detail-actions{gap:var(--gap-sm);margin-top:var(--gap-lg);display:flex}.detail-actions .btn{flex:1}.scanner{height:var(--screen);z-index:70;background:#000;flex-direction:column;display:flex;position:fixed;top:0;left:0;right:0}.scanner video{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.scanner-overlay{flex-direction:column;display:flex;position:absolute;inset:0}.scanner-top{padding:calc(var(--safe-top) + 12px) var(--pad) 12px;align-items:center;gap:12px;display:flex}.scanner-top .icon-btn{color:#fff;background:#0000008c;border-color:#fff3}.scanner-window{flex:1;place-items:center;padding:0 32px;display:grid}.reticle{aspect-ratio:1.5;border-radius:var(--r-lg);border:2px solid #ffffffd9;width:100%;max-width:320px;box-shadow:0 0 0 100vmax #00000080}.scanner-foot{padding:var(--gap-md) var(--pad) calc(var(--safe-bottom) + var(--gap-lg));text-align:center;color:#ffffffd9;flex-direction:column;align-items:center;gap:12px;font-size:14px;display:flex}.scanner-foot .btn{color:#fff;background:#ffffff24;border-color:#ffffff40}.section{margin-top:var(--gap-xl)}.section-title{letter-spacing:.07em;text-transform:uppercase;color:var(--text-faint);margin:0 0 var(--gap-sm);font-size:12px;font-weight:620}.section-title+*{margin-top:0}.notice{border-radius:var(--r-md);color:#ffb4b4;margin-top:var(--gap-sm);background:#ff6b6b1f;border:1px solid #ff6b6b40;padding:12px 14px;font-size:13.5px}.notice.is-ok{color:#9fe0b4;background:#3ba55d24;border-color:#3ba55d4d}@media (display-mode:standalone){:root{--screen:100lvh}}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}
