*{box-sizing:border-box}body{margin:0;font-family:Georgia,Times New Roman,serif;background:#faf7f2;color:#23201b}main{max-width:1024px;margin:0 auto;padding:20px 16px 60px}h1{font-size:1.5rem}h2{font-size:1.05rem;margin-top:26px}.topbar{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:#23201b}.topbar .brand{color:#f4e9d4;font-size:1.25rem;text-decoration:none}.topbar nav{display:flex;gap:16px;align-items:center}.topbar nav a{color:#cfc4ae;text-decoration:none;font-size:.95rem}.topbar nav a.active{color:#fff;border-bottom:2px solid #b08968}button,.btn{font:inherit;padding:8px 14px;border:1px solid #b08968;background:#fff;border-radius:6px;cursor:pointer;text-decoration:none;color:inherit;display:inline-block}button.primary,.btn.primary{background:#7f5539;border-color:#7f5539;color:#fff}button.link{border:none;background:none;color:#7f5539;text-decoration:underline;padding:4px}button:disabled{opacity:.5;cursor:default}.topbar button.link{color:#cfc4ae}.intro{padding:10px 0 4px}.intro p{color:#6b6255;margin-top:4px}.filters{display:flex;gap:8px;margin:12px 0 18px;flex-wrap:wrap}input,select{font:inherit;padding:8px 10px;border:1px solid #d8cdb8;border-radius:6px;background:#fff}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px}.book{background:#fff;border:1px solid #e7ddc9;border-radius:10px;padding:12px}.book .cover{height:84px;border-radius:6px;background:#3d4f7c;color:#f4e9d4;display:flex;align-items:flex-end;padding:8px;font-size:.85rem;margin-bottom:8px}.book h3{margin:0 0 4px;font-size:1rem}.muted{color:#6b6255}.small{font-size:.85rem}.error{color:#a33}.ok{color:#37593b}.demobar{background:#8a6d1d;color:#fff8ea;text-align:center;padding:.45rem .8rem;font-size:.9rem}.card{background:#fff;border:1px solid #e7ddc9;border-radius:10px;padding:18px}.card.narrow{max-width:420px;margin:40px auto}.card form,form.rowform{display:flex;flex-direction:column;gap:10px}form.rowform{flex-direction:row;flex-wrap:wrap;margin-bottom:18px}label{display:flex;flex-direction:column;gap:4px;font-size:.95rem}.status{font-size:.85rem}.status.available{color:#37593b}.status.pending{color:#8a6d1d}.status.completed{color:#37593b}.status.declined,.status.swapped{color:#6b6255}.status.cancelled{color:#8a6d1d}.book.skeleton .cover{min-height:90px;background:#efe9dd;animation:pulse 1.2s ease-in-out infinite}.book.skeleton h3,.book.skeleton p{background:#efe9dd;border-radius:4px;animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.swap{background:#fff;border:1px solid #e7ddc9;border-radius:10px;padding:12px 14px;margin:8px 0;display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}.swap p{margin:4px 0 0}.row{display:flex;gap:8px}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;padding:16px}.modal{background:#fff;border-radius:12px;padding:20px;max-width:440px;width:100%}.offer-list{display:flex;flex-direction:column;gap:6px;margin:12px 0}.offer{flex-direction:row;align-items:center;gap:8px;padding:8px 10px;border:1px solid #e7ddc9;border-radius:8px}.offer.sel{border-color:#7f5539;background:#f7efe4}.chatwrap{max-width:640px;margin:0 auto}.chat{background:#fff;border:1px solid #e7ddc9;border-radius:10px;padding:14px;min-height:300px;max-height:55vh;overflow-y:auto}.bubble{max-width:78%;margin:6px 0;padding:8px 12px;border-radius:12px;background:#f1ead9}.bubble.mine{margin-left:auto;background:#7f5539;color:#fff}.bubble.system{margin:10px auto;background:#ede4d0;font-size:.9rem;text-align:center;max-width:92%}.bubble p{margin:2px 0 0}.bubble small{opacity:.75}.bubble .tag{display:inline-block;font-size:.7rem;background:#37593b;color:#fff;border-radius:4px;padding:1px 6px;margin-bottom:4px}.chatbox{display:flex;gap:8px;margin-top:10px}.chatbox input{flex:1}.boot{padding:60px;text-align:center}@media (max-width: 560px){.topbar nav{gap:10px;font-size:.9rem}form.rowform{flex-direction:column}}:root{--forest: #31574b;--peach: #f5e3d8}.topbar{background:#faf7f2;border-bottom:1px solid #e9e2d7;padding:17px max(20px,calc((100vw - 992px)/2));gap:18px}.topbar .brand{color:var(--forest);font-size:1.25rem;font-weight:700;display:flex;align-items:center;gap:10px;white-space:nowrap}.brand-icon{width:38px;height:42px;display:grid;place-items:center;background:var(--forest);color:#fff8ec;border-radius:5px 12px 12px 5px;font-size:1.5rem;box-shadow:inset 4px 0 #6f8a76}.brand small{display:block;font:10px/1.7 Arial,sans-serif;letter-spacing:.07em;color:#807968;font-weight:400}.topbar nav a,.topbar button.link{color:#5e665c;font:13px Arial,sans-serif}.topbar nav a.active{color:var(--forest);border-color:var(--forest);padding-bottom:5px}.topbar nav a[href="/auth"]{background:var(--forest);color:#fff;padding:10px 18px;border-radius:7px;border:0}main{padding-top:0}.intro{text-align:center;padding:38px 0 22px}.eyebrow{display:block;font:9px/1.6 Arial,sans-serif;letter-spacing:.18em;font-weight:700;color:#7c826c}.intro h1{font-size:clamp(2.3rem,5.5vw,3.55rem);line-height:1.12;letter-spacing:-.035em;font-weight:400;margin:13px 0}.intro h1 em{color:var(--forest);font-weight:400}.intro p{font:14px/1.8 Arial,sans-serif;margin:16px 0 20px;color:#777467}button.primary,.btn.primary{background:var(--forest);border-color:var(--forest)}.intro .btn{font:12px Arial,sans-serif;padding:12px 20px;border-radius:7px}.intro .btn span{margin-left:18px}.hero-art{max-width:500px;margin:5px auto -8px}.hero-art img{display:block;width:100%;height:auto;mix-blend-mode:multiply;-webkit-mask-image:radial-gradient(ellipse at center,#000 54%,transparent 76%);mask-image:radial-gradient(ellipse at center,#000 54%,transparent 76%)}.swap-steps{display:flex;align-items:center;justify-content:center;gap:23px;font:11px Arial,sans-serif;color:#636b5d;padding:6px 0 22px}.swap-steps b{font-size:9px;display:inline-grid;place-items:center;width:24px;height:24px;background:#e9eddf;border-radius:50%;margin-right:7px;color:#496148}.swap-steps i{color:#b0b5a1;font-style:normal}.shelf-section{border-top:1px solid #e3dfd2;padding-top:28px}.shelf-heading{display:flex;justify-content:space-between;align-items:end;gap:15px}.shelf-heading h2{font-size:1.65rem;font-weight:400;margin:5px 0 0;letter-spacing:-.025em}.shelf-note{font:11px Arial,sans-serif;color:#8a8779;padding-bottom:3px}.filters{margin:18px 0;gap:10px}.filters input{min-width:0;font:12px Arial,sans-serif;border-color:#e1ddcf;background:#fffdf8;padding:12px 14px}.filters input:first-child{flex:2}.filters input:nth-child(2){flex:1}.filters button{font:12px Arial,sans-serif;padding:10px 24px;color:var(--forest);background:#e8ecdf;border-color:#e8ecdf}.empty-shelf{grid-column:1 / -1;text-align:center;border:1px dashed #d9d9c9;border-radius:14px;padding:27px 20px 30px;background:#f3f3e9}.empty-icon{display:inline-grid;place-items:center;height:34px;width:34px;border-radius:50%;color:#b2775e;background:#f2e2d5;font-size:24px}.empty-shelf h3{font-size:1.2rem;font-weight:400;margin:10px 0 8px}.empty-shelf p{font:12px/1.7 Arial,sans-serif;color:#7f8171;margin:0 auto 17px;max-width:400px}.empty-shelf .btn{font:11px Arial,sans-serif;color:var(--forest);border-color:#b4bda8;background:transparent;padding:9px 16px}.shelf-footer{text-align:center;font:10px/1.7 Arial,sans-serif;color:#969486;padding-top:28px}.shelf-footer span{color:#b07862;margin-left:5px}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid #b88b46;outline-offset:4px}@media (max-width: 560px){.topbar{padding:13px 16px;flex-wrap:wrap;gap:13px}.topbar .brand{font-size:1.06rem}.brand small{font-size:9px}.brand-icon{width:30px;height:34px}.topbar nav{margin-left:auto;gap:13px;flex-wrap:wrap}.topbar nav a{font-size:11px}.topbar nav a[href="/auth"]{padding:9px 12px}.intro{padding-top:30px}.intro p{font-size:12px}.hero-art{max-width:400px;margin-top:12px}.swap-steps{gap:8px;font-size:9px;flex-wrap:wrap;padding-top:13px}.swap-steps b{width:19px;height:19px;margin-right:4px}.shelf-heading{align-items:start;flex-direction:column;gap:8px}.shelf-heading h2{font-size:1.5rem}.filters input:first-child{flex:1 0 100%}.filters input:nth-child(2){flex:1;width:0}.empty-shelf{padding:23px 15px}.empty-shelf h3{font-size:1.1rem}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important}}:root{--terra: #c47a5a;--terra-soft: #d9846b;--gold: #c9a227;--ink: #2c3a33}body{background:#faf7f2 radial-gradient(1100px 380px at 50% -160px,#f6e9da,#f6e9da00 70%)}.topbar .logo{display:block;flex:none;filter:drop-shadow(0 2px 3px rgba(49,87,75,.25))}h1{color:var(--ink);letter-spacing:-.02em;font-weight:400}h2{color:#466052}.page-hero{display:flex;justify-content:space-between;align-items:center;gap:22px;padding:26px 0 6px}.page-hero h1{margin:8px 0 6px;font-size:2rem}.page-hero p{font:13px/1.6 Arial,sans-serif;margin:0}.page-hero-art{width:168px;height:auto;border-radius:18px;mix-blend-mode:multiply;-webkit-mask-image:radial-gradient(ellipse at center,#000 55%,transparent 78%);mask-image:radial-gradient(ellipse at center,#000 55%,transparent 78%);flex:none}.book{border-radius:14px;border-color:#ece3cf;box-shadow:0 1px #f0e9d8,0 10px 22px -16px #31574b59;transition:transform .16s ease,box-shadow .16s ease}.book:hover{transform:translateY(-2px);box-shadow:0 2px #efe6d2,0 16px 26px -14px #31574b66}.book .cover{height:112px;padding:0;overflow:hidden;position:relative;background:#f3eedd}.book .cover img{width:100%;height:100%;object-fit:cover;display:block}.book .cover span{position:absolute;left:8px;bottom:8px;max-width:calc(100% - 16px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:#fffbf0eb;color:#3c4a42;font:11px Arial,sans-serif;padding:3px 9px;border-radius:999px;box-shadow:0 1px 3px #3c321e2e}.book h3{color:var(--ink)}button.primary,.btn.primary{background:linear-gradient(180deg,#3a6852,#2c5041);border-color:#2c5041;border-radius:8px;box-shadow:0 3px 8px -4px #2c50418c}button.primary:hover,.btn.primary:hover{background:linear-gradient(180deg,#41735c,#31574b)}.status.in_swap{color:var(--terra)}.status.in_swap:before{content:"● ";font-size:.6rem;vertical-align:1px}.card{border-color:#ece3cf;box-shadow:0 12px 28px -20px #31574b59}.auth-card{overflow:hidden;padding-top:0}.auth-art{display:block;width:calc(100% + 36px);margin:0 -18px 14px;height:150px;object-fit:cover;object-position:center 38%}.swap{border-radius:14px;border-color:#eadfc6;box-shadow:0 8px 18px -14px #31574b4d;padding:14px 16px}.swap strong{color:var(--forest)}.chat{border-color:#eadfc6}.bubble{background:#f7e9db}.bubble.mine{background:var(--forest)}.modal{box-shadow:0 24px 60px -20px #23201b80}.offer.sel{border-color:var(--terra-soft);background:#fbeee3}.toasts{position:fixed;left:50%;bottom:24px;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:80;pointer-events:none}.toast{display:flex;align-items:center;gap:9px;background:#31574b;color:#fff8ec;font:13px/1.35 Arial,sans-serif;padding:11px 18px;border-radius:999px;box-shadow:0 12px 28px -10px #23201b8c;animation:toast-in .28s cubic-bezier(.2,.9,.3,1.2)}.toast-icon{color:#f2b8a0;font-size:15px}@keyframes toast-in{0%{opacity:0;transform:translateY(12px) scale(.94)}to{opacity:1;transform:none}}@media (max-width: 560px){.topbar .logo{width:30px;height:30px}.page-hero{gap:12px;padding-top:20px}.page-hero h1{font-size:1.6rem}.page-hero-art{width:108px}.book .cover{height:96px}.auth-art{height:120px}}.toast-icon{flex:none}@keyframes rise-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes float-soft{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-7deg)}75%{transform:rotate(7deg)}}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.12)}to{transform:scale(1)}}.grid .book{animation:rise-in .45s ease both}.grid .book:nth-child(2){animation-delay:.06s}.grid .book:nth-child(3){animation-delay:.12s}.grid .book:nth-child(4){animation-delay:.18s}.grid .book:nth-child(n+5){animation-delay:.24s}.swap{animation:rise-in .4s ease both}.hero-art img{animation:float-soft 6s ease-in-out infinite}.page-hero-art{animation:float-soft 7s ease-in-out infinite}.book .cover img,.topbar .logo,.swap-steps b,.topbar nav a,button,.btn,.offer,.swap{transition:transform .22s cubic-bezier(.3,1.4,.5,1),box-shadow .2s ease,background-color .2s ease,color .2s ease,border-color .2s ease}button:active,.btn:active{transform:translateY(0) scale(.97)}@media (hover: hover){.book:hover .cover img{transform:scale(1.07) rotate(-1.2deg)}.book:hover h3{color:var(--terra)}.topbar .brand:hover .logo{animation:wiggle .6s ease}.topbar nav a:hover{transform:translateY(-2px);color:var(--forest)}button:hover,.btn:hover{transform:translateY(-2px);box-shadow:0 8px 16px -10px #2c50418c}.swap-steps span:hover b{transform:scale(1.18) rotate(-6deg);background:#f6e0cf}.offer:hover{transform:translate(3px);border-color:var(--terra-soft)}.swap:hover{transform:translateY(-2px);box-shadow:0 14px 24px -14px #31574b66}.intro h1 em{background:linear-gradient(transparent 82%,#f2d3b8 82%) no-repeat 0 100% / 0 100%;transition:background-size .5s ease}.intro h1:hover em{background-size:100% 100%}.btn.primary span,.intro .btn span{display:inline-block;transition:transform .2s ease}.btn:hover span{transform:translate(3px,-3px)}.shelf-footer span:hover{display:inline-block;animation:pop .4s ease}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.intro .btn .logo{display:inline-block;margin-left:12px;vertical-align:middle;filter:drop-shadow(0 0 .8px #fbf3e4) drop-shadow(0 0 .8px #fbf3e4)}@media (hover: hover){.intro .btn:hover .logo{animation:wiggle .6s ease}}.book .cover.actual-photo img{width:100%;height:100%;object-fit:contain}.book-photo-field{flex:1 1 100%;display:grid;gap:6px;min-width:0}.book-photo-field label{font-weight:600}.book-photo-field small{color:#706f65}.book-photo-field input,.book-photo-actions input{max-width:100%;width:100%;min-width:0;font-size:12px}.photo-preview{display:flex;align-items:center;gap:12px}.photo-preview img{width:76px;height:96px;object-fit:contain;border-radius:6px}.book-photo-actions{display:grid;gap:5px;margin:8px 0}.bell{position:relative;display:inline-flex}.bell-btn{position:relative;display:inline-flex;align-items:center;padding:4px;background:transparent;border:0;color:inherit;cursor:pointer}.bell-count{position:absolute;top:-4px;right:-6px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#c47a5a;color:#fff;font:700 10px/16px Arial,sans-serif;text-align:center}.bell-panel{position:absolute;right:0;top:calc(100% + 8px);width:min(340px,86vw);max-height:70vh;overflow-y:auto;background:#fff;color:#2c3a33;border:1px solid #d9d2c0;border-radius:10px;box-shadow:0 10px 30px #00000026;z-index:50;text-align:left;font:13px Arial,sans-serif}.bell-head{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid #eee7d6}.bell-panel .link{font-size:12px;color:#31574b;text-decoration:underline;background:transparent;border:0;cursor:pointer;padding:0}.bell-note,.bell-empty{margin:0;padding:12px 14px;color:#5e665c;line-height:1.4}.bell-panel ul{list-style:none;margin:0;padding:0}.bell-panel li button{display:block;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid #f1ece0;padding:10px 14px;cursor:pointer;color:inherit;border-radius:0}.bell-panel li button.unread{background:#f5efe2}.bell-panel li span{display:block;font-weight:700}.bell-panel li small{display:block;color:#5e665c;margin-top:2px}.bell-panel li em{display:block;color:#8a8f84;font-style:normal;font-size:11px;margin-top:3px}@media (max-width: 640px){.bell-panel{position:fixed;left:8px;right:8px;top:60px;width:auto}}.alerts-prompt{margin:0 0 16px;padding:14px 16px;border-left:4px solid #31574b}.alerts-prompt p{margin:6px 0 10px}.alerts-prompt div{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.bell-test{display:block;padding:8px 14px}
