:root{--bg:#f5f4ef;--surface:#fff;--surface2:#e5e4df;--line-soft:#e5e4df;--text:#111;--text-dim:#767672;--chalk:#a8ed27;--ink:#111}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,sans-serif}body{min-height:100vh;padding-bottom:78px;overflow-x:hidden}.eyebrow{font-family:Inter,sans-serif;font-weight:600;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim)}h1,h2,h3{font-family:Bebas Neue,sans-serif;margin:0;letter-spacing:.02em;font-weight:400}header.app{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:linear-gradient(180deg,var(--bg) 75%,transparent);padding:20px 18px 12px}header.app h1{font-size:34px;text-transform:uppercase;line-height:1}.header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;max-width:560px;margin:0 auto}.user-chip{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line-soft);border-radius:999px;padding:6px 6px 6px 14px;margin-top:2px}.user-chip span{font-size:12.5px;font-weight:600;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-chip button{width:26px;height:26px;border-radius:50%;border:none;background:var(--surface2);color:var(--text);display:flex;align-items:center;justify-content:center;cursor:pointer}.user-chip button svg{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:6}main{padding:0 16px 24px}#authScreen,main{max-width:560px;margin:0 auto}#authScreen{padding:8px 16px 24px}.auth-hero{text-align:center;padding:30px 10px 24px}.auth-hero .logo-badge{width:62px;height:62px;margin:0 auto 18px;border-radius:10px;background:var(--ink);display:flex;align-items:center;justify-content:center}.auth-hero .logo-badge svg{width:32px;height:32px;stroke:var(--chalk);fill:none;stroke-width:6;stroke-linecap:round;stroke-linejoin:round}.auth-hero h2{font-size:30px;text-transform:uppercase;margin-bottom:8px}.auth-hero p{font-size:13.5px;color:var(--text-dim);line-height:1.5;max-width:320px;margin:0 auto}.auth-card{background:var(--surface);border:1px solid var(--line-soft);border-radius:10px;padding:22px}.auth-card .field{margin-bottom:14px}.auth-card .field input{width:100%;background:var(--bg);border:1px solid var(--line-soft);color:var(--text);padding:12px 13px;border-radius:6px;font-size:15px;font-family:Inter,sans-serif}.auth-card .field input:focus{outline:none;border-color:var(--ink)}.auth-card .field label{font-family:Inter,sans-serif;font-weight:600;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);display:block;margin-bottom:6px}.auth-btn{width:100%;padding:14px;border-radius:6px;border:1px solid var(--ink);background:var(--ink);color:#fff;font-family:Bebas Neue,sans-serif;text-transform:uppercase;font-size:16px;letter-spacing:.06em;cursor:pointer;margin-top:2px}.auth-btn:disabled{opacity:.55;cursor:default}.auth-btn.ghost{background:var(--surface);color:var(--ink);border:1px solid var(--ink)}.auth-error{font-size:12.5px;color:var(--text);font-weight:600;margin-top:-4px;margin-bottom:12px}.auth-note{font-size:12px;color:var(--text-dim);text-align:center;margin-top:14px;line-height:1.5}.demo-code-banner{background:var(--bg);border:1px dashed var(--ink);border-radius:8px;padding:16px;text-align:center;margin-bottom:16px}.demo-code-banner .label{font-size:10.5px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em;font-family:Inter,sans-serif;font-weight:600;margin-bottom:8px}.demo-code-banner .code{font-family:Bebas Neue,sans-serif;font-size:44px;font-weight:400;letter-spacing:.22em;color:var(--ink)}.auth-link{display:block;text-align:center;font-size:13px;color:var(--text-dim);margin-top:16px;cursor:pointer;text-decoration:underline;background:none;border:none;width:100%}nav.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:30;background:var(--ink);border-top:none;display:flex;padding:8px 10px calc(8px + env(safe-area-inset-bottom))}nav.tabbar button{flex:1 1;background:none;border:none;color:#8f8f8c;font-family:Bebas Neue,sans-serif;font-size:13px;letter-spacing:.08em;text-transform:uppercase;display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;border-radius:6px;cursor:pointer}nav.tabbar button svg{width:21px;height:21px;stroke:#8f8f8c;fill:none;stroke-width:5}nav.tabbar button.active{color:var(--chalk)}nav.tabbar button.active svg{stroke:var(--chalk)}.cat-section{margin-bottom:14px;border:1px solid var(--line-soft);border-radius:8px;overflow:hidden;background:var(--surface)}.cat-head{display:flex;align-items:center;gap:10px;padding:15px 14px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;background:none;border:none;width:100%;text-align:left}.cat-dot{width:8px;height:8px;border-radius:1px;flex-shrink:0;background:var(--ink)}.cat-head h3{font-size:19px;text-transform:uppercase;flex:1 1;color:var(--text);letter-spacing:.03em}.cat-count{font-family:Inter,sans-serif;font-weight:600;font-size:12px;color:var(--text-dim)}.cat-chevron{width:14px;height:14px;stroke:var(--text-dim);fill:none;stroke-width:6;transition:transform .2s}.cat-section.open .cat-chevron{transform:rotate(180deg)}.cat-body{border-top:1px solid var(--line-soft)}.ex-row{padding:14px;border-bottom:1px solid var(--line-soft);display:flex;gap:12px;align-items:flex-start}.ex-row:last-child{border-bottom:none}.ex-icon{width:58px;height:58px;flex-shrink:0;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--ink)}.ex-icon svg{width:36px;height:36px}.ex-main{flex:1 1;min-width:0}.ex-name{font-weight:600;font-size:14.5px;line-height:1.25}.ex-equip{font-size:11px;margin-top:2px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.ex-equip,.howto{color:var(--text-dim)}.howto{font-size:12px;margin-top:6px;line-height:1.45}.chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}.chip{font-family:Inter,sans-serif;font-size:11px;font-weight:700;background:var(--surface);border:1px solid var(--ink);color:var(--ink);border-radius:4px;padding:2px 7px;line-height:1.5}.ex-actions{flex-direction:column;gap:6px}.ex-actions,.icon-btn{display:flex;align-items:center}.icon-btn{width:29px;height:29px;border-radius:6px;border:1px solid var(--line-soft);background:var(--surface);color:var(--ink);justify-content:center;cursor:pointer}.icon-btn svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:6}.icon-btn.add{background:var(--chalk)}.icon-btn.add,.icon-btn.remove,.icon-btn.swap{color:var(--ink);border-color:var(--ink)}.edit-panel{padding:0 14px 14px}.edit-panel input{width:100%;background:var(--bg);border:1px solid var(--line-soft);color:var(--text);font-family:Inter,sans-serif;font-weight:600;font-size:13px;padding:9px 10px;border-radius:6px}.edit-panel .hint{font-size:10.5px;color:var(--text-dim);margin-top:5px}.edit-panel .save-btn{margin-top:8px;background:var(--ink);color:#fff;border:1px solid var(--ink);font-family:Bebas Neue,sans-serif;text-transform:uppercase;letter-spacing:.05em;font-size:14px;padding:8px 16px;border-radius:6px;cursor:pointer}.empty{text-align:center;padding:60px 20px;color:var(--text-dim)}.empty svg{width:52px;height:52px;stroke:var(--line-soft);fill:none;stroke-width:4;margin-bottom:14px}.empty p{font-size:14px;line-height:1.5}.empty b{color:var(--text)}.fab{position:fixed;right:18px;bottom:90px;z-index:25;width:54px;height:54px;border-radius:10px;background:var(--chalk);color:var(--ink);border:1px solid var(--ink);box-shadow:none;display:flex;align-items:center;justify-content:center;cursor:pointer}.fab svg{width:24px;height:24px;stroke:var(--ink);fill:none;stroke-width:6}.search-wrap{margin:4px 0 10px}.search-wrap input{width:100%;background:var(--surface);border:1px solid var(--line-soft);color:var(--text);padding:12px 14px;border-radius:6px;font-size:14px;font-family:Inter,sans-serif}.search-wrap input:focus{outline:none;border-color:var(--ink)}.search-wrap input::placeholder{color:var(--text-dim)}.filter-chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}.filter-chip{padding:7px 14px;border-radius:5px;border:1px solid var(--ink);background:var(--surface);color:var(--ink);font-family:Inter,sans-serif;font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;cursor:pointer;white-space:nowrap}.filter-chip.active{background:var(--ink);color:#fff;border-color:var(--ink)}.cat-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;margin-top:6px}.cat-card{border-radius:8px;padding:16px 14px;border:1px solid var(--line-soft);cursor:pointer;background:var(--surface);position:relative;overflow:hidden;min-height:110px;display:flex;flex-direction:column;justify-content:space-between;gap:8px;text-align:left}.cat-card .bar{position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ink)}.cat-card h3{font-size:17px;text-transform:uppercase;line-height:1.15}.cat-card .n{font-family:Inter,sans-serif;font-weight:600;font-size:11px;color:var(--text-dim)}.cat-card .ex-icon{width:44px;height:44px;border-radius:7px}.cat-card .ex-icon svg{width:28px;height:28px}.lib-back{display:flex;align-items:center;gap:8px;color:var(--text-dim);font-family:Inter,sans-serif;font-weight:600;text-transform:uppercase;font-size:12px;letter-spacing:.06em;margin-bottom:10px;cursor:pointer;background:none;border:none;padding:0}.lib-back svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:6}.lib-cat-title h2{font-size:28px;text-transform:uppercase}.lib-list{display:flex;flex-direction:column;gap:10px}.lib-card{display:flex;gap:12px;padding:12px;border:1px solid var(--line-soft);border-radius:8px;background:var(--surface);align-items:flex-start}.lib-card .ex-icon{width:64px;height:64px;border-radius:8px}.lib-card .ex-icon svg{width:40px;height:40px}.lib-card .ex-main{flex:1 1}.lib-card .ex-name{font-size:14.5px}.lib-card .icon-btn{margin-top:2px}.overlay{position:fixed;inset:0;background:hsla(0,0%,7%,.7);z-index:50;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:560px;background:var(--surface);border-radius:12px 12px 0 0;padding:22px 18px calc(22px + env(safe-area-inset-bottom));border-top:1px solid var(--ink);max-height:82vh;overflow-y:auto}.sheet h2{font-size:24px;text-transform:uppercase;margin-bottom:4px}.sheet .sheet-sub{font-size:12.5px;color:var(--text-dim);margin-bottom:14px}.field{margin-bottom:12px}.field label{font-family:Inter,sans-serif;font-weight:600;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);display:block;margin-bottom:5px}.field input,.field select{width:100%;background:var(--bg);border:1px solid var(--line-soft);color:var(--text);padding:10px 12px;border-radius:6px;font-size:14px;font-family:Inter,sans-serif}.sheet-actions{display:flex;gap:10px;margin-top:16px}.sheet-actions button{flex:1 1;padding:13px;border-radius:6px;border:1px solid var(--ink);font-family:Bebas Neue,sans-serif;text-transform:uppercase;font-size:15px;letter-spacing:.05em;cursor:pointer}.btn-primary{background:var(--ink);color:#fff}.btn-ghost{background:var(--surface);color:var(--ink);border:1px solid var(--ink)!important}.swap-list{display:flex;flex-direction:column;gap:9px}.swap-item{display:flex;gap:11px;align-items:center;padding:10px;border:1px solid var(--line-soft);border-radius:8px;background:var(--bg);cursor:pointer;width:100%;text-align:left}.swap-item .ex-icon{width:48px;height:48px;border-radius:7px}.swap-item .ex-icon svg{width:30px;height:30px}.swap-item .ex-name{font-size:14px;font-weight:600}.swap-item .ex-equip{font-size:10.5px}.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:90px;z-index:60;background:var(--ink);border:none;color:#fff;padding:10px 18px;border-radius:6px;font-size:13px;font-weight:600;opacity:0;transition:opacity .25s,bottom .25s;pointer-events:none;text-align:center;max-width:80%}.toast.show{opacity:1;bottom:100px}button{font:inherit}