.audiobook-player{background:var(--background-primary);border-top:1px solid var(--border-color);bottom:0;box-shadow:0 -4px 20px rgba(0,0,0,.12);box-shadow:var(--shadow-md,0 -4px 20px rgba(0,0,0,.12));font-family:inherit;left:0;position:fixed;right:0;z-index:1000}.player-mini{gap:12px;height:64px;padding:0 16px}.player-mini,.player-mini-left{align-items:center;display:flex}.player-mini-left{flex:1 1;gap:10px;min-width:0}.player-mini-cover{border-radius:4px;flex-shrink:0;height:40px;object-fit:cover;width:40px}.player-mini-info{display:flex;flex:1 1;flex-direction:column;min-width:0}.player-mini-title{color:var(--text-primary);font-size:14px;font-weight:600}.player-mini-title,.player-mini-voice{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-mini-voice{color:var(--text-secondary);font-size:12px}.player-mini-page{color:var(--text-secondary);cursor:pointer;font-size:11px;opacity:.75;white-space:nowrap}.player-mini-page:hover{color:var(--accent-color);opacity:1}.player-mini-seek-group{display:flex;flex:1 1;flex-direction:column;gap:3px;min-width:0}.player-seek-bar{background:var(--border-color);border-radius:2px;cursor:pointer;height:4px;position:relative}.player-mini-seek{width:100%}.player-seek-fill{background:var(--accent-color);border-radius:2px;height:100%;pointer-events:none;transition:width .1s linear}.player-mini-timestamps{color:var(--text-secondary);display:flex;font-size:11px;justify-content:space-between}.player-mini-controls{align-items:center;display:flex;flex:1 1;gap:8px;justify-content:flex-end}.player-icon-btn{align-items:center;background:transparent;border:none;border-radius:50%;color:var(--text-primary);cursor:pointer;display:flex;flex-shrink:0;justify-content:center;padding:6px;transition:background .15s,color .15s}.player-icon-btn:hover:not(:disabled){background:rgba(0,0,0,.06);background:var(--card-background,rgba(0,0,0,.06))}.player-icon-btn:disabled{cursor:default;opacity:.4}.player-play-btn{background:var(--accent-color);color:#fff;height:38px;width:38px}.player-play-btn:hover:not(:disabled){background:var(--accent-color);background:var(--accent-color-hover,var(--accent-color))}.player-close-btn{color:var(--text-secondary);margin-left:4px}.player-close-btn:hover{color:var(--text-primary)}.player-voice-dropdown{margin-right:32px;position:relative}.player-voice-trigger{align-items:center;background:transparent;border:1px solid var(--border-color);border-radius:999px;color:var(--text-secondary);cursor:pointer;display:flex;font-size:12px;font-weight:500;gap:7px;max-width:180px;padding:6px 12px;transition:border-color .15s,color .15s;white-space:nowrap}.player-voice-trigger:hover:not(:disabled){border-color:var(--accent-color);color:var(--text-primary)}.player-voice-trigger.open{border-color:var(--accent-color);color:var(--accent-color)}.player-voice-trigger:disabled{cursor:default;opacity:.4}.player-voice-trigger>span{flex:1 1;overflow:hidden;text-overflow:ellipsis}.player-voice-trigger-chevron{flex-shrink:0;transition:transform .2s ease}.player-voice-trigger-chevron.open{transform:rotate(180deg)}.player-voice-menu{background:var(--background-primary);border:1px solid var(--border-color);border-radius:10px;bottom:calc(100% + 8px);box-shadow:0 -4px 20px rgba(0,0,0,.18);left:0;min-width:200px;overflow:hidden;position:absolute;z-index:10}.player-voice-option{align-items:center;background:transparent;border:none;border-bottom:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;display:flex;font-size:13px;gap:10px;padding:10px 14px;text-align:left;transition:background .12s;width:100%}.player-voice-option:last-child{border-bottom:none}.player-voice-option:hover{background:color-mix(in srgb,var(--accent-color) 8%,transparent)}.player-voice-option.active{background:color-mix(in srgb,var(--accent-color) 10%,transparent);color:var(--accent-color);font-weight:600}.player-voice-option-dot{background:var(--border-color);border-radius:50%;flex-shrink:0;height:6px;width:6px}.player-voice-option.active .player-voice-option-dot{background:var(--accent-color)}.player-voice-option>span:nth-child(2){flex:1 1}.player-loading,.player-no-audio{color:var(--text-secondary);font-size:14px;padding:16px;text-align:center}@media (max-width:768px){.player-mini-page,.player-mini-voice{display:none}.player-voice-dropdown{margin-right:16px}.player-voice-trigger{max-width:140px}}@media (max-width:640px){.player-mini-timestamps,.player-voice-trigger>span{display:none}.player-voice-trigger{max-width:none;padding:6px 8px}.player-voice-dropdown{margin-right:8px}}@media (max-width:480px){.player-mini{gap:8px;padding:0 12px}.player-mini-seek-group{display:none}.player-mini-title{font-size:13px}.player-play-btn{height:34px;width:34px}}.skeleton-block{animation:skeleton-shimmer 1.2s ease-in-out infinite;background:linear-gradient(90deg,var(--background-secondary) 0,var(--hover-background) 50%,var(--background-secondary) 100%);background-size:200% 100%;border-radius:6px}.skeleton-circle{border-radius:50%}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{flex-shrink:0;width:140px}.skeleton-card__cover{border-radius:8px;height:200px;width:100%}.skeleton-card__line{border-radius:4px;width:100%}.skeleton-card__line--short{width:60%}.skeleton-text__line{border-radius:4px;width:100%}.skeleton-text__line:first-child{margin-top:0}.route-loading-fallback{background:var(--background-primary);min-height:60vh;padding:80px 24px 40px}.route-loading-fallback__content{margin:0 auto;max-width:640px}:root{--toastify-color-light:#fff;--toastify-color-dark:#121212;--toastify-color-info:#3498db;--toastify-color-success:#07bc0c;--toastify-color-warning:#f1c40f;--toastify-color-error:#e74c3c;--toastify-color-transparent:hsla(0,0%,100%,.7);--toastify-icon-color-info:var(--toastify-color-info);--toastify-icon-color-success:var(--toastify-color-success);--toastify-icon-color-warning:var(--toastify-color-warning);--toastify-icon-color-error:var(--toastify-color-error);--toastify-toast-width:320px;--toastify-toast-offset:16px;--toastify-toast-top:max(var(--toastify-toast-offset),env(safe-area-inset-top));--toastify-toast-right:max(var(--toastify-toast-offset),env(safe-area-inset-right));--toastify-toast-left:max(var(--toastify-toast-offset),env(safe-area-inset-left));--toastify-toast-bottom:max(var(--toastify-toast-offset),env(safe-area-inset-bottom));--toastify-toast-background:#fff;--toastify-toast-min-height:64px;--toastify-toast-max-height:800px;--toastify-toast-bd-radius:6px;--toastify-font-family:sans-serif;--toastify-z-index:9999;--toastify-text-color-light:#757575;--toastify-text-color-dark:#fff;--toastify-text-color-info:#fff;--toastify-text-color-success:#fff;--toastify-text-color-warning:#fff;--toastify-text-color-error:#fff;--toastify-spinner-color:#616161;--toastify-spinner-color-empty-area:#e0e0e0;--toastify-color-progress-light:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);--toastify-color-progress-dark:#bb86fc;--toastify-color-progress-info:var(--toastify-color-info);--toastify-color-progress-success:var(--toastify-color-success);--toastify-color-progress-warning:var(--toastify-color-warning);--toastify-color-progress-error:var(--toastify-color-error);--toastify-color-progress-bgo:0.2}.Toastify__toast-container{box-sizing:border-box;color:#fff;padding:4px;position:fixed;-webkit-transform:translateZ(9999);-webkit-transform:translateZ(var(--toastify-z-index));width:320px;width:var(--toastify-toast-width);z-index:9999;z-index:var(--toastify-z-index)}.Toastify__toast-container--top-left{left:max(16px,env(safe-area-inset-left));left:var(--toastify-toast-left);top:max(16px,env(safe-area-inset-top));top:var(--toastify-toast-top)}.Toastify__toast-container--top-center{left:50%;top:max(16px,env(safe-area-inset-top));top:var(--toastify-toast-top);transform:translateX(-50%)}.Toastify__toast-container--top-right{right:max(16px,env(safe-area-inset-right));right:var(--toastify-toast-right);top:max(16px,env(safe-area-inset-top));top:var(--toastify-toast-top)}.Toastify__toast-container--bottom-left{bottom:max(16px,env(safe-area-inset-bottom));bottom:var(--toastify-toast-bottom);left:max(16px,env(safe-area-inset-left));left:var(--toastify-toast-left)}.Toastify__toast-container--bottom-center{bottom:max(16px,env(safe-area-inset-bottom));bottom:var(--toastify-toast-bottom);left:50%;transform:translateX(-50%)}.Toastify__toast-container--bottom-right{bottom:max(16px,env(safe-area-inset-bottom));bottom:var(--toastify-toast-bottom);right:max(16px,env(safe-area-inset-right));right:var(--toastify-toast-right)}@media only screen and (max-width:480px){.Toastify__toast-container{left:env(safe-area-inset-left);margin:0;padding:0;width:100vw}.Toastify__toast-container--top-center,.Toastify__toast-container--top-left,.Toastify__toast-container--top-right{top:env(safe-area-inset-top);transform:translateX(0)}.Toastify__toast-container--bottom-center,.Toastify__toast-container--bottom-left,.Toastify__toast-container--bottom-right{bottom:env(safe-area-inset-bottom);transform:translateX(0)}.Toastify__toast-container--rtl{left:auto;right:env(safe-area-inset-right)}}.Toastify__toast{--y:0;border-radius:6px;border-radius:var(--toastify-toast-bd-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);box-sizing:border-box;cursor:default;direction:ltr;display:flex;font-family:sans-serif;font-family:var(--toastify-font-family);justify-content:space-between;margin-bottom:1rem;max-height:800px;max-height:var(--toastify-toast-max-height);min-height:64px;min-height:var(--toastify-toast-min-height);overflow:hidden;padding:8px;position:relative;touch-action:none;z-index:0}.Toastify__toast--stacked{position:absolute;transform:translate3d(0,var(--y),0) scale(var(--s));transition:transform .3s;width:100%}.Toastify__toast--stacked[data-collapsed] .Toastify__close-button,.Toastify__toast--stacked[data-collapsed] .Toastify__toast-body{transition:opacity .1s}.Toastify__toast--stacked[data-collapsed=false]{overflow:visible}.Toastify__toast--stacked[data-collapsed=true]:not(:last-child)>*{opacity:0}.Toastify__toast--stacked:after{bottom:100%;content:"";height:calc(var(--g)*1px);left:0;position:absolute;right:0}.Toastify__toast--stacked[data-pos=top]{top:0}.Toastify__toast--stacked[data-pos=bot]{bottom:0}.Toastify__toast--stacked[data-pos=bot].Toastify__toast--stacked:before{transform-origin:top}.Toastify__toast--stacked[data-pos=top].Toastify__toast--stacked:before{transform-origin:bottom}.Toastify__toast--stacked:before{bottom:0;content:"";height:100%;left:0;position:absolute;right:0;transform:scaleY(3);z-index:-1}.Toastify__toast--rtl{direction:rtl}.Toastify__toast--close-on-click{cursor:pointer}.Toastify__toast-body{align-items:center;display:flex;flex:1 1 auto;margin:auto 0;padding:6px}.Toastify__toast-body>div:last-child{flex:1 1;word-break:break-word}.Toastify__toast-icon{display:flex;flex-shrink:0;margin-inline-end:10px;width:20px}.Toastify--animate{animation-duration:.5s;animation-fill-mode:both}.Toastify--animate-icon{animation-duration:.3s;animation-fill-mode:both}@media only screen and (max-width:480px){.Toastify__toast{border-radius:0;margin-bottom:0}}.Toastify__toast-theme--dark{background:#121212;background:var(--toastify-color-dark);color:#fff;color:var(--toastify-text-color-dark)}.Toastify__toast-theme--colored.Toastify__toast--default,.Toastify__toast-theme--light{background:#fff;background:var(--toastify-color-light);color:#757575;color:var(--toastify-text-color-light)}.Toastify__toast-theme--colored.Toastify__toast--info{background:#3498db;background:var(--toastify-color-info);color:#fff;color:var(--toastify-text-color-info)}.Toastify__toast-theme--colored.Toastify__toast--success{background:#07bc0c;background:var(--toastify-color-success);color:#fff;color:var(--toastify-text-color-success)}.Toastify__toast-theme--colored.Toastify__toast--warning{background:#f1c40f;background:var(--toastify-color-warning);color:#fff;color:var(--toastify-text-color-warning)}.Toastify__toast-theme--colored.Toastify__toast--error{background:#e74c3c;background:var(--toastify-color-error);color:#fff;color:var(--toastify-text-color-error)}.Toastify__progress-bar-theme--light{background:linear-gradient(90deg,#4cd964,#5ac8fa,#007aff,#34aadc,#5856d6,#ff2d55);background:var(--toastify-color-progress-light)}.Toastify__progress-bar-theme--dark{background:#bb86fc;background:var(--toastify-color-progress-dark)}.Toastify__progress-bar--info{background:#3498db;background:var(--toastify-color-progress-info)}.Toastify__progress-bar--success{background:#07bc0c;background:var(--toastify-color-progress-success)}.Toastify__progress-bar--warning{background:#f1c40f;background:var(--toastify-color-progress-warning)}.Toastify__progress-bar--error{background:#e74c3c;background:var(--toastify-color-progress-error)}.Toastify__progress-bar-theme--colored.Toastify__progress-bar--error,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--info,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--success,.Toastify__progress-bar-theme--colored.Toastify__progress-bar--warning{background:hsla(0,0%,100%,.7);background:var(--toastify-color-transparent)}.Toastify__close-button{align-self:flex-start;background:transparent;border:none;color:#fff;cursor:pointer;outline:none;padding:0;transition:.3s ease;z-index:1}.Toastify__close-button--light{color:#000;opacity:.3}.Toastify__close-button>svg{fill:currentColor;height:16px;width:14px}.Toastify__close-button:focus,.Toastify__close-button:hover{opacity:1}@keyframes Toastify__trackProgress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.Toastify__progress-bar{border-bottom-left-radius:6px;border-bottom-left-radius:var(--toastify-toast-bd-radius);bottom:0;height:100%;left:0;opacity:.7;position:absolute;transform-origin:left;width:100%;z-index:9999;z-index:var(--toastify-z-index)}.Toastify__progress-bar--animated{animation:Toastify__trackProgress linear 1 forwards}.Toastify__progress-bar--controlled{transition:transform .2s}.Toastify__progress-bar--rtl{border-bottom-left-radius:0;border-bottom-right-radius:6px;border-bottom-right-radius:var(--toastify-toast-bd-radius);left:auto;right:0;transform-origin:right}.Toastify__progress-bar--wrp{border-bottom-left-radius:6px;border-bottom-left-radius:var(--toastify-toast-bd-radius);bottom:0;height:5px;left:0;position:absolute;width:100%}.Toastify__progress-bar--wrp[data-hidden=true]{opacity:0}.Toastify__progress-bar--bg{height:100%;opacity:.2;opacity:var(--toastify-color-progress-bgo);width:100%}.Toastify__spinner{animation:Toastify__spin .65s linear infinite;border:2px solid #e0e0e0;border-color:var(--toastify-spinner-color-empty-area);border-radius:100%;border-right-color:#616161;border-right-color:var(--toastify-spinner-color);box-sizing:border-box;height:20px;width:20px}@keyframes Toastify__bounceInRight{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(3000px,0,0)}60%{opacity:1;transform:translate3d(-25px,0,0)}75%{transform:translate3d(10px,0,0)}90%{transform:translate3d(-5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutRight{20%{opacity:1;transform:translate3d(-20px,var(--y),0)}to{opacity:0;transform:translate3d(2000px,var(--y),0)}}@keyframes Toastify__bounceInLeft{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(-3000px,0,0)}60%{opacity:1;transform:translate3d(25px,0,0)}75%{transform:translate3d(-10px,0,0)}90%{transform:translate3d(5px,0,0)}to{transform:none}}@keyframes Toastify__bounceOutLeft{20%{opacity:1;transform:translate3d(20px,var(--y),0)}to{opacity:0;transform:translate3d(-2000px,var(--y),0)}}@keyframes Toastify__bounceInUp{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,3000px,0)}60%{opacity:1;transform:translate3d(0,-20px,0)}75%{transform:translate3d(0,10px,0)}90%{transform:translate3d(0,-5px,0)}to{transform:translateZ(0)}}@keyframes Toastify__bounceOutUp{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,-2000px,0)}}@keyframes Toastify__bounceInDown{0%,60%,75%,90%,to{animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;transform:translate3d(0,-3000px,0)}60%{opacity:1;transform:translate3d(0,25px,0)}75%{transform:translate3d(0,-10px,0)}90%{transform:translate3d(0,5px,0)}to{transform:none}}@keyframes Toastify__bounceOutDown{20%{transform:translate3d(0,calc(var(--y) - 10px),0)}40%,45%{opacity:1;transform:translate3d(0,calc(var(--y) + 20px),0)}to{opacity:0;transform:translate3d(0,2000px,0)}}.Toastify__bounce-enter--bottom-left,.Toastify__bounce-enter--top-left{animation-name:Toastify__bounceInLeft}.Toastify__bounce-enter--bottom-right,.Toastify__bounce-enter--top-right{animation-name:Toastify__bounceInRight}.Toastify__bounce-enter--top-center{animation-name:Toastify__bounceInDown}.Toastify__bounce-enter--bottom-center{animation-name:Toastify__bounceInUp}.Toastify__bounce-exit--bottom-left,.Toastify__bounce-exit--top-left{animation-name:Toastify__bounceOutLeft}.Toastify__bounce-exit--bottom-right,.Toastify__bounce-exit--top-right{animation-name:Toastify__bounceOutRight}.Toastify__bounce-exit--top-center{animation-name:Toastify__bounceOutUp}.Toastify__bounce-exit--bottom-center{animation-name:Toastify__bounceOutDown}@keyframes Toastify__zoomIn{0%{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes Toastify__zoomOut{0%{opacity:1}50%{opacity:0;transform:translate3d(0,var(--y),0) scale3d(.3,.3,.3)}to{opacity:0}}.Toastify__zoom-enter{animation-name:Toastify__zoomIn}.Toastify__zoom-exit{animation-name:Toastify__zoomOut}@keyframes Toastify__flipIn{0%{animation-timing-function:ease-in;opacity:0;transform:perspective(400px) rotateX(90deg)}40%{animation-timing-function:ease-in;transform:perspective(400px) rotateX(-20deg)}60%{opacity:1;transform:perspective(400px) rotateX(10deg)}80%{transform:perspective(400px) rotateX(-5deg)}to{transform:perspective(400px)}}@keyframes Toastify__flipOut{0%{transform:translate3d(0,var(--y),0) perspective(400px)}30%{opacity:1;transform:translate3d(0,var(--y),0) perspective(400px) rotateX(-20deg)}to{opacity:0;transform:translate3d(0,var(--y),0) perspective(400px) rotateX(90deg)}}.Toastify__flip-enter{animation-name:Toastify__flipIn}.Toastify__flip-exit{animation-name:Toastify__flipOut}@keyframes Toastify__slideInRight{0%{transform:translate3d(110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInLeft{0%{transform:translate3d(-110%,0,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInUp{0%{transform:translate3d(0,110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideInDown{0%{transform:translate3d(0,-110%,0);visibility:visible}to{transform:translate3d(0,var(--y),0)}}@keyframes Toastify__slideOutRight{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(110%,var(--y),0);visibility:hidden}}@keyframes Toastify__slideOutLeft{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(-110%,var(--y),0);visibility:hidden}}@keyframes Toastify__slideOutDown{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(0,500px,0);visibility:hidden}}@keyframes Toastify__slideOutUp{0%{transform:translate3d(0,var(--y),0)}to{transform:translate3d(0,-500px,0);visibility:hidden}}.Toastify__slide-enter--bottom-left,.Toastify__slide-enter--top-left{animation-name:Toastify__slideInLeft}.Toastify__slide-enter--bottom-right,.Toastify__slide-enter--top-right{animation-name:Toastify__slideInRight}.Toastify__slide-enter--top-center{animation-name:Toastify__slideInDown}.Toastify__slide-enter--bottom-center{animation-name:Toastify__slideInUp}.Toastify__slide-exit--bottom-left,.Toastify__slide-exit--top-left{animation-duration:.3s;animation-name:Toastify__slideOutLeft;animation-timing-function:ease-in}.Toastify__slide-exit--bottom-right,.Toastify__slide-exit--top-right{animation-duration:.3s;animation-name:Toastify__slideOutRight;animation-timing-function:ease-in}.Toastify__slide-exit--top-center{animation-duration:.3s;animation-name:Toastify__slideOutUp;animation-timing-function:ease-in}.Toastify__slide-exit--bottom-center{animation-duration:.3s;animation-name:Toastify__slideOutDown;animation-timing-function:ease-in}@keyframes Toastify__spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}:root,:root[data-theme=light]{--paper:#faf8f4;--surface:#f1ede5;--surface-strong:#e6e0d4;--raised:#fff;--ink:#1b1a17;--on-ink:#faf8f4;--text-muted:#8c877c;--separator:rgba(27,26,23,.1);--accent:#a33a2b;--accent-hover:#8a2f22;--accent-rgb:163,58,43;--accent-soft:rgba(163,58,43,.08);--on-accent:#fff;--overlay:rgba(27,26,23,.55);--glass:hsla(40,37%,97%,.82);--font-primary:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--font-display:"Literata",Georgia,"Times New Roman",serif;--app-header-height:60px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-pill:999px;--shadow-sm:0 1px 2px rgba(27,26,23,.06);--shadow-md:0 4px 12px rgba(27,26,23,.08);--shadow-lg:0 12px 32px rgba(27,26,23,.12);--shadow-xl:0 24px 48px rgba(27,26,23,.16);--background-primary:var(--paper);--background-secondary:var(--surface);--background-tertiary:var(--surface-strong);--background-color:var(--paper);--bg-primary:var(--paper);--bg-secondary:var(--surface);--bg-card:var(--raised);--bg-input:var(--surface);--card-background:var(--raised);--input-background:var(--surface);--hover-background:#ede8de;--hover-bg:#ede8de;--text-primary:var(--ink);--text-secondary:#5e5a52;--text-tertiary:var(--text-muted);--text-color:var(--ink);--border-color:#e5dfd4;--accent-color:var(--accent);--accent-color-hover:var(--accent-hover);--accent-color-rgb:var(--accent-rgb);--accent-color-light:var(--accent-soft);--accent-subtle-background:var(--accent-soft);--accent-subtle-background-hover:rgba(163,58,43,.14);--primary-color:var(--accent);--nav-background:var(--paper);--nav-text:var(--ink);--header-background:var(--glass);--header-shadow:none;--danger-color:#b42318;--success-color:#2f6b4f;--hero-gradient:var(--paper);--feature-card-bg:var(--raised);--feature-card-border:var(--border-color);color-scheme:light}:root[data-theme=dark]{--paper:#141311;--surface:#1f1d1a;--surface-strong:#2b2824;--raised:#1b1a17;--ink:#ede6d8;--on-ink:#141311;--text-muted:#7f786c;--separator:hsla(40,37%,89%,.1);--accent:#cc5c45;--accent-hover:#d9705a;--accent-rgb:204,92,69;--accent-soft:rgba(204,92,69,.14);--on-accent:#fff;--overlay:rgba(0,0,0,.6);--glass:rgba(20,19,17,.8);--shadow-sm:0 1px 2px rgba(0,0,0,.3);--shadow-md:0 4px 12px rgba(0,0,0,.35);--shadow-lg:0 12px 32px rgba(0,0,0,.45);--shadow-xl:0 24px 48px rgba(0,0,0,.55);--hover-background:#262420;--hover-bg:#262420;--text-secondary:#b3aa9a;--border-color:#2e2b27;--accent-subtle-background-hover:rgba(204,92,69,.22);--danger-color:#f07b6e;--success-color:#7bc4a0;color-scheme:dark}@media (max-width:480px){:root{--app-header-height:56px}}.ui-page{box-sizing:border-box;margin:0 auto;max-width:1280px;padding:40px 24px 80px;width:100%}.ui-page-narrow{max-width:760px}.ui-page-header{margin-bottom:32px}.ui-page-title{color:var(--text-primary);font-family:var(--font-display);font-size:clamp(32px,4vw,44px);font-weight:600;letter-spacing:-.02em;line-height:1.1;margin:0}.ui-page-subtitle{color:var(--text-secondary);font-size:17px;line-height:1.6;margin:12px 0 0;max-width:620px}.ui-btn{align-items:center;border:1px solid transparent;border-radius:var(--radius-pill);box-sizing:border-box;cursor:pointer;display:inline-flex;font:inherit;font-size:14px;font-weight:600;gap:8px;height:40px;justify-content:center;line-height:1;padding:0 18px;text-decoration:none;transition:background-color .15s ease,border-color .15s ease,color .15s ease,opacity .15s ease;white-space:nowrap}.ui-btn:disabled{cursor:not-allowed;opacity:.5}.ui-btn-lg{font-size:15px;height:48px;padding:0 24px}.ui-btn-sm{font-size:13px;height:32px;padding:0 14px}.ui-btn-primary{background:var(--ink);color:var(--on-ink)}.ui-btn-primary:hover:not(:disabled){opacity:.86}.ui-btn-accent{background:var(--accent);color:var(--on-accent)}.ui-btn-accent:hover:not(:disabled){background:var(--accent-hover)}.ui-btn-secondary{background:transparent;border-color:var(--border-color);color:var(--text-primary)}.ui-btn-secondary:hover:not(:disabled){background:var(--hover-background)}.ui-btn-ghost{background:transparent;color:var(--text-primary)}.ui-btn-ghost:hover:not(:disabled){background:var(--hover-background)}.ui-icon-btn{align-items:center;background:var(--raised);border:1px solid var(--border-color);border-radius:50%;color:var(--text-primary);cursor:pointer;display:inline-flex;flex-shrink:0;height:40px;justify-content:center;padding:0;transition:background-color .15s ease,opacity .15s ease;width:40px}.ui-icon-btn:hover:not(:disabled){background:var(--hover-background)}.ui-icon-btn:disabled{cursor:default;opacity:.35}.ui-section-header{align-items:flex-end;display:flex;gap:24px;justify-content:space-between;margin-bottom:24px}.ui-section-header-text{min-width:0}.ui-section-eyebrow{color:var(--accent);display:inline-block;font-size:12px;font-weight:600;letter-spacing:.08em;margin-bottom:10px;text-transform:uppercase}.ui-section-title{color:var(--text-primary);font-family:var(--font-display);font-size:clamp(24px,2.6vw,32px);font-weight:600;letter-spacing:-.015em;line-height:1.2;margin:0}.ui-section-subtitle{color:var(--text-secondary);font-size:16px;line-height:1.6;margin:8px 0 0;max-width:600px}.ui-section-action{align-items:center;color:var(--text-primary);display:inline-flex;flex-shrink:0;font-size:14px;font-weight:600;gap:6px;padding:6px 0;text-decoration:none}.ui-section-action svg{transition:transform .15s ease}.ui-section-action:hover svg{transform:translateX(3px)}.ui-chip-row{display:flex;flex-wrap:wrap;gap:8px}.ui-chip{align-items:center;background:transparent;border:1px solid var(--border-color);border-radius:var(--radius-pill);box-sizing:border-box;color:var(--text-secondary);cursor:pointer;display:inline-flex;font:inherit;font-size:14px;font-weight:500;height:34px;padding:0 14px;transition:background-color .15s ease,color .15s ease,border-color .15s ease;white-space:nowrap}.ui-chip:hover{background:var(--hover-background);color:var(--text-primary)}.ui-chip.active{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}.ui-tag{align-items:center;background:var(--surface);border-radius:var(--radius-pill);color:var(--text-secondary);display:inline-flex;font-size:12px;font-weight:500;padding:3px 10px}.ui-search{align-items:center;display:flex;max-width:520px;position:relative;width:100%}.ui-search svg{color:var(--text-muted);left:16px;pointer-events:none;position:absolute}.ui-search input{background:var(--raised);border:1px solid var(--border-color);border-radius:var(--radius-pill);box-sizing:border-box;color:var(--text-primary);font:inherit;font-size:15px;height:48px;padding:0 16px 0 46px;transition:border-color .15s ease,box-shadow .15s ease;width:100%}.ui-search input::placeholder{color:var(--text-muted)}.ui-search input:focus,.ui-search input:focus-visible{border-color:var(--text-muted);box-shadow:0 0 0 3px var(--accent-soft);outline:none}@media (max-width:640px){.ui-page{padding:28px 16px 64px}.ui-section-header{align-items:flex-start;flex-direction:column;gap:12px;margin-bottom:20px}}body{background-color:var(--background-primary);color:var(--text-primary);margin:0;padding:0}.book-categories{justify-content:center;margin:10px 0}.category-tag{background-color:var(--accent-color);border-radius:16px;color:#fff;display:inline-block;padding:4px 12px}.book-categories-horizontal{margin:5px 0;max-width:200px}.file-upload-container{margin-bottom:10px}.selected-file{background-color:var(--background-secondary);border-radius:4px;justify-content:space-between;margin-top:8px}.clear-file{color:#dc3545;font-size:16px;padding:0 8px}.clear-file:hover{color:#c82333}.loading-container{align-items:center;background:var(--background-primary);display:flex;justify-content:center;min-height:100vh}.loading-spinner{border-top:5px solid var(--background-secondary);border:5px solid var(--background-secondary)}body,html{background:var(--background-primary);color:var(--text-primary);margin:0;overflow-x:clip;padding:0;width:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:var(--font-primary);text-rendering:optimizeLegibility}h1,h2{font-family:var(--font-display);letter-spacing:-.01em}::selection{background:rgba(var(--accent-rgb),.2)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media only screen and (min-width:700px) and (max-width:12000px){body{margin:auto;width:100%}}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.main-container{overflow-x:hidden;width:100%}.main-container,.main-container-400{align-items:center;display:flex;flex-direction:column;margin:auto}.main-container-400{max-width:400px;padding:100px 20px}.main-container>h2{color:var(--text-primary);font-size:32px;font-weight:600;margin:0 0 40px}.submit-btn{background:var(--accent-color);border-radius:12px;color:#fff;font-size:13px;font-size:15px;height:36px;margin:10px 0;width:90%}.submit-btn:hover{background:var(--accent-color-hover);transform:translateY(-2px)}.submit-btn:active{box-shadow:0 2px 4px rgba(80,195,232,.2);transform:translateY(0)}.image-preview{background:var(--card-background);border:1px solid var(--border-color);border-radius:8px;box-shadow:var(--shadow-md);height:auto;max-height:450px;max-width:300px;object-fit:contain;transition:transform .3s ease}.image-preview:hover{box-shadow:var(--shadow-lg);transform:scale(1.02)}.lrg-font{font-size:18px;font-weight:700}input:focus,textarea:focus{outline:none}::-webkit-scrollbar{display:none}*{-ms-overflow-style:none;scrollbar-color:transparent transparent;scrollbar-width:none}.hero-section{background:var(--hero-gradient);box-shadow:var(--shadow-lg);color:var(--text-primary);overflow:hidden;padding:50px 20px;position:relative;text-align:center;width:100%}.hero-section:before{background:radial-gradient(circle at 20% 150%,hsla(0,0%,100%,.08) 0,transparent 60%);bottom:0;content:"";left:0;position:absolute;right:0;top:0}.hero-description{color:hsla(0,0%,100%,.9);font-size:1.25rem;line-height:1.6;margin:0 auto 50px;max-width:800px;text-align:center}.feature-cards{display:flex;flex-wrap:wrap;gap:30px;justify-content:center;margin-top:40px;padding:0 20px}.feature-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--feature-card-bg);border:1px solid var(--feature-card-border);border-radius:20px;flex:1 1;padding:35px;transition:all .3s ease}.feature-card svg{height:64px;margin-bottom:20px;opacity:.9;width:64px}.feature-card h3{font-size:1.4rem;font-weight:500;margin-bottom:15px}.feature-card p{line-height:1.6}.getting-started-section{background:var(--background-secondary);border:1px solid var(--border-color);margin:0;overflow:hidden;padding:30px 20px;position:relative;width:100%}.getting-started-section:before{background:radial-gradient(circle at 30% 50%,rgba(var(--accent-rgb),.03) 0,transparent 50%),radial-gradient(circle at 70% 80%,rgba(var(--accent-rgb),.02) 0,transparent 50%);bottom:0;content:"";left:0;position:absolute;right:0;top:0;z-index:1}.getting-started-content{align-items:center;display:flex;gap:30px;justify-content:space-between;margin:0 auto;max-width:800px;position:relative;z-index:2}.getting-started-text{flex:1 1}.getting-started-text h3{color:var(--text-primary);font-size:1.8rem;font-weight:600;margin:0 0 10px}.getting-started-text p{color:var(--text-secondary);font-size:1.1rem;line-height:1.5;margin:0}.getting-started-btn{align-items:center;background:var(--accent-color);border:1px solid var(--accent-color);border-radius:12px;box-shadow:var(--shadow-sm);color:#fff;cursor:pointer;display:flex;font-size:1rem;font-weight:600;gap:8px;padding:15px 25px;transition:all .3s ease;white-space:nowrap}.getting-started-btn:hover{background:var(--accent-color-hover);box-shadow:var(--shadow-md);transform:translateY(-2px)}.getting-started-btn:active{transform:translateY(0)}.btn-icon{font-size:1.2rem}@media (max-width:768px){.getting-started-content{flex-direction:column;gap:20px;text-align:center}.getting-started-text h3{font-size:1.5rem}.getting-started-text p{font-size:1rem}.getting-started-btn{font-size:.9rem;padding:12px 20px}}.books-section.continue-reading{background:var(--background-secondary);box-shadow:var(--shadow-sm);padding-left:25px;padding-top:20px;width:100%}.continue-reading .book-img-container{background:var(--card-background)}.continue-reading .book-info h3{color:var(--text-primary)}.continue-reading .submit-btn{background:var(--background-secondary);color:var(--text-primary)}.continue-reading .scroll-button{background:var(--accent-color);color:#fff}.continue-reading .scroll-button:hover{background:var(--accent-color-hover)}.books-section.featured-books{padding-left:25px;width:100%}.featured-books .book-img-container{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--feature-card-bg);border:1px solid var(--feature-card-border)}.featured-books .book-info h3{color:var(--text-primary)}.featured-books .book-info h4{color:var(--text-secondary)}.featured-books .category-tag-small{background:var(--feature-card-bg);color:var(--text-primary)}.featured-books .lrg-font{color:var(--text-primary)}.featured-books .scroll-button{background:var(--card-background);color:var(--text-primary)}.featured-books .scroll-button:hover{background:var(--accent-color);color:#fff}.books-section.popular-now{padding-left:25px;padding-top:20px;position:relative;width:100%}.popular-now .book-img{transform:rotate(-3deg);transition:transform .3s ease}.popular-now .book-img-container:hover .book-img{transform:rotate(0deg)}.popular-now .book-info h3,.popular-now .category-tag-small{color:#e53e3e}.popular-now .scroll-button{background:#e53e3e;color:#fff}.popular-now .scroll-button:hover{background:#c53030}.categories-section{background:var(--background-primary);width:100%}.categories-section h2{color:var(--text-primary);font-size:2rem;font-weight:700;margin-bottom:30px;margin-top:0;text-align:center}.categories-nav{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-bottom:40px;padding:0 20px}.category-btn{background:var(--background-secondary);border:none;border:1px solid var(--border-color);border-radius:12px;color:var(--text-secondary);cursor:pointer;font-size:15px;font-weight:500;padding:12px 24px;transition:all .3s ease;white-space:nowrap}.category-btn:hover{background:var(--hover-background);border-color:var(--accent-color);transform:translateY(-2px)}.category-btn.active{background:var(--accent-color);border-color:var(--accent-color);color:#fff}.books-section[class*=category-]{background:var(--card-background);overflow:hidden;padding-left:25px;padding-top:25px;position:relative}.books-section[class*=category-]:before{background:linear-gradient(120deg,transparent 10%,var(--accent-color) 50%,transparent 90%);content:"";height:100%;left:0;opacity:.05;position:absolute;top:0;width:100%;z-index:0}.books-section[class*=category-] .book-img-container{border-radius:16px;overflow:hidden;position:relative;transition:all .4s cubic-bezier(.4,0,.2,1);z-index:1}.books-section[class*=category-] .book-img-container:hover{transform:translateY(-10px)}.books-section[class*=category-] .book-info h3{color:var(--text-primary);font-size:1.1rem;font-weight:600;margin:12px 0 8px}.books-section[class*=category-] .book-info h4{color:var(--text-secondary);font-size:.9rem;margin-bottom:10px}.books-section[class*=category-] .lrg-font{color:var(--text-primary);display:inline-block;font-size:2rem;font-weight:700;margin-bottom:30px;padding-bottom:15px;position:relative}.books-section[class*=category-] .lrg-font:after{background:var(--accent-color);border-radius:2px;bottom:0;content:"";height:3px;left:0;position:absolute;width:100%}.books-section[class*=category-] .scroll-button{background:var(--card-background);border:1px solid var(--border-color);box-shadow:var(--shadow-sm);color:var(--text-primary);transition:all .3s cubic-bezier(.4,0,.2,1)}.books-section[class*=category-] .scroll-button:hover{background:var(--accent-color);border-color:var(--accent-color);box-shadow:var(--shadow-md);color:#fff;transform:translateY(-50%) scale(1.1)}.category-tag-small{background:var(--background-secondary);font-size:.8rem}@media (max-width:768px){.books-section[class*=category-] .lrg-font{font-size:1.5rem;margin-bottom:20px}.books-section[class*=category-] .book-img-container{padding:15px}.books-section[class*=category-] .book-info h3{font-size:1rem}.books-section[class*=category-] .book-info h4{font-size:.8rem}}.categories-hero{background:linear-gradient(135deg,#1e293b,#334155);color:#fff;margin-bottom:40px;overflow:hidden;padding:80px 20px;position:relative;text-align:center;width:100%}.categories-hero:before{background:radial-gradient(circle at 80% 20%,rgba(var(--accent-rgb),.15) 0,transparent 60%);bottom:0;content:"";left:0;position:absolute;right:0;top:0}.categories-hero h2{color:#fff;font-size:2.8rem;font-weight:600;margin-bottom:20px;text-shadow:0 2px 4px rgba(0,0,0,.2)}.categories-hero-description{color:hsla(0,0%,100%,.9);font-size:1.2rem;line-height:1.6;margin:0 auto 40px;max-width:800px}.categories-feature-grid{grid-gap:30px;display:grid;gap:30px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin:0 auto;max-width:1200px;padding:0 20px}.categories-feature-item{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:hsla(0,0%,100%,.05);border:1px solid hsla(0,0%,100%,.1);border-radius:20px;padding:30px;transition:all .3s ease}.categories-feature-item:hover{background:hsla(0,0%,100%,.08);border-color:hsla(0,0%,100%,.2);transform:translateY(-5px)}.categories-feature-item svg{color:var(--accent);height:40px;margin-bottom:20px;opacity:.9;width:40px}.categories-feature-item h3{color:#fff;font-size:1.3rem;font-weight:500;margin-bottom:12px}.categories-feature-item p{color:hsla(0,0%,100%,.7);line-height:1.6}@media (max-width:768px){.categories-hero{padding:60px 20px}.categories-hero h2{font-size:2rem}.categories-hero-description{font-size:1.1rem}.categories-feature-grid{gap:20px;grid-template-columns:1fr}.categories-feature-item{padding:20px}}.empty-state{align-items:center;display:flex;flex-direction:column;justify-content:center;margin:40px auto;max-width:400px;padding:40px 20px;text-align:center}.empty-state-icon{background:var(--background-secondary);border:1px solid var(--border-color);border-radius:50%;height:120px;padding:24px;transition:all .3s ease;width:120px}.empty-state:hover .empty-state-icon{background:var(--hover-background);color:var(--accent-color);transform:scale(1.05)}.empty-state h2{font-size:24px;margin-bottom:12px}.empty-state p{font-size:16px;line-height:1.5;margin-bottom:24px}.empty-state-buttons{gap:10px;margin-top:8px}.empty-state-button{border-radius:8px;font-size:14px;gap:6px;padding:10px 20px}.empty-state-button svg{height:16px;width:16px}.empty-state-button.primary{box-shadow:var(--shadow-sm)}.empty-state-button.primary:hover{box-shadow:var(--shadow-md)}.empty-state-button.secondary{color:var(--text-secondary)}.empty-state-button.secondary:hover{border-color:var(--accent-color);color:var(--text-primary)}.hero-features{grid-gap:40px;display:grid;gap:40px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin:0 auto;max-width:1000px}.hero-feature{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:hsla(0,0%,100%,.05);border:1px solid hsla(0,0%,100%,.1);border-radius:20px;padding:30px;text-align:center;transition:all .3s ease}.hero-feature:hover{background:hsla(0,0%,100%,.08);border-color:hsla(0,0%,100%,.2);transform:translateY(-5px)}.hero-icon{height:40px;margin-bottom:20px;transition:all .3s ease;width:40px}.hero-feature:hover .hero-icon{color:var(--accent);transform:scale(1.1)}.hero-feature h3{font-size:1.25rem;font-weight:600;margin-bottom:12px}.hero-feature p{color:hsla(0,0%,100%,.7);font-size:.95rem;line-height:1.5}.hero-stats{border-top:1px solid hsla(0,0%,100%,.1);display:flex;gap:60px;justify-content:center;margin-top:60px;padding-top:40px}.stat-number{color:var(--accent)}.stat-label{color:hsla(0,0%,100%,.7)}.visibility-toggle{align-items:center;background:none;border:none;color:#94a3b8;cursor:pointer;display:flex;justify-content:center;padding:0;position:absolute;right:16px;transition:color .2s ease}.visibility-toggle:hover{color:#64748b}.terms-checkbox{margin:8px 0}.checkbox-container{align-items:center;color:#475569;cursor:pointer;display:flex;font-size:14px;gap:12px}.checkbox-container input[type=checkbox]{cursor:pointer;height:18px;margin:0;width:18px}.checkbox-text{line-height:1.5}select[multiple]{height:auto!important;min-height:120px;padding:8px!important}select[multiple] option{border-radius:6px;margin:2px 0;padding:8px 12px;transition:all .2s ease}select[multiple] option:checked{background:var(--accent) var(--accent);color:#fff}select[multiple] option:hover{background:var(--accent-soft)}.textarea-input{line-height:1.5;min-height:120px!important;padding-top:12px!important;resize:vertical}.view-more-link{color:#666;display:flex;justify-content:center;margin-top:2rem;text-align:center}.stats-section{background:var(--background-secondary);margin-top:-20px;padding:40px 20px}.stats-grid{grid-gap:30px;display:grid;gap:30px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin:0 auto;max-width:1200px}.stat-card{background:var(--card-background);border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-sm);padding:24px;text-align:center;transition:all .3s ease}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-5px)}.stat-number{color:var(--accent-color);display:block;font-size:3rem;font-weight:700;line-height:1;margin-bottom:8px}.stat-label{color:var(--text-secondary);font-size:1rem;letter-spacing:1px;text-transform:uppercase}.form-row{grid-gap:20px;display:grid;gap:20px;grid-template-columns:1fr 1fr}.form-field{display:flex;flex-direction:column;gap:8px}.form-field label{color:var(--text-secondary);font-size:14px;font-weight:500}.input-group{align-items:center;display:flex;position:relative}.input-group svg{color:var(--text-secondary);left:16px;position:absolute}.input-group input,.input-group select,.input-group textarea{background:var(--background-secondary);border:1px solid var(--border-color);border-radius:12px;color:var(--text-primary);font-size:15px;height:48px;padding:0 16px 0 48px;transition:all .2s ease;width:100%}.input-group textarea{font-family:inherit;height:120px;padding-top:14px;resize:vertical}.input-group input::placeholder,.input-group textarea::placeholder{color:var(--text-secondary)}.input-group input:focus,.input-group select:focus,.input-group textarea:focus{background:var(--card-background);border-color:var(--accent-color);box-shadow:0 0 0 4px rgba(var(--accent-rgb),.1);outline:none}.select-input{appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 16px center;background-repeat:no-repeat;background-size:16px;padding-right:48px}.spinner{border:4px solid var(--border-color);height:60px;margin:40px;position:absolute;right:30%;top:40%;width:60px}.settings-page{min-height:100vh;padding-top:40px}.settings-page,.settings-page.dark,.settings-page.light{background:var(--background-primary)}.settings-container{grid-gap:3rem;align-items:start;display:grid;gap:3rem;grid-template-columns:1fr 1fr;margin:0 auto;max-width:1200px;padding:2rem 1.5rem 3rem}.profile-section-container{display:flex;flex-direction:column;gap:1.5rem}.profile-card{background:var(--card-background);border:1px solid var(--border-color);border-radius:24px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);padding:2rem;position:relative;transition:all .3s ease}.profile-card:hover{box-shadow:0 10px 25px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);transform:translateY(-2px)}.profile-card.dark{box-shadow:0 4px 6px -1px rgba(0,0,0,.3),0 2px 4px -1px rgba(0,0,0,.2)}.profile-card.dark:hover{box-shadow:0 10px 25px -3px rgba(0,0,0,.4),0 4px 6px -2px rgba(0,0,0,.3)}.edit-profile-button{align-items:center;background:var(--background-secondary);border:1px solid var(--border-color);border-radius:12px;color:var(--text-secondary);display:none;height:40px;justify-content:center;position:absolute;right:1.5rem;text-decoration:none;top:1.5rem;transition:all .2s ease;width:40px}.edit-profile-button:hover{background:var(--accent-color);color:#fff;text-decoration:none;transform:translateY(-1px)}.profile-header{align-items:center;display:flex;gap:1.5rem;margin-bottom:1.5rem}.profile-avatar-container{flex-shrink:0}.profile-avatar{align-items:center;background:var(--background-secondary);border:2px solid var(--border-color);border-radius:20px;display:flex;height:80px;justify-content:center;overflow:hidden;transition:all .2s ease;width:80px}.profile-avatar:hover{border-color:var(--accent-color);transform:scale(1.05)}.profile-avatar.dark{background:hsla(0,0%,100%,.05);border-color:hsla(0,0%,100%,.1)}.profile-avatar img{height:100%;object-fit:cover;width:100%}.user-details{flex:1 1;min-width:0}.user-details h2{color:var(--text-primary);font-size:1.5rem;font-weight:600;letter-spacing:-.01em;margin:0 0 .25rem}.user-meta-info h3{color:var(--text-secondary);font-size:.95rem;font-weight:400;margin:0 0 .75rem}.user-meta{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.role-badge{align-items:center;background:var(--accent-color-light);border-radius:12px;color:var(--accent-color);display:inline-flex;font-size:.875rem;font-weight:500;gap:.5rem;padding:.375rem .75rem;transition:all .2s ease}.role-badge:hover{background:var(--accent-color);color:#fff;transform:translateY(-1px)}.role-badge.dark{background:rgba(var(--accent-color-rgb),.15)}.role-badge svg{height:14px;width:14px}.guest-message{background:var(--background-secondary);border:1px solid var(--border-color);border-radius:12px;margin-top:1rem;padding:1.5rem}.guest-message h3{font-size:1.25rem;margin:0 0 .5rem}.guest-message p{font-size:.95rem}.guest-signin-button{align-items:center;background:var(--accent-color);border:none;border-radius:12px;color:#fff;cursor:pointer;display:inline-flex;font-size:.95rem;font-weight:500;gap:.5rem;justify-content:center;margin-top:1rem;padding:.75rem 1.5rem;transition:all .2s ease}.guest-signin-button:hover{background:var(--accent-color-hover);transform:translateY(-1px)}.profile-section{border-top:1px solid var(--border-color);padding:1rem 0}.profile-section:first-of-type{padding-top:1rem}.section-title{align-items:center;color:var(--text-primary);display:flex;font-size:1rem;font-weight:600;gap:.5rem;margin:0 0 .75rem}.section-title svg{color:var(--accent-color)}.user-description{color:var(--text-secondary);font-size:.95rem;line-height:1.6;margin:0}.mood-tags,.user-characteristics{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.characteristic-tag,.mood-tag{border-radius:12px;font-size:.875rem;font-weight:500;padding:.375rem .75rem;transition:all .2s ease}.characteristic-tag{background:var(--background-secondary);border:1px solid var(--border-color);color:var(--text-secondary)}.characteristic-tag:hover{border-color:var(--accent-color);transform:translateY(-1px)}.characteristic-tag:hover,.mood-tag{background:var(--accent-color-light);color:var(--accent-color)}.mood-tag:hover{background:var(--accent-color);color:#fff;transform:translateY(-1px)}.mood-tag.dark{background:rgba(var(--accent-color-rgb),.15)}.subscription-card{background:var(--card-background);border:1px solid var(--border-color);border-radius:20px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);padding:1.5rem;transition:all .3s ease}.subscription-card:hover{box-shadow:0 8px 20px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);transform:translateY(-1px)}.subscription-card.dark{box-shadow:0 4px 6px -1px rgba(0,0,0,.3),0 2px 4px -1px rgba(0,0,0,.2)}.subscription-card .section-title{align-items:center;color:var(--text-primary);display:flex;font-size:1.125rem;font-weight:600;gap:.5rem;margin:0 0 1rem}.subscription-card .section-title svg{color:var(--accent-color)}.subscription-info{margin:0}.subscription-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.75rem}.subscription-header span{color:var(--text-primary);font-size:1.1rem;font-weight:600}.subscription-status{color:var(--text-secondary);font-size:.875rem;margin-bottom:1rem}.subscription-status span{border-radius:8px;font-size:.75rem;font-weight:600;letter-spacing:.025em;padding:.25rem .5rem;text-transform:uppercase}.subscription-status span.active{background:#dcfce7;color:#16a34a}.subscription-status span.cancelled,.subscription-status span.expired{background:#fee2e2;color:#dc2626}.dark .subscription-status span.active{background:rgba(22,163,74,.15);color:#4ade80}.dark .subscription-status span.cancelled,.dark .subscription-status span.expired{background:rgba(220,38,38,.15);color:#f87171}.plan-features{margin:1rem 0}.feature-item{align-items:center;color:var(--text-secondary);display:flex;font-size:.875rem;gap:.5rem;padding:.5rem 0}.feature-item svg{color:var(--accent-color);flex-shrink:0}.subscription-expiry{align-items:center;color:var(--text-secondary);display:flex;font-size:.875rem;gap:.375rem;margin:1rem 0}.subscription-expiry svg{color:var(--accent-color)}.subscription-manage-button{background:var(--accent-color);border:none;border-radius:12px;color:#fff;cursor:pointer;font-size:.95rem;font-weight:500;margin-top:1rem;padding:.75rem 1rem;transition:all .2s ease;width:100%}.subscription-manage-button:hover{background:var(--accent-color-hover);transform:translateY(-1px)}.subscription-prompt{color:var(--text-secondary);font-size:.95rem;line-height:1.5;margin:1rem 0}.settings-menu{background:var(--card-background);border:1px solid var(--border-color);border-radius:24px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);height:fit-content;padding:2rem;transition:all .3s ease}.settings-menu:hover{box-shadow:0 10px 25px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);transform:translateY(-2px)}.settings-menu.dark{box-shadow:0 4px 6px -1px rgba(0,0,0,.3),0 2px 4px -1px rgba(0,0,0,.2)}.settings-menu.dark:hover{box-shadow:0 10px 25px -3px rgba(0,0,0,.4),0 4px 6px -2px rgba(0,0,0,.3)}.settings-section-title{color:var(--text-primary);font-size:1.5rem;font-weight:600;letter-spacing:-.01em;margin:0 0 1.5rem}.settings-menu-content{display:flex;flex-direction:column;gap:.5rem}.settings-link{align-items:center;border:1px solid transparent;border-radius:16px;display:flex;padding:1rem;transition:all .2s ease}.settings-link,.settings-link:hover{color:var(--text-primary);text-decoration:none}.settings-link:hover{background:var(--background-secondary);border-color:var(--border-color);transform:translateX(4px)}.settings-link.active{background:var(--accent-color-light);border-color:var(--accent-color);color:var(--accent-color)}.settings-link.active.dark{background:rgba(var(--accent-color-rgb),.15)}.settings-link-content{align-items:center;display:flex;justify-content:space-between;width:100%}.settings-link-left{align-items:center;display:flex;gap:1rem}.settings-link-left svg{background:var(--background-secondary);border-radius:12px;color:var(--accent-color);flex-shrink:0;height:40px;padding:8px;transition:all .2s ease;width:40px}.settings-link.active .settings-link-left svg,.settings-link:hover .settings-link-left svg{background:var(--accent-color);color:#fff}.settings-link-left span{color:inherit;font-size:1rem;font-weight:600}.settings-link svg:last-child{background:none;color:var(--text-secondary);height:18px;padding:0;transition:all .2s ease;width:18px}.settings-link:hover svg:last-child{background:none;color:var(--accent-color);transform:translateX(4px)}.logout-button{align-items:center;background:#fee2e2;border:1px solid #fecaca;border-radius:12px;color:#dc2626;cursor:pointer;display:flex;font-size:.95rem;font-weight:500;gap:.5rem;justify-content:center;margin-top:1.5rem;padding:.875rem;transition:all .2s ease;width:100%}.logout-button.dark{background:rgba(220,38,38,.1);border-color:rgba(220,38,38,.2);color:#f87171}.logout-button:hover{background:#fecaca;transform:translateY(-1px)}.logout-button.dark:hover{background:rgba(220,38,38,.15)}.logout-button svg{transition:transform .2s ease}.logout-button:hover svg{transform:translateX(2px)}.loading-screen{align-items:center;background:var(--background-primary);display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1000}.loading-content{padding:2rem;text-align:center}.loading-spinner{border:3px solid transparent;border-top:3px solid var(--accent-color);height:50px;margin:0 auto 1rem;width:50px}.loading-content h2{color:var(--text-primary);font-size:1.5rem;font-weight:600;margin:0 0 .5rem}.loading-content p{color:var(--text-secondary);font-size:1rem;margin:0}@media (max-width:1024px){.settings-container{gap:2rem;grid-template-columns:1fr}}@media (max-width:768px){.settings-container{gap:1.5rem;padding:1.5rem 1rem 2rem}.profile-card,.settings-menu,.subscription-card{border-radius:20px;padding:1.5rem}.profile-header{flex-direction:column;gap:1rem;text-align:center}.profile-avatar-container{align-self:center}.settings-link{padding:.875rem}.settings-link-left span{font-size:.95rem}}@media (max-width:480px){.settings-container{padding:1rem .75rem 1.5rem}.profile-card,.settings-menu,.subscription-card{border-radius:16px;padding:1.25rem}.mood-tags,.user-characteristics{gap:.375rem}.characteristic-tag,.mood-tag{font-size:.8rem;padding:.25rem .5rem}}.modal-overlay{animation:modalFadeIn .3s ease-out;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:rgba(0,0,0,.6);padding:20px}@keyframes modalFadeIn{0%{-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);opacity:0}to{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:1}}.subscription-modal{animation:modalSlideUp .3s ease-out;background:var(--card-background);border:1px solid var(--border-color);border-radius:24px;box-shadow:0 25px 50px -12px rgba(0,0,0,.25);max-height:90vh;max-width:900px;overflow-y:auto;position:relative;width:100%}.subscription-modal.dark{box-shadow:0 25px 50px -12px rgba(0,0,0,.5)}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}.modal-header{background:inherit;border-radius:24px 24px 0 0;padding:32px 32px 24px;position:sticky;top:0;z-index:1}.modal-header h2{font-size:28px;font-weight:700;letter-spacing:-.02em}.modal-close{background:var(--background-secondary);border:1px solid var(--border-color);border-radius:12px;padding:12px}.modal-close:hover{background:var(--accent-color);border-color:var(--accent-color);color:#fff;transform:scale(1.05)}.modal-content{padding:32px}.plans-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.plan-option{background:var(--card-background);border:2px solid var(--border-color);border-radius:20px;display:flex;flex-direction:column;overflow:hidden;padding:32px;position:relative;transition:all .3s ease}.plan-option:before{background:linear-gradient(90deg,var(--accent-color),var(--accent-color-light));content:"";height:4px;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s ease}.plan-option:hover{border-color:var(--accent-color);box-shadow:0 20px 40px -12px rgba(0,0,0,.15);transform:translateY(-8px)}.plan-option:hover:before{opacity:1}.plan-option.current{background:var(--accent-color-light);border-color:var(--accent-color);position:relative}.plan-option.current:before{opacity:1}.plan-option.current:after{background:var(--accent-color);border-radius:20px;color:#fff;content:"Current Plan";font-size:12px;font-weight:600;letter-spacing:.5px;padding:6px 12px;position:absolute;right:20px;text-transform:uppercase;top:20px}.plan-option.dark{background:var(--card-background)}.plan-option.dark:hover{box-shadow:0 20px 40px -12px rgba(0,0,0,.3)}.plan-option.current.dark{background:rgba(var(--accent-color-rgb),.1)}.plan-info{display:flex;flex:1 1;flex-direction:column}.plan-info h3{color:var(--text-primary);font-size:24px;font-weight:700;letter-spacing:-.01em;margin:0 0 8px}.plan-price{color:var(--accent-color);font-size:48px;font-weight:800;letter-spacing:-.02em;line-height:1;margin:0 0 8px}.plan-price .currency{font-size:24px;margin-right:4px;vertical-align:top}.plan-price .period{color:var(--text-secondary);font-size:18px;font-weight:500;margin-left:4px}.plan-description{color:var(--text-secondary);flex-grow:1;font-size:16px;line-height:1.5;margin:0 0 32px}.plan-features{display:flex;flex-direction:column;gap:16px;list-style:none;margin:0 0 32px;padding:0}.modal-content .feature-item{align-items:center;background:var(--background-secondary);border:1px solid var(--border-color);border-radius:12px;color:var(--text-primary);display:flex;font-size:15px;gap:12px;padding:12px 16px;transition:all .2s ease}.modal-content .feature-item:hover{background:var(--accent-color-light);border-color:var(--accent-color);transform:translateX(4px)}.modal-content .feature-item.dark{background:hsla(0,0%,100%,.05);border-color:hsla(0,0%,100%,.1)}.modal-content .feature-item.dark:hover{background:rgba(var(--accent-color-rgb),.15)}.modal-content .feature-item svg{background:var(--accent-color-light);border-radius:6px;color:var(--accent-color);flex-shrink:0;height:20px;padding:4px;width:20px}.modal-content .feature-item.dark svg{background:rgba(var(--accent-color-rgb),.2)}.modal-content .feature-item span{font-weight:500;line-height:1.4}.plan-action-button{align-items:center;border:none;border-radius:12px;cursor:pointer;display:flex;font-size:16px;font-weight:600;gap:8px;justify-content:center;letter-spacing:0;overflow:hidden;padding:16px 24px;position:relative;text-transform:none;transition:all .2s ease;width:100%}.plan-action-button:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.plan-action-button:hover:before{left:100%}.plan-action-button.dark,.plan-action-button.light{background:var(--accent);color:#fff}.plan-action-button:hover{box-shadow:0 8px 25px -8px var(--accent-color);transform:translateY(-2px)}.plan-action-button:disabled{background:var(--background-secondary);box-shadow:none;color:var(--text-secondary);cursor:not-allowed;transform:none}.plan-action-button:disabled:before{display:none}.plan-option.recommended{border-color:var(--accent-color);position:relative;scale:1.05}.plan-option.recommended:before{background:var(--accent);opacity:1}.plan-option.recommended .plan-action-button{background:var(--ink);color:var(--on-ink)}.cancellation-section{background:var(--background-secondary);border-radius:16px;border-top:1px solid var(--border-color);margin-top:25px;padding:32px;text-align:center}.cancellation-section h3{color:#ef4444;font-size:20px;font-weight:600;margin-bottom:12px}.cancellation-section.dark h3{color:#f87171}.cancellation-section p{color:var(--text-secondary);font-size:16px;line-height:1.5;margin-bottom:24px}.cancel-subscription-button{background:#fee2e2;border:1px solid #fecaca;border-radius:12px;color:#ef4444;cursor:pointer;font-size:14px;font-weight:500;padding:12px 24px;transition:all .2s ease}.cancel-subscription-button.dark{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.2);color:#f87171}.cancel-subscription-button:hover{background:#ef4444;box-shadow:0 4px 12px -4px #ef4444;color:#fff;transform:translateY(-1px)}.cancel-subscription-button.dark:hover{background:#f87171;color:#fff}.cancel-subscription-button:disabled{box-shadow:none;cursor:not-allowed;opacity:.5;transform:none}.modal-loading{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:80px 40px}.modal-loading .loading-spinner{animation:spin 1s linear infinite;border-top:4px solid var(--background-secondary);border:4px solid var(--background-secondary);border-radius:50%;border-top-color:var(--accent-color);height:60px;margin-bottom:24px;width:60px}.modal-loading h2{color:var(--text-primary);font-size:24px;font-weight:600;margin:0 0 12px}.modal-loading p{color:var(--text-secondary);font-size:16px;margin:0}@media (max-width:768px){.modal-header{padding:24px 24px 20px}.modal-header h2{font-size:24px}.modal-content{padding:24px}.plans-grid{gap:20px;grid-template-columns:1fr}.plan-option{padding:24px}.plan-price{font-size:36px}.plan-option.recommended{scale:1}}@media (max-width:480px){.subscription-modal{border-radius:0;height:100%;margin:0;max-width:none}.modal-header{border-radius:0;padding:20px}.modal-header h2{font-size:20px}.modal-content,.plan-option{padding:20px}.plan-price{font-size:32px}.plan-action-button{font-size:15px;padding:14px 20px}.cancellation-section{margin-top:32px;padding:24px}}.guest-message{text-align:center}.guest-message h3{color:var(--text-primary);font-size:20px;font-weight:600;margin:0 0 12px}.guest-message p{color:var(--text-secondary);font-size:14px;line-height:1.6;margin:0}.chat-button{font-size:15px;justify-content:center;transition:all .2s ease}.chat-button svg{height:18px;width:18px}.prompt-input{background:transparent;border:none;border-bottom:1px solid var(--border-color);box-sizing:border-box;color:var(--text-primary);font-family:inherit;line-height:1.5;padding:10px;width:100%}.prompt-input:focus{border-color:var(--accent-color);outline:none}.sub-text{color:var(--text-secondary);display:flex;font-size:14px;justify-content:flex-end;margin:30px 0 0}.resp-container{border-bottom:1px solid var(--border-color);padding:50px}.chat-container{margin:auto;max-width:600px}.chat-history{flex:1 1;margin-bottom:20px;margin-top:20px;max-height:250px;overflow-y:auto;padding:24px;width:100%}.message{border-radius:8px;margin-bottom:15px;padding:10px}.message-header{justify-content:space-between;margin-bottom:8px}.message-header,.message-time{align-items:center;display:flex}.message-time{color:var(--text-secondary);font-size:.75em;gap:4px}.message-page{align-items:center;background:rgba(var(--accent-rgb),.08);border-radius:12px;color:var(--accent-color);display:inline-flex;font-size:11px;font-weight:500;gap:6px;padding:3px 8px;text-decoration:none;transition:all .2s ease}.message-page:hover{transform:translateY(-1px)}.dark .message-page,.message-page:hover{background:rgba(var(--accent-rgb),.15)}.dark .message-page:hover{background:rgba(var(--accent-rgb),.2)}.message-page:before{margin:0 4px}.message-role{color:var(--text-primary);display:block;font-weight:700;margin-bottom:5px}.latest-response{display:flex;justify-content:center;margin:20px;width:100%;width:90%}.history-title{border-top:1px solid var(--border-color);color:var(--text-secondary);margin:20px 0;padding-top:20px;text-align:center}.chat-btn{background:var(--accent-color);border:none;border-radius:5px;color:#fff;cursor:pointer;height:35px;margin:25px 10px 10px;transition:all .2s ease;width:35px}.chat-btn:hover{background:var(--accent-color-hover);transform:translateY(-1px)}.chat-container{display:flex;flex-direction:column;height:calc(100vh - 40px);margin-top:40px}.chat-container,.chat-messages{background:var(--background-primary)}.chat-messages{flex:1 1;overflow-y:auto;padding:24px}.messages-container{display:flex;flex-direction:column;gap:16px;margin:0 auto;max-width:800px}.message-group{display:flex;flex-direction:column;gap:8px}.message-container{align-items:flex-end;display:flex;flex-direction:column-reverse}.message{align-items:flex-start;display:flex;gap:12px;position:relative}.message-avatar{border-radius:50%;height:35px;object-fit:cover;width:35px}.user-message{justify-content:flex-end;margin-left:auto}.message-profile{flex-shrink:0;margin:0 12px}.user-message .message-profile{margin:0 0 0 12px;order:2}.user-message .message-content{order:1}.ai-message .message-profile{margin:0 12px 0 0}.message-content{border-radius:16px;box-shadow:var(--shadow-sm);padding:12px 16px}.user-message .message-content,.user-message.dark .message-content{background:var(--accent-color);color:#fff}.ai-message .message-content{background:var(--card-background);border:1px solid var(--border-color);color:var(--text-primary)}.message-content p{font-size:14px;line-height:1.5;margin:0}.message-meta{margin-top:4px;padding:0 12px}.typing-indicator{background:var(--card-background);border:1px solid var(--border-color);border-radius:16px;display:flex;gap:4px;margin:8px 0;padding:12px 16px;width:fit-content}.typing-dot{animation:typing 1.4s ease-in-out infinite;background:var(--accent-color);border-radius:50%;height:8px;width:8px}.typing-dot:first-child{animation-delay:0s}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes typing{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-4px)}}.chat-input-container{background:var(--card-background);border-top:1px solid var(--border-color);padding:16px 24px}.chat-input-wrapper{align-items:flex-end;background:var(--background-primary);border:1px solid var(--border-color);border-radius:12px;display:flex;gap:12px;margin:0 auto;max-width:800px;padding:8px 12px;transition:all .2s ease}.chat-input-wrapper:focus-within{border-color:var(--accent-color);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.1)}.chat-input{background:transparent;border:none;color:var(--text-primary);flex:1 1;font-size:14px;line-height:1.5;min-height:40px;outline:none;padding:8px;resize:none}.chat-input::placeholder{color:var(--text-secondary)}.send-button{align-items:center;background:var(--accent-color);border:none;border-radius:10px;color:#fff;cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .2s ease;width:40px}.send-button:hover:not(:disabled){background:var(--accent-color-hover);transform:translateY(-1px)}.send-button:disabled{background:var(--border-color);cursor:not-allowed}.empty-state-icon{color:var(--text-secondary);margin-bottom:24px}.empty-state h2{color:var(--text-primary);font-size:20px;font-weight:600;margin:0 0 12px}.empty-state p{color:var(--text-secondary);font-size:14px;line-height:1.6;margin:0 0 24px;max-width:400px}.empty-state-buttons{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.empty-state-button{align-items:center;border-radius:12px;cursor:pointer;display:flex;font-size:15px;font-weight:500;gap:8px;justify-content:center;padding:12px 24px;text-decoration:none;transition:all .2s ease}.empty-state-button.primary{background:var(--accent-color);border:none;color:#fff}.empty-state-button.primary:hover{background:var(--accent-color-hover);transform:translateY(-2px)}.empty-state-button.secondary{background:var(--background-secondary);border:1px solid var(--border-color);color:var(--text-primary)}.empty-state-button.secondary:hover{background:var(--hover-background);transform:translateY(-2px)}@media (max-width:768px){.character-profile{padding:16px}.character-profile-content{gap:16px}.character-profile-image{height:60px;width:60px}.character-profile-info h2{font-size:20px}.chat-messages{padding:16px}.chat-input-container{padding:12px 16px}.empty-state-buttons{flex-direction:column}.profile-stat{font-size:12px}.profile-stat.context-link{padding:3px 6px}}.character-profile{background:var(--card-background);border-bottom:1px solid var(--border-color);padding:24px}.character-profile-content{align-items:flex-start}.character-image-container{height:80px;position:relative;width:80px}.character-image-container.active-context{animation:subtle-bounce 2s ease-in-out infinite}.character-profile-image{border:2px solid var(--border-color);transition:all .3s ease}.active-context .character-profile-image{border-color:var(--accent-color);box-shadow:0 0 0 4px rgba(var(--accent-rgb),.2)}.active-indicator{align-items:center;background:var(--accent-color);border:2px solid var(--background-primary);border-radius:50%;bottom:0;display:flex;height:20px;justify-content:center;position:absolute;right:0;width:20px}.pulse{animation:pulse 2s ease-in-out infinite;background:#fff;border-radius:50%;display:block;height:8px;width:8px}@keyframes subtle-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.character-profile-info h2{color:var(--text-primary)}.character-profile-book{color:var(--text-secondary);display:inline-flex;gap:8px;margin-bottom:12px}.character-profile-book:hover{color:var(--accent-color)}.character-profile-intro{color:var(--text-secondary)}.character-profile-stats{margin-top:4px}.profile-stat{border-radius:6px;color:var(--text-secondary);gap:8px;padding:4px 8px;transition:all .2s ease}.profile-stat.context-link{background:rgba(var(--accent-rgb),.1);color:var(--accent-color);text-decoration:none}.profile-stat.context-link:hover{background:rgba(var(--accent-rgb),.15);transform:translateX(2px)}.profile-stat.context-link svg:last-child{opacity:0;transform:translateX(-4px);transition:all .2s ease}.profile-stat.context-link:hover svg:last-child{opacity:1;transform:translateX(0)}.character-profile.collapsed .profile-stat.context-link{display:flex}.mobile-character-profile{display:block;width:100%}@media (min-width:1024px){.chat-container{flex-direction:row;height:calc(100vh - 40px);margin:40px 0 0;max-width:none}.chat-left-panel{background:var(--card-background);border-right:1px solid var(--border-color);display:flex;flex-direction:column;flex-shrink:0;height:100%;position:sticky;top:40px;width:400px}.character-large-image{border-bottom:1px solid var(--border-color);height:400px;object-fit:cover;width:100%}.character-profile{border-bottom:none;flex:1 1;overflow-y:auto;padding:24px}.chat-right-panel{display:flex;flex:1 1;flex-direction:column;min-width:0}.chat-messages{flex:1 1;padding:32px}.messages-container{margin:0 auto;max-width:800px}.mobile-character-profile{display:none}}@media (max-width:1023px){.character-large-image,.chat-left-panel{display:none}.chat-container{height:calc(100vh - 40px);margin:0;max-width:100%}.mobile-character-profile{border-bottom:1px solid var(--border-color)}.character-profile{background:var(--background-primary);margin:0;padding:12px 16px}.character-profile-content{align-items:center;flex-direction:row;gap:12px}.character-image-container{flex-shrink:0;height:40px;width:40px}.character-profile-image{height:40px;width:40px}.character-profile-info{min-width:0}.character-profile-info h2{font-size:16px;margin:0 0 2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.character-profile-book{font-size:13px;margin:0;padding:0}.character-profile-book span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.character-profile-stats{margin:4px 0 0}.profile-stat{font-size:12px;padding:2px 6px}.profile-stat.context-link{max-width:100%}.profile-stat.context-link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.character-profile-intro{display:none}.chat-messages{padding:12px}.messages-container{gap:12px}.message{gap:8px}.message-avatar{height:32px;width:32px}.message-profile{margin:0 8px}.message-content{font-size:14px;padding:10px 12px}.chat-input-container{border-top:1px solid var(--border-color);padding:8px 12px}.chat-input-wrapper{padding:6px 8px}.chat-input{min-height:36px;padding:6px}.send-button{height:36px;width:36px}.empty-state-icon svg{height:48px;width:48px}.empty-state h2{font-size:18px}.empty-state p{font-size:13px}.empty-state-buttons{flex-direction:column;gap:8px}.empty-state-button{font-size:14px;padding:10px 16px;width:100%}}.character-intro{font-size:14px;height:40px;height:300px;line-height:1.4;margin:15px 0;text-align:center;width:180px;width:100%}.character-card .character-intro{color:var(--text-secondary);flex:1 1;font-size:.95rem;line-height:1.6;margin:0 0 24px}.character-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));padding:20px 0}.character-card{border-radius:12px;box-shadow:var(--shadow-sm);display:flex;flex:0 0 300px;flex-direction:column;gap:1rem;scroll-snap-align:start;transition:all .3s ease}.character-card .character-name{color:var(--text-primary);font-size:1.25rem;font-weight:600;line-height:1.4;margin:0}.character-card .book-title{color:var(--accent-color);font-size:.9rem;font-weight:500;margin:.25rem 0}.character-card .character-description{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--text-secondary);display:-webkit-box;font-size:.9rem;line-height:1.5;margin:.5rem 0;overflow:hidden}.character-card .message-count{align-items:center;border-top:1px solid var(--border-color);color:var(--text-secondary);display:flex;font-size:.9rem;gap:.5rem;margin-top:auto;padding-top:.75rem}.character-card .message-count svg{stroke-width:2;color:var(--text-secondary);height:16px;width:16px}.character-placeholder{align-items:center;background:var(--background-secondary);color:var(--text-secondary);display:flex;font-size:1.5rem;font-weight:700;height:100%;justify-content:center;width:100%}.character-info{flex-grow:1;gap:.5rem;padding:15px}.character-info h3{font-size:1.2rem}.character-book,.character-intro{font-size:.9rem;margin:0}.character-intro{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;line-height:1.5;overflow:hidden}.character-stats{align-items:center;border-top:1px solid var(--border-color);color:var(--text-secondary);display:flex;font-size:.9rem;gap:1rem;margin-top:auto;padding-top:.5rem}.character-stats svg{stroke-width:2;color:var(--text-secondary);height:16px;width:16px}@media (max-width:768px){.book-characters-content h2{font-size:2rem;margin-bottom:30px}.character-grid{gap:20px;grid-template-columns:1fr}.character-card-content{padding:20px}.character-card-content h3{font-size:1.3rem}.chat-button{font-size:14px;padding:10px 20px}}.image-recommendation{background-color:#f5f5f5;border-left:4px solid #007bff;border-radius:5px;color:#666;font-size:14px;margin:10px 0;padding:10px}.book-preview{background-color:#f8f9fa;border-radius:8px;margin-top:20px;padding:20px;text-align:center}.book-preview h4{color:#333;margin-bottom:15px}.character-list{grid-gap:30px;display:grid;gap:30px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));padding:20px;width:100%}.character-info{max-width:350px}.top-characters-section{background:var(--background-secondary);margin-bottom:40px;padding-bottom:40px;position:relative;width:100%}.top-characters-header{margin-bottom:3rem;text-align:center}.top-characters-section h2{color:var(--text-primary);font-size:2.5rem;font-weight:700;margin-bottom:1rem}.top-characters-description{color:var(--text-secondary);font-size:1.1rem;line-height:1.6;margin-bottom:2rem;margin-left:auto;margin-right:auto;max-width:800px;opacity:.9;text-align:center}.top-characters-scroll-container{margin:0 auto;max-width:100vw;overflow:visible;padding:0 20px;position:relative}.top-characters-grid{-webkit-overflow-scrolling:touch;-ms-overflow-style:none;display:flex;gap:1.5rem;overflow-x:auto;padding:.5rem calc(50vw - 140px);scroll-behavior:smooth;scroll-snap-type:x mandatory;scrollbar-width:none}.top-characters-grid::-webkit-scrollbar{display:none}.top-characters-scroll-button{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--card-background);border:1px solid var(--border-color);border-radius:50%;box-shadow:var(--shadow-lg);color:var(--text-primary);cursor:pointer;display:flex;height:50px;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);transition:all .3s ease;width:50px;z-index:3}.top-characters-scroll-button:hover{background:var(--hover-background);border-color:var(--accent-color);box-shadow:var(--shadow-xl);transform:translateY(-50%) scale(1.1)}.top-characters-scroll-left{left:20px}.top-characters-scroll-right{right:20px}.top-character-card{border-radius:20px;box-shadow:0 10px 30px rgba(0,0,0,.1);cursor:pointer;flex:0 0 280px;height:400px;overflow:hidden;position:relative;scroll-snap-align:start;transition:all .4s cubic-bezier(.4,0,.2,1)}.top-character-card:hover{box-shadow:0 25px 50px rgba(0,0,0,.2);transform:translateY(-10px) scale(1.02)}.top-character-image-container{height:100%;overflow:hidden;position:relative;width:100%}.top-character-image{height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.4,0,.2,1);width:100%}.top-character-card:hover .top-character-image{transform:scale(1.1)}.top-character-placeholder{align-items:center;background:linear-gradient(135deg,var(--accent-color) 0,var(--primary-color) 100%);display:flex;height:100%;justify-content:center;transition:transform .6s cubic-bezier(.4,0,.2,1);width:100%}.top-character-card:hover .top-character-placeholder{transform:scale(1.1)}.top-character-initials{color:#fff;font-size:3rem;font-weight:700;text-shadow:0 2px 4px rgba(0,0,0,.3)}.top-character-overlay{background:linear-gradient(0deg,rgba(0,0,0,.9) 0,rgba(0,0,0,.7) 40%,transparent);bottom:0;left:0;padding:2rem 1.5rem 1.5rem;position:absolute;right:0;transform:translateY(0);transition:all .4s cubic-bezier(.4,0,.2,1)}.top-character-info{margin-bottom:1rem}.top-character-name{color:#fff;font-size:1.4rem;font-weight:700;line-height:1.2;margin:0 0 .5rem;text-shadow:0 2px 4px rgba(0,0,0,.5)}.top-character-book{color:hsla(0,0%,100%,.9);font-size:.95rem;font-weight:500;margin:0;text-shadow:0 1px 2px rgba(0,0,0,.5)}.top-character-description-overlay{max-height:0;opacity:0;overflow:hidden;transform:translateY(20px);transition:all .4s cubic-bezier(.4,0,.2,1)}.top-character-card:hover .top-character-description-overlay{max-height:200px;opacity:1;transform:translateY(0)}.top-character-card:hover .top-character-overlay{background:linear-gradient(0deg,rgba(0,0,0,.95) 0,rgba(0,0,0,.8) 60%,rgba(0,0,0,.2));padding:2.5rem 1.5rem 2rem}.top-character-description{color:hsla(0,0%,100%,.95);font-size:.9rem;line-height:1.5;margin:0;text-shadow:0 1px 2px rgba(0,0,0,.5)}.view-more-card{align-items:center;background:var(--card-background);border:2px solid var(--accent-color);border-radius:20px;box-shadow:0 10px 30px rgba(0,0,0,.1);cursor:pointer;display:flex;flex:0 0 280px;height:400px;justify-content:center;overflow:hidden;position:relative;scroll-snap-align:start;text-decoration:none;transition:all .4s cubic-bezier(.4,0,.2,1)}.view-more-card:hover{background:var(--accent-color);border-color:var(--accent-color);box-shadow:0 25px 50px rgba(0,0,0,.2);transform:translateY(-10px) scale(1.02)}.view-more-content{align-items:center;color:var(--accent-color);display:flex;flex-direction:column;gap:1rem;padding:2rem 1.5rem;text-align:center;transition:color .3s ease}.view-more-card:hover .view-more-content{color:#fff}.view-more-icon{opacity:.9;transition:all .3s ease}.view-more-card:hover .view-more-icon{opacity:1;transform:scale(1.1)}.view-more-title{font-size:1.4rem;font-weight:700;line-height:1.2}.view-more-subtitle,.view-more-title{margin:0;transition:text-shadow .3s ease}.view-more-subtitle{font-size:.95rem;opacity:.9}.view-more-card:hover .view-more-subtitle,.view-more-card:hover .view-more-title{text-shadow:0 2px 4px rgba(0,0,0,.3)}.character-image{background:var(--background-secondary);border:1px solid var(--border-color);border-radius:8px;flex-shrink:0;height:200px;overflow:hidden;position:relative;width:100%}.character-image img{height:100%;object-fit:cover;transition:transform .3s ease;width:100%}.meta-item{align-items:center;color:#94a3b8;display:flex;font-size:14px;gap:6px;transition:color .3s ease}.character-list-item:hover .meta-item{color:#64748b}.meta-item svg{stroke-width:2;height:16px;width:16px}@media (max-width:768px){.top-characters-section{padding:40px 0}.top-characters-section h2{font-size:2rem}.top-characters-description{font-size:1rem;padding:0 1rem}.top-characters-scroll-container{padding:0 10px}.top-characters-grid{padding-left:calc(50vw - 125px);padding-right:calc(50vw - 125px)}.top-character-card{flex:0 0 250px;height:350px}.top-character-name{font-size:1.2rem}.top-character-book,.top-character-description{font-size:.85rem}.top-characters-scroll-button{height:40px;width:40px}.top-characters-scroll-left{left:15px}.top-characters-scroll-right{right:15px}.top-character-overlay{padding:1.5rem 1rem 1rem}.top-character-card:hover .top-character-overlay{padding:2rem 1rem 1.5rem}.view-more-card{flex:0 0 250px;height:350px}.view-more-title{font-size:1.2rem}.view-more-subtitle{font-size:.85rem}.view-more-content{padding:1.5rem 1rem}}.character-list-item .meta-button{align-items:center;border:none;border-radius:8px;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:6px;padding:8px 16px;transition:all .2s ease}.character-list-item .meta-button.edit{background:var(--accent-soft);color:var(--accent-hover)}.character-list-item .meta-button.edit:hover{background:#c7d2fe;transform:translateY(-1px)}.character-list-item .meta-button.delete{background:#fee2e2;color:#ef4444}.character-list-item .meta-button.delete:hover{background:#fecaca;transform:translateY(-1px)}.character-description.secondary{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#64748b;display:-webkit-box;font-size:13px;margin-top:4px;overflow:hidden}.character-list-item:hover .character-avatar{border-color:var(--accent)}.character-list-item .character-info h3{font-size:1.25rem;margin-bottom:8px}.character-list-item .character-description{line-height:1.5;margin:0}@media (max-width:768px){.character-list-item{padding:16px}.character-list-item .character-avatar{height:80px;width:80px}.character-list-item .character-info h3{font-size:1.1rem}.character-list-item .meta-button{font-size:13px;padding:6px 12px}}.character-list-container{margin:0 auto;max-width:1400px;min-height:400px;padding:2rem;position:relative}.character-list-view{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));min-height:400px;padding:24px}.character-list-item{background:var(--card-background);border:1px solid var(--border-color);border-radius:12px;padding:24px;position:relative;transition:all .3s ease}.character-list-item:hover{border-color:var(--accent-color);box-shadow:0 8px 16px rgba(0,0,0,.1);transform:translateY(-2px)}.character-list-item:after{background:var(--accent);content:"";height:4px;left:0;opacity:0;position:absolute;top:0;transition:opacity .3s ease;width:100%}.character-list-item:hover:after{opacity:1}.character-avatar{border-radius:50%;box-shadow:0 4px 12px rgba(0,0,0,.1);flex-shrink:0;height:120px;object-fit:cover;transition:all .3s ease;width:120px}.character-list-item:hover .character-avatar{border-color:var(--accent-soft);box-shadow:0 8px 20px rgba(0,0,0,.15);transform:scale(1.05)}.character-info{align-items:flex-start;display:flex;flex:1 1;flex-direction:column;gap:8px;min-width:0}.character-info h3{color:var(--text-primary);font-size:1.25rem;font-weight:600;margin:0;transition:color .2s ease}.character-list-item:hover .character-info h3{color:var(--accent-hover)}.book-title{color:var(--accent);font-size:15px;font-weight:500;margin:0;transition:color .3s ease}.character-list-item:hover .book-title{color:var(--accent-hover)}.character-description{-webkit-line-clamp:3;-webkit-box-orient:vertical;color:var(--text-secondary);display:-webkit-box;font-size:.95rem;line-height:1.6;margin:0;overflow:hidden;text-overflow:ellipsis}.character-list-item:hover .character-description{color:#475569}@media (max-width:768px){.character-list-view{gap:20px;grid-template-columns:1fr;padding:16px}.character-list-item{gap:16px;padding:16px}.character-avatar{height:80px;width:80px}.character-info h3{font-size:18px}.book-title{font-size:14px}.character-description{-webkit-line-clamp:2;font-size:14px}}.characters-hero{background:linear-gradient(135deg,#1e293b,#334155);color:#fff;margin-top:40px;overflow:hidden;padding:30px;position:relative}.characters-hero:before{background:radial-gradient(circle at 20% 150%,rgba(var(--accent-rgb),.15) 0,transparent 50%),radial-gradient(circle at 80% -50%,rgba(var(--accent-rgb),.15) 0,transparent 50%);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.hero-content{margin:0 auto;max-width:1200px;position:relative;z-index:1}.characters-hero h1{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,#fff 0,var(--accent-soft) 100%);-webkit-background-clip:text;font-size:3.5rem;font-weight:700;line-height:1.2;margin-bottom:24px;text-align:center}@media (max-width:768px){.characters-hero{margin-top:20px;padding:60px 20px}.characters-hero h1{font-size:2.5rem}.hero-description{font-size:1.1rem;margin-bottom:40px}.hero-features{gap:20px}.hero-feature{padding:24px}.hero-stats{gap:40px;margin-top:40px}.stat-number{font-size:2.5rem}.stat-label{font-size:.9rem}}.character-profile{background:var(--background-primary);box-shadow:0 4px 6px -1px rgba(0,0,0,.05);padding:50px 24px 24px}.character-profile-content{align-items:center;display:flex;gap:24px;margin:0 auto;max-width:800px}.character-profile-image{border:3px solid var(--accent-soft);border-radius:50%;box-shadow:0 4px 12px rgba(0,0,0,.1);height:80px;object-fit:cover;width:80px}.character-profile-info{flex:1 1}.character-profile-info h2{font-size:24px;font-weight:600;margin:0 0 8px}.character-profile-book{align-items:center;border-radius:6px;color:var(--accent);display:flex;font-size:14px;gap:6px;margin:0 0 12px -8px;padding:4px 8px;text-decoration:none;transition:all .2s ease}.character-profile-book:hover{color:var(--accent-hover);transform:translateX(2px)}.character-profile-book svg:last-child{opacity:0;transform:translateX(-4px);transition:all .2s ease}.character-profile-book:hover svg:last-child{opacity:1;transform:translateX(0)}.character-profile-book span{position:relative}.character-profile-book span:after{background:currentColor;bottom:-2px;content:"";height:1px;left:0;position:absolute;transform:scaleX(0);transform-origin:right;transition:transform .3s ease;width:100%}.character-profile-book:hover span:after{transform:scaleX(1);transform-origin:left}.character-profile-intro{color:#64748b;font-size:14px;line-height:1.6;margin:0 0 16px}.character-profile-stats{display:flex;gap:16px}.profile-stat{align-items:center;color:#94a3b8;display:flex;font-size:13px;gap:6px}.profile-stat svg{stroke-width:2;height:16px;width:16px}.search-section{background:var(--background-secondary);padding:40px 20px}.search-container{margin:0 auto;max-width:350px;text-align:center}.search-container h2{color:var(--text-primary);font-size:2rem;font-weight:600;margin-bottom:24px;text-align:center}.search-page{min-height:calc(100vh - 100px);padding-top:24px}body.header-visible .search-page{padding-top:80px}.search-input{background:var(--background-primary);border:1px solid var(--border-color);border-radius:12px;font-size:1rem;padding:16px 48px;transition:all .2s ease}.search-input:focus{border-color:var(--accent-color);box-shadow:0 0 0 2px rgba(var(--accent-color-rgb),.1)}@media (max-width:768px){.search-section{padding:2rem 1rem}.search-container h2{font-size:1.5rem;margin-bottom:1rem}.search-input{border-radius:12px;font-size:1rem;padding:16px 16px 16px 48px}.search-input-wrapper svg{height:20px;left:16px;width:20px}}.loading-indicator{align-items:center;background:var(--card-background);border-radius:12px;display:flex;justify-content:center;margin:20px 0;padding:40px}.loading-indicator .spinner{animation:spin 1s linear infinite;border:3px solid #e2e8f0;border-radius:50%;border-top:3px solid var(--accent);height:40px;margin-bottom:1rem;width:40px}.loading-indicator:after{color:#64748b;content:"Loading characters...";font-size:.9rem;margin-top:.5rem}.character-empty-state{align-items:center;color:#64748b;display:flex;flex-direction:column;justify-content:center;min-height:400px;padding:4rem 2rem;text-align:center;width:100%}.view-more-link{color:var(--text-secondary);font-weight:500;margin-top:20px;text-decoration:none;transition:all .3s ease}.view-more-link:hover{color:var(--accent-color)}.nav-bar{display:none}.overlay{background:var(--overlay);inset:0;opacity:0;position:fixed;transition:opacity .25s ease,visibility .25s ease;visibility:hidden;z-index:999}.overlay.visible{opacity:1;visibility:visible}.side-nav{background:var(--paper);border-left:1px solid var(--border-color);box-sizing:border-box;display:flex;flex-direction:column;font-family:var(--font-primary);height:100vh;height:100dvh;max-width:86vw;position:fixed;right:0;top:0;transform:translateX(100%);transition:transform .28s cubic-bezier(.32,.72,0,1),visibility .28s,box-shadow .28s ease;visibility:hidden;width:300px;z-index:1000}.side-nav.open{box-shadow:var(--shadow-xl);transform:none;visibility:visible}@media (prefers-reduced-motion:reduce){.overlay,.side-nav{transition:none}}.side-nav-top{border-bottom:1px solid var(--border-color);flex-shrink:0;gap:12px;height:var(--app-header-height);justify-content:space-between;padding:0 12px 0 20px}.side-nav-brand,.side-nav-top{align-items:center;display:flex}.side-nav-brand{color:var(--text-primary);gap:10px;min-width:0;text-decoration:none}.side-nav-brand img{display:block;height:28px;width:auto}.side-nav-brand span{font-family:var(--font-display);font-size:19px;font-weight:600;letter-spacing:-.01em;white-space:nowrap}.side-nav-icon-button{align-items:center;background:none;border:none;border-radius:50%;color:var(--text-primary);cursor:pointer;display:inline-flex;flex-shrink:0;height:36px;justify-content:center;padding:0;transition:background-color .15s ease;width:36px}.side-nav-icon-button:hover{background:var(--hover-background)}.side-nav-body{flex:1 1;min-height:0;overflow-y:auto;padding:8px 12px 16px;scrollbar-color:var(--surface-strong) transparent;scrollbar-width:thin}.side-nav-group{display:flex;flex-direction:column;gap:2px;padding:8px 0}.side-nav-group+.side-nav-group{border-top:1px solid var(--separator)}.side-nav-label{color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.08em;padding:8px 12px 6px;text-transform:uppercase}.side-nav-link{align-items:center;background:none;border:none;border-radius:var(--radius-pill);box-sizing:border-box;color:var(--text-secondary);cursor:pointer;display:flex;font:inherit;font-size:15px;font-weight:500;gap:12px;min-height:40px;padding:0 12px;text-align:left;text-decoration:none;transition:color .15s ease,background-color .15s ease;width:100%}.side-nav-link svg{stroke-width:1.75;flex-shrink:0;height:18px;width:18px}.side-nav-link:hover{background:var(--hover-background);color:var(--text-primary)}.side-nav-link.active{background:var(--surface);color:var(--text-primary);font-weight:600}.side-nav-link.active svg{stroke-width:2}.side-nav-account:focus-visible,.side-nav-icon-button:focus-visible,.side-nav-link:focus-visible,.side-nav-play:focus-visible,.side-nav-resume:focus-visible,.side-nav-signin:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.side-nav-resume-row{align-items:center;display:flex;gap:8px}.side-nav-resume{align-items:center;background:none;border:none;border-radius:var(--radius-md);box-sizing:border-box;color:inherit;cursor:pointer;display:flex;flex:1 1;font:inherit;gap:12px;min-width:0;padding:10px;text-align:left;transition:background-color .15s ease;width:100%}.side-nav-resume:hover{background:var(--hover-background)}.side-nav-resume-cover{background:var(--surface-strong);border-radius:4px;box-shadow:var(--shadow-sm);flex-shrink:0;height:54px;object-fit:cover;width:36px}.side-nav-resume-info{display:flex;flex:1 1;flex-direction:column;gap:4px;min-width:0}.side-nav-resume-kind{align-items:center;color:var(--text-muted);display:inline-flex;font-size:11px;font-weight:600;gap:5px;letter-spacing:.04em;text-transform:uppercase}.side-nav-resume-title{color:var(--text-primary);font-family:var(--font-display);font-size:15px;font-weight:600;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-nav-progress{background:var(--surface-strong);border-radius:var(--radius-pill);display:block;height:3px;overflow:hidden}.side-nav-progress-fill{background:var(--accent);border-radius:inherit;display:block;height:100%;transition:width .3s ease}.side-nav-resume-meta{font-feature-settings:"tnum";color:var(--text-secondary);display:flex;font-size:12px;font-variant-numeric:tabular-nums;gap:8px;justify-content:space-between}.side-nav-resume-meta span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-nav-play{align-items:center;background:var(--ink);border:none;border-radius:50%;color:var(--on-ink);cursor:pointer;display:inline-flex;flex-shrink:0;height:36px;justify-content:center;margin-right:4px;padding:0;transition:opacity .15s ease;width:36px}.side-nav-play:hover{opacity:.85}.side-nav-footer{border-top:1px solid var(--border-color);display:flex;flex-direction:column;flex-shrink:0;gap:8px;padding:12px 12px calc(12px + env(safe-area-inset-bottom))}.side-nav-account{align-items:center;background:var(--surface);border-radius:var(--radius-md);color:inherit;display:flex;gap:12px;padding:8px;text-decoration:none;transition:background-color .15s ease}.side-nav-account:hover,.side-nav-avatar{background:var(--surface-strong)}.side-nav-avatar{align-items:center;border-radius:50%;color:var(--text-secondary);display:inline-flex;flex-shrink:0;height:36px;justify-content:center;overflow:hidden;width:36px}.side-nav-avatar img{height:100%;object-fit:cover;width:100%}.side-nav-account-info{display:flex;flex:1 1;flex-direction:column;gap:1px;min-width:0}.side-nav-account-email,.side-nav-account-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-nav-account-name{color:var(--text-primary);font-size:14px;font-weight:600}.side-nav-account-email{color:var(--text-secondary);font-size:12px}.side-nav-account-chevron{color:var(--text-muted);flex-shrink:0}.side-nav-signin{align-items:center;background:var(--ink);border-radius:var(--radius-pill);color:var(--on-ink);display:flex;font-size:14px;font-weight:600;gap:8px;height:40px;justify-content:center;text-decoration:none;transition:opacity .15s ease}.side-nav-signin:hover{opacity:.85}.side-nav-footer-actions{display:flex;flex-direction:column;gap:2px}.side-nav-footer-actions .side-nav-link{font-size:14px}.pages-container{align-items:center;display:flex;flex-direction:row;margin:auto;max-width:600px;overflow:scroll;padding:90px 0}.new-book-container{background-color:var(--card-background);border:1px solid var(--border-color);border-radius:15px;margin:40px 0;padding:20px}.book-img-container,.new-book-container{align-items:center;cursor:pointer;display:flex;flex-direction:column}.book-img-container{border-radius:12px;margin:10px;min-height:380px;padding:20px 20px 0;transition:all .3s ease;width:220px}.book-img{background-color:var(--background-secondary);border-radius:8px;box-shadow:var(--shadow-md);height:260px;object-fit:cover;transition:all .3s ease;width:180px}.book-img-label{align-items:center;display:flex;flex-direction:column;margin:0;width:160px}.book-img-label .submit-btn{margin-top:10px;width:180px}.book-info{background-color:transparent;margin-top:auto;padding:15px 10px;text-align:center;width:100%}.book-info h3{color:var(--text-primary);font-size:1.1rem;margin:10px 0 5px}.book-info h3,.book-info h4{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.book-info h4{color:var(--text-secondary);font-size:.9rem;font-weight:400;margin:0}.book-img-label>h3{color:#2c2c2c;font-size:15px;margin-top:5px}.book-img-label>h3,.book-img-label>h4{overflow:hidden;text-overflow:ellipsis;transition:color .3s ease;white-space:nowrap;width:100%}.book-img-label>h4{color:#666;font-size:12px}.book-img-container:hover{transform:translateY(-8px)}.book-img-container:hover .book-img{box-shadow:var(--shadow-lg);transform:scale(1.02)}.book-list-container{margin:20px 0;overflow:visible;position:relative;width:100%}.book-list{-ms-overflow-style:none;align-items:stretch;display:flex;flex-wrap:nowrap;gap:80px;margin:0 -20px;overflow-x:auto;padding:0 100px 0 50px;position:relative;scroll-behavior:smooth;scrollbar-width:none}.book-list::-webkit-scrollbar{display:none}.book-categories-horizontal{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;margin:8px 0}.category-tag-small{background-color:var(--background-secondary);border:1px solid var(--border-color);border-radius:20px;color:var(--accent-color);font-size:.75rem;padding:4px 12px;transition:all .3s ease;white-space:nowrap}.scroll-button{align-items:center;background:#fff;border:none;border-radius:50%;box-shadow:0 2px 8px rgba(0,0,0,.15);cursor:pointer;display:flex;height:44px;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);transition:all .3s ease;width:44px;z-index:2}.scroll-button:hover{background:var(--accent-color);box-shadow:0 4px 12px rgba(0,0,0,.2);color:#fff;transform:translateY(-50%) scale(1.1)}.scroll-button.left{left:0}.scroll-button.right{right:0}.book-cover-wrapper{background:var(--card-background);border:1px solid var(--border-color);border-radius:24px;box-shadow:var(--shadow-md)}.book-cover,.book-cover-wrapper{transition:all .5s cubic-bezier(.4,0,.2,1)}.book-cover{border-radius:16px}.book-info-wrapper{color:var(--text-primary)}.book-info-wrapper h1{background:linear-gradient(135deg,var(--text-primary) 0,var(--accent-color) 100%);font-weight:800;letter-spacing:-.02em}.book-author{color:var(--text-secondary);font-weight:500}.category-tag{background:var(--card-background);border:1px solid var(--border-color);color:var(--accent-color);font-weight:500;transition:all .3s cubic-bezier(.4,0,.2,1)}.book-description{color:var(--text-secondary);margin:24px 0}.book-actions{flex-direction:column;max-width:400px}@media (max-width:480px){.book-info-wrapper h1{font-size:2rem}.book-stats,.character-grid{grid-template-columns:1fr}}.auth-page.new-book{background:linear-gradient(135deg,#f8fafc,#f1f5f9);margin-top:40px;min-height:calc(100vh - 40px)}.new-book .auth-content{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:hsla(0,0%,100%,.9);border:1px solid rgba(var(--accent-rgb),.1)}.new-book .profile-avatar{background:var(--accent);height:80px;margin-bottom:20px;overflow:visible;position:relative;width:80px}.new-book .profile-avatar:before{background:inherit;border-radius:50%;content:"";filter:blur(8px);inset:-3px;opacity:.5;position:absolute;z-index:-1}.new-book .auth-subtitle{color:var(--accent);font-weight:500}.new-book .form-field{margin-bottom:24px}.new-book .input-group{position:relative;transition:all .3s ease}.new-book .input-group:focus-within{transform:translateY(-2px)}.new-book .input-group input,.new-book .input-group select,.new-book .input-group textarea{background:#f8fafc;border:1px solid #e2e8f0;transition:all .3s ease}.new-book .input-group:focus-within input,.new-book .input-group:focus-within select,.new-book .input-group:focus-within textarea{background:#fff;border-color:var(--accent);box-shadow:0 0 0 4px rgba(var(--accent-rgb),.1)}.new-book .file-upload-container{background:#f8fafc;border:2px dashed #e2e8f0;border-radius:12px;cursor:pointer;padding:24px;text-align:center;transition:all .3s ease}.new-book .file-upload-container.dragging,.new-book .file-upload-container:hover{background:#fff;border-color:var(--accent)}.new-book .file-upload-container.dragging{background:#f1f5f9;transform:scale(1.02)}.new-book .upload-placeholder{align-items:center;color:#64748b;display:flex;flex-direction:column;gap:12px;padding:24px}.new-book .upload-placeholder svg{stroke-width:1.5;color:var(--accent)}.new-book .upload-placeholder span{font-size:16px;font-weight:500}.new-book .upload-placeholder .upload-subtitle{color:#94a3b8;font-size:14px;font-weight:400}.new-book .file-input{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;color:#1e293b;cursor:pointer;display:block;font-size:15px;height:48px;padding:0 16px 0 48px;transition:all .2s ease;width:100%}.new-book .file-input:hover{background:#fff;border-color:#cbd5e1}.new-book .image-preview-container{background:#fff;border-radius:12px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);margin-top:20px;pointer-events:all}.new-book .image-preview{border-radius:8px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);max-width:250px;transition:transform .3s ease}.new-book .clear-file{align-items:center;background:#ef4444;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:14px;gap:6px;padding:8px 16px;pointer-events:all;transition:all .3s ease}.new-book .clear-file:hover{background:#dc2626;transform:translateY(-1px)}.new-book .clear-file:active{transform:translateY(0)}.new-book .helper-text{align-items:center;color:#64748b;display:flex;font-size:13px;gap:6px;margin-top:8px}.new-book .helper-text svg{color:var(--accent);height:14px;width:14px}.new-book .auth-buttons{margin-top:32px}.new-book .auth-button{background:var(--accent);font-weight:500;height:48px;letter-spacing:.3px;transition:all .3s ease}.new-book .auth-button:hover{background:var(--accent-hover);box-shadow:0 4px 12px rgba(var(--accent-rgb),.2);transform:translateY(-2px)}.new-book .auth-button.secondary{background:#f1f5f9;color:#475569}.new-book .auth-button.secondary:hover{background:#e2e8f0;color:#1e293b}.new-book .auth-container{box-sizing:border-box;margin:0 auto;max-width:720px;padding:40px 20px;width:100%}.new-book .auth-content{border-radius:20px;box-shadow:0 10px 40px -10px rgba(var(--accent-rgb),.15);padding:40px}.new-book .profile-header{align-items:center;flex-direction:column;gap:12px;margin-bottom:32px;text-align:center}.new-book .profile-header h1{font-size:1.75rem;margin:0}.new-book .checkbox-group{display:flex;flex-wrap:wrap;gap:16px 24px}.new-book .checkbox-item{align-items:center;display:flex;gap:8px}.new-book .checkbox-item label{cursor:pointer;font-weight:400;margin:0}.new-book .select-input{min-height:140px;padding:8px 12px}.new-book .auth-buttons{display:flex;gap:12px}.new-book .auth-buttons .auth-button{align-items:center;display:flex;flex:1 1;gap:8px;justify-content:center;margin-bottom:0;width:auto}@media (max-width:768px){.auth-page.new-book{margin-top:0;min-height:100vh}.new-book .auth-container{padding:24px 16px}.new-book .auth-content{border-radius:16px;padding:28px 24px}}@media (max-width:480px){.new-book .auth-container{padding:16px 12px}.new-book .auth-content{border-radius:14px;padding:20px 16px}.new-book .profile-avatar{height:64px;margin-bottom:12px;width:64px}.new-book .profile-header h1{font-size:1.5rem}.new-book .form-field{margin-bottom:18px}.new-book .file-input,.new-book .input-group input,.new-book .input-group select,.new-book .input-group textarea{font-size:16px}.new-book .file-upload-container{padding:16px}.new-book .upload-placeholder{padding:12px}.new-book .image-preview{max-width:100%}.new-book .helper-text{font-size:12px}.new-book .auth-buttons{flex-direction:column}}.book-cover-wrapper{aspect-ratio:2/3;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:hsla(0,0%,100%,.1);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,.5);margin:0 auto;max-width:400px;overflow:hidden;padding:20px;transition:transform .3s ease;width:100%}.book-cover{border-radius:8px;height:100%;object-fit:cover;width:100%}.book-info-wrapper{color:#fff;padding:20px 0}.book-info-wrapper h1{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,#fff 0,var(--accent-soft) 100%);-webkit-background-clip:text;font-size:clamp(2.5rem,5vw,4rem);font-weight:700;line-height:1.2;margin:0 0 16px}.book-author{color:#94a3b8;font-size:1.25rem;margin:0 0 24px}.book-categories{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}.category-tag{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.1);border-radius:20px;color:var(--accent-soft);font-size:14px;padding:8px 16px;transition:all .2s ease}.book-description{color:#cbd5e1;font-size:1.1rem;line-height:1.7;margin:0 0 32px;max-width:800px}.book-stats{grid-gap:20px;background:var(--card-background);border:1px solid var(--border-color);border-radius:20px;display:grid;gap:20px;grid-template-columns:repeat(3,1fr);padding:24px}.stat-item{align-items:center;color:var(--text-secondary);display:flex;gap:12px}.stat-item svg{stroke-width:1.5;color:var(--accent-color)}.book-actions{display:flex;flex-direction:row;gap:12px;margin-top:32px;max-width:600px}.book-actions button{align-items:center;border:none;border-radius:16px;cursor:pointer;display:flex;font-size:16px;font-weight:600;gap:12px;justify-content:center;letter-spacing:.5px;padding:16px 32px;transition:all .3s cubic-bezier(.4,0,.2,1);width:100%}.book-actions .primary-action{background:var(--accent-color);color:#fff}.book-actions .primary-action:hover{background:var(--accent-color-hover);box-shadow:var(--shadow-md);transform:translateY(-2px)}.book-actions .primary-action:disabled{background:var(--text-secondary);box-shadow:none;cursor:not-allowed;transform:none}.book-actions .secondary-action{background:var(--card-background);border:1px solid var(--border-color);color:var(--text-primary)}.book-actions .secondary-action:hover{background:var(--hover-background);border-color:var(--accent-color);transform:translateY(-2px)}.character-grid{grid-gap:30px;display:grid;gap:30px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));padding:20px}.character-card{background:var(--card-background);border-radius:20px;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.character-card-content{padding:20px}.character-card-content h3{color:var(--text-primary);font-size:1.25rem;margin:0 0 10px}.character-intro{color:var(--text-secondary);line-height:1.6;margin:0 0 20px}.chat-button{align-items:center;background:var(--accent-color);border:none;border-radius:12px;color:#fff;cursor:pointer;display:flex;font-weight:500;gap:8px;padding:12px 24px;transition:all .3s ease;width:100%}.chat-button:hover{background:var(--accent-color-hover);transform:translateY(-2px)}@media (max-width:768px){.book-cover-wrapper{max-width:280px}.book-categories{justify-content:center}.book-stats{grid-template-columns:repeat(2,1fr)}.book-actions{margin:32px auto 0}}@media (max-width:480px){.book-hero{padding:40px 16px}.book-info-wrapper h1{font-size:2rem}.book-stats,.character-grid{grid-template-columns:1fr}}.book-content{border-radius:8px;color:var(--text-primary);font-family:Georgia,serif;font-size:18px;line-height:1.6;margin:0 auto;max-width:800px;min-height:70vh;padding:20px 40px;text-align:left;touch-action:manipulation;transition:background-color .3s,color .3s;-webkit-user-select:none;user-select:none;z-index:1}.book-content.dark-mode{color:#e0e0e0}.book-page-title-header{grid-gap:1.25rem;align-items:center;align-self:stretch;display:grid;gap:1.25rem;grid-template-columns:1fr auto 1fr;margin:1em auto 3.5em;max-width:800px;-webkit-user-select:auto;user-select:auto;width:100%}.book-page-title-line{border-bottom:1px solid var(--text-secondary);height:0;min-width:0;opacity:.4}.book-page-title-header.dark-mode .book-page-title-line{border-bottom-color:#9ca3af;opacity:.5}.book-page-title-link{color:var(--text-secondary);flex-shrink:0;font-family:Georgia,serif;font-size:1.05rem;font-weight:600;letter-spacing:.02em;text-decoration:none;transition:color .2s;-webkit-user-select:auto;user-select:auto;white-space:nowrap}.book-page-title-link:hover{color:var(--text-primary);text-decoration:underline}.book-page-title-header.dark-mode .book-page-title-link{color:#b4bac4}.book-page-title-header.dark-mode .book-page-title-link:hover{color:#e0e0e0}.book-content p{margin:0 0 1.5em;text-align:justify;text-indent:1em}.book-content p:first-of-type{text-indent:0}.book-page-container{-webkit-touch-callout:none;-webkit-overflow-scrolling:touch;align-items:center;background-color:var(--background-secondary);display:flex;flex-direction:column;overflow-y:auto;padding-bottom:75px;padding-top:25px;position:relative;touch-action:manipulation;transition:background-color .3s;-webkit-user-select:none;user-select:none}.book-page-container.dark-mode{background-color:#121212}.book-navigation{display:none}.page-number{color:var(--text-secondary);font-family:Georgia,serif;font-style:italic;margin-bottom:10px;padding:8px 16px;transition:color .3s}.page-number.dark-mode{color:#888}.reader-controls{bottom:20px;display:flex;gap:10px;position:fixed;right:20px;z-index:1000}.font-size-controls{display:flex;gap:5px}.font-size-btn{background-color:var(--card-background);border:none;border-radius:8px;border-radius:20px;box-shadow:var(--shadow-sm);color:var(--text-primary);cursor:pointer;flex:1 1;font-weight:700;padding:8px 12px;transition:background-color .3s,opacity .3s,color .3s}.font-size-btn:disabled{cursor:not-allowed;opacity:.5}.font-size-btn.dark-mode{background-color:#333;box-shadow:0 2px 8px rgba(0,0,0,.4);color:#fff}.font-size-btn.dark-mode:disabled{background-color:#333;opacity:.5}.dark-mode-toggle{align-items:center;background-color:var(--card-background);border:none;border-radius:20px;bottom:120px;box-shadow:var(--shadow-sm);color:var(--text-primary);cursor:pointer;display:flex;gap:8px;padding:8px 16px;position:fixed;right:20px;transition:background-color .3s;z-index:1000}.dark-mode-toggle.dark-mode{background-color:#333;box-shadow:0 2px 8px rgba(0,0,0,.4);color:#fff}.app-header{background-color:var(--nav-background);box-shadow:var(--shadow-sm);height:40px;justify-content:center;left:0;position:fixed;right:0;transition:background-color .3s,color .3s}.app-header.dark-mode{background-color:#1a1a1a;box-shadow:0 2px 4px rgba(0,0,0,.3)}.header-back-button{background:none;border:none;border-radius:50%;color:var(--text-primary);cursor:pointer;padding:8px;transition:background-color .3s}.header-back-button:hover{background-color:var(--hover-background)}.header-back-button.dark-mode:hover{background-color:hsla(0,0%,100%,.1)}.submit-btn{background-color:var(--card-background);border:none;border-radius:20px;box-shadow:var(--shadow-sm);color:var(--text-primary);cursor:pointer;font-weight:500;padding:8px 24px;transition:all .3s ease}.submit-btn:hover{background-color:var(--hover-background);box-shadow:var(--shadow-md);transform:translateY(-1px)}.dark-mode .submit-btn,.submit-btn.dark-mode{background-color:#333;box-shadow:0 2px 8px rgba(0,0,0,.3);color:#fff}.dark-mode .submit-btn:hover,.submit-btn.dark-mode:hover{background-color:#444;box-shadow:0 4px 12px rgba(0,0,0,.4)}.spinner-container{align-items:center;background-color:var(--background-primary);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0}.spinner-container.dark-mode{background-color:#121212}.spinner{animation:spin 1s linear infinite;border-top:5px solid var(--background-secondary);border:5px solid var(--background-secondary);border-radius:50%;border-top-color:var(--accent-color);height:50px;transition:border-color .3s;width:50px}.spinner.dark-mode{border:5px solid #333;border-top-color:#3498db}.character-list-modal{background:var(--card-background);border:1px solid var(--border-color);border-radius:16px;box-shadow:var(--shadow-lg);color:var(--text-primary);left:50%;max-height:80vh;max-width:600px;overflow-y:auto;padding:24px;position:fixed;top:50%;transform:translate(-50%,-50%);transition:all .3s ease;width:90%;z-index:1002}.character-list-modal.dark-mode{background:#1a1a1a;box-shadow:0 4px 20px hsla(0,0%,100%,.1);color:#e0e0e0}.character-list-modal h2{color:var(--text-primary);font-size:1.5rem;font-weight:600;margin-bottom:20px}.character-list-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.character-card{background:var(--background-primary);border:1px solid var(--border-color);border-radius:8px;cursor:pointer;max-width:400px;position:relative;transition:all .2s ease}.character-card:hover{transform:translateY(-8px)}.character-card.dark-mode{background:#2c2c2c}.character-card.dark-mode:hover{box-shadow:0 4px 12px hsla(0,0%,100%,.1)}.character-card.present-current{background:rgba(34,197,94,.05);border-color:#22c55e}.character-card.present-previous{background:rgba(var(--accent-rgb),.05);border-color:var(--accent)}.character-card-info{display:flex;flex:1 1;flex-direction:column;gap:4px;justify-content:flex-end;padding:8px}.character-card-info h3{color:var(--text-primary);font-size:1rem;font-weight:500;margin:0}.character-list-close{align-items:center;background:none;border:none;border-radius:50%;color:var(--text-primary);cursor:pointer;display:flex;justify-content:center;padding:8px;position:absolute;right:16px;top:16px;transition:background-color .2s ease}.character-list-close:hover{background-color:var(--hover-background)}.character-list-close.dark-mode:hover{background-color:hsla(0,0%,100%,.1)}.characters-button{align-items:center;background-color:var(--card-background);border:none;border-radius:20px;bottom:20px;box-shadow:var(--shadow-sm);color:var(--text-primary);cursor:pointer;display:flex;gap:8px;left:20px;padding:8px 16px;position:fixed;transition:all .3s ease;z-index:1000}.characters-button.dark-mode{background-color:#333;box-shadow:0 2px 8px rgba(0,0,0,.4);color:#fff}.characters-button:hover{background-color:var(--hover-background);box-shadow:var(--shadow-md);transform:translateY(-1px)}.characters-button.dark-mode:hover{box-shadow:0 4px 12px rgba(0,0,0,.5)}.character-presence{background:rgba(0,0,0,.05);border-radius:4px;color:var(--text-secondary);font-size:12px;margin-top:4px;padding:4px 8px}.present-current .character-presence{background:rgba(34,197,94,.1);color:#16a34a}.present-previous .character-presence{background:rgba(var(--accent-rgb),.1);color:var(--accent-hover)}.character-context-hint{align-items:center;color:#475569;display:flex;font-size:11px;gap:4px;margin-top:4px}.character-context-hint.inactive{color:#94a3b8;font-style:italic}.present-current .character-context-hint{color:#15803d}.present-previous .character-context-hint{color:var(--accent-hover)}.characters-button.has-characters{animation:pulse 2.5s infinite}.navigation-buttons{align-items:center;display:flex;flex-direction:column;gap:10px;margin:20px 0;padding:0 20px}.navigation-buttons-row{display:flex;gap:20px;justify-content:center}.nav-btn{align-items:center;background:none;border:none;border-radius:24px;color:var(--text-primary);cursor:pointer;display:flex;font-weight:500;gap:8px;padding:12px 24px;transition:all .3s ease}.nav-btn:hover{transform:translateY(-2px)}.nav-btn.dark-mode{color:#fff}.ai-mode-btn{align-items:center;background-color:var(--card-background);border:none;border-radius:20px;box-shadow:var(--shadow-sm);color:var(--text-primary);cursor:pointer;display:flex;justify-content:center;padding:8px 12px;transition:all .3s ease}.ai-mode-btn.active{background-color:var(--accent-color);color:#fff}.ai-mode-btn:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.ai-mode-btn.dark-mode{background-color:#333;color:#fff}.ai-mode-btn.dark-mode.active{background-color:var(--accent-color)}.paragraph-container{align-items:flex-start;display:flex;gap:10px;position:relative}.paragraph-container p{flex:1 1}.paragraph-controls{bottom:0;display:flex;flex-direction:column;gap:5px;opacity:1;position:absolute;right:0;transform:translateY(-50%);transition:opacity .2s ease}.paragraph-controls.disabled{cursor:not-allowed;opacity:.5}.paragraph-controls.disabled .generate-btn{background-color:var(--background-secondary);color:var(--text-secondary);cursor:not-allowed}.paragraph-controls.disabled .generate-btn:hover{box-shadow:var(--shadow-sm);transform:none}.paragraph-container:hover .paragraph-controls{opacity:1}.generate-btn,.image-btn,.regenerate-btn{align-items:center;background-color:var(--card-background);border:none;border-radius:50%;box-shadow:var(--shadow-sm);color:var(--text-primary);cursor:pointer;display:flex;justify-content:center;padding:6px;position:relative;transition:all .2s ease}.generate-btn.disabled{background-color:var(--background-secondary);color:var(--text-secondary);cursor:not-allowed;opacity:.5}.generate-btn.disabled:hover{box-shadow:var(--shadow-sm);transform:none}.image-btn{background-color:var(--accent-color);color:#fff;position:relative;z-index:1001}.image-btn:before{bottom:0;left:0;right:0;top:0;transition:opacity .3s ease;z-index:1999}.image-btn:after,.image-btn:before{content:"";opacity:0;pointer-events:none;position:fixed;visibility:hidden}.image-btn:after{background-image:var(--thumbnail-url);background-position:50%;background-repeat:no-repeat;background-size:contain;border-radius:16px;box-shadow:var(--shadow-lg);height:min(80vh,500px);right:-200px;top:50%;transform:translate(-50%,-50%);transition:all .3s ease;width:min(80vh,500px);z-index:1000000}@media (hover:hover){.image-btn:hover:after,.image-btn:hover:before{opacity:1;visibility:visible}}@media (hover:none){.image-btn:after{height:90vw;max-height:90vh;max-width:90vh;right:50%;transform:translateY(-50%);width:90vw}.image-btn.active:after,.image-btn.active:before{opacity:1;visibility:visible}}.generate-btn:hover,.image-btn:hover,.regenerate-btn:hover{box-shadow:var(--shadow-md)}.generating-indicator{align-items:center;display:flex;justify-content:center;padding:6px}.spin{animation:spin 1s linear infinite}.image-modal-overlay{align-items:center;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.image-modal{background:var(--card-background);border:1px solid var(--border-color);border-radius:20px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:20px;max-height:90vh;max-width:min(90vw,800px);overflow:auto;padding:24px;position:relative}.image-modal img{border-radius:12px;box-shadow:var(--shadow-md);max-height:70vh;max-width:100%;object-fit:contain}.image-caption{border-radius:8px;color:var(--text-secondary);font-size:14px;line-height:1.5;margin:0;padding:15px}.image-modal .image-caption{border-radius:0;padding:10px}.modal-close{background:none;background-color:var(--background-secondary);border-radius:50%;color:var(--text-primary);padding:8px;position:absolute;right:15px;top:15px;z-index:10}.modal-close:hover{background-color:var(--hover-background);transform:scale(1.1)}.regenerate-btn{align-items:center;background-color:var(--accent-color);border-radius:20px;color:#fff;display:flex;font-weight:500;gap:10px;margin:0 auto;padding:12px 20px;width:fit-content}.regenerate-btn:hover{transform:translateY(-2px)}.gallery-toggle{align-items:center;background-color:var(--card-background);border:none;border-radius:20px;bottom:20px;box-shadow:var(--shadow-sm);color:var(--text-primary);cursor:pointer;display:flex;gap:8px;padding:8px 16px;position:fixed;right:170px;transition:all .3s ease;z-index:1000}.gallery-toggle:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.reader-gallery-modal{background:var(--card-background);border-radius:16px;left:50%;max-height:80vh;max-width:800px;overflow-y:auto;padding:30px;position:fixed;top:50%;transform:translate(-50%,-50%);width:90%;z-index:2000}.gallery-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));padding:20px 0}.reader-gallery-item{border-radius:8px;box-shadow:var(--shadow-sm);position:relative;transition:all .2s ease}.reader-gallery-item:hover{box-shadow:var(--shadow-md);transform:translateY(-4px)}.reader-gallery-item img{aspect-ratio:1}.reader-gallery-item-info{background:rgba(0,0,0,.7);bottom:0;color:#fff;font-size:12px;left:0;opacity:0;padding:10px;position:absolute;right:0;transition:opacity .2s ease}.reader-gallery-item:hover .reader-gallery-item-info{opacity:1}.menu-toggle{align-items:center;background-color:var(--card-background);border:none;border-radius:50%;bottom:20px;box-shadow:var(--shadow-md);cursor:pointer;display:flex;height:36px;justify-content:center;position:fixed;right:20px;transition:all .3s ease;width:36px;z-index:999}.menu-toggle.dark-mode{background-color:#333}.menu-toggle:hover{transform:scale(1.1)}.menu-toggle.active{background-color:var(--accent-color)}.character-bubble{align-items:center;bottom:20px;display:flex;gap:8px;height:40px;position:fixed;right:70px;z-index:999}.character-bubble-image{border:2px solid var(--card-background);border-radius:50%;box-shadow:var(--shadow-md);cursor:pointer;height:40px;object-fit:cover;position:relative;transition:all .3s ease;width:40px;z-index:1090}.character-bubble-image:hover{border-color:var(--accent-color);box-shadow:0 0 15px rgba(34,197,94,.5);transform:translateY(-2px)}.character-bubble-image:after{background-color:var(--card-background);border-radius:6px;box-shadow:var(--shadow-md);color:var(--text-primary);content:attr(data-tooltip);font-size:12px;margin-bottom:8px;padding:6px 12px;white-space:nowrap}.character-bubble-image:after,.character-bubble-image:before{bottom:100%;left:50%;opacity:0;position:absolute;transform:translateX(-50%);transition:all .2s ease;visibility:hidden;z-index:1100}.character-bubble-image:before{border:6px solid transparent;border-top:6px solid var(--card-background);content:"";margin-bottom:2px}.character-bubble-image:hover:after,.character-bubble-image:hover:before{opacity:1;visibility:visible}.character-bubble-image.dark-mode{border-color:#333}.character-bubble-image.dark-mode:after{background-color:#1a1a1a;box-shadow:0 2px 8px rgba(0,0,0,.3);color:#fff}.character-bubble-image.dark-mode:before{border-top-color:#1a1a1a}.menu-toggle.has-characters:before{animation:characterGlow 2s ease-in-out infinite;background:radial-gradient(circle,rgba(34,197,94,.2) 0,rgba(34,197,94,0) 70%);border-radius:50%;bottom:-8px;content:"";left:-8px;position:absolute;right:-8px;top:-8px;z-index:-1}.menu-toggle.dark-mode.has-characters:before{background:radial-gradient(circle,rgba(34,197,94,.3) 0,rgba(34,197,94,0) 70%)}@keyframes characterGlow{0%{opacity:.5;transform:scale(1)}50%{opacity:.8;transform:scale(1.2)}to{opacity:.5;transform:scale(1)}}.hamburger-icon{display:flex;flex-direction:column;height:14px;justify-content:space-between;position:relative;width:20px}.hamburger-icon span{background-color:var(--text-primary);display:block;height:2px;transition:all .3s ease;width:100%}.menu-toggle.active .hamburger-icon span{background-color:#fff}.menu-toggle.active .hamburger-icon span:first-child{transform:translateY(6px) rotate(45deg)}.menu-toggle.active .hamburger-icon span:nth-child(2){opacity:0}.menu-toggle.active .hamburger-icon span:last-child{transform:translateY(-6px) rotate(-45deg)}.reader-menu{background-color:var(--card-background);border-radius:12px;bottom:70px;box-shadow:var(--shadow-lg);margin-right:20px;max-height:80vh;overflow-y:auto;padding:16px;position:fixed;right:-305px;transition:right .3s ease;width:250px;z-index:1050}.reader-menu.dark-mode{background-color:#1a1a1a}.reader-menu.open{right:0}.menu-overlay{background-color:rgba(0,0,0,.5);bottom:0;left:0;opacity:0;position:fixed;right:0;top:0;transition:all .3s ease;visibility:hidden;z-index:1040}.menu-overlay.visible{opacity:1;visibility:visible}.menu-header{align-items:center;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;margin-bottom:16px;padding-bottom:8px}.menu-header h3{color:var(--text-primary);font-size:1.1rem;margin:0}.menu-close{align-items:center;background:none;border:none;border-radius:50%;color:var(--text-primary);cursor:pointer;display:flex;justify-content:center;padding:5px;transition:all .2s ease}.menu-close:hover{background-color:var(--hover-background)}.menu-section{margin-bottom:16px}.menu-section h4{color:var(--text-primary);font-size:.9rem;font-weight:500;margin:0 0 8px}.menu-btn{align-items:center;background-color:var(--background-secondary);border:none;border-radius:8px;color:var(--text-primary);cursor:pointer;display:flex;font-size:13px;gap:8px;justify-content:center;margin-bottom:6px;padding:10px;transition:all .2s ease;width:100%}.menu-btn:hover{background-color:var(--hover-background);transform:translateY(-1px)}.menu-btn.active{background-color:var(--accent-color);color:#fff}.menu-btn.has-characters{overflow:hidden;position:relative}.menu-btn.has-characters:after{background-color:var(--accent-color);border-radius:50%;content:"";height:8px;margin:8px;position:absolute;right:0;top:0;width:8px}.menu-btn.theme-btn{background-color:var(--background-primary);border:1px solid var(--border-color);font-size:14px;font-weight:500;padding:12px}.menu-btn.theme-btn.active{background-color:var(--background-secondary)}.menu-btn.active svg{animation:pulse 2s infinite}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.menu-btn svg{transition:transform .2s ease}.menu-btn:hover svg{transform:scale(1.1)}.menu-btn:disabled{cursor:not-allowed;opacity:.7}.menu-btn:disabled:hover{background-color:var(--background-secondary);transform:none}.menu-btn .spin{animation:spin 1s linear infinite}.characters-button,.reader-controls{display:none}.view-images-btn{opacity:1;padding:8px}.view-images-btn:hover{background-color:var(--hover-background);opacity:1;transform:translateY(-1px)}.view-images-btn.dark-mode{background-color:#2a2a2a;box-shadow:0 2px 4px rgba(0,0,0,.3);color:#e0e0e0}.view-images-btn.dark-mode:hover{background-color:#333;box-shadow:0 4px 8px rgba(0,0,0,.4)}.paragraph-container:hover .view-images-btn{opacity:1}.generate-toggle-btn{align-items:center;background-color:var(--background-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);cursor:pointer;display:flex;font-size:.95em;font-weight:500;gap:8px;justify-content:center;margin-top:8px;padding:12px;transition:all .2s ease;width:100%}.generate-toggle-btn:hover{background-color:var(--hover-background);transform:translateY(-1px)}.generate-toggle-btn.active{background-color:var(--accent-color);border-color:transparent;color:#fff}.generate-toggle-btn.dark-mode{background-color:#2a2a2a;border-color:hsla(0,0%,100%,.1)}.generate-toggle-btn.dark-mode:hover{background-color:#333}.generate-toggle-btn.dark-mode.active{background-color:var(--accent-color)}.style-selector{display:flex;flex-direction:column;gap:16px}.custom-style-input{margin-top:0}.custom-style-input label,.preset-styles label{color:var(--text-secondary);display:block;font-size:.9em;margin-bottom:8px}.custom-style-input input{background-color:var(--card-background);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);padding:12px;width:96%}.custom-style-input input:focus{border-color:var(--accent-color);box-shadow:0 0 0 2px rgba(0,123,255,.1)}.custom-style-input input::placeholder{color:var(--text-secondary);opacity:.7}.preset-styles select{background-color:var(--background-primary);border:1px solid var(--border-color);border-radius:8px;box-sizing:border-box;color:var(--text-primary);cursor:pointer;font-size:.9em;padding:10px;transition:all .2s ease;width:100%}.preset-styles select:focus{border-color:var(--accent-color);box-shadow:0 0 0 2px rgba(0,123,255,.1);outline:none}.custom-style-input.dark-mode label,.preset-styles.dark-mode label{color:#bbb}.custom-style-input.dark-mode input,.preset-styles.dark-mode select{background-color:#2a2a2a;border-color:hsla(0,0%,100%,.1);color:#e0e0e0}.custom-style-input.dark-mode input:focus,.preset-styles.dark-mode select:focus{border-color:var(--accent-color);box-shadow:0 0 0 2px rgba(0,123,255,.2)}.custom-style-input.dark-mode input::placeholder{color:#888}.generate-btn{margin-top:20px}.generation-overlay{align-items:center;background:rgba(0,0,0,.7);border-radius:8px;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0;z-index:1000}.generation-spinner{align-items:center;color:#fff;display:flex;flex-direction:column;gap:12px}.generation-spinner .spin{animation:spin 1s linear infinite}.generation-spinner span{font-size:16px;font-weight:500}.paragraph-modal-content{position:relative}.book-scroll-container{-webkit-overflow-scrolling:touch;background-color:var(--background-secondary);min-height:100vh;overflow-anchor:auto;overflow-y:auto;padding:25px 0 100px;scroll-behavior:smooth;touch-action:pan-y}.book-scroll-container.dark-mode{background-color:#121212}.book-scroll-page{align-items:center;display:flex;flex-direction:column;padding-bottom:20px}.scroll-page-divider{align-items:center;color:var(--text-secondary);display:flex;font-family:Georgia,serif;font-size:13px;font-style:italic;gap:16px;justify-content:center;max-width:800px;padding:24px 40px 16px;width:100%}.scroll-page-divider:after,.scroll-page-divider:before{background:var(--text-secondary);content:"";flex:1 1;height:1px;opacity:.2}.scroll-load-sentinel{height:1px;width:100%}@media screen and (max-width:768px){.book-page-title-header{gap:1rem;margin-bottom:1.25em;padding:0 20px}.book-content{font-size:14px;line-height:1.5;padding:15px 20px}.image-modal{width:100vw}.book-page-container{overflow-y:auto!important;touch-action:manipulation!important}.book-page-container,body{-webkit-overflow-scrolling:touch!important}}.paragraph-modal-overlay{align-items:center;background:rgba(0,0,0,.75);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1001}.paragraph-modal-overlay.dark-mode{background:rgba(0,0,0,.85)}.paragraph-modal{background:#fff;border-radius:12px;box-shadow:0 4px 6px rgba(0,0,0,.1);max-height:90vh;max-width:500px;overflow-y:auto;padding:24px;position:relative;width:90%}.paragraph-modal.dark-mode{background:#1a1a1a;box-shadow:0 4px 6px rgba(0,0,0,.3);color:#fff}.paragraph-modal-content{display:flex;flex-direction:column}.paragraph-text{border-bottom:1px solid rgba(0,0,0,.1);max-height:180px;overflow-y:auto}.paragraph-text h3{color:#333}.paragraph-text.dark-mode h3{color:#fff}.paragraph-text p{color:#444;font-style:italic;line-height:1.6}.paragraph-text.dark-mode p{color:#ccc}.community-images h3{color:#333;margin-bottom:16px}.community-images.dark-mode h3{color:#fff}.image-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));margin-top:16px}.image-item{aspect-ratio:1;border-radius:8px;box-shadow:0 2px 4px rgba(0,0,0,.1);cursor:pointer;overflow:hidden;transition:transform .2s}.image-item.dark-mode{box-shadow:0 2px 4px rgba(0,0,0,.3)}.image-item:hover{transform:scale(1.05)}.image-item img{height:100%;object-fit:cover;width:100%}.no-images{background:rgba(0,0,0,.05);border-radius:8px;color:#666;font-size:.9em;padding:32px;text-align:center}.no-images.dark-mode{background:hsla(0,0%,100%,.05);color:#999}.generate-section h3{color:#333;margin-bottom:16px}.generate-section.dark-mode h3{color:#fff}.style-selector label{color:#555;display:block;font-size:.9em;margin-bottom:8px}.style-selector.dark-mode label{color:#bbb}.style-selector select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:#fff;background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23333%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%271.5%27%3E%3Cpath d=%27M3 4.5l3 3 3-3%27/%3E%3C/svg%3E");background-position:right 15px center;background-repeat:no-repeat!important;background-size:12px 12px;border:1px solid rgba(0,0,0,.1);border-radius:6px;color:#333;cursor:pointer;font-size:.95em;padding:10px 35px 10px 12px;transition:all .2s ease;width:100%}.style-selector select.dark-mode{background:#2a2a2a;background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23ccc%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%271.5%27%3E%3Cpath d=%27M3 4.5l3 3 3-3%27/%3E%3C/svg%3E");background-position:right 15px center;background-repeat:no-repeat!important;background-size:12px 12px;border-color:hsla(0,0%,100%,.2);color:#fff}.style-selector select:hover{background-color:#f8f9fa;border-color:#007bff}.style-selector select.dark-mode:hover{background-color:#333;border-color:#007bff}.style-selector select:focus{border-color:#007bff;box-shadow:0 0 0 2px rgba(0,123,255,.25);outline:none}.style-selector select option{background:#fff;color:#333;padding:8px}.style-selector select.dark-mode option{background:#2a2a2a;color:#fff}.generate-btn{align-items:center;background:#007bff;border:none;border-radius:6px;color:#fff;cursor:pointer;display:flex;font-size:.95em;font-weight:500;gap:8px;justify-content:center;padding:12px;transition:all .2s ease;width:100%}.generate-btn.dark-mode,.generate-btn:hover{background:#0056b3}.generate-btn.dark-mode:hover{background:#003d80}.generate-btn:disabled{background:#ccc;cursor:not-allowed}.generate-btn.dark-mode:disabled{background:#444}.generation-primary-controls{align-items:center;display:flex;gap:8px;margin-bottom:8px}.generate-btn.primary{flex:1 1;min-width:0}.settings-toggle-btn{align-items:center;background:#f8f9fa;border:1px solid rgba(0,0,0,.1);border-radius:6px;color:#666;cursor:pointer;display:flex;flex:0 0 auto;height:40px;justify-content:center;padding:0;position:relative;top:10px;transition:all .3s ease;width:40px}.settings-toggle-btn:hover{background:#e9ecef;color:#333;transform:rotate(90deg)}.settings-toggle-btn.active{background:#007bff;border-color:#007bff;color:#fff;transform:rotate(180deg)}.settings-toggle-btn.dark-mode{background:#2a2a2a;border-color:hsla(0,0%,100%,.1);color:#999}.settings-toggle-btn.dark-mode:hover{background:#3a3a3a;color:#fff}.settings-toggle-btn.dark-mode.active{background:#0056b3;border-color:#0056b3;color:#fff}.settings-toggle-btn svg{transition:transform .3s ease}.generate-section{margin-top:0;overflow:hidden;padding-top:0;transition:all .4s cubic-bezier(.4,0,.2,1)}.generate-section.collapsed{max-height:0;opacity:0;transform:translateY(-8px)}.generate-section.expanded{border-top-color:rgba(0,0,0,.1);margin-top:8px;max-height:400px;opacity:1;padding-top:16px;transform:translateY(0)}.generate-section.expanded.dark-mode{border-top-color:hsla(0,0%,100%,.1)}.generate-section-content{padding:4px 0;transform:translateY(0);transition:transform .3s ease .1s}.generate-section.collapsed .generate-section-content{transform:translateY(-20px);transition:transform .2s ease}.custom-style-input{margin-bottom:16px}.custom-style-input input{background:#fff;border:1px solid rgba(0,0,0,.1);border-radius:6px;box-sizing:border-box;color:#333;font-size:.95em;padding:10px 12px;transition:all .2s ease;width:100%}.custom-style-input input.dark-mode{background:#2a2a2a;border-color:hsla(0,0%,100%,.1);color:#fff}.custom-style-input input:focus{border-color:#007bff;box-shadow:0 0 0 2px rgba(0,123,255,.25);outline:none}.custom-style-input input::placeholder{color:#999;font-style:italic}.custom-style-input input.dark-mode::placeholder{color:#666}.aspect-ratio-selector,.preset-styles{margin-bottom:16px}.aspect-ratio-selector label{color:#555;display:block;font-size:.9em;margin-bottom:8px}.aspect-ratio-selector.dark-mode label{color:#bbb}.aspect-ratio-selector select{appearance:none;-webkit-appearance:none;-moz-appearance:none;background:#fff;background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23333%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%271.5%27%3E%3Cpath d=%27M3 4.5l3 3 3-3%27/%3E%3C/svg%3E");background-position:right 15px center;background-repeat:no-repeat!important;background-size:12px 12px;border:1px solid rgba(0,0,0,.1);border-radius:6px;color:#333;cursor:pointer;font-size:.95em;padding:10px 35px 10px 12px;transition:all .2s ease;width:100%}.aspect-ratio-selector select.dark-mode{background:#2a2a2a;background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%2712%27 fill=%27none%27 stroke=%27%23ccc%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27 stroke-width=%271.5%27%3E%3Cpath d=%27M3 4.5l3 3 3-3%27/%3E%3C/svg%3E");background-position:right 15px center;background-repeat:no-repeat!important;background-size:12px 12px;border-color:hsla(0,0%,100%,.2);color:#fff}.aspect-ratio-selector select:hover{background-color:#f8f9fa;border-color:#007bff}.aspect-ratio-selector select.dark-mode:hover{background-color:#333;border-color:#007bff}.aspect-ratio-selector select:focus{border-color:#007bff;box-shadow:0 0 0 2px rgba(0,123,255,.25);outline:none}.aspect-ratio-selector select option{background:#fff;color:#333;padding:8px}.aspect-ratio-selector select.dark-mode option{background:#2a2a2a;color:#fff}.page-turn-loader{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:rgba(0,0,0,.05);border-radius:50%;display:flex;height:40px;justify-content:center;position:absolute;right:20px;top:20px;transition:opacity .3s ease;width:40px;z-index:10}.page-turn-loader.dark-mode{background:hsla(0,0%,100%,.05)}.book-content.fetching{position:relative}.paragraph-modal::-webkit-scrollbar{width:8px}.paragraph-modal::-webkit-scrollbar-track{background:rgba(0,0,0,.05);border-radius:4px}.paragraph-modal.dark-mode::-webkit-scrollbar-track{background:hsla(0,0%,100%,.05)}.paragraph-modal::-webkit-scrollbar-thumb{background:rgba(0,0,0,.2);border-radius:4px}.paragraph-modal.dark-mode::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2)}.paragraph-modal::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.3)}.paragraph-modal.dark-mode::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.3)}.reader-gallery-scroll-container{-ms-overflow-style:none;overflow-x:auto;padding:20px 0;scrollbar-width:none;width:100%}.reader-gallery-scroll-container::-webkit-scrollbar{display:none}.reader-gallery-scroll{display:flex;gap:20px;padding:0 20px;scroll-behavior:smooth}.reader-gallery-item{border-radius:12px;box-shadow:0 4px 6px rgba(0,0,0,.1);cursor:pointer;flex:0 0 300px;overflow:hidden;transition:transform .2s}.reader-gallery-item:hover{transform:scale(1.03)}.reader-gallery-item img{height:200px;object-fit:cover;width:100%}.reader-gallery-item-info{padding:12px}.reader-gallery-item-info.dark-mode{background:#2a2a2a;color:#fff}.reader-gallery-placeholder{align-items:center;background:rgba(0,0,0,.05);border-radius:12px;color:#666;display:flex;flex-direction:column;justify-content:center;padding:40px;text-align:center}.reader-gallery-placeholder.dark-mode{background:hsla(0,0%,100%,.05);color:#999}.reader-gallery-placeholder svg{margin-bottom:16px;opacity:.5}.reader-gallery-placeholder-subtitle{font-size:.9em;margin-top:8px;opacity:.8}.community-scroll-container{-ms-overflow-style:none;overflow-x:auto;padding:20px 0;scrollbar-width:none;width:100%}.community-scroll-container::-webkit-scrollbar{display:none}.community-scroll{display:flex;gap:20px;padding:0 20px;scroll-behavior:smooth}.community-item{border-radius:12px;box-shadow:0 4px 6px rgba(0,0,0,.1);cursor:pointer;flex:0 0 250px;overflow:hidden;transition:transform .2s}.community-item:hover{transform:scale(1.03)}.community-item img{height:180px;object-fit:cover;width:100%}.community-item.dark-mode{box-shadow:0 4px 6px rgba(0,0,0,.3)}.community-placeholder{align-items:center;background:rgba(0,0,0,.05);border-radius:12px;color:#666;display:flex;flex-direction:column;justify-content:center;padding:40px;text-align:center}.community-placeholder.dark-mode{background:hsla(0,0%,100%,.05);color:#999}.community-placeholder svg{margin-bottom:16px;opacity:.5}.community-placeholder .placeholder-subtitle{font-size:.9em;margin-top:8px;opacity:.8}.character-bubble-wrapper{display:inline-block;position:relative}.character-bubble-wrapper.chat-open .character-bubble-image:hover{border-color:var(--card-background);box-shadow:var(--shadow-md);transform:none}.character-bubble-wrapper.chat-open .character-bubble-image.dark-mode:hover{border-color:#333}.character-bubble-wrapper.chat-open .character-bubble-image:hover:after,.character-bubble-wrapper.chat-open .character-bubble-image:hover:before,.character-bubble-wrapper.chat-open:hover .character-tooltip,.character-tooltip{opacity:0;visibility:hidden}.character-tooltip{background:rgba(0,0,0,.8);border-radius:4px;bottom:100%;color:#fff;font-size:14px;left:50%;margin-bottom:8px;padding:6px 12px;pointer-events:none;position:absolute;transform:translateX(-50%);transition:opacity .2s,visibility .2s;white-space:nowrap;z-index:1000}.character-tooltip.dark-mode{background:hsla(0,0%,100%,.9);color:#000}.character-tooltip:after{border:5px solid transparent;border-top-color:rgba(0,0,0,.8);content:"";left:50%;position:absolute;top:100%;transform:translateX(-50%)}.character-tooltip.dark-mode:after{border-color:hsla(0,0%,100%,.9) transparent transparent}.character-bubble-wrapper:hover .character-tooltip{opacity:1;visibility:visible}.menu-book-logo{display:block;height:32px;width:32px}.book-logo-button{background:transparent;border:none;padding:5px}.hamburger-icon{display:none}@keyframes pulse-glow{0%{box-shadow:0 0 0 0 rgba(0,123,255,.7)}70%{box-shadow:0 0 0 10px rgba(0,123,255,0)}to{box-shadow:0 0 0 0 rgba(0,123,255,0)}}.book-logo-button.no-user-attention{animation:pulse-glow 2s infinite;border-radius:50%}.book-page-container.fade-in{animation:fadeIn .5s ease-in-out}@keyframes slideOutLeft{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-20px)}}@keyframes slideInRight{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}.book-page-container.transitioning{animation:slideOutLeft .15s ease-in-out;opacity:.9;pointer-events:none}.book-page-container.slide-in{animation:slideInRight .3s ease-in-out}.book-page-container:active{cursor:grabbing}.swipe-instructions{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(0,0,0,.9);border-radius:30px;box-shadow:0 4px 20px rgba(0,0,0,.3);color:#fff;font-size:14px;font-weight:500;left:50%;opacity:0;padding:16px 24px;pointer-events:none;position:fixed;text-align:center;top:50%;transform:translate(-50%,-50%);transition:all .4s ease;visibility:hidden;z-index:1001}.swipe-instructions.dark-mode{background:hsla(0,0%,100%,.9);box-shadow:0 4px 20px hsla(0,0%,100%,.1);color:#333}.swipe-instructions.visible{opacity:1;visibility:visible}.swipe-feedback{align-items:center;animation:swipeFeedbackShow .2s ease-out;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(0,0,0,.8);border-radius:50px;box-shadow:0 4px 20px rgba(0,0,0,.3);color:#fff;display:flex;font-size:18px;font-weight:600;gap:12px;left:50%;padding:16px 24px;position:fixed;top:50%;transform:translate(-50%,-50%);z-index:1002}.swipe-feedback.dark-mode{background:hsla(0,0%,100%,.9);box-shadow:0 4px 20px hsla(0,0%,100%,.1);color:#333}.swipe-feedback.next{animation:slideInFromLeft .2s ease-out}.swipe-feedback.prev{animation:slideInFromRight .2s ease-out}@keyframes swipeFeedbackShow{0%{opacity:0;transform:translate(-50%,-50%) scale(.8)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@keyframes slideInFromLeft{0%{opacity:0;transform:translate(-80%,-50%)}to{opacity:1;transform:translate(-50%,-50%)}}@keyframes slideInFromRight{0%{opacity:0;transform:translate(-20%,-50%)}to{opacity:1;transform:translate(-50%,-50%)}}.view-images-btn{align-items:center;background-color:var(--card-background);border:none;border-radius:50%;box-shadow:var(--shadow-sm);color:var(--text-primary);cursor:pointer;display:flex;justify-content:center;padding:6px;transition:all .2s ease}.view-images-btn.dark-mode{background-color:#333;box-shadow:0 2px 4px rgba(0,0,0,.4);color:#fff}.view-images-btn:hover{box-shadow:var(--shadow-md);transform:scale(1.1)}.image-generation-controls{margin-top:16px}.generation-media-toggle{display:flex;gap:6px;margin-bottom:10px}.media-toggle-btn{align-items:center;background:transparent;border:1px solid #ccc;border-radius:20px;color:var(--text-primary);cursor:pointer;display:flex;font-size:13px;gap:6px;padding:6px 14px;transition:all .15s ease}.media-toggle-btn.active{background:#007bff;border-color:#007bff;color:#fff}.media-toggle-btn.dark-mode{border-color:#555;color:#ccc}.media-toggle-btn.active.dark-mode{background:#0056b3;border-color:#0056b3;color:#fff}.video-status-message{align-items:center;background:rgba(0,123,255,.08);border-radius:6px;color:#007bff;display:flex;font-size:13px;gap:8px;margin-bottom:8px;padding:8px 12px}.video-status-message.error{background:rgba(220,53,69,.08);color:#dc3545}.video-status-message.dark-mode{background:rgba(0,123,255,.15)}.video-status-message.error.dark-mode{background:rgba(220,53,69,.15)}.video-preview{margin-bottom:10px}.pages-grid{margin:auto;width:90%}.page-card{background:var(--background-secondary);border-radius:16px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);color:var(--text-primary);display:flex;flex-direction:column;gap:16px;overflow:hidden;padding:24px;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.page-card:hover{box-shadow:0 12px 24px -8px rgba(0,0,0,.15);transform:translateY(-4px)}.page-card:after{background:var(--accent);content:"";height:4px;left:0;opacity:0;position:absolute;top:0;transition:opacity .3s ease;width:100%}.page-card:hover:after{opacity:1}.page-number{border-radius:8px;font-size:1.1rem;font-weight:600;width:fit-content}.page-content{color:var(--text-primary);display:flex;flex:1 1;flex-direction:column;gap:16px}.page-content textarea{background:transparent;border:none;color:var(--text-primary);font-size:1rem;height:1200px;outline:none}.page-text{font-size:.95rem;line-height:1.6}.page-image{aspect-ratio:16/9;background:#f1f5f9;border-radius:8px;overflow:hidden;width:100%}.page-image img{height:100%;object-fit:cover;transition:transform .3s ease;width:100%}.page-card:hover .page-image img{transform:scale(1.05)}.page-actions{border-top:1px solid #e2e8f0;display:flex;gap:8px;margin-top:auto;padding-top:16px}.page-action{align-items:center;border:none;border-radius:8px;cursor:pointer;display:flex;flex:1 1;font-size:14px;font-weight:500;gap:8px;justify-content:center;padding:8px 16px;transition:all .2s ease}.page-action.edit{background:var(--accent-soft);color:var(--accent-hover)}.page-action.edit:hover{background:#c7d2fe;transform:translateY(-1px)}.page-action.delete{background:#fee2e2;color:#ef4444}.page-action.delete:hover{background:#fecaca;transform:translateY(-1px)}@media (max-width:768px){.pages-grid{gap:16px;grid-template-columns:1fr}.page-card{padding:20px}.page-number{font-size:1rem}.page-text{-webkit-line-clamp:4;font-size:.9rem}.page-action{font-size:13px;padding:6px 12px}}.page-form-section{background:#fff;border-radius:16px;box-shadow:0 4px 20px rgba(0,0,0,.05);margin:32px auto;max-width:1200px;padding:40px}.page-form-header{align-items:center;display:flex;gap:16px;margin-bottom:32px}.page-form-icon{align-items:center;background:var(--accent);border-radius:12px;color:#fff;display:flex;height:48px;justify-content:center;width:48px}.page-form-title{color:#1f2937;font-size:24px;font-weight:600;margin:0}.page-form-subtitle{color:#6b7280;font-size:16px;margin:4px 0 0}.page-form{grid-gap:24px;display:grid;gap:24px}.page-form-group{display:flex;flex-direction:column;gap:8px}.page-form-group label{color:#374151;font-size:14px;font-weight:500}.page-form-input{align-items:center;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;display:flex;gap:12px;padding:12px 16px;transition:all .2s ease}.page-form-input:focus-within{background:#fff;border-color:var(--accent);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.1)}.page-form-input input,.page-form-input textarea{background:transparent;border:none;color:#1f2937;flex:1 1;font-size:15px;outline:none;padding:0}.page-form-input textarea{line-height:1.5;min-height:120px;resize:vertical}.page-form-input input::placeholder,.page-form-input textarea::placeholder{color:#9ca3af}.page-form-file{cursor:pointer;overflow:hidden;position:relative}.page-form-file input[type=file]{cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.page-form-file-label{align-items:center;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;color:#6b7280;display:flex;gap:12px;padding:12px 16px;transition:all .2s ease}.page-form-file:hover .page-form-file-label{background:#f3f4f6;border-color:#d1d5db}.page-form-preview{background:#f9fafb;border-radius:8px;margin-top:16px;overflow:hidden}.page-form-preview img{display:block;height:auto;width:100%}.page-form-actions{display:flex;gap:12px;margin-top:32px}.page-form-button{align-items:center;border:none;border-radius:8px;cursor:pointer;display:inline-flex;font-weight:500;gap:8px;padding:12px 24px;transition:all .2s ease}.page-form-button.primary{background:var(--accent);color:#fff}.page-form-button.primary:hover{box-shadow:0 4px 12px rgba(79,70,229,.2);transform:translateY(-1px)}.page-form-button.secondary{background:#f3f4f6;color:#4b5563}.page-form-button.secondary:hover{background:#e5e7eb}@media (max-width:768px){.page-form-section{margin:16px;padding:24px}.page-form-actions{flex-direction:column}.page-form-button{justify-content:center;width:100%}}.page-form-wrapper{margin-bottom:64px;padding-top:32px;scroll-margin-top:100px}.file-upload-container{display:flex;flex-direction:column;gap:12px}.file-input{background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;color:#1e293b;cursor:pointer;font-size:15px;height:48px;padding:0 16px 0 48px;transition:all .2s ease;width:100%}.file-input:hover{background:#fff;border-color:#cbd5e1}.selected-file{align-items:center;background:#f1f5f9;border-radius:8px;color:#475569;display:flex;font-size:14px;gap:8px;padding:8px 12px}.selected-file svg{color:var(--accent);flex-shrink:0}.selected-file span{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.clear-file{background:none;border:none;border-radius:50%;color:#94a3b8;cursor:pointer;font-size:18px;line-height:1;padding:4px;transition:all .2s ease}.clear-file:hover{background:#fee2e2;color:#ef4444}.helper-text{color:#64748b;font-size:13px;line-height:1.5;margin-top:4px}.image-preview-container{align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;display:flex;flex-direction:column;gap:16px;padding:24px}.search-books-container{margin:0 auto}.search-header{background:var(--background-primary);margin-bottom:20px;padding:20px 0;position:sticky;top:50px;z-index:100}.search-input-container{align-items:center;border-radius:8px;display:flex;gap:12px;margin:0 auto;max-width:400px;padding:12px 16px;transition:all .2s ease}.search-input-container.dark{background:var(--card-background)}.search-input-container.light{background:var(--background-secondary);border:1px solid var(--border-color)}.search-input-container svg{color:var(--text-secondary)}.search-input{background:none;border:none;color:var(--text-primary);font-size:16px;padding:3px;width:100%}.search-input::placeholder{color:var(--text-secondary)}.search-input:focus{outline:none}.books-grid-search{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));padding:20px}.book-card{border-radius:12px;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}.book-card.dark{background:var(--card-background);box-shadow:var(--shadow-sm)}.book-card.light{background:var(--background-secondary);border:1px solid var(--border-color);box-shadow:var(--shadow-sm)}.book-card:hover{transform:translateY(-4px)}.book-card.dark:hover{box-shadow:var(--shadow-lg)}.book-card.light:hover{border-color:var(--accent-color);box-shadow:var(--shadow-md)}.book-card a{color:inherit;text-decoration:none}.book-image{aspect-ratio:2/3;background:var(--background-secondary);overflow:hidden}.book-image img{height:100%;object-fit:cover;width:100%}.book-info{padding:12px}.book-info h3{font-size:16px;font-weight:600;margin:0 0 4px}.book-info.dark h3,.book-info.light h3{color:var(--text-primary)}.book-info p{color:var(--text-secondary);font-size:14px;margin:0}.error-message{margin:20px auto;max-width:600px;padding:12px 16px;text-align:center}.error-message.dark{background:#f44;color:#fff}.error-message.light{background:#fee2e2;border:1px solid #fecaca;color:#dc2626}.no-results{color:var(--text-secondary);font-size:16px;grid-column:1/-1;margin:auto;padding:40px;text-align:center;width:70%}.loading-spinner{margin:20px auto}@media (max-width:768px){.books-grid-search{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}.book-upload-container{background:var(--background-primary);color:var(--text-primary);margin:2rem auto;max-width:800px;padding:2rem}.header-section{margin-bottom:3rem;text-align:center}.header-section h1{-webkit-text-fill-color:transparent;background:linear-gradient(135deg,var(--text-primary) 0,var(--accent-color) 100%);-webkit-background-clip:text;font-size:3rem;font-weight:800;letter-spacing:-.5px;margin-bottom:1rem}.header-divider{background:var(--accent-color);border-radius:2px;height:4px;margin:1.5rem auto;width:80px}.header-subtitle{color:var(--text-secondary);font-size:1.25rem;font-weight:500}.upload-description{color:var(--text-secondary);font-size:1.1rem;line-height:1.6;margin-bottom:2rem;text-align:center}.feature-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin-bottom:3rem}.feature-card{background:var(--background-secondary);border:1px solid var(--border-color);border-radius:12px;padding:1.5rem;text-align:center;transition:transform .3s ease,box-shadow .3s ease}.feature-card svg{color:var(--accent-color);height:32px;margin-bottom:1rem;width:32px}.feature-card h3{color:var(--text-primary);font-size:1.1rem;font-weight:600;margin-bottom:.75rem}.feature-card p{color:var(--text-secondary);font-size:.9rem;line-height:1.5}.upload-box{background:var(--background-secondary);border:2px dashed var(--border-color);border-radius:16px;cursor:pointer;margin-bottom:2rem;padding:3rem 2rem;text-align:center;transition:all .3s ease}.upload-box:hover{background:var(--background-primary);border-color:var(--accent-color);transform:translateY(-2px)}.file-input{display:none}.file-label{align-items:center;color:var(--text-secondary);cursor:pointer;display:flex;flex-direction:column;gap:.75rem}.file-label svg{color:var(--accent-color);height:48px;margin-bottom:1rem;transition:transform .3s ease;width:48px}.upload-box:hover .file-label svg{transform:scale(1.1)}.file-label span:first-of-type{color:var(--text-primary);font-size:1.2rem;font-weight:500}.file-types{color:var(--text-secondary);font-size:.9rem}.error-message{align-items:center;border:1px solid var(--danger-color);border-radius:8px;color:var(--danger-color);display:flex;gap:.75rem;margin-bottom:1.5rem;padding:1rem}.error-message,.file-info{background:var(--background-secondary)}.file-info{border:1px solid var(--border-color);border-radius:12px;margin-top:2rem;padding:2rem}.file-info h3{color:var(--text-primary);font-size:1.2rem;font-weight:600;margin-bottom:1.5rem}.file-info p{color:var(--text-secondary);font-size:1rem;margin:.75rem 0}.cost-breakdown{border-top:1px solid var(--border-color);margin-top:1.5rem;padding-top:1rem}.cost-breakdown h4{color:var(--text-primary);margin-bottom:.5rem}.upload-button{align-items:center;background:var(--accent-color);border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:1.1rem;font-weight:600;gap:.75rem;justify-content:center;margin-top:2rem;padding:1rem;transition:all .3s ease;width:100%}.upload-button:hover:not(:disabled){background:var(--accent-color-hover);box-shadow:var(--shadow-md);transform:translateY(-2px)}.upload-button:disabled{cursor:not-allowed;opacity:.7}.loading-state{color:var(--text-secondary);min-height:200px}.auth-required,.loading-state{align-items:center;display:flex;justify-content:center}.auth-required{background:var(--background-secondary);border:1px solid var(--border-color);border-radius:16px;flex-direction:column;min-height:300px;padding:3rem 2rem;text-align:center}.auth-required svg{color:var(--accent-color);height:64px;margin-bottom:2rem;width:64px}.auth-required h2{color:var(--text-primary);font-size:1.5rem;font-weight:600;margin-bottom:1rem}.auth-required p{color:var(--text-secondary);font-size:1.1rem;margin-bottom:2rem}.auth-button{background:var(--accent-color);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1.1rem;font-weight:600;margin-bottom:10px;padding:1rem 2.5rem;transition:all .3s ease;width:100%}.auth-button:hover{background:var(--accent-color-hover);box-shadow:var(--shadow-md);transform:translateY(-2px)}.token-cost-manager{margin:70px auto 0;max-width:1200px;padding:32px}.section-header h2{align-items:center;color:var(--text-primary);display:flex;font-size:24px;font-weight:600;gap:12px;justify-content:center;margin-bottom:0}.section-header h2 svg{color:var(--accent-color)}.section-header p{color:var(--text-secondary);font-size:15px}.create-button{align-items:center;border:none;border-radius:8px;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;padding:8px 16px;transition:all .2s ease}.create-button.dark,.create-button.light{background:var(--accent-color);color:#fff}.create-button:hover{opacity:.9;transform:translateY(-1px)}.create-form-container{border-radius:12px;margin-bottom:32px;padding:24px}.create-form-container.dark,.create-form-container.light{background:var(--card-background);border:1px solid var(--border-color)}.create-form{gap:16px;max-width:600px}.create-form,.form-group{display:flex;flex-direction:column}.form-group{gap:8px}.form-group label{color:var(--text-primary);font-size:14px;font-weight:500}.form-group input[type=number],.form-group input[type=text],.form-group textarea{background:var(--input-background);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:14px;padding:8px 12px}.form-group textarea{min-height:80px;resize:vertical}.form-group select{appearance:none;background:var(--input-background);background-image:url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23666%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E");background-position:right 12px center;background-repeat:no-repeat;background-size:8px auto;border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);cursor:pointer;font-size:14px;padding:8px 32px 8px 12px}.form-group select.dark{background-color:var(--background-secondary);color:var(--text-primary)}.form-group select.light{background-color:#fff;color:var(--text-primary)}.form-group select:focus{border-color:var(--accent-color);box-shadow:0 0 0 2px rgba(var(--accent-rgb),.1);outline:none}.form-group select:disabled{cursor:not-allowed;opacity:.5}.form-actions{display:flex;gap:12px;margin-top:8px}.cancel-button,.submit-button{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:8px 16px;transition:all .2s ease}.submit-button{background:var(--accent-color);color:#fff}.cancel-button:hover,.submit-button:hover{opacity:.9}.cancel-button:disabled,.submit-button:disabled{cursor:not-allowed;opacity:.5}.costs-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.cost-card{border-radius:12px;padding:24px;transition:all .2s ease}.cost-card.dark,.cost-card.light{background:var(--card-background);border:1px solid var(--border-color)}.cost-card:hover{transform:translateY(-2px)}.cost-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.cost-header h3{color:var(--text-primary);font-size:18px;font-weight:600;margin:0}.cost-actions{display:flex;gap:8px}.cancel-button,.delete-button,.edit-button,.save-button{align-items:center;border:none;border-radius:6px;cursor:pointer;display:flex;height:32px;justify-content:center;transition:all .2s ease;width:32px}.edit-button{background:var(--accent-color);color:#fff}.save-button{background:var(--success-color);color:#fff}.cancel-button,.delete-button{background:var(--danger-color);color:#fff}.cancel-button:hover,.delete-button:hover,.edit-button:hover,.save-button:hover{opacity:.9}.cancel-button:disabled,.delete-button:disabled,.edit-button:disabled,.save-button:disabled{cursor:not-allowed;opacity:.5}.cost-amount{align-items:center;display:flex;font-size:24px;font-weight:700;gap:8px;margin-bottom:12px}.cost-amount,.cost-amount svg{color:var(--accent-color)}.cost-description{color:var(--text-secondary);font-size:14px;line-height:1.5;margin-bottom:16px}.cost-status{align-items:center;border-radius:16px;display:inline-flex;font-size:13px;font-weight:500;padding:6px 12px}.cost-status.active{background:#ecfdf5;color:#059669}.cost-status.inactive{background:#fee2e2;color:#ef4444}.dark .cost-status.active{background:rgba(5,150,105,.1);color:#34d399}.dark .cost-status.inactive{background:rgba(239,68,68,.1);color:#f87171}.edit-form{display:flex;flex-direction:column;gap:16px;margin-top:16px}.edit-form .form-group{margin-bottom:0}.no-actions-message{color:var(--danger-color);font-size:13px;font-style:italic;margin-top:8px}.cost-title{display:flex;flex-direction:column;gap:4px}.book-badge{align-items:center;background:var(--background-secondary);border-radius:6px;color:var(--text-secondary);display:inline-flex;font-size:12px;font-weight:500;gap:6px;padding:4px 8px}.book-badge svg{color:var(--accent-color)}@media (max-width:768px){.token-cost-manager{padding:20px}.costs-grid{grid-template-columns:1fr}.cost-card{padding:20px}}.modal-overlay{background-color:rgba(0,0,0,.5)}.modal-overlay.dark{background-color:rgba(0,0,0,.7)}.token-cost-modal{background:var(--card-background);border-radius:12px;box-shadow:0 4px 6px rgba(0,0,0,.1);max-height:90vh;max-width:600px;overflow-y:auto;position:relative;width:90%}.token-cost-modal.dark{border:1px solid var(--border-color)}.modal-close{align-items:center;background:transparent;border:none;border-radius:6px;color:var(--text-secondary);cursor:pointer;display:flex;justify-content:center;padding:4px;transition:all .2s ease}.modal-close:hover{background:var(--background-secondary);color:var(--text-primary)}.modal-close:disabled{cursor:not-allowed;opacity:.5}.modal-content .create-form{margin:0;padding:0}@media (max-width:768px){.token-cost-modal{margin:10px;width:95%}.modal-header{padding:16px 20px}.modal-content{padding:20px}}.books-page{background-color:var(--background-primary);min-height:100vh;padding:2rem}.books-page__loading{align-items:center;display:flex;justify-content:center;min-height:50vh}.books-page__spinner{animation:spin 1s linear infinite;border:3px solid var(--border-color);border-radius:50%;border-top-color:var(--accent-color);height:40px;width:40px}.books-page__content{margin:0 auto;max-width:1400px}.books-page__empty-state{background:var(--card-background);border:1px solid var(--border-color);border-radius:24px;margin:100px auto 2rem;max-width:600px;padding:4rem 2rem;text-align:center}.books-page__empty-state-icon{color:var(--accent-color);margin-bottom:1.5rem}.books-page__empty-state h2{color:var(--text-primary);font-size:1.75rem;margin-bottom:1rem}.books-page__empty-state p{color:var(--text-secondary);font-size:1.1rem;line-height:1.6;margin-bottom:2rem}.books-page__empty-state-buttons{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.books-page__empty-state-button--primary,.books-page__empty-state-button--secondary{align-items:center;border-radius:12px;display:flex;font-size:1rem;font-weight:600;gap:.75rem;padding:.875rem 1.5rem;text-decoration:none;transition:all .2s ease}.books-page__empty-state-button--primary{background:var(--accent-color);color:#fff}.books-page__empty-state-button--primary:hover{background:var(--accent-color-hover);transform:translateY(-2px)}.books-page__empty-state-button--secondary{background:var(--card-background);border:1px solid var(--border-color);color:var(--text-primary)}.books-page__empty-state-button--secondary:hover{background:var(--hover-background);border-color:var(--accent-color);transform:translateY(-2px)}.books-page__characters{border-radius:24px;margin-bottom:3rem}.books-page__section-header{align-items:center;display:flex;margin-bottom:1.5rem}.books-page__section-header h2{color:var(--text-primary);font-size:1.75rem;margin-bottom:.5rem;margin-right:50px}.books-page__section-header p{color:var(--text-secondary);font-size:1.1rem}.books-page__search-container{margin-left:50px;position:relative;width:200px}.books-page__search-icon{color:var(--text-secondary);left:12px;position:absolute;top:50%;transform:translateY(-50%)}.books-page__search-input{background-color:var(--background-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-primary);font-size:.9rem;padding:.75rem 1rem .75rem 2.5rem;transition:all .2s ease;width:100%}.books-page__search-input:focus{border-color:var(--primary-color);box-shadow:0 0 0 2px var(--primary-color-alpha);outline:none}.books-page__search-input::placeholder{color:var(--text-secondary)}.books-page__characters-by-book{display:flex;flex-direction:column;gap:2rem}.books-page__book-characters{background:var(--background-primary);border:1px solid var(--border-color);border-radius:16px;padding:1.5rem}.books-page__book-title{align-items:center;border-bottom:1px solid var(--border-color);color:var(--text-primary);display:flex;font-size:1.25rem;gap:.75rem;margin-bottom:1.25rem;padding-bottom:1rem;transition:color .2s ease}.books-page__book-title:hover{color:var(--accent-color)}.books-page__book-title svg{color:var(--accent-color);transition:transform .2s ease}.books-page__book-title:hover svg{transform:translateX(4px)}.books-page__character-list{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.books-page__character-compact{align-items:center;background:var(--card-background);border:1px solid var(--border-color);border-radius:12px;cursor:pointer;display:flex;gap:1rem;padding:.75rem;transition:all .2s ease}.books-page__character-compact:hover{border-color:var(--accent-color);box-shadow:0 4px 12px rgba(0,0,0,.1);transform:translateY(-2px)}.books-page__character-compact-image{border-radius:50%;flex-shrink:0;height:48px;overflow:hidden;width:48px}.books-page__character-compact-image img{height:100%;object-fit:cover;width:100%}.books-page__character-compact-info{flex:1 1;min-width:0}.books-page__character-compact-info h4{color:var(--text-primary);font-size:1rem;margin-bottom:.25rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.books-page__character-compact-stats{align-items:center;color:var(--text-secondary);display:flex;font-size:.875rem;gap:1rem;overflow:auto}.books-page__character-compact-stats span{align-items:center;display:flex;gap:.375rem}.books-page__character-compact-stats svg{color:var(--accent-color)}.books-page__modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:rgba(0,0,0,.5);bottom:0;left:0;position:fixed;right:0;top:0;z-index:1000}.books-page__character-modal{background:var(--card-background);border-radius:24px;box-shadow:0 8px 32px rgba(0,0,0,.2);left:50%;max-height:90vh;max-width:600px;overflow-y:auto;position:fixed;top:50%;transform:translate(-50%,-50%);width:90%;z-index:1001}.books-page__modal-close{align-items:center;background:none;border:none;border-radius:50%;color:var(--text-secondary);cursor:pointer;display:flex;justify-content:center;padding:.5rem;position:absolute;right:1rem;top:1rem;transition:all .2s ease}.books-page__modal-close:hover{background:var(--hover-background);color:var(--text-primary)}.books-page__modal-header{padding:2rem 2rem 0;text-align:center}.books-page__modal-image{border:4px solid var(--accent-color);border-radius:50%;height:160px;margin:0 auto 1.5rem;overflow:hidden;width:160px}.books-page__modal-image img{height:100%;object-fit:cover;width:100%}.books-page__modal-title h2{color:var(--text-primary);font-size:1.75rem;margin-bottom:.5rem}.books-page__modal-title p{color:var(--text-secondary);font-size:1.1rem}.books-page__modal-content{padding:2rem}.books-page__modal-section{margin-bottom:2rem}.books-page__modal-section h3{color:var(--text-primary);font-size:1.25rem;margin-bottom:1rem}.books-page__modal-section p{color:var(--text-secondary);line-height:1.6}.books-page__modal-tags{display:flex;flex-wrap:wrap;gap:.75rem}.books-page__modal-tag{align-items:center;background:var(--background-primary);border:1px solid var(--border-color);border-radius:20px;color:var(--text-secondary);display:flex;font-size:.875rem;gap:.5rem;padding:.5rem 1rem}.books-page__modal-tag svg{color:var(--accent-color)}.books-page__modal-stats{align-items:center;color:var(--text-secondary);display:flex;font-size:.875rem;gap:1rem;margin-bottom:2rem}.books-page__modal-stats span{align-items:center;display:flex;gap:.5rem}.books-page__modal-stats svg{color:var(--accent-color)}.books-page__modal-chat-button{align-items:center;background:var(--accent-color);border:none;border-radius:12px;color:#fff;cursor:pointer;display:flex;font-size:1rem;font-weight:600;gap:.75rem;justify-content:center;padding:1rem;transition:all .2s ease;width:100%}.books-page__modal-chat-button:hover{background:var(--accent-color-hover);box-shadow:0 4px 12px rgba(var(--accent-color-rgb),.3);transform:translateY(-2px)}.books-page__hero{background:var(--card-background);border-radius:24px;margin-bottom:3rem;min-height:400px;overflow:hidden;position:relative}.books-page__hero-background{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:0}.books-page__hero-background-book,.books-page__hero-background-character{animation:float 6s ease-in-out infinite;background-position:50%;background-size:cover;filter:blur(2px);height:450px;opacity:.15;position:absolute;transform-origin:center;width:300px}.books-page__hero-background-book:first-child{left:5%;top:-10%}.books-page__hero-background-book:nth-child(2){left:25%;top:20%}.books-page__hero-background-book:nth-child(3){left:45%;top:-5%}.books-page__hero-background-book:nth-child(4){left:65%;top:15%}.books-page__hero-background-book:nth-child(5){left:85%;top:-15%}.books-page__hero-background-character{border-radius:50%;height:250px;width:250px}.books-page__hero-background-character:nth-child(6){bottom:-10%;left:10%}.books-page__hero-background-character:nth-child(7){bottom:20%;left:40%}.books-page__hero-background-character:nth-child(8){bottom:-5%;left:70%}@keyframes float{0%,to{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-20px) rotate(2deg)}}.books-page__hero-overlay{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,var(--card-background) 0,rgba(var(--accent-color-rgb),.1) 100%);bottom:0;left:0;position:absolute;right:0;top:0}.books-page__hero-content{margin:0 auto;max-width:1200px;padding:4rem 2rem;position:relative;z-index:1}.books-page__hero-content h1{color:var(--text-primary);font-size:clamp(2rem,5vw,3rem);font-weight:700;margin-bottom:1rem}.books-page__hero-content p{color:var(--text-secondary);font-size:clamp(1.1rem,2vw,1.25rem);margin-bottom:3rem}.books-page__hero-stats{grid-gap:2rem;display:grid;gap:2rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.books-page__hero-stat{align-items:center;background:var(--background-primary);border:1px solid var(--border-color);border-radius:16px;display:flex;gap:1rem;padding:1.5rem;transition:all .3s ease}.books-page__hero-stat:hover{border-color:var(--accent-color);box-shadow:0 4px 20px rgba(0,0,0,.1);transform:translateY(-4px)}.books-page__hero-stat svg{color:var(--accent-color);flex-shrink:0}.books-page__hero-stat-content{display:flex;flex-direction:column;gap:.25rem}.books-page__hero-stat-value{color:var(--text-primary);font-size:1.5rem;font-weight:700}.books-page__hero-stat-label{color:var(--text-secondary);font-size:.9rem}.books-page__library{border-radius:24px;margin-bottom:3rem}.books-page__library .books-page__section-header{margin-bottom:2rem}.books-page__library .books-page__section-header h2{margin-bottom:.5rem}.books-page__library .books-page__section-header p{color:var(--text-secondary);font-size:1.1rem}@media (max-width:768px){.books-page__section-header{align-items:flex-start;display:flex;flex-direction:column;margin-bottom:1.5rem}}@media (max-width:480px){.books-page{padding:0;width:100%}.books-page__hero{border-radius:0}.books-page__library{background:none;border-radius:0;padding:25px}.books-page__hero{margin-bottom:50px}.books-page__section{padding-bottom:0}.books-page__characters{background:none;border-radius:0;padding:0 25px 25px}.books-page__library{margin-bottom:0}.books-page__hero-content{margin-bottom:25px}.continue-reading-section{padding:25px 25px 0}}.Toastify__toast{border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.15);font-family:inherit;padding:16px}html[data-theme=light] .Toastify__toast{background:#fff;color:#1a1a1a}html[data-theme=light] .Toastify__toast--success{background:#edf7ed;border:1px solid #4caf50}html[data-theme=light] .Toastify__toast--error{background:#fdeded;border:1px solid #ef5350}html[data-theme=light] .Toastify__toast--warning{background:#fff4e5;border:1px solid #ff9800}html[data-theme=light] .Toastify__toast--info{background:#e8f4fd;border:1px solid #2196f3}html[data-theme=dark] .Toastify__toast{background:#2d2d2d;color:#fff}html[data-theme=dark] .Toastify__toast--success{background:#1e3620;border:1px solid #4caf50}html[data-theme=dark] .Toastify__toast--error{background:#321f1f;border:1px solid #ef5350}html[data-theme=dark] .Toastify__toast--warning{background:#332917;border:1px solid #ff9800}html[data-theme=dark] .Toastify__toast--info{background:#1a2733;border:1px solid #2196f3}.Toastify__progress-bar{height:3px}.Toastify__close-button{opacity:.7;transition:opacity .2s}.Toastify__close-button:hover{opacity:1}.Toastify__toast-body{font-size:14px;line-height:1.5;padding:4px 0}.token-transactions-dashboard{margin-top:75px;min-height:100vh;padding:40px}.token-transactions-dashboard.dark,.token-transactions-dashboard.light{background:var(--background-primary)}.dashboard-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:32px}.dashboard-header h1{color:var(--text-primary);font-size:28px;font-weight:600;margin:0}.dashboard-controls{align-items:center;display:flex;flex-wrap:wrap;gap:16px}.filter-group{align-items:center;background:var(--background-secondary);border:1px solid var(--border-color);border-radius:8px;display:flex;gap:8px;padding:8px 12px}.filter-group select{background:none;border:none;cursor:pointer;font-size:14px;padding-right:24px}.filter-group select,.filter-group select.dark{color:var(--text-primary)}.filter-group svg{color:var(--text-secondary)}.refresh-button{align-items:center;border:1px solid var(--border-color);border-radius:8px;cursor:pointer;display:flex;font-size:14px;font-weight:500;gap:8px;padding:8px 16px;transition:all .2s ease}.refresh-button.dark,.refresh-button.light{background:var(--background-secondary);color:var(--text-primary)}.refresh-button:hover{background:var(--hover-background);transform:translateY(-1px)}.refresh-button svg{transition:transform .2s ease}.refresh-button:hover svg{transform:rotate(180deg)}.transactions-table-container{background:var(--card-background);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-sm);overflow:hidden}.transactions-table{border-collapse:collapse;width:100%}.transactions-table th{background:var(--background-secondary);border-bottom:1px solid var(--border-color);color:var(--text-secondary);font-size:14px;font-weight:500;padding:16px;text-align:left}.transactions-table th.sortable{align-items:center;cursor:pointer;display:flex;gap:4px;-webkit-user-select:none;user-select:none}.transactions-table td,.transactions-table th.sortable:hover{color:var(--text-primary)}.transactions-table td{border-bottom:1px solid var(--border-color);font-size:14px;padding:16px}.transactions-table tr:last-child td{border-bottom:none}.transactions-table tr:hover{background:var(--hover-background)}.amount{font-family:monospace;font-weight:500}.amount.credit{color:#059669}.amount.debit{color:#dc2626}.empty-cell,.loading-cell{color:var(--text-secondary);padding:48px!important;text-align:center}.loading-cell{align-items:center;display:flex;gap:12px;justify-content:center}@media (max-width:768px){.token-transactions-dashboard{padding:20px}.dashboard-header{align-items:flex-start;flex-direction:column;gap:16px}.dashboard-controls{flex-direction:column;width:100%}.filter-group,.filter-group select{width:100%}.refresh-button{justify-content:center;width:100%}.transactions-table td,.transactions-table th{font-size:13px;padding:12px}}.clickable-row{cursor:pointer;transition:background-color .2s ease}.clickable-row:hover{background:var(--hover-background)}.modal-overlay{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.transaction-detail-modal{background:var(--card-background);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-lg);max-height:90vh;max-width:600px;overflow-y:auto;width:90%}.modal-header{align-items:center;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;padding:20px 24px}.modal-header h2{color:var(--text-primary);font-size:20px;font-weight:600;margin:0}.close-button{align-items:center;background:none;border:none;border-radius:8px;color:var(--text-secondary);cursor:pointer;display:flex;justify-content:center;padding:8px;transition:all .2s ease}.close-button:hover{background:var(--hover-background);color:var(--text-primary)}.modal-content{padding:24px}.detail-group{margin-bottom:20px}.detail-group label{font-size:14px;margin-bottom:8px}.transaction-type{border-radius:20px;display:inline-block;font-size:14px;font-weight:500;padding:4px 12px}.transaction-type.credit{background:rgba(5,150,105,.1);color:#059669}.transaction-type.debit{background:rgba(220,38,38,.1);color:#dc2626}.metadata-pre{background:var(--background-secondary);border:1px solid var(--border-color);border-radius:8px;font-family:SF Mono,Monaco,Menlo,Courier New,monospace;font-size:13px;line-height:1.5;margin:0;max-height:200px;overflow-y:auto;padding:12px;white-space:pre-wrap;word-break:break-all}.transaction-detail-modal.dark{background:var(--background-primary)}.transaction-detail-modal.dark .close-button{color:var(--text-secondary)}.transaction-detail-modal.dark .close-button:hover{background:var(--hover-background);color:var(--text-primary)}@media (max-width:768px){.transaction-detail-modal{margin:16px;max-height:95vh;width:95%}.modal-content,.modal-header{padding:16px}.detail-group{margin-bottom:16px}}.detail-sections{display:flex;flex-direction:column;gap:32px}.detail-section{background:var(--background-secondary);border-radius:8px;padding:20px}.detail-section h3{color:var(--text-primary);font-size:16px;font-weight:600;margin:0 0 16px}.action-badge,.service-badge{border-radius:20px;display:inline-block;font-size:14px;font-weight:500;padding:4px 12px;text-transform:capitalize}.service-badge{background:var(--accent-color);color:#fff}.action-badge{background:rgba(var(--accent-color-rgb),.1);color:var(--accent-color)}.status-badge{border-radius:20px;display:inline-block;font-size:14px;font-weight:500;padding:4px 12px}.status-badge.complete{background:rgba(5,150,105,.1);color:#059669}.status-badge.partial{background:rgba(245,158,11,.1);color:#f59e0b}.status-badge.failed{background:rgba(220,38,38,.1);color:#dc2626}.status-badge.pending{background:rgba(59,130,246,.1);color:#3b82f6}.transaction-detail-modal{max-width:800px}.detail-group{border-bottom:1px solid var(--border-color);margin-bottom:16px;padding-bottom:16px}.detail-group:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.detail-group label{color:var(--text-secondary);display:block;font-size:13px;font-weight:500;letter-spacing:.5px;margin-bottom:6px;text-transform:uppercase}.detail-group div{color:var(--text-primary);font-size:15px;line-height:1.5}.transaction-detail-modal.dark .detail-section{background:var(--background-primary)}.transaction-detail-modal.dark .metadata-pre{background:var(--background-primary);border-color:var(--border-color)}.transaction-detail-modal.dark .action-badge{background:rgba(var(--accent-color-rgb),.2)}@media (max-width:768px){.detail-section{padding:16px}.detail-group{margin-bottom:12px;padding-bottom:12px}.detail-group label{font-size:12px}.detail-group div{font-size:14px}}.token-quote-breakdown{background:var(--background-secondary);border-radius:8px;margin-top:8px;padding:16px}.token-quote-breakdown>div{font-family:SF Mono,Monaco,Menlo,Courier New,monospace;font-size:13px;margin-bottom:8px}.token-quote-breakdown .total-tokens{border-bottom:1px solid var(--border-color);font-weight:600;margin-bottom:12px;padding-bottom:8px}.token-quote-breakdown .cost-breakdown{background:var(--background-primary);border-radius:6px;margin-top:8px;padding:12px}.token-quote-breakdown .cost-breakdown>div{margin-bottom:6px}.token-quote-breakdown .total-cost{border-top:1px solid var(--border-color);color:var(--accent-color);font-weight:600;margin-top:8px;padding-top:8px}.transaction-detail-modal.dark .token-quote-breakdown{background:var(--background-primary)}.transaction-detail-modal.dark .token-quote-breakdown .cost-breakdown{background:var(--background-secondary)}@media (max-width:768px){.token-quote-breakdown{padding:12px}.token-quote-breakdown>div{font-size:12px}.token-quote-breakdown .cost-breakdown{padding:10px}}.metrics-summary{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));margin-bottom:32px}.metrics-group{background:var(--card-background);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-sm);padding:24px}.metrics-group h3{color:var(--text-primary);font-size:16px;font-weight:600;margin:0 0 16px}.metrics-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.metric-card{background:var(--background-secondary);border:1px solid var(--border-color);border-radius:8px;padding:16px}.metric-card label{color:var(--text-secondary);display:block;font-size:13px;font-weight:500;margin-bottom:8px}.metric-card .metric-value{color:var(--text-primary);font-family:SF Mono,Monaco,Menlo,Courier New,monospace;font-size:15px;font-weight:600}.metric-card.total{background:var(--accent-color);border-color:var(--accent-color)}.metric-card.total .metric-value,.metric-card.total label{color:#fff}.token-transactions-dashboard.dark .metric-card{background:var(--background-primary)}.token-transactions-dashboard.dark .metric-card.total{background:var(--accent-color)}@media (max-width:768px){.metrics-summary{gap:16px;grid-template-columns:1fr}.metrics-group{padding:16px}.metrics-grid{gap:12px}.metric-card{padding:12px}.metric-card label{font-size:12px}.metric-card .metric-value{font-size:14px}}.search-group{align-items:center;background:var(--background-secondary);border:1px solid var(--border-color);border-radius:8px;display:flex;gap:8px;min-width:250px;padding:8px 12px}.search-group svg{color:var(--text-secondary);min-width:16px}.search-group input{background:none;border:none;color:var(--text-primary);font-size:14px;outline:none;padding:0;width:100%}.search-group input::placeholder{color:var(--text-secondary)}.search-group input.dark{color:var(--text-primary)}.search-group .clear-search{align-items:center;background:none;border:none;border-radius:4px;color:var(--text-secondary);cursor:pointer;display:flex;justify-content:center;padding:4px;transition:all .2s ease}.search-group .clear-search:hover{background:var(--hover-background);color:var(--text-primary)}@media (max-width:768px){.dashboard-controls{align-items:stretch;flex-direction:column}.search-group{min-width:0;min-width:auto;width:100%}}.loading-more-cell{align-items:center;background:transparent!important;border-bottom:none!important;color:var(--text-secondary);display:flex;font-size:14px;gap:8px;justify-content:center;padding:16px!important;text-align:center}.loading-more-cell .loading-spinner{animation:spin 1s linear infinite;border:2px solid var(--border-color);border-radius:50%;border-top-color:var(--accent-color);height:16px;width:16px}.loading-spinner{border:2px solid var(--border-color);border-top-color:var(--accent-color);height:20px;margin:0 auto;width:20px}.loading-more-cell:hover,.transactions-table tr:hover .loading-more-cell{background:transparent!important}.book-request-modal-overlay{align-items:center;background:rgba(0,0,0,.7);display:flex;height:100vh;justify-content:center;left:0;position:fixed;top:0;width:100vw;z-index:2000}.book-request-modal-content{background:#fff;border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.25);color:#222;display:flex;flex-direction:column;max-height:90vh;max-width:95vw;min-width:340px;overflow-y:auto;padding:2rem 2.5rem 1.5rem;position:relative}.book-request-modal-content.dark{background:#23232b;color:#e2e8f0}.book-request-modal-header{font-size:1.5rem;font-weight:600;margin-bottom:1.5rem;text-align:center}.book-request-modal-subtitle{color:#666;font-size:1rem;line-height:1.4;margin-bottom:1.5rem;text-align:center}.book-request-modal-content.dark .book-request-modal-subtitle{color:#a0aec0}.book-request-form-group{display:flex;flex-direction:column;margin-bottom:1.2rem}.book-request-form-group label{font-weight:500;margin-bottom:.4rem}.book-request-form-group input{background:#f8f9fa;border:1px solid #ccc;border-radius:5px;color:#222;font-size:1rem;padding:.6rem .8rem}.book-request-modal-content.dark .book-request-form-group input{background:#18181c;border:1px solid #444;color:#e2e8f0}.book-request-error-message{background:#ffeaea;color:#c0392b}.book-request-error-message,.book-request-success-message{border-radius:4px;margin-bottom:1rem;padding:.5rem 1rem;text-align:center}.book-request-success-message{background:#eaffea;color:#27ae60}.book-request-modal-footer{display:flex;gap:1rem;justify-content:flex-end;margin-top:1.5rem}.book-request-cancel-button{background:none;border:1px solid #aaa;border-radius:4px;color:#444;cursor:pointer;font-size:1rem;padding:.5rem 1.2rem;transition:background .2s,color .2s}.book-request-cancel-button:hover{background:#f0f0f0}.book-request-modal-content.dark .book-request-cancel-button{background:none;border:1px solid #666;color:#e2e8f0}.book-request-modal-content.dark .book-request-cancel-button:hover{background:#23232b}.book-request-submit-button{background:var(--accent-color);border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:1rem;font-weight:500;padding:.5rem 1.2rem;transition:background .2s}.book-request-submit-button:hover{background:var(--accent-color-hover)}.book-request-modal-content.dark .book-request-submit-button{background:var(--accent-color);color:#fff}.book-request-modal-content.dark .book-request-submit-button:hover{background:var(--accent-color-hover)}.hidden{display:none!important}.gallery-container{box-sizing:border-box;margin:0 auto;max-width:1280px;padding:40px 24px 80px;width:100%}.gallery-header{margin-bottom:32px}.gallery-search{margin-top:28px}.gallery-hero-meta{color:var(--text-secondary);font-size:14px;margin:12px 0 0}@media (max-width:640px){.gallery-container{padding:28px 16px 64px}}.gallery-container .gallery-grid{grid-gap:12px;display:grid;gap:12px;grid-auto-flow:dense;grid-template-columns:repeat(3,1fr);margin:0 0 40px}.gallery-container .gallery-grid .gallery-item{background:var(--surface-strong);border:none;border-radius:var(--radius-md);box-shadow:none;cursor:pointer;min-width:0;overflow:hidden;position:relative;transition:transform .2s ease}.gallery-container .gallery-grid .gallery-item:hover{transform:scale(1.02);z-index:10}.gallery-container .gallery-grid .gallery-item-large{grid-column:span 2;grid-row:span 2}.gallery-container .gallery-grid .gallery-item-wide{grid-column:span 2}.gallery-container .gallery-grid .gallery-item-tall{grid-row:span 2}.gallery-container .gallery-grid .gallery-image-container{aspect-ratio:1;background:var(--bg-card);line-height:0;overflow:hidden;position:relative;width:100%}.gallery-container .gallery-grid .gallery-item-tall .gallery-image-container{aspect-ratio:1/2}.gallery-container .gallery-grid .gallery-item-wide .gallery-image-container{aspect-ratio:2/1}.gallery-container .gallery-grid .gallery-item-large .gallery-image-container{aspect-ratio:1}.gallery-container .gallery-grid .gallery-image-container .gallery-image{display:block;height:100%;inset:0;max-height:none;max-width:none;object-fit:cover;position:absolute;transition:transform .3s ease;width:100%}.gallery-container .gallery-grid .gallery-item:hover .gallery-image{transform:scale(1.05)}.gallery-overlay{background:linear-gradient(0deg,rgba(0,0,0,.85) 0,rgba(0,0,0,.5) 50%,rgba(0,0,0,.2) 80%,transparent);bottom:0;display:flex;flex-direction:column;justify-content:flex-end;left:0;opacity:0;padding:20px;pointer-events:none;position:absolute;right:0;top:0;transition:opacity .3s cubic-bezier(.4,0,.2,1)}.gallery-item:hover .gallery-overlay{opacity:1;pointer-events:all}.gallery-overlay-content{display:flex;flex-direction:column;gap:16px;width:100%}.gallery-info-hover{animation:slideUpFade .4s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;gap:12px}@keyframes slideUpFade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.gallery-book-info-hover{margin-bottom:4px}.gallery-book-title-hover{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#fff;display:-webkit-box;font-size:1rem;font-weight:700;line-height:1.3;margin:0 0 4px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 2px 8px rgba(0,0,0,.5)}.gallery-book-author-hover{color:hsla(0,0%,100%,.85);font-weight:500}.gallery-book-author-hover,.gallery-description-hover{font-size:.85rem;margin:0;text-shadow:0 1px 4px rgba(0,0,0,.5)}.gallery-description-hover{-webkit-line-clamp:3;-webkit-box-orient:vertical;color:hsla(0,0%,100%,.9);display:-webkit-box;font-weight:400;line-height:1.5;overflow:hidden;text-overflow:ellipsis}.gallery-actions{animation:slideUpFade .4s cubic-bezier(.4,0,.2,1) .1s both;gap:12px}.gallery-action-btn,.gallery-actions{align-items:center;display:flex;justify-content:center}.gallery-action-btn{backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);background:hsla(0,0%,100%,.15);border:1px solid hsla(0,0%,100%,.25);border-radius:24px;box-shadow:0 4px 16px rgba(0,0,0,.25),inset 0 1px 0 hsla(0,0%,100%,.2);color:#fff;cursor:pointer;gap:6px;padding:8px 16px;text-shadow:0 1px 2px rgba(0,0,0,.3);transition:all .3s cubic-bezier(.4,0,.2,1)}.gallery-action-btn:hover{background:hsla(0,0%,100%,.25);border-color:hsla(0,0%,100%,.4);box-shadow:0 6px 20px rgba(0,0,0,.35),inset 0 1px 0 hsla(0,0%,100%,.3);transform:translateY(-3px) scale(1.05)}.gallery-action-btn:active{transform:translateY(-1px) scale(1.02)}.gallery-action-btn.liked{background:rgba(237,73,86,.25);border-color:rgba(237,73,86,.5);box-shadow:0 4px 16px rgba(237,73,86,.4),inset 0 1px 0 hsla(0,0%,100%,.2);color:#fff}.gallery-action-btn.liked:hover{background:rgba(237,73,86,.35);border-color:rgba(237,73,86,.7);box-shadow:0 6px 24px rgba(237,73,86,.5),inset 0 1px 0 hsla(0,0%,100%,.3);transform:translateY(-3px) scale(1.08)}.gallery-action-btn.liked:active{transform:translateY(-1px) scale(1.04)}.gallery-action-btn svg{height:18px;width:18px}.gallery-action-btn span{font-size:13px;font-weight:600;min-width:20px;text-align:center}.gallery-info{display:none}.gallery-book-info{margin-bottom:8px}.gallery-book-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--text-primary);display:-webkit-box;font-size:14px;font-weight:600;line-height:1.3;margin:0 0 2px;overflow:hidden}.gallery-book-author{color:var(--text-secondary);font-size:12px;font-weight:400;margin:0}.gallery-paragraph{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--text-secondary);display:-webkit-box;font-size:13px;line-height:1.4;margin:8px 0 10px;overflow:hidden}.gallery-meta{justify-content:space-between;margin-top:8px}.gallery-meta,.gallery-user{align-items:center;display:flex}.gallery-user{gap:8px}.gallery-user-avatar{border-radius:50%;height:16px;object-fit:cover;width:16px}.gallery-user span{color:var(--text-secondary);font-size:11px;font-weight:500}.gallery-date{font-size:11px;gap:4px}.gallery-date,.gallery-loading,.gallery-loading-more{align-items:center;color:var(--text-secondary);display:flex}.gallery-loading,.gallery-loading-more{flex-direction:column;justify-content:center;padding:40px}.gallery-loading{min-height:calc(100vh - 200px)}.gallery-loading-more{align-items:center;display:flex;flex-direction:column;grid-column:1/-1;justify-content:center;padding:20px}.loading-spinner{animation:spin 1s linear infinite;border-top:3px solid var(--border-color);border:3px solid var(--border-color);border-radius:50%;border-top-color:var(--primary-color);height:40px;margin-bottom:15px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.gallery-end{color:var(--text-secondary);font-style:italic;grid-column:1/-1;padding:40px;text-align:center}.gallery-empty-search{align-items:center;color:var(--text-secondary);display:flex;flex-direction:column;gap:10px;padding:30px 20px 24px}.image-viewer-overlay{align-items:center;animation:fadeIn .2s ease-out;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(0,0,0,.97);bottom:0;display:flex;justify-content:center;left:0;padding:20px;position:fixed;right:0;top:0;z-index:1000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.image-viewer-overlay.dark{background:rgba(0,0,0,.97)}.image-viewer-overlay.light{background:hsla(0,0%,100%,.97)}.image-viewer-desktop-container{align-items:stretch;animation:slideUp .3s ease-out;display:flex;gap:20px;height:calc(100vh - 40px);max-width:1400px;padding:0 20px;width:100%}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.image-viewer-desktop-container .image-viewer-image-container{align-items:center;background:#000;border-radius:12px;display:flex;flex:1 1;justify-content:center;min-width:0;overflow:hidden}.image-viewer-desktop-container .image-viewer-image{border-radius:12px;max-height:100%;max-width:100%;object-fit:contain}.image-viewer-desktop-container .image-viewer-desktop-info{display:flex;flex-shrink:0;height:100%;min-width:400px;width:400px}.image-viewer-mobile-container{display:none}@media (max-width:768px){.image-viewer-desktop-container{display:none}.image-viewer-mobile-container{animation:slideUp .3s ease-out;display:flex;flex-direction:column;height:100vh;width:100%}.image-viewer-mobile-container .image-viewer-image-container{align-items:center;background:#000;display:flex;flex:1 1;justify-content:center;min-height:60vh;position:relative}.image-viewer-mobile-container .image-viewer-image{height:100%;object-fit:contain;width:100%}.image-viewer-mobile-book-overlay{background:linear-gradient(0deg,rgba(0,0,0,.9),rgba(0,0,0,.7),rgba(0,0,0,.3),transparent);bottom:0;display:flex;flex-direction:column;gap:12px;left:0;padding:80px 20px 20px;position:absolute;right:0;z-index:8}.image-viewer-mobile-book-info{align-items:center;cursor:pointer;display:flex;gap:12px;transition:opacity .2s ease}.image-viewer-mobile-book-info:active{opacity:.8}.image-viewer-mobile-book-info svg{color:#fff;flex-shrink:0;opacity:.9}.image-viewer-mobile-book-text{display:flex;flex:1 1;flex-direction:column;gap:4px;min-width:0}.image-viewer-mobile-book-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:#fff;display:-webkit-box;font-size:16px;font-weight:600;line-height:1.3;overflow:hidden;text-overflow:ellipsis;text-shadow:0 2px 4px rgba(0,0,0,.5)}.image-viewer-mobile-book-author{color:hsla(0,0%,100%,.8);font-size:13px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.5);white-space:nowrap}.image-viewer-mobile-paragraph{margin-top:4px}.image-viewer-mobile-paragraph p{color:hsla(0,0%,100%,.9);font-size:14px;line-height:1.5;margin:0;text-shadow:0 1px 3px rgba(0,0,0,.6)}.image-viewer-mobile-paragraph .image-viewer-expand-btn{background:none;border:none;color:hsla(0,0%,100%,.95);display:block;font-size:.85rem;font-weight:700;margin-left:0;margin-top:6px;padding:4px 0 0;text-decoration:underline;text-decoration-color:hsla(0,0%,100%,.5);text-shadow:0 1px 3px rgba(0,0,0,.6)}.image-viewer-mobile-paragraph .image-viewer-expand-btn:hover{color:#fff;text-decoration-color:hsla(0,0%,100%,.8)}.image-viewer-mobile-container .image-viewer-mobile-actions{bottom:150px;display:flex;flex-direction:column;gap:24px;position:absolute;right:20px;z-index:10}.image-viewer-mobile-action{align-items:center;background:none;border:none;color:#fff;cursor:pointer;display:flex;flex-direction:column;gap:4px;height:auto;justify-content:center;padding:0;transition:all .2s ease;width:auto}.image-viewer-mobile-action:active{transform:scale(.95)}.image-viewer-mobile-action span{font-size:13px;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.5)}.image-viewer-mobile-container .image-viewer-comments-sheet,.image-viewer-mobile-container .image-viewer-info-sheet{background:#1a1a1a;border-radius:20px 20px 0 0;border-top:1px solid hsla(0,0%,100%,.1);bottom:0;box-shadow:0 -4px 24px rgba(0,0,0,.4);display:flex;flex-direction:column;left:0;max-height:70vh;overflow:hidden;position:fixed;right:0;transform:translateY(100%);transition:transform .35s cubic-bezier(.32,.72,0,1);z-index:1002}.image-viewer-overlay.light .image-viewer-comments-sheet,.image-viewer-overlay.light .image-viewer-info-sheet{background:#fff;border-top:1px solid rgba(0,0,0,.1)}.image-viewer-sheet-handle{background:hsla(0,0%,100%,.3);border-radius:2px;flex-shrink:0;height:4px;margin:12px auto 8px;width:40px}.image-viewer-overlay.light .image-viewer-sheet-handle{background:rgba(0,0,0,.3)}.image-viewer-sheet-backdrop{animation:fadeIn .3s ease-out;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:rgba(0,0,0,.7);bottom:0;left:0;position:fixed;right:0;top:0;z-index:1001}.image-viewer-comments-sheet,.image-viewer-info-sheet{display:none}.image-viewer-comments-sheet.show,.image-viewer-info-sheet.show{animation:slideUpSheet .35s cubic-bezier(.32,.72,0,1);transform:translateY(0)}}@media (max-width:768px){@keyframes slideUpSheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}}@media (max-width:768px){.image-viewer-mobile-container .image-viewer-comments-sheet .image-viewer-comments-list{-webkit-overflow-scrolling:touch;flex:1 1;margin:0;overflow-x:hidden;overflow-y:auto;padding:20px}.image-viewer-mobile-container .image-viewer-comment-form{background:rgba(0,0,0,.2);border-bottom:1px solid hsla(0,0%,100%,.1);flex-shrink:0;margin:0;padding:16px 20px}.image-viewer-overlay.light .image-viewer-mobile-container .image-viewer-comment-form{background:rgba(0,0,0,.02);border-bottom:1px solid rgba(0,0,0,.1)}.image-viewer-mobile-container .image-viewer-comment-form textarea{background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.15);border-radius:12px;color:#fff;font-size:15px;min-height:80px;padding:12px;resize:none;width:100%}.image-viewer-mobile-container .image-viewer-comment-form textarea::placeholder{color:hsla(0,0%,100%,.5)}.image-viewer-overlay.light .image-viewer-mobile-container .image-viewer-comment-form textarea{background:rgba(0,0,0,.05);border:1px solid rgba(0,0,0,.15);color:#1a1a1a}.image-viewer-overlay.light .image-viewer-mobile-container .image-viewer-comment-form textarea::placeholder{color:rgba(0,0,0,.5)}.image-viewer-mobile-container .image-viewer-comment-form button{margin-top:12px;width:100%}.image-viewer-mobile-container .image-viewer-signin-prompt{margin:16px 20px 0;padding:16px 20px}.image-viewer-comments-header,.image-viewer-info-header{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(0,0,0,.3);border-bottom:1px solid hsla(0,0%,100%,.1);display:flex;justify-content:space-between;padding:16px 20px;position:sticky;top:0;z-index:10}.image-viewer-overlay.light .image-viewer-comments-header,.image-viewer-overlay.light .image-viewer-info-header{background:hsla(0,0%,100%,.9);border-bottom:1px solid rgba(0,0,0,.1)}.image-viewer-comments-header h4,.image-viewer-info-header h4{color:#fff;font-size:1.1rem;font-weight:600;margin:0}.image-viewer-overlay.light .image-viewer-comments-header h4,.image-viewer-overlay.light .image-viewer-info-header h4{color:#1a1a1a}.image-viewer-comments-header button,.image-viewer-info-header button{background:none;border:none;border-radius:50%;color:hsla(0,0%,100%,.7);cursor:pointer;padding:4px;transition:background .2s ease}.image-viewer-overlay.light .image-viewer-comments-header button,.image-viewer-overlay.light .image-viewer-info-header button{color:rgba(0,0,0,.7)}.image-viewer-comments-header button:hover,.image-viewer-info-header button:hover{background:hsla(0,0%,100%,.1)}.image-viewer-overlay.light .image-viewer-comments-header button:hover,.image-viewer-overlay.light .image-viewer-info-header button:hover{background:rgba(0,0,0,.05)}.image-viewer-info-content{max-height:calc(70vh - 80px);overflow-y:auto;padding:20px}}.image-viewer-info{background:linear-gradient(135deg,var(--bg-card) 0,hsla(0,0%,100%,.02) 100%);border:1px solid var(--border-color);border-radius:20px;box-shadow:0 8px 32px rgba(0,0,0,.12);display:flex;flex-direction:column;height:100%;overflow:hidden;padding:0;position:relative;width:100%}.image-viewer-info:before{background:linear-gradient(90deg,transparent 0,rgba(var(--accent-rgb),.3) 50%,transparent 100%);content:"";height:1px;left:0;position:absolute;right:0;top:0;z-index:1}.image-viewer-info-content{flex:1 1;min-height:0;overflow-x:hidden;overflow-y:auto;padding:24px}.image-viewer-desktop-info .image-viewer-info-content{display:flex;flex-direction:column;padding:0}.image-viewer-info-content::-webkit-scrollbar{width:8px}.image-viewer-info-content::-webkit-scrollbar-track{background:rgba(0,0,0,.1);border-radius:10px}.image-viewer-info-content::-webkit-scrollbar-thumb{background:rgba(var(--accent-rgb),.5);border-radius:10px}.image-viewer-info-content::-webkit-scrollbar-thumb:hover{background:rgba(var(--accent-rgb),.7)}.image-viewer-section{margin-bottom:24px}.image-viewer-section:last-child{border-bottom:none;margin-bottom:0;padding-bottom:24px}.image-viewer-section-header{color:var(--text-secondary);font-size:.85rem;font-weight:600;letter-spacing:.5px;margin-bottom:12px;padding-left:12px;position:relative;text-transform:uppercase}.image-viewer-section-header:before{background:var(--accent);border-radius:2px;content:"";height:16px;left:0;position:absolute;top:50%;transform:translateY(-50%);width:3px}.image-viewer-close{align-items:center;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:50%;box-shadow:0 2px 8px rgba(0,0,0,.1);color:var(--text-primary);cursor:pointer;display:flex;height:40px;justify-content:center;position:absolute;right:20px;top:20px;transition:all .2s ease;width:40px;z-index:1001}.image-viewer-close:hover{background:var(--hover-bg);box-shadow:0 4px 12px rgba(0,0,0,.15);transform:scale(1.05)}.image-viewer-overlay.light .image-viewer-close{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:hsla(0,0%,100%,.9);border:1px solid rgba(0,0,0,.1)}.image-viewer-overlay.light .image-viewer-close:hover{background:#fff;border:1px solid rgba(0,0,0,.15)}.image-viewer-nav{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(0,0,0,.6);border:1px solid hsla(0,0%,100%,.2);border-radius:50%;box-shadow:0 2px 8px rgba(0,0,0,.2);color:#fff;cursor:pointer;display:flex;height:48px;justify-content:center;position:absolute;top:50%;transform:translateY(-50%);transition:all .2s ease;width:48px;z-index:1001}.image-viewer-nav:hover{background:rgba(0,0,0,.8);box-shadow:0 4px 12px rgba(0,0,0,.3);transform:translateY(-50%) scale(1.1)}.image-viewer-overlay.light .image-viewer-nav{background:hsla(0,0%,100%,.9);border:1px solid rgba(0,0,0,.1);color:var(--text-primary)}.image-viewer-overlay.light .image-viewer-nav:hover{background:#fff;border:1px solid rgba(0,0,0,.15)}@media (max-width:768px){.image-viewer-nav{height:44px;width:44px}}.image-viewer-nav-left{left:20px}.image-viewer-nav-right{right:20px}@media (max-width:768px){.image-viewer-nav-left{left:16px}.image-viewer-nav-right{right:16px}}.image-viewer-header{margin-bottom:20px}.image-viewer-book-info{margin-bottom:15px}.image-viewer-book-link{align-items:flex-start;background:linear-gradient(135deg,var(--bg-secondary) 0,hsla(0,0%,100%,.05) 100%);border:1px solid var(--border-color);border-radius:12px;color:inherit;cursor:pointer;display:flex;gap:16px;overflow:hidden;padding:20px;position:relative;text-align:left;text-decoration:none;transition:all .3s ease;width:100%}.image-viewer-book-link:before{background:var(--accent);content:"";height:3px;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s ease}.image-viewer-book-link:hover:before{opacity:1}.image-viewer-book-link:hover{background:linear-gradient(135deg,var(--hover-bg) 0,hsla(0,0%,100%,.08) 100%);border-color:rgba(var(--accent-rgb),.3);box-shadow:0 8px 25px rgba(0,0,0,.12);transform:translateY(-2px)}.image-viewer-book-link h3{color:var(--text-primary);font-size:1.1rem;margin:0 0 4px}.image-viewer-book-link p{color:var(--text-secondary);font-size:.9rem;margin:0}.image-viewer-book-placeholder{align-items:center;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:8px;color:var(--text-secondary);display:flex;gap:10px;padding:15px}.image-viewer-character,.image-viewer-style{align-items:center;background:linear-gradient(135deg,rgba(var(--accent-rgb),.1) 0,rgba(var(--accent-rgb),.05) 100%);border:1px solid rgba(var(--accent-rgb),.2);border-radius:20px;color:var(--text-primary);display:inline-flex;font-size:.85rem;font-weight:500;gap:8px;margin-bottom:12px;margin-right:8px;padding:10px 16px;transition:all .3s ease}.image-viewer-character:hover,.image-viewer-style:hover{background:linear-gradient(135deg,rgba(var(--accent-rgb),.15) 0,rgba(var(--accent-rgb),.08) 100%);box-shadow:0 4px 12px rgba(var(--accent-rgb),.15);transform:translateY(-1px)}.image-viewer-paragraph{background:linear-gradient(135deg,var(--bg-secondary) 0,hsla(0,0%,100%,.02) 100%);border:1px solid var(--border-color);border-radius:12px;line-height:1.6;margin-bottom:24px;overflow:hidden;padding:20px;position:relative}.image-viewer-paragraph:before{background:var(--accent);border-radius:2px;content:"";height:100%;left:0;position:absolute;top:0;width:4px}.image-viewer-paragraph p{color:var(--text-primary);font-size:.95rem;margin:0;padding-left:16px}.image-viewer-expand-btn{background:none;border:none;color:rgba(var(--accent-rgb),1);cursor:pointer;font-size:.85rem;font-weight:600;margin-left:16px;padding:8px 16px 0;text-decoration:underline;text-decoration-color:rgba(var(--accent-rgb),.4);transition:all .2s ease}.image-viewer-expand-btn:hover{color:rgba(var(--accent-rgb),.8);text-decoration-color:rgba(var(--accent-rgb),.8);transform:translateX(2px)}.image-viewer-user-info{align-items:center;background:linear-gradient(135deg,var(--bg-secondary) 0,hsla(0,0%,100%,.02) 100%);border:1px solid var(--border-color);border-radius:12px;display:flex;justify-content:space-between;margin-bottom:24px;padding:20px}.image-viewer-user,.image-viewer-user-link{align-items:center;display:flex;gap:12px}.image-viewer-user-link{background:linear-gradient(135deg,hsla(0,0%,100%,.05),hsla(0,0%,100%,.02));border:1px solid var(--border-color);border-radius:30px;color:inherit;cursor:pointer;overflow:hidden;padding:12px 16px;position:relative;text-decoration:none;transition:all .3s ease}.image-viewer-user-link:hover{background:linear-gradient(135deg,var(--hover-bg) 0,hsla(0,0%,100%,.08) 100%);box-shadow:0 6px 20px rgba(0,0,0,.1);transform:translateY(-2px)}.image-viewer-user-avatar{border:2px solid var(--border-color);border-radius:50%;height:28px;object-fit:cover;transition:border-color .3s ease;width:28px}.image-viewer-user-link:hover .image-viewer-user-avatar{border-color:var(--accent)}.image-viewer-user span{color:var(--text-primary);font-size:.95rem;font-weight:600}.image-viewer-actions{border-bottom:1px solid var(--border-color);display:flex;gap:16px;margin-bottom:30px;padding:20px 0}.image-viewer-action-btn{align-items:center;background:none;border:none;color:var(--text-primary);cursor:pointer;display:flex;font-size:.95rem;font-weight:500;gap:10px;justify-content:center;min-width:auto;padding:0;transition:all .3s ease}.image-viewer-action-btn.liked:hover,.image-viewer-action-btn:hover{opacity:.8}.image-viewer-comments{margin-top:0;padding-top:0}.image-viewer-comments-header{border-bottom:1px solid var(--border-color);margin-bottom:24px;padding-bottom:16px;position:relative}.image-viewer-comments-header:after{background:var(--accent);border-radius:1px;bottom:-1px;content:"";height:2px;left:0;position:absolute;width:60px}.image-viewer-comments-header h4{color:var(--text-primary);font-size:1.2rem;font-weight:600;margin:0}.image-viewer-comment-form{margin-bottom:20px}.image-viewer-signin-prompt{margin-bottom:24px;padding:16px 20px;text-align:center}.image-viewer-signin-prompt p{color:hsla(0,0%,100%,.7);font-size:.95rem;margin:0}.image-viewer-overlay.light .image-viewer-signin-prompt p{color:rgba(0,0,0,.7)}.signin-link{color:rgba(var(--accent-rgb),1);cursor:pointer;font-weight:600;text-decoration:underline;text-decoration-color:rgba(var(--accent-rgb),.4);transition:all .2s ease}.signin-link:hover{color:rgba(var(--accent-rgb),.8);text-decoration-color:rgba(var(--accent-rgb),.8)}.image-viewer-comment-form textarea{background:linear-gradient(135deg,var(--bg-secondary) 0,hsla(0,0%,100%,.02) 100%);border:1px solid var(--border-color);border-radius:12px;box-sizing:border-box;color:var(--text-primary);font-family:inherit;font-size:.95rem;margin-bottom:12px;min-height:90px;padding:16px;resize:vertical;transition:all .3s ease;width:100%}.image-viewer-comment-form textarea:focus{background:linear-gradient(135deg,var(--hover-bg) 0,hsla(0,0%,100%,.05) 100%);border-color:var(--accent);box-shadow:0 0 0 3px rgba(var(--accent-rgb),.1);outline:none}.image-viewer-comment-form textarea::placeholder{color:var(--text-secondary);opacity:.7}.image-viewer-comment-form .btn,.image-viewer-comment-form .btn-primary,.image-viewer-comment-form button[type=submit]{background:var(--ink);border:none;border-radius:var(--radius-pill);color:var(--on-ink);cursor:pointer;font-size:.95rem;font-weight:600;height:44px;padding:0 24px;transition:opacity .15s ease;width:100%}.image-viewer-comment-form .btn-primary:hover,.image-viewer-comment-form .btn:hover,.image-viewer-comment-form button[type=submit]:hover{opacity:.86}.image-viewer-comment-form .btn-primary:disabled,.image-viewer-comment-form .btn:disabled,.image-viewer-comment-form button[type=submit]:disabled{cursor:not-allowed;opacity:.5;transform:none}.image-viewer-comment-form .btn-primary:active,.image-viewer-comment-form .btn:active,.image-viewer-comment-form button[type=submit]:active{transform:translateY(0)}.image-viewer-comments-list{margin-top:16px;max-height:400px;overflow-y:auto;padding-right:8px}.image-viewer-comments-list::-webkit-scrollbar{width:6px}.image-viewer-comments-list::-webkit-scrollbar-track{background:rgba(0,0,0,.05);border-radius:10px}.image-viewer-comments-list::-webkit-scrollbar-thumb{background:rgba(var(--accent-rgb),.4);border-radius:10px}.image-viewer-comments-list::-webkit-scrollbar-thumb:hover{background:rgba(var(--accent-rgb),.6)}.image-viewer-comment{border-bottom:1px solid hsla(0,0%,100%,.1);padding:18px 0;position:relative;transition:all .3s ease}.image-viewer-overlay.light .image-viewer-comment{border-bottom:1px solid rgba(0,0,0,.1)}.image-viewer-comment:hover{background:hsla(0,0%,100%,.05);border-radius:12px;margin:0 -12px;padding:18px 12px;transform:translateX(4px)}.image-viewer-overlay.light .image-viewer-comment:hover{background:rgba(0,0,0,.03)}.image-viewer-comment:last-child{border-bottom:none}.image-viewer-comment:before{background:var(--accent);border-radius:2px;content:"";height:0;left:-12px;position:absolute;top:50%;transform:translateY(-50%);transition:height .3s ease;width:4px}.image-viewer-comment:hover:before{height:60%}.image-viewer-comment-user{align-items:center;display:flex;gap:10px;margin-bottom:8px}.image-viewer-comment-avatar{border-radius:50%;height:20px;object-fit:cover;width:20px}.image-viewer-comment-username{color:#fff;font-size:.85rem;font-weight:600}.image-viewer-overlay.light .image-viewer-comment-username{color:#1a1a1a}.image-viewer-comment-date{color:hsla(0,0%,100%,.5);font-size:.75rem}.image-viewer-overlay.light .image-viewer-comment-date{color:rgba(0,0,0,.5)}.image-viewer-comment-content{color:hsla(0,0%,100%,.9);font-size:.9rem;line-height:1.4;margin:0}.image-viewer-overlay.light .image-viewer-comment-content{color:rgba(0,0,0,.9)}.image-viewer-no-comments{background:hsla(0,0%,100%,.05);border:1px dashed hsla(0,0%,100%,.2);border-radius:12px;color:hsla(0,0%,100%,.6);font-size:.9rem;font-style:italic;margin-top:16px;padding:32px 20px;text-align:center}.image-viewer-overlay.light .image-viewer-no-comments{background:rgba(0,0,0,.03);border:1px dashed rgba(0,0,0,.2);color:rgba(0,0,0,.6)}.image-viewer-error,.image-viewer-loading{align-items:center;color:var(--text-primary);display:flex;flex-direction:column;height:100%;justify-content:center;text-align:center}.image-viewer-error{gap:20px}.image-viewer-error svg{color:#ff4d4d}@media (max-width:1024px){.gallery-grid{gap:1px;grid-template-columns:repeat(3,1fr)}.image-viewer-desktop-container{gap:15px;height:calc(100vh - 30px);padding:0 15px}.image-viewer-desktop-container .image-viewer-desktop-info{min-width:350px;width:350px}.image-viewer-info-content{padding:20px}}@media (max-width:768px){.gallery-hero{border-radius:0 0 16px 16px;border-top:none}.gallery-hero-content{padding:24px 16px 22px}.gallery-hero-description{font-size:.95rem}.gallery-search-container{padding:10px 12px}.gallery-search-input{font-size:.95rem}.gallery-hero-meta{font-size:.85rem}.gallery-container{max-width:100%;padding:calc(60px + env(safe-area-inset-top, 0px)) 0 0}.gallery-grid{gap:1px;grid-auto-flow:dense;grid-template-columns:repeat(3,1fr);margin-bottom:0;margin-top:0;padding:0}.gallery-item:hover{transform:none}.gallery-container .gallery-grid .gallery-item-large{grid-column:span 2;grid-row:span 2}.gallery-container .gallery-grid .gallery-item-wide{grid-column:span 2}.gallery-container .gallery-grid .gallery-item-tall{grid-row:span 2}.gallery-overlay{opacity:0;padding:14px;pointer-events:none}.gallery-overlay-content{gap:12px}.gallery-book-title-hover{-webkit-line-clamp:1;font-size:.9rem}.gallery-book-author-hover{font-size:.75rem}.gallery-description-hover{-webkit-line-clamp:2;font-size:.8rem}.gallery-actions{gap:10px}.gallery-action-btn{font-size:.85rem;padding:6px 12px}.gallery-action-btn svg{height:16px;width:16px}.image-viewer-mobile-container,.image-viewer-overlay{padding:0}.image-viewer-mobile-actions{bottom:140px;gap:20px;right:16px}.image-viewer-mobile-action{height:56px;width:56px}.image-viewer-mobile-action span{font-size:12px}.image-viewer-mobile-book-overlay{gap:8px;padding:60px 16px 16px}.image-viewer-mobile-book-title{-webkit-line-clamp:1;font-size:14px}.image-viewer-mobile-book-author{font-size:12px}.image-viewer-mobile-paragraph p{font-size:13px;line-height:1.4}.image-viewer-comments-sheet,.image-viewer-info-sheet{max-height:75vh}.image-viewer-comments-header,.image-viewer-info-header{padding:12px 16px}.image-viewer-info-content{padding:16px}.image-viewer-desktop-container .image-viewer-desktop-info{min-width:320px;width:320px}}@media (max-width:480px){.gallery-container{padding:0}.gallery-grid{gap:1px;grid-template-columns:repeat(3,1fr)}.gallery-container .gallery-grid .gallery-item-large{grid-column:span 2;grid-row:span 2}.gallery-container .gallery-grid .gallery-item-wide{grid-column:span 2}.gallery-container .gallery-grid .gallery-item-tall{grid-row:span 2}}.iv-creator-row{border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;padding:14px 16px}.iv-creator-row,.iv-user-btn{align-items:center;display:flex}.iv-user-btn{background:none;border:none;color:var(--text-primary);cursor:pointer;gap:10px;padding:0}.iv-user-btn:hover .iv-username{text-decoration:underline}.iv-avatar{border-radius:50%;flex-shrink:0;height:34px;object-fit:cover;width:34px}.iv-avatar--sm{height:26px;width:26px}.iv-avatar--xs{flex-shrink:0;height:20px;width:20px}.iv-user-meta{align-items:flex-start;display:flex;flex-direction:column;gap:1px}.iv-username{color:var(--text-primary);font-size:14px;font-weight:600;line-height:1.3}.iv-date{color:var(--text-secondary);font-size:11px;line-height:1.3}.iv-creator-actions{display:flex;flex-shrink:0;gap:14px}.iv-action-btn{align-items:center;background:none;border:none;color:var(--text-secondary);cursor:pointer;display:flex;flex-direction:column;font-size:12px;gap:2px;padding:4px;transition:color .2s ease}.iv-action-btn:hover{color:var(--text-primary)}.iv-action-btn.liked{color:#e53e3e}.iv-action-btn.liked:hover{color:#c53030}.iv-comment-count{cursor:default}.iv-book-card{align-items:center;background:none;border:none;border-bottom:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;display:flex;flex-shrink:0;gap:10px;padding:12px 16px;text-align:left;transition:background .15s ease;width:100%}.iv-book-card:hover{background:var(--hover-background)}.iv-book-card--empty{color:var(--text-secondary);cursor:default;font-size:13px;gap:8px}.iv-book-card--empty:hover{background:none}.iv-book-text{display:flex;flex:1 1;flex-direction:column;gap:2px;min-width:0}.iv-book-title{display:block;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.iv-book-author{color:var(--text-secondary);display:block;font-size:11px}.iv-book-link-icon{color:var(--text-secondary);flex-shrink:0;margin-left:auto}.iv-tags{border-bottom:1px solid var(--border-color);display:flex;flex-shrink:0;flex-wrap:wrap;gap:6px;padding:10px 16px}.iv-tag{background:var(--accent-subtle-background);border-radius:4px;color:var(--accent-color);font-size:11px;font-weight:500;padding:3px 8px}.iv-description{border-bottom:1px solid var(--border-color);flex-shrink:0;padding:12px 16px}.iv-description p{color:var(--text-secondary);font-size:13px;line-height:1.6;margin:0}.iv-expand-btn{background:none;border:none;color:var(--accent-color);cursor:pointer;font-size:12px;font-weight:500;padding:4px 0 0;transition:opacity .2s ease}.iv-expand-btn:hover{opacity:.75}.iv-comments{display:flex;flex:1 1;flex-direction:column;min-height:0}.iv-comments-header{color:var(--text-primary);flex-shrink:0;font-size:13px;font-weight:600;padding:12px 16px 8px}.iv-comment-form{align-items:flex-start;border-bottom:1px solid var(--border-color);display:flex;flex-shrink:0;gap:8px;padding:6px 16px 12px}.iv-comment-form svg{color:var(--text-secondary);flex-shrink:0;margin-top:8px}.iv-comment-input-wrap{display:flex;flex:1 1;flex-direction:column;gap:6px}.iv-comment-input-wrap textarea{background:var(--background-secondary);border:1px solid var(--border-color);border-radius:8px;box-sizing:border-box;color:var(--text-primary);font-family:inherit;font-size:13px;padding:8px 10px;resize:none;transition:border-color .2s ease;width:100%}.iv-comment-input-wrap textarea:focus{border-color:var(--accent-color);outline:none}.iv-comment-input-wrap textarea::placeholder{color:var(--text-secondary);opacity:.7}.iv-comment-post-btn{align-self:flex-end;background:var(--accent-color);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:12px;font-weight:600;padding:5px 14px;transition:opacity .2s ease}.iv-comment-post-btn:hover:not(:disabled){opacity:.85}.iv-comment-post-btn:disabled{cursor:not-allowed;opacity:.45}.iv-signin-prompt{border-bottom:1px solid var(--border-color);color:var(--text-secondary);flex-shrink:0;font-size:13px;padding:10px 16px}.iv-comments-list{flex:1 1;overflow-y:auto;padding:4px 0}.iv-comments-list::-webkit-scrollbar{width:4px}.iv-comments-list::-webkit-scrollbar-track{background:transparent}.iv-comments-list::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}.iv-comment{padding:8px 16px}.iv-comment-header{align-items:center;display:flex;gap:6px;margin-bottom:3px}.iv-comment-header svg{color:var(--text-secondary);flex-shrink:0}.iv-comment-username{color:var(--text-primary);font-size:12px;font-weight:600}.iv-comment-date{color:var(--text-secondary);font-size:11px;margin-left:auto}.iv-comment-content{line-height:1.5;padding-left:26px}.iv-comment-content,.iv-empty-comments{color:var(--text-secondary);font-size:13px;margin:0}.iv-empty-comments{padding:16px}.app-header{align-items:center;-webkit-backdrop-filter:saturate(180%) blur(16px);backdrop-filter:saturate(180%) blur(16px);background:var(--glass);border-bottom:1px solid transparent;display:flex;height:var(--app-header-height);position:sticky;top:0;transition:border-color .2s ease;width:100%;z-index:998}.app-header.scrolled{border-bottom-color:var(--border-color)}.app-header .header-content{align-items:center;box-sizing:border-box;display:flex;gap:32px;margin:0 auto;max-width:1280px;padding:0 24px;width:100%}.header-brand{align-items:center;color:var(--text-primary);display:flex;flex-shrink:0;gap:10px;text-decoration:none}.header-brand img{display:block;height:28px;width:auto}.header-brand span{font-family:var(--font-display);font-size:19px;font-weight:600;letter-spacing:-.01em}.header-nav{align-items:center;display:flex;gap:4px}.header-nav-link{border-radius:var(--radius-pill);color:var(--text-secondary);font-size:14px;font-weight:500;padding:8px 12px;text-decoration:none;transition:color .15s ease,background-color .15s ease}.header-nav-link.active,.header-nav-link:hover{color:var(--text-primary)}.header-nav-link.active{background:var(--surface)}.header-actions{align-items:center;display:flex;gap:6px;margin-left:auto}.header-search{margin-right:6px;position:relative;width:240px}.header-search form{align-items:center;display:flex;position:relative}.header-search-icon{color:var(--text-muted);left:12px;pointer-events:none;position:absolute}.header-search input{background:var(--surface);border:1px solid transparent;border-radius:var(--radius-pill);box-sizing:border-box;color:var(--text-primary);font:inherit;font-size:14px;height:36px;padding:0 14px 0 36px;transition:border-color .15s ease,background-color .15s ease,box-shadow .15s ease;width:100%}.header-search input::placeholder{color:var(--text-muted)}.header-search input:focus{background:var(--raised);border-color:var(--border-color);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.header-search input::-webkit-search-cancel-button{display:none}.search-dropdown{background:var(--raised);border:1px solid var(--border-color);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);box-sizing:border-box;max-height:420px;overflow-y:auto;padding:6px;position:absolute;right:0;top:calc(100% + 8px);width:340px;z-index:1000}.search-result-item{align-items:center;background:none;border:none;border-radius:var(--radius-sm);color:inherit;cursor:pointer;display:flex;font:inherit;gap:12px;padding:8px;text-align:left;width:100%}.search-result-item:hover{background:var(--hover-background)}.search-result-item img{border-radius:4px;box-shadow:var(--shadow-sm);flex-shrink:0;height:52px;object-fit:cover;width:36px}.search-result-info{display:flex;flex-direction:column;gap:2px;min-width:0}.search-result-title{color:var(--text-primary);font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-author{color:var(--text-secondary);font-size:13px}.search-loading{display:flex;justify-content:center;padding:20px}.search-loading .loading-spinner{animation:spin .8s linear infinite;border:2px solid var(--border-color);border-radius:50%;border-top-color:var(--accent);height:20px;width:20px}.view-all-results{background:none;border:none;border-top:1px solid var(--border-color);color:var(--accent);cursor:pointer;font:inherit;font-size:13px;font-weight:600;margin-top:4px;padding:10px;width:100%}.search-dropdown .no-results{color:var(--text-secondary);font-size:14px;padding:16px;text-align:center}.search-dropdown .no-results p{margin:0 0 12px}.request-book-button{background:var(--ink);border:none;border-radius:var(--radius-pill);color:var(--on-ink);cursor:pointer;font:inherit;font-size:13px;font-weight:600;padding:8px 16px}.header-icon-button{align-items:center;background:none;border:none;border-radius:50%;color:var(--text-primary);cursor:pointer;display:inline-flex;flex-shrink:0;height:36px;justify-content:center;padding:0;transition:background-color .15s ease;width:36px}.header-icon-button:hover{background:var(--hover-background)}.header-search-link{display:none}.header-signin{background:var(--ink);border-radius:var(--radius-pill);color:var(--on-ink);font-size:14px;font-weight:600;margin:0 4px;padding:8px 16px;text-decoration:none;transition:opacity .15s ease;white-space:nowrap}.header-signin:hover{opacity:.85}.header-avatar{align-items:center;background:var(--surface-strong);border-radius:50%;color:var(--text-secondary);display:inline-flex;flex-shrink:0;height:32px;justify-content:center;margin:0 4px;overflow:hidden;width:32px}.header-avatar img{height:100%;object-fit:cover;width:100%}@media (max-width:1024px){.header-search{width:180px}}@media (max-width:900px){.app-header .header-content{gap:16px}.header-nav,.header-search{display:none}.header-search-link{display:inline-flex}}@media (max-width:480px){.app-header .header-content{padding:0 16px}.header-brand span{font-size:17px}.header-theme-toggle{display:none}}.book-bar .header-content{gap:12px;max-width:none;padding:0 16px}.book-bar-title{color:var(--text-primary);font-family:var(--font-display);font-size:17px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-bar-end{margin-left:auto}.app-shell{display:flex;flex-direction:column;min-height:100vh}.site-footer{background:var(--background-primary);border-top:1px solid var(--border-color);margin-top:auto}.footer-inner{box-sizing:border-box;display:flex;gap:48px;justify-content:space-between;margin:0 auto;max-width:1280px;padding:56px 24px 40px}.footer-brand{max-width:300px}.footer-wordmark{align-items:center;color:var(--text-primary);display:inline-flex;gap:10px;text-decoration:none}.footer-wordmark img{height:26px;width:auto}.footer-wordmark span{font-family:var(--font-display);font-size:18px;font-weight:600}.footer-brand p{color:var(--text-secondary);font-size:14px;line-height:1.6;margin:12px 0 0}.footer-columns{display:flex;gap:72px}.footer-column{display:flex;flex-direction:column;gap:10px}.footer-column h3{color:var(--text-primary);font-size:13px;font-weight:600;margin:0 0 4px}.footer-column a{color:var(--text-secondary);font-size:14px;text-decoration:none;transition:color .15s ease}.footer-column a:hover{color:var(--text-primary)}.footer-legal{border-top:1px solid var(--border-color);box-sizing:border-box;color:var(--text-muted);font-size:13px;margin:0 auto;max-width:1280px;padding:20px 24px 28px}@media (max-width:720px){.footer-inner{flex-direction:column;gap:32px;padding:40px 16px 28px}.footer-columns{gap:40px}.footer-legal{padding:16px 16px 24px}}.shelf{min-width:0;width:100%}.shelf-header{align-items:flex-end;display:flex;gap:16px}.shelf-header .ui-section-header{flex:1 1;min-width:0}.shelf-controls{display:flex;gap:8px;margin-bottom:24px}.shelf-row{display:flex;gap:24px;margin:-4px -4px 0;overflow-x:auto;padding:4px 4px 8px;scroll-padding:0 4px;scroll-snap-type:x proximity;scrollbar-width:none}.shelf-row::-webkit-scrollbar{display:none}.shelf-item{flex:0 0 168px;gap:10px;scroll-snap-align:start}.shelf-book,.shelf-item{display:flex;flex-direction:column}.shelf-book{background:none;border:none;color:inherit;cursor:pointer;font:inherit;padding:0;text-align:left}.shelf-cover{aspect-ratio:2/3;background:var(--surface-strong);border-radius:6px;box-shadow:var(--shadow-md);display:block;overflow:hidden;transition:transform .2s ease,box-shadow .2s ease}.shelf-cover img{display:block;height:100%;object-fit:cover;width:100%}.shelf-book:hover .shelf-cover{box-shadow:var(--shadow-lg);transform:translateY(-4px)}.shelf-title{-webkit-line-clamp:2;-webkit-box-orient:vertical;color:var(--text-primary);display:-webkit-box;font-size:14px;font-weight:600;line-height:1.35;margin-top:12px;overflow:hidden}.shelf-author{color:var(--text-secondary);font-size:13px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shelf-continue{align-self:flex-start}@media (max-width:900px){.shelf-controls{display:none}}@media (max-width:640px){.shelf-row{gap:16px}.shelf-item{flex-basis:128px}}.shelf-character{background:none;border:none;color:inherit;cursor:pointer;display:flex;flex:0 0 180px;flex-direction:column;font:inherit;min-width:0;padding:0;scroll-snap-align:start;text-align:left}.shelf-portrait{align-items:center;aspect-ratio:4/5;background:var(--surface-strong);border-radius:var(--radius-lg);display:flex;justify-content:center;overflow:hidden}.shelf-portrait img{display:block;height:100%;object-fit:cover;transition:transform .4s ease;width:100%}.shelf-character:hover .shelf-portrait img{transform:scale(1.04)}.shelf-initials{color:var(--text-muted);font-family:var(--font-display);font-size:32px}.shelf-character .shelf-title{-webkit-line-clamp:1}@media (max-width:640px){.shelf-character{flex-basis:140px}}.shelf-grid{grid-gap:36px 24px;display:grid;gap:36px 24px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.shelf-grid .shelf-book{color:inherit;text-decoration:none}@media (max-width:640px){.shelf-grid{gap:28px 16px;grid-template-columns:repeat(2,minmax(0,1fr))}}.search-header{margin-bottom:36px}.search-field{margin-top:24px}.search-error{color:var(--danger-color)}.search-empty{align-items:flex-start;display:flex;flex-direction:column;gap:4px;padding:24px 0}.search-empty .ui-btn{margin-top:20px}.skeleton-home{padding:0}.skeleton-home__hero{grid-gap:80px;align-items:center;box-sizing:border-box;display:grid;gap:80px;grid-template-columns:1fr 1fr;margin:0 auto;max-width:1400px;min-height:90vh;padding:60px 40px;width:100%}.skeleton-home__hero-left{min-width:0}.skeleton-home__hero-logo-row{align-items:center;display:flex;gap:12px;margin-bottom:50px}.skeleton-home__hero-logo{border-radius:16px;height:96px!important;width:96px!important}.skeleton-home__hero-app-name{border-radius:10px;height:64px!important;max-width:100%;width:360px!important}.skeleton-home__hero-title{margin-bottom:24px}.skeleton-home__hero-title .skeleton-block:first-child,.skeleton-home__hero-title .skeleton-block:nth-child(2){height:64px!important}.skeleton-home__hero-subtitle{margin-bottom:32px}.skeleton-home__hero-subtitle .skeleton-block{height:24px!important}.skeleton-home__hero-cta-row{align-items:center;display:flex;gap:16px}.skeleton-home__hero-cta-primary,.skeleton-home__hero-cta-secondary{border-radius:8px}.skeleton-home__hero-right{height:600px;position:relative;width:100%}.skeleton-home__hero-books-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,minmax(0,1fr));height:100%;width:100%}.skeleton-home__hero-book{border-radius:16px}.skeleton-home__hero-book-1{grid-row:span 1}.skeleton-home__hero-book-2{grid-row:span 2}.skeleton-home__hero-book-3,.skeleton-home__hero-book-4,.skeleton-home__hero-book-5{grid-row:span 1}.skeleton-home__hero-book-6{grid-row:span 2}.skeleton-home__hero-book-7{grid-row:span 1}.skeleton-home__hero-book-8{grid-row:span 2}.skeleton-home__hero-book-9{grid-row:span 1}.skeleton-home__section{margin:2rem 0}.skeleton-home__book-row{display:flex;flex-wrap:nowrap;gap:1.5rem;overflow:hidden;padding:0 20px}.skeleton-home__categories{padding:2rem 20px}.skeleton-home__category-buttons{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:8px}@media (max-width:768px){.skeleton-home__hero{gap:50px;grid-template-columns:1fr;min-height:auto;padding:30px 16px}.skeleton-home__hero-left{text-align:center}.skeleton-home__hero-logo-row{justify-content:center}.skeleton-home__hero-title{align-items:center;display:flex;flex-direction:column}.skeleton-home__hero-title .skeleton-block:first-child{height:52px!important;width:100%!important}.skeleton-home__hero-title .skeleton-block:nth-child(2){height:52px!important;width:88%!important}.skeleton-home__hero-subtitle{align-items:center;display:flex;flex-direction:column}.skeleton-home__hero-cta-row{flex-direction:column;width:100%}.skeleton-home__hero-cta-primary,.skeleton-home__hero-cta-secondary{max-width:320px;width:100%!important}.skeleton-home__hero-right{height:400px}.skeleton-home__hero-books-grid{gap:12px}}@media (max-width:640px){.skeleton-home__hero-logo{height:56px!important;width:56px!important}.skeleton-home__hero-app-name{height:38px!important;width:220px!important}.skeleton-home__hero-title .skeleton-block:first-child,.skeleton-home__hero-title .skeleton-block:nth-child(2){height:40px!important}.skeleton-home__hero-right{height:350px}.skeleton-home__hero-books-grid{gap:8px}}.home{display:flex;flex-direction:column;padding-bottom:96px;width:100%}.home-section{box-sizing:border-box;margin:96px auto 0;max-width:1280px;padding:0 24px;width:100%}.home-band{background:var(--surface);margin-top:96px;width:100%}.home-band-inner{box-sizing:border-box;margin:0 auto;max-width:1280px;padding:80px 24px}.home-hero{overflow:hidden;width:100%}.home-hero-inner{grid-gap:64px;align-items:center;box-sizing:border-box;display:grid;gap:64px;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);margin:0 auto;max-width:1280px;padding:56px 24px 24px}.home-hero-copy{max-width:560px}.home-hero-title{color:var(--text-primary);font-family:var(--font-display);font-size:clamp(40px,5.6vw,72px);font-weight:600;letter-spacing:-.025em;line-height:1.04;margin:0}.home-hero-title em{color:var(--accent);font-style:italic;font-weight:500}.home-hero-subtitle{color:var(--text-secondary);font-size:19px;line-height:1.6;margin:24px 0 0}.home-hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:36px}.home-hero-covers{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(3,1fr);height:560px;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 12%,#000 88%,transparent);mask-image:linear-gradient(180deg,transparent 0,#000 12%,#000 88%,transparent)}.home-hero-column{display:flex;flex-direction:column;gap:20px}.home-hero-column-1{margin-top:40px}.home-hero-column-2{margin-top:-30px}.home-hero-column-3{margin-top:90px}.home-hero-cover{aspect-ratio:2/3;background:var(--surface-strong);border:none;border-radius:6px;box-shadow:var(--shadow-lg);cursor:pointer;flex-shrink:0;overflow:hidden;padding:0;transition:transform .25s ease}.home-hero-cover img{display:block;height:100%;object-fit:cover;width:100%}.home-hero-cover:hover{transform:translateY(-4px)}.home-characters-grid{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(6,minmax(0,1fr))}.home-character{background:none;border:none;color:inherit;cursor:pointer;display:flex;flex-direction:column;font:inherit;min-width:0;padding:0;text-align:left}.home-character-portrait{aspect-ratio:4/5;background:var(--surface-strong);border-radius:var(--radius-lg);display:block;overflow:hidden;position:relative}.home-character-portrait img{display:block;height:100%;object-fit:cover;transition:transform .4s ease;width:100%}.home-character:hover .home-character-portrait img{transform:scale(1.04)}.home-character-chat{align-items:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:rgba(20,19,17,.72);border-radius:var(--radius-pill);bottom:10px;color:#faf8f4;display:inline-flex;font-size:12px;font-weight:600;gap:6px;left:10px;opacity:0;padding:6px 10px;position:absolute;transform:translateY(4px);transition:opacity .2s ease,transform .2s ease}.home-character:focus-visible .home-character-chat,.home-character:hover .home-character-chat{opacity:1;transform:none}.home-character-name{color:var(--text-primary);font-size:15px;font-weight:600;margin-top:12px}.home-character-book,.home-character-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-character-book{color:var(--text-secondary);font-size:13px;margin-top:2px}.spotlight{position:relative}.spotlight-body{grid-gap:64px;align-items:center;display:grid;gap:64px;grid-template-columns:300px minmax(0,1fr);transition:opacity .2s ease}.spotlight-body.transitioning{opacity:0}.spotlight-cover{aspect-ratio:2/3;background:var(--surface-strong);border:none;border-radius:8px;box-shadow:var(--shadow-xl);cursor:pointer;overflow:hidden;padding:0}.spotlight-cover img{display:block;height:100%;object-fit:cover;width:100%}.spotlight-details{max-width:640px}.spotlight-title{color:var(--text-primary);font-family:var(--font-display);font-size:clamp(30px,3.6vw,44px);font-weight:600;letter-spacing:-.02em;line-height:1.1;margin:0}.spotlight-author{color:var(--text-secondary);font-size:17px;margin:8px 0 0}.spotlight-tagline{color:var(--text-primary);font-family:var(--font-display);font-size:19px;font-style:italic;line-height:1.5;margin:20px 0 0}.spotlight-meta{display:flex;gap:32px;margin:24px 0 0}.spotlight-meta dt{color:var(--text-muted);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.spotlight-meta dd{color:var(--text-primary);font-size:15px;font-weight:500;margin:4px 0 0}.spotlight-description{margin-top:20px}.spotlight-description p{-webkit-line-clamp:3;-webkit-box-orient:vertical;color:var(--text-secondary);display:-webkit-box;font-size:15px;line-height:1.7;margin:0;overflow:hidden}.spotlight-description p.expanded{-webkit-line-clamp:unset;display:block}.spotlight-more{background:none;border:none;color:var(--text-primary);cursor:pointer;font:inherit;font-size:14px;font-weight:600;margin-top:6px;padding:0;text-decoration:underline;text-underline-offset:3px}.spotlight-tags{margin-top:20px}.spotlight-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}.spotlight-nav{align-items:center;display:flex;gap:12px;position:absolute;right:24px;top:80px}.spotlight-dots{display:flex;gap:6px}.spotlight-dot{background:var(--text-muted);border:none;border-radius:var(--radius-pill);cursor:pointer;height:6px;opacity:.4;padding:0;transition:width .2s ease,opacity .2s ease;width:6px}.spotlight-dot.active{background:var(--text-primary);opacity:1;width:18px}.home-gallery{grid-gap:12px;display:grid;gap:12px;grid-auto-rows:220px;grid-template-columns:repeat(4,1fr)}.home-gallery-item{background:var(--surface-strong);border:none;border-radius:var(--radius-md);cursor:pointer;overflow:hidden;padding:0;position:relative}.home-gallery-item:first-child{grid-column:span 2;grid-row:span 2}.home-gallery-item img,.home-gallery-item video{display:block;height:100%;object-fit:cover;transition:transform .4s ease;width:100%}.home-gallery-item:hover img,.home-gallery-item:hover video{transform:scale(1.03)}.home-gallery-caption{background:linear-gradient(0deg,rgba(20,19,17,.8),transparent);color:#faf8f4;display:flex;flex-direction:column;gap:2px;inset:auto 0 0 0;opacity:0;padding:40px 16px 14px;position:absolute;text-align:left;transition:opacity .2s ease}.home-gallery-item:hover .home-gallery-caption{opacity:1}.home-gallery-title{font-size:14px;font-weight:600}.home-gallery-author{font-size:12px;opacity:.8}.home-audio{grid-gap:64px;align-items:center;display:grid;gap:64px;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}.home-feature-list{display:flex;flex-direction:column;gap:20px;list-style:none;margin:32px 0 0;padding:0}.home-feature-list li{color:var(--text-secondary);display:flex;font-size:15px;gap:14px;line-height:1.55}.home-feature-list strong{color:var(--text-primary);display:block;font-weight:600}.home-feature-icon{align-items:center;background:var(--accent-soft);border-radius:50%;color:var(--accent);display:inline-flex;flex-shrink:0;height:36px;justify-content:center;width:36px}.home-audio-covers{grid-gap:16px;align-items:end;display:grid;gap:16px;grid-template-columns:repeat(5,1fr)}.home-audio-cover{aspect-ratio:2/3;background:var(--surface-strong);border:none;border-radius:6px;box-shadow:var(--shadow-md);cursor:pointer;overflow:hidden;padding:0;position:relative;transition:transform .2s ease}.home-audio-cover:nth-child(odd){transform:translateY(-20px)}.home-audio-cover:hover{transform:translateY(-24px)}.home-audio-cover img{display:block;height:100%;object-fit:cover;width:100%}.home-audio-badge{align-items:center;background:rgba(20,19,17,.72);border-radius:50%;bottom:8px;color:#faf8f4;display:inline-flex;height:26px;justify-content:center;position:absolute;right:8px;width:26px}.home-genres{margin-bottom:28px}@media (max-width:1100px){.home-characters-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.home-audio{gap:48px;grid-template-columns:1fr}}@media (max-width:900px){.home-hero-inner{gap:40px;grid-template-columns:1fr;padding-top:40px}.home-hero-covers{height:340px}.home-hero-column-1{margin-top:0}.home-hero-column-2{margin-top:-60px}.home-hero-column-3{margin-top:20px}.spotlight-body{gap:36px;grid-template-columns:200px minmax(0,1fr)}.spotlight-nav{justify-content:center;margin-top:32px;position:static}.home-gallery{grid-auto-rows:180px;grid-template-columns:repeat(2,1fr)}}@media (max-width:640px){.home{padding-bottom:64px}.home-section{padding:0 16px}.home-band,.home-section{margin-top:64px}.home-band-inner{padding:56px 16px}.home-hero-inner{padding:32px 16px 8px}.home-hero-subtitle{font-size:17px}.home-hero-actions .ui-btn{flex:1 1 100%}.home-hero-covers{gap:12px;height:260px}.home-hero-column{gap:12px}.home-characters-grid{gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.home-character-chat{opacity:1;transform:none}.spotlight-body{gap:28px;grid-template-columns:1fr}.spotlight-cover{justify-self:center;width:180px}.spotlight-actions .ui-btn{flex:1 1 100%}.home-gallery{gap:8px;grid-auto-rows:150px}.home-gallery-caption{opacity:1}.home-audio-covers{gap:12px;grid-template-columns:repeat(3,1fr)}.home-audio-cover:nth-child(n+4){display:none}}
/*# sourceMappingURL=main.eeb44d9a.css.map*/