:root{color-scheme:light;--ink:#2e1f5c;--sub:#6b5f94;--pink:#ffc6e0;--blue:#bfe0ff;--lilac:#d9c8ff;--line:#e3d9fb;--card:#fff;
box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;color:var(--ink);font-family:"Sarabun",system-ui,sans-serif;line-height:1.6;
background:linear-gradient(160deg,#ffe3f1 0%,#e4edff 35%,#ece0ff 65%,#ffe6f3 100%) fixed}
h1,h2{font-family:"Mitr","Sarabun",sans-serif;font-weight:500;margin:0;line-height:1.3}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid #8f6be8;outline-offset:2px}
.wrap{max-width:900px;margin:0 auto;padding:22px 16px 80px}
.top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
h1{font-size:1.7rem}
.stat{color:var(--sub);margin:2px 0 0;font-size:.92rem}
.rainbow{height:6px;border-radius:99px;margin:14px 0 0;background:linear-gradient(90deg,#ffb3d6,#ffc6e0,#c9b3ff,#a9cdff,#bfe0ff,#d9c8ff,#ffb3d6)}
.add,.save{background:linear-gradient(120deg,#ffb3d6,#cdb4ff 55%,#a9d0ff);color:var(--ink);border:0;border-radius:14px;padding:10px 16px;font-family:"Mitr",sans-serif;white-space:nowrap}
.tools{margin:16px 0;display:grid;gap:10px}
.tools input{width:100%;padding:11px 14px;border-radius:14px;border:2px solid var(--line);background:#ffffffcc}
.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px}
.chip{border:2px solid var(--line);background:#ffffffb3;border-radius:99px;padding:4px 14px;white-space:nowrap}
.chip[aria-pressed="true"]{background:linear-gradient(120deg,#ffc6e0,#d9c8ff,#bfe0ff);border-color:#cdb4ff}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
@media (min-width:600px){.grid{grid-template-columns:repeat(3,1fr)}}
@media (min-width:820px){.grid{grid-template-columns:repeat(4,1fr)}}
.card{background:var(--card);border:2px solid var(--line);border-radius:18px;padding:0 0 12px;text-align:left;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 6px 0 var(--line)}
.card.k0{border-color:var(--pink);box-shadow:0 6px 0 var(--pink)}
.card.k1{border-color:var(--blue);box-shadow:0 6px 0 var(--blue)}
.card.k2{border-color:var(--lilac);box-shadow:0 6px 0 var(--lilac)}
.cov{position:relative;aspect-ratio:2/3;background:var(--line)}
.cov img,.ph{width:100%;height:100%;object-fit:cover;display:block}
.ph{display:flex;align-items:flex-end;padding:12px;color:var(--ink);font:500 1rem/1.3 "Mitr",sans-serif;overflow:hidden}
.badge{position:absolute;top:8px;left:8px;padding:2px 11px;border-radius:99px;font-size:.78rem;font-weight:500;color:var(--ink);border:2px solid #fff}
.b-have{background:var(--blue)}.b-none{background:var(--lilac)}.b-wish{background:var(--pink)}
.card h2{font-size:1rem;margin:10px 12px 0}
.au{color:var(--sub);font-size:.88rem;margin:0 12px}
.rd{font-size:.8rem;color:var(--sub);margin:2px 12px 0;min-height:1.2em}
.st{color:#f09ac4;margin:0 12px;letter-spacing:1px;min-height:1.4em}
.empty{text-align:center;color:var(--sub);margin-top:30px}
.back{position:fixed;inset:0;background:#2e1f5c99;z-index:20}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:21;max-width:640px;margin:0 auto;background:#fff;border-radius:22px 22px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom,0px));max-height:92%;overflow:auto;border-top:6px solid #cdb4ff}
.sheet label{display:block;margin:12px 0 4px;color:var(--sub);font-size:.9rem}
.sheet input:not([type=file]),.sheet select,.sheet textarea{width:100%;padding:10px 12px;border-radius:12px;border:2px solid var(--line);background:#fbf9ff}
.stars button{background:none;border:0;font-size:1.8rem;padding:0 4px;color:#e6dff7}
.stars button.on{color:#f6a3cb}
.coverbox{display:flex;gap:14px;align-items:flex-start}
.prev{flex:0 0 90px;aspect-ratio:2/3;border-radius:10px;background:#fbf9ff;border:2px dashed var(--lilac);display:flex;align-items:center;justify-content:center;text-align:center;font-size:.8rem;color:var(--sub);overflow:hidden}
.prev img{width:100%;height:100%;object-fit:cover}
.cbtn{display:grid;gap:8px;flex:1}
.cbtn button,.upl{border:2px solid var(--line);background:none;border-radius:12px;padding:8px;text-align:center;margin:0!important;color:var(--ink)!important;font-size:1rem!important;cursor:pointer}
.res{display:flex;gap:10px;overflow-x:auto;margin-top:8px;color:var(--sub);font-size:.9rem}
.hit{flex:0 0 112px;border:2px solid var(--line);background:#fff;border-radius:12px;padding:6px;text-align:left;font-size:.78rem;line-height:1.3}
.hit:hover,.hit:focus-visible{border-color:#cdb4ff}
.hit img,.hit .nop{width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:8px;display:block;margin-bottom:4px;background:var(--line)}
.hit b{display:block;font-weight:500}
.acts{display:flex;gap:10px;margin-top:18px}
.acts button{flex:1;border-radius:14px;padding:11px;border:2px solid var(--line);background:none}
.acts .save{border:0}
.acts .del{flex:0 0 auto;color:#d0455e}
[hidden]{display:none!important}
.acct{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 0;font-size:.88rem;color:var(--sub)}
.acct button{border:2px solid var(--line);background:#ffffffb3;border-radius:99px;padding:3px 12px;font-size:.88rem}
#cfg textarea{font-size:.85rem}
.row2{display:grid;grid-template-columns:1fr auto;gap:8px}
.tools select{padding:10px 12px;border-radius:14px;border:2px solid var(--line);background:#ffffffcc}
.fab{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom,0px));width:62px;height:62px;border-radius:50%;border:0;font:500 2.2rem/1 "Mitr",sans-serif;color:var(--ink);background:linear-gradient(135deg,#ffb3d6,#cdb4ff 55%,#a9d0ff);box-shadow:0 8px 20px #8f6be866;z-index:10}
.pb{color:var(--sub);font-size:.8rem;margin:0 12px}
.vl{font-size:.8rem;color:var(--ink);margin:2px 12px 0;font-weight:500}
.vchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.vchips button{min-width:40px;padding:6px 8px;border-radius:10px;border:2px solid var(--line);background:#fbf9ff}
.vchips button.on{background:var(--blue);border-color:#8fc0f5;font-weight:500}
.vsum{margin-top:8px;font-size:.92rem}
.vsum button{margin-left:6px;border:2px solid var(--line);background:none;border-radius:99px;padding:2px 12px}
