:root{--bg:#0B0714;--bg-2:#120C1F;--line:#2A1F3D;--brand:#7C3AED;--brand-deep:#2E1065;--brand-soft:#A78BFA;--fg:#F2EEFB;--fg-2:#B9AECF;--fg-3:#8577A0;--danger:#FB7185;--ok:#34D399;--f-display:"Chakra Petch","IBM Plex Sans Thai",system-ui,sans-serif;--f-body:"IBM Plex Sans Thai","Noto Sans Thai",system-ui,-apple-system,"Segoe UI",sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:15px;line-height:1.5;-webkit-tap-highlight-color:transparent;overflow-x:hidden}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--brand-soft);outline-offset:2px}.ic{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}.app{max-width:440px;margin:0 auto;min-height:100%;padding-inline:16px;padding-block:0 32px;background:radial-gradient(120% 40% at 50% -5%,rgba(124,58,237,.22),transparent 70%)}.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;display:flex;align-items:center;gap:8px;min-height:60px;margin-inline:-16px;padding-inline:16px;background:#0b0714db;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;gap:8px;min-width:0;flex:1}.mark{display:grid;grid-template-columns:repeat(2,9px);gap:3px;flex:none}.mark i{width:9px;height:9px;border-radius:3px;background:var(--brand-deep);box-shadow:inset 0 -2px 0 var(--brand-soft)}.mark i:first-child{background:var(--brand)}.wordmark{font-family:var(--f-display);font-weight:700;font-size:19px;letter-spacing:.06em}@media(max-width:374px){.mark{display:none}.wordmark{font-size:18px}}.proto{font-size:11px;font-weight:600;letter-spacing:.04em;color:var(--brand-soft);border:1px solid var(--brand-deep);background:#2e106580;padding:2px 8px;border-radius:99px;white-space:nowrap}.iconbtn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:44px;height:44px;padding:0 10px;border-radius:14px;border:1px solid var(--line);background:var(--bg-2);color:var(--fg-2)}.iconbtn .ic{width:20px;height:20px}.iconbtn.on{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 4px 16px -4px #7c3aedcc}.iconbtn.lbl{font-size:14px;font-weight:600}.back{display:inline-flex;align-items:center;gap:2px;height:44px;padding:0 10px 0 4px;border:0;background:none;color:var(--brand-soft);font-weight:600;min-width:0}.back span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46vw}.tabs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;margin-inline:-16px;padding:6px 16px 14px;scroll-snap-type:x proximity}.tabs::-webkit-scrollbar{display:none}.tab{flex:none;position:relative;display:inline-flex;align-items:center;gap:7px;height:44px;padding:0 18px 0 13px;border-radius:99px;border:1px solid #2C2142;background:linear-gradient(180deg,#221839,#150f24 55%,#110b1d);color:var(--fg-2);font-weight:500;white-space:nowrap;scroll-snap-align:start;box-shadow:inset 0 1px #ffffff14,inset 0 -2px #00000073,0 3px #05030a,0 8px 14px -8px #000000e6}.tab .ic{width:18px;height:18px;color:var(--fg-3)}.tab[aria-selected=true]{color:#fff;border-color:#a78bfabf;background:radial-gradient(80% 90% at 50% 120%,rgba(124,58,237,.55),transparent 70%),linear-gradient(180deg,#2a1d45,#170f28 60%,#120b20);box-shadow:inset 0 1px #ffffff1f,inset 0 -2px 0 var(--brand),0 3px #05030a,0 0 0 1px #7c3aed40,0 8px 20px -8px #7c3aedd9}.tab[aria-selected=true] .ic{color:var(--brand-soft);filter:drop-shadow(0 0 5px rgba(167,139,250,.7))}.tab.add{border-style:dashed;border-color:var(--brand);color:var(--brand-soft);padding:0 14px;background:#7c3aed14;box-shadow:none}.tab.add .ic{color:var(--brand-soft)}.editing .tab:not(.add){border-style:dashed}.editing .tab:not(.add):after{content:"";width:6px;height:6px;border-radius:50%;background:var(--brand-soft);margin-left:2px}.edit-strip{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding:10px 12px;border-radius:14px;background:#7c3aed29;border:1px solid rgba(167,139,250,.35);color:#dcd0ff;font-size:13px}.edit-strip .ic{width:18px;height:18px;color:var(--brand-soft)}.sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:2px 2px 12px}.sec-head h1{margin:0;font-family:var(--f-display);font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--fg-3)}.sec-head span{font-size:12px;color:var(--fg-3);font-variant-numeric:tabular-nums}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 12px}.cell{display:flex;flex-direction:column;align-items:center;gap:8px;min-width:0;padding:0;border:0;background:none;text-decoration:none;color:inherit;position:relative;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}.cell .name{width:100%;font-size:13px;line-height:1.45;text-align:center;color:var(--fg);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere;min-height:2.9em;padding-top:1px}.key{--g:#A78BFA;--r:24px;--rim:5px;position:relative;width:100%;aspect-ratio:1;border-radius:var(--r);display:grid;place-items:center;background:linear-gradient(180deg,#43355f,#251b39 22%,#160f25 62%,color-mix(in srgb,var(--g) 70%,#160F25));box-shadow:inset 0 1px #ffffff38,0 0 0 1px #05030a,0 4px #05030a,0 14px 24px -12px color-mix(in srgb,var(--g) 80%,transparent);transition:transform .12s ease}.key .face{position:absolute;inset:var(--rim);border-radius:calc(var(--r) - var(--rim));background:radial-gradient(85% 50% at 50% 112%,color-mix(in srgb,var(--g) 70%,transparent),transparent 72%),linear-gradient(180deg,#1c1430,#120c1f 55%,#0d0817);box-shadow:inset 0 2px 3px #000000b3,inset 0 0 0 1px #0009,inset 0 -1px color-mix(in srgb,var(--g) 85%,transparent),inset 0 -14px 18px -12px var(--g)}.key:after{content:"";position:absolute;left:20%;right:20%;bottom:calc(var(--rim) - 1px);height:2px;border-radius:2px;background:color-mix(in srgb,var(--g) 60%,#fff);box-shadow:0 0 12px 3px color-mix(in srgb,var(--g) 75%,transparent);z-index:1}.key .ic{position:relative;z-index:1;width:38%;height:38%;color:color-mix(in srgb,var(--g) 55%,#fff);stroke-width:1.8;filter:drop-shadow(0 0 6px color-mix(in srgb,var(--g) 60%,transparent))}.cell:active .key{transform:translateY(2px) scale(.98)}.gi{width:60px;height:60px;display:block;overflow:visible;filter:drop-shadow(0 6px 10px rgba(0,0,0,.45))}.act .iconwrap{position:relative;width:64px;height:64px;display:grid;place-items:center}.act .memo-dot{position:absolute;right:-6px;bottom:-4px;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--bg);border:1px solid var(--line);color:var(--fg-2)}.act .memo-dot .ic{width:12px;height:12px;stroke-width:2.4}.actcell{position:relative;min-width:0}.actcell .cell{width:100%}.share{position:absolute;top:-4px;right:-2px;z-index:3;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;padding:0;border:1px solid #33264D;background:linear-gradient(180deg,#241a3a,#150f24);color:var(--brand-soft);box-shadow:0 2px #05030a,inset 0 1px #ffffff1a}.share .ic{width:16px;height:16px;stroke-width:2.2}.share.none{color:var(--fg-3)}.preview .gi{width:60px;height:60px}.icons.glassy button .gi{width:30px;height:30px;filter:none}.act{padding-top:6px}.cell.act:active .iconwrap{transform:scale(.95)}.act .sub{font-size:11px;color:var(--fg-3);margin-top:-6px}.act .sub.warn{color:#fbbf24}.add-key{width:100%;aspect-ratio:1;border-radius:22px;border:2px dashed rgba(124,58,237,.75);display:grid;place-items:center;color:var(--brand-soft);background:#7c3aed12}.add-key .ic{width:30%;height:30%}.add-glass{width:64px;height:64px;border-radius:18px;border:2px dashed rgba(124,58,237,.75);display:grid;place-items:center;color:var(--brand-soft);background:#7c3aed12}.cell .name.addl{color:var(--brand-soft)}.pen{position:absolute;top:-6px;right:-4px;width:24px;height:24px;border-radius:50%;background:var(--brand);color:#fff;display:grid;place-items:center;box-shadow:0 0 0 3px var(--bg);z-index:2}.pen .ic{width:13px;height:13px;stroke-width:2.4}.hint{margin:22px 4px 0;font-size:12px;color:var(--fg-3);text-align:center}.empty{grid-column:1/-1;padding:18px;border:1px dashed var(--line);border-radius:16px;color:var(--fg-2);font-size:13px;text-align:center}.cat-hero{display:flex;align-items:center;gap:14px;margin:4px 0 18px}.cat-hero .key{width:60px;--r:17px;--rim:3px;flex:none}.cat-hero .key .ic{width:44%;height:44%}.cat-hero h2{margin:0;font-family:var(--f-display);font-size:22px;line-height:1.2;font-weight:600;overflow-wrap:anywhere}.crumb{font-size:12px;color:var(--fg-3)}.cat-hero>div{min-width:0}.scrim{position:fixed;inset:0;z-index:20;background:#040209a8;display:flex;align-items:flex-end;justify-content:center;animation:fade .16s ease}.sheet{width:100%;max-width:440px;max-height:90%;overflow-y:auto;background:#140d22;border:1px solid var(--line);border-bottom:0;border-radius:24px 24px 0 0;padding:10px 16px calc(20px + env(safe-area-inset-bottom,0px));animation:rise .2s ease}.grab{width:40px;height:4px;border-radius:4px;background:#3a2e52;margin:0 auto 10px}.sh-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}.sh-head h3{margin:0;flex:1;min-width:0;font-family:var(--f-display);font-size:18px;font-weight:600;overflow-wrap:anywhere}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{transform:translateY(30px);opacity:.4}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field>label,.field>.lab{font-size:12px;font-weight:600;letter-spacing:.04em;color:var(--fg-2)}.field small{font-size:12px;color:var(--fg-3)}.inp{width:100%;min-height:46px;padding:10px 12px;border-radius:12px;border:1px solid var(--line);background:#0d0817;color:var(--fg);font-size:16px}textarea.inp{min-height:130px;resize:vertical;line-height:1.55}.inp:focus{outline:none;border-color:var(--brand-soft);box-shadow:0 0 0 3px #7c3aed4d}.err{color:var(--danger);font-size:12px}.seg{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:14px;background:#0d0817;border:1px solid var(--line)}.seg button{height:40px;border:0;border-radius:10px;background:none;color:var(--fg-2);font-weight:600;display:flex;align-items:center;justify-content:center;gap:6px}.seg button .ic{width:16px;height:16px}.seg button[aria-pressed=true]{background:var(--brand);color:#fff}.icons{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.icons button{aspect-ratio:1;min-height:44px;border-radius:12px;border:1px solid var(--line);background:#0d0817;color:var(--fg-2);display:grid;place-items:center;padding:0}.icons button .ic{width:20px;height:20px}.icons button[aria-pressed=true]{border-color:var(--brand-soft);background:#7c3aed4d;color:#fff;box-shadow:inset 0 0 0 1px var(--brand-soft)}.swatches{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.sw{display:flex;align-items:center;gap:6px;height:44px;padding:0 8px;border-radius:12px;border:1px solid var(--line);background:#0d0817;color:var(--fg-2);font-size:12px;min-width:0}.sw i{width:14px;height:14px;border-radius:50%;flex:none;background:var(--s);box-shadow:0 0 8px var(--s)}.sw span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sw[aria-pressed=true]{border-color:var(--s);color:#fff;background:color-mix(in srgb,var(--s) 14%,#0D0817)}.preview{display:flex;align-items:center;justify-content:center;gap:18px;padding:16px;margin-bottom:16px;border-radius:18px;background:var(--bg);border:1px solid var(--line)}.preview .cell{width:96px}.dates{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;font-size:13px;padding:12px 14px;border-radius:14px;background:#0d0817;border:1px solid var(--line);margin-bottom:16px}.dates dt{color:var(--fg-3)}.dates dd{margin:0;font-variant-numeric:tabular-nums;color:var(--fg)}.row{display:flex;gap:10px}.btn{flex:1;min-height:48px;padding:0 16px;border-radius:14px;border:1px solid var(--line);background:var(--bg-2);color:var(--fg);font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;text-align:center}.btn .ic{width:18px;height:18px}.btn.primary{background:var(--brand);border-color:#8b5cf6;color:#fff;box-shadow:0 8px 20px -8px #7c3aede6,inset 0 1px #fff3}.btn.danger{color:var(--danger);border-color:#fb718559;background:#fb71850f}.btn.danger.arm{background:var(--danger);color:#1a0610}.btn.ghost{background:none}.stack{display:flex;flex-direction:column;gap:10px}.memo-box{white-space:pre-wrap;overflow-wrap:anywhere;padding:14px;border-radius:14px;background:#0d0817;border:1px solid var(--line);font-size:15px;line-height:1.65;margin-bottom:14px;user-select:text;-webkit-user-select:text}.url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;overflow-wrap:anywhere;user-select:all;-webkit-user-select:all;color:var(--brand-soft)}.note{font-size:12px;color:var(--fg-3);margin:0 0 14px}.tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;padding:2px 8px;border-radius:99px;background:#fbbf241f;color:#fcd34d;border:1px solid rgba(251,191,36,.3);white-space:nowrap}.tag.okk{background:#34d3991f;color:#6ee7b7;border-color:#34d3994d}.tag.bad{background:#fb71851f;color:#fda4af;border-color:#fb71854d}.set{margin-bottom:22px}.set h2{margin:0 0 4px;font-family:var(--f-display);font-size:16px;font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.set>p{margin:0 0 12px;font-size:13px;color:var(--fg-2)}.panel{border-radius:16px;border:1px solid var(--line);background:var(--bg-2);overflow:hidden}.opt{display:flex;align-items:center;gap:12px;min-height:56px;padding:10px 14px;border-bottom:1px solid var(--line);cursor:pointer}.opt:last-child{border-bottom:0}.opt input{width:20px;height:20px;accent-color:var(--brand);flex:none;margin:0}.opt .ot{flex:1;min-width:0}.opt .ot b{display:block;font-weight:500;font-size:14px}.opt .ot small{display:block;color:var(--fg-3);font-size:12px}.kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 14px;padding:14px;font-size:13px}.kv dt{color:var(--fg-3)}.kv dd{margin:0;overflow-wrap:anywhere}.todo{margin:0;padding:12px 14px 12px 32px;font-size:13px;color:var(--fg-2)}.todo li{margin:3px 0}.toast{position:fixed;left:50%;top:calc(68px + env(safe-area-inset-top,0px));transform:translate(-50%);z-index:40;max-width:calc(100% - 32px);padding:10px 16px;border-radius:14px;background:#ede7fb;color:#1b0e33;font-size:14px;font-weight:500;box-shadow:0 10px 30px #00000080;animation:rise .18s ease;text-align:center}.welcome{padding:18px 2px 8px;text-align:left}.welcome h2{margin:18px 0 6px;font-family:var(--f-display);font-size:24px;font-weight:600}.welcome>p{margin:0 0 18px;color:var(--fg-2);font-size:14px}.welcome-keys{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;max-width:260px}.welcome-keys .key{--r:20px;--rim:4px}.inp.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.5;min-height:120px}input[type=file].inp{padding:10px;font-size:14px;color:var(--fg-2)}input[type=file].inp::file-selector-button{margin-right:10px;border:1px solid var(--line);border-radius:10px;background:var(--bg-2);color:var(--fg);padding:6px 10px;font:inherit;font-weight:600}.conf-list{margin:10px 0 0;padding:0 0 0 22px;font-size:13px;color:var(--fg-2)}.opt.confirm{margin-top:12px;border:1px solid rgba(251,113,133,.35);border-radius:14px;background:#fb71850f}.opt.confirm[hidden]{display:none}.btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.sheet p.err{margin:0 0 12px}.acct-banner{display:flex;flex-direction:column;gap:10px;margin:0 0 14px;padding:12px 14px;border-radius:14px;border:1px solid rgba(167,139,250,.35);background:#7c3aed1f;font-size:13px;color:var(--fg-2)}.acct-banner.bad{border-color:#fb718566;background:#fb718514}.acct-banner .btn{min-height:40px;font-size:14px}.acct-banner .row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.err .btn{display:flex;width:100%;margin-top:10px}#auth-layer .scrim{z-index:30}.welcome .stack+.note{margin-top:14px}
