@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Noto+Serif+SC:wght@400;500;600;700;800&display=swap";:root{--altcha-border-color:var(--altcha-color-neutral);--altcha-border-width:1px;--altcha-border-radius:6px;--altcha-color-base:light-dark(oklch(100% .00011 271.152),oklch(20.904% .00002 271.152));--altcha-color-base-content:light-dark(oklch(20.904% .00002 271.152),oklch(100% .00011 271.152));--altcha-color-error:oklch(51.284% .20527 28.678);--altcha-color-error-content:oklch(100% .00011 271.152);--altcha-color-neutral:light-dark(oklch(83.591% .0001 271.152),oklch(46.04% .00005 271.152));--altcha-color-neutral-content:light-dark(oklch(46.76% .00005 271.152),oklch(100% .00011 271.152));--altcha-color-primary:oklch(40.279% .2449 268.131);--altcha-color-primary-content:oklch(100% .00011 271.152);--altcha-color-success:oklch(55.748% .18968 142.511);--altcha-color-success-content:oklch(100% .00011 271.152);--altcha-checkbox-border-color:light-dark(oklch(66.494% .00233 15.434),oklch(51.028% .00006 271.152));--altcha-checkbox-border-radius:5px;--altcha-checkbox-border-width:var(--altcha-border-width);--altcha-checkbox-outline:2px solid var(--altcha-checkbox-outline-color);--altcha-checkbox-outline-color:-webkit-focus-ring-color;--altcha-checkbox-outline-offset:2px;--altcha-checkbox-size:22px;--altcha-checkbox-transition-duration:var(--altcha-transition-duration);--altcha-input-background-color:var(--altcha-color-base);--altcha-input-border-radius:3px;--altcha-input-border-width:1px;--altcha-input-color:var(--altcha-color-base-content);--altcha-max-width:320px;--altcha-padding:.75rem;--altcha-popover-arrow-size:6px;--altcha-popover-color:var(--altcha-border-color);--altcha-shadow:drop-shadow(3px 3px 6px oklch(0% 0 0/.2));--altcha-spinner-color:var(--altcha-color-base-content);--altcha-switch-background-color:var(--altcha-color-neutral);--altcha-switch-border-radius:calc(infinity*1px);--altcha-switch-height:var(--altcha-checkbox-size);--altcha-switch-padding:.25rem;--altcha-switch-width:calc(var(--altcha-checkbox-size)*1.75);--altcha-switch-toggle-border-radius:100%;--altcha-switch-toggle-color:var(--altcha-color-neutral-content);--altcha-switch-toggle-size:calc(var(--altcha-switch-height) - var(--altcha-switch-padding)*2);--altcha-transition-duration:.6s;--altcha-z-index:99999999;--altcha-z-index-popover:999999999}@supports (-moz-appearance:none){:root{--altcha-checkbox-outline-color:var(--altcha-color-primary)}}.altcha{all:revert-layer;display:none;font-family:inherit;font-size:inherit;position:relative}.altcha[data-visible]{display:block}.altcha *,.altcha-popover,.altcha-popover *{all:revert-layer;box-sizing:border-box;font-family:inherit;font-size:inherit;line-height:1.25}.altcha a,.altcha-popover a{color:currentColor;text-decoration:none}.altcha a:hover,.altcha-popover a:hover{color:currentColor}.altcha-main{align-items:start;background-color:var(--altcha-color-base);border:var(--altcha-border-width,1px) solid var(--altcha-border-color);border-radius:var(--altcha-border-radius,0);color:var(--altcha-color-base-content);display:flex;flex-direction:column;gap:.5rem;justify-content:space-between;max-width:var(--altcha-max-width,100%);padding:var(--altcha-padding)}.altcha-main>*{display:flex;width:100%}.altcha-main>:first-child{flex-grow:1}.altcha-checkbox-wrap{align-items:center;display:flex;flex-direction:row;flex-grow:1;gap:.5rem}.altcha-checkbox-wrap>*{display:flex}.altcha-logo{opacity:.7}.altcha-footer{align-items:center;display:flex;flex-grow:1;font-size:.7rem;gap:.5rem;justify-content:flex-end;opacity:.7}.altcha-footer p{margin:0;padding:0}.altcha-error{font-size:.85rem}.altcha-button{align-items:center;background:var(--altcha-color-primary);border:var(--altcha-input-border-width) solid var(--altcha-color-primary);border-radius:var(--altcha-input-border-radius);color:var(--altcha-color-primary-content);cursor:pointer;display:flex;font-size:.9rem;gap:.5rem;padding:.35rem}.altcha-button:focus{border-color:var(--altcha-color-primary);outline:var(--altcha-checkbox-outline);outline-offset:var(--altcha-checkbox-outline-offset)}.altcha-button>.altcha-spinner,.altcha-button>svg{height:20px;width:20px}.altcha-button-secondary{background:transparent;border-color:var(--altcha-color-neutral);color:var(--altcha-color-neutral-content)}.altcha-input{background:var(--altcha-input-background-color);border:var(--altcha-input-border-width) solid var(--altcha-color-neutral);border-radius:var(--altcha-input-border-radius);color:var(--altcha-input-color);flex-grow:1;font-size:1rem;min-width:0;padding:.25rem;width:auto}.altcha-input:focus{border-color:var(--altcha-color-primary);outline:var(--altcha-checkbox-outline);outline-offset:var(--altcha-checkbox-outline-offset)}.altcha-spinner{animation:altcha-rotate .6s linear infinite;border:var(--altcha-checkbox-border-width) solid var(--altcha-spinner-color);border-bottom-color:transparent;border-radius:100%;border-right-color:transparent;opacity:.7}.altcha-popover{background-color:var(--altcha-color-base);border:var(--altcha-border-width) solid var(--altcha-border-color);border-radius:var(--altcha-border-radius);color:var(--altcha-color-base-content);filter:var(--altcha-shadow);left:calc(var(--altcha-padding)/2);max-width:calc(var(--altcha-max-width) - var(--altcha-padding));position:absolute;top:calc(var(--altcha-padding) + var(--altcha-checkbox-size) + var(--altcha-popover-arrow-size));z-index:var(--altcha-z-index-popover)}.altcha-popover-arrow{border-bottom-color:transparent;border:var(--altcha-popover-arrow-size) solid transparent;border-bottom:var(--altcha-popover-arrow-size) solid var(--altcha-popover-color);content:"";height:0;left:calc(var(--altcha-checkbox-size)/2);position:absolute;top:calc(var(--altcha-popover-arrow-size)*-2);width:0}.altcha-popover-content{max-height:100dvh;overflow:auto;padding:var(--altcha-padding)}.altcha-popover[data-top=true][data-display=standard]{bottom:calc(100% - var(--altcha-padding) + var(--altcha-popover-arrow-size));top:auto}.altcha-popover[data-top=true][data-display=standard] .altcha-popover-arrow{border-bottom-color:transparent;border-top-color:var(--altcha-popover-color);bottom:calc(var(--altcha-popover-arrow-size)*-2);top:auto}.altcha-popover[data-variant=error]{--altcha-popover-color:var(--altcha-color-error);background-color:var(--altcha-color-error);border-color:var(--altcha-color-error);color:var(--altcha-color-error-content)}.altcha-popover[data-variant=error] .altcha-popover-content{padding:calc(var(--altcha-padding)/1.5) var(--altcha-padding)}.altcha-popover[data-display=overlay]{animation:altcha-overlay-slidein .5s forwards;top:45%;transform:translate(-50%,-50%)}.altcha-popover[data-display=bottomsheet],.altcha-popover[data-display=overlay]{left:50%;position:fixed;width:var(--altcha-max-width);z-index:var(--altcha-z-index)}.altcha-popover[data-display=bottomsheet]{animation:altcha-bottomsheet-slideup .5s forwards;border-bottom:0;border-bottom-left-radius:0;border-bottom-right-radius:0;bottom:-100%;top:auto;transform:translate(-50%)}.altcha-popover[data-display=bottomsheet] .altcha-popover-content{padding-bottom:calc(var(--altcha-padding)*2)}.altcha-popover-backdrop{background:var(--altcha-color-base-content);bottom:0;left:0;opacity:.1;position:fixed;right:0;top:0;transition:opacity .5s;z-index:var(--altcha-z-index)}.altcha-popover-close{color:var(--altcha-color-base-content);cursor:pointer;display:inline-block;font-size:1rem;height:1.25rem;line-height:.95;position:absolute;right:0;text-align:center;text-shadow:0 0 1px var(--altcha-color-base);top:-1.5rem;width:1.25rem;z-index:var(--altcha-z-index)}[dir=rtl] .altcha-popover{left:auto;right:calc(var(--altcha-padding)/2)}[dir=rtl] .altcha-popover-arrow{left:auto;right:calc(var(--altcha-checkbox-size)/2)}[dir=rtl] .altcha-popover-close{left:0;right:auto}.altcha-popover[data-display=bottomsheet] .altcha-footer,.altcha-popover[data-display=overlay] .altcha-footer{align-items:center;gap:.5rem;justify-content:center;padding-top:1rem}.altcha-popover[data-display=bottomsheet] .altcha-footer svg,.altcha-popover[data-display=overlay] .altcha-footer svg{height:18px;vertical-align:middle;width:18px}.altcha-code-challenge>form{display:flex;flex-direction:column;gap:.5rem}.altcha-code-challenge-title{font-weight:600}.altcha-code-challenge-text{font-size:.85rem}.altcha-code-challenge-image{background:#fff;border:var(--altcha-input-border-width) solid var(--altcha-color-neutral);border-radius:var(--altcha-input-border-radius);height:50px;object-fit:contain}.altcha-code-challenge-row{display:flex;gap:.5rem}.altcha-code-challenge-buttons{align-items:center;display:flex;flex-direction:column;gap:.5rem;justify-content:space-between;margin-top:var(--altcha-padding)}.altcha-code-challenge-buttons button{justify-content:center;width:100%}.altcha-checkbox{position:relative}.altcha-checkbox,.altcha-checkbox input{cursor:pointer;height:var(--altcha-checkbox-size);width:var(--altcha-checkbox-size)}.altcha-checkbox input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--altcha-input-background-color);border:var(--altcha-checkbox-border-width,2px) solid var(--altcha-checkbox-border-color);border-radius:var(--altcha-checkbox-border-radius);left:0;margin:0;padding:0;position:absolute;top:0}@supports (hanging-punctuation:first) and (font:-apple-system-body) and (-webkit-appearance:none){.altcha-checkbox input:focus{outline-style:solid;outline-width:2px}}.altcha-checkbox input:before{background:var(--altcha-color-neutral);border-radius:var(--altcha-checkbox-border-radius);content:"";display:block;height:100%;transform:scale(0);width:100%}.altcha-checkbox input:checked{background-color:var(--altcha-color-success);border-color:var(--altcha-color-success)}.altcha-checkbox input:checked:before{background-color:var(--altcha-color-success);opacity:0;transform:scale(2.2);transition:all var(--altcha-checkbox-transition-duration) ease;transition-delay:.1s}.altcha-checkbox svg{--altcha-radio-svg-size:calc(var(--altcha-checkbox-size)*.5);--altcha-radio-svg-offset:calc(var(--altcha-checkbox-size)*.25);fill:none;height:var(--altcha-radio-svg-size);left:var(--altcha-radio-svg-offset);opacity:0;position:absolute;stroke:currentColor;stroke-dasharray:16px;stroke-dashoffset:16px;stroke-linecap:round;stroke-linejoin:round;stroke-width:2;top:var(--altcha-radio-svg-offset);transform:translateZ(0);width:var(--altcha-radio-svg-size)}.altcha-checkbox input:checked+svg{color:var(--altcha-color-success-content);opacity:1;stroke-dashoffset:0;transition:all var(--altcha-checkbox-transition-duration) ease;transition-delay:.1s}.altcha-checkbox-spinner{display:none;height:var(--altcha-checkbox-size);left:0;position:absolute;top:0;width:var(--altcha-checkbox-size)}.altcha-checkbox[data-loading=true] input{-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0;pointer-events:none}.altcha-checkbox[data-loading=true] .altcha-checkbox-spinner{display:block}.altcha-checkbox-native{position:relative}.altcha-checkbox-native,.altcha-checkbox-native input{height:var(--altcha-checkbox-size);width:var(--altcha-checkbox-size)}.altcha-checkbox-native input{margin:0}.altcha-checkbox-native-spinner{display:none;height:var(--altcha-checkbox-size);left:0;position:absolute;top:0;width:var(--altcha-checkbox-size)}.altcha-checkbox-native[data-loading=true] input{-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0;pointer-events:none}.altcha-checkbox-native[data-loading=true] .altcha-checkbox-native-spinner{display:block}.altcha-switch{align-items:center;background-color:var(--altcha-switch-background-color);border-radius:var(--altcha-switch-border-radius);display:flex;height:var(--altcha-switch-height);padding:var(--altcha-switch-padding);position:relative;width:var(--altcha-switch-width)}.altcha-switch:focus-within{outline:var(--altcha-checkbox-outline);outline-offset:var(--altcha-checkbox-outline-offset)}.altcha-switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;height:100%;left:0;opacity:0;position:absolute;top:0;width:100%}.altcha-switch-toggle{align-items:center;background-color:var(--altcha-switch-toggle-color);border-radius:var(--altcha-switch-toggle-border-radius);cursor:pointer;display:flex;justify-content:center;left:var(--altcha-switch-padding);position:absolute;transition:width .15s ease-out,left .15s ease-out}.altcha-switch-spinner,.altcha-switch-toggle{height:var(--altcha-switch-toggle-size);width:var(--altcha-switch-toggle-size)}.altcha-switch-spinner{display:none}.altcha-switch[data-loading=true]{pointer-events:none}.altcha-switch[data-loading=true] .altcha-switch-spinner{display:block}.altcha-switch[data-loading=true] .altcha-switch-toggle{background-color:transparent;left:calc(50% - var(--altcha-switch-toggle-size)/2)}[data-state=verified] .altcha-switch{--altcha-switch-background-color:var(--altcha-color-success)}[data-state=verified] .altcha-switch-toggle{background-color:var(--altcha-color-success-content)}[data-state=verified] .altcha-switch-toggle,[dir=rtl] .altcha-switch-toggle{left:calc(100% - var(--altcha-switch-height) + var(--altcha-switch-padding))}[dir=rtl][data-state=verified] .altcha-switch-toggle{left:var(--altcha-switch-padding)}.altcha-floating-arrow{border:6px solid transparent;border-bottom:6px solid var(--altcha-border-color);content:"";height:0;left:12px;position:absolute;top:-12px;width:0}.altcha-overlay-backdrop{bottom:0;left:0;position:fixed;right:0;top:0;transition:opacity var(--altcha-transition-duration);z-index:var(--altcha-z-index)}.altcha-overlay-close{color:currentColor;cursor:pointer;display:inline-block;font-size:1rem;height:1rem;line-height:.85;position:absolute;right:0;text-align:center;text-shadow:0 0 1px var(--altcha-color-base);top:-1.5rem;width:1rem;z-index:var(--altcha-z-index)}.altcha[data-display=overlay]{animation:altcha-overlay-slidein var(--altcha-transition-duration) forwards;filter:var(--altcha-shadow);left:50%;opacity:0;position:fixed;top:45%;transform:translate(-50%,-50%);z-index:var(--altcha-z-index)}.altcha[data-display=overlay] .altcha-main{width:var(--altcha-max-width)}.altcha[data-display=floating]{display:none;filter:var(--altcha-shadow);left:var(--altcha-floating-left,-100%);position:fixed;top:var(--altcha-floating-top,-100%);z-index:var(--altcha-z-index)}.altcha[data-display=floating] .altcha-main{width:var(--altcha-max-width)}.altcha[data-display=floating][data-floating-position=top] .altcha-floating-arrow{border-bottom-color:transparent;border-top-color:var(--altcha-border-color);bottom:-12px;top:auto}.altcha[data-display=floating][data-visible]{display:flex}.altcha[data-display=bar]{bottom:-100%;filter:var(--altcha-shadow);left:0;position:fixed;right:0;transition:bottom var(--altcha-transition-duration),top var(--altcha-transition-duration);z-index:var(--altcha-z-index)}.altcha[data-display=bar] .altcha-main{align-items:center;border-radius:0;border-width:var(--altcha-border-width) 0 0 0;flex-direction:row;max-width:100%!important}.altcha[data-display=bar] .altcha-main>*{width:auto}.altcha[data-display=bar][data-placement=top]{bottom:auto;top:-100%}.altcha[data-display=bar][data-placement=top] .altcha-main{border-width:0 0 var(--altcha-border-width) 0}.altcha[data-display=bar][data-placement=bottom]:not([data-state=unverified]){bottom:0}.altcha[data-display=bar][data-placement=top]:not([data-state=unverified]){top:0}.altcha[data-display=invisible]{display:none}@keyframes altcha-rotate{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes altcha-bottomsheet-slideup{to{bottom:0}}@keyframes altcha-overlay-slidein{to{opacity:1;top:50%}}.altcha-wrap[data-v-10824787]{display:flex;flex-direction:column;align-items:center;gap:10px;margin:12px auto 4px;width:100%;max-width:360px;--altcha-color-base: #fbf8f0;--altcha-color-base-content: #3e362f;--altcha-color-neutral: #d9d0c3;--altcha-color-neutral-content: #5c534a;--altcha-color-primary: #8a6a45;--altcha-color-primary-content: #ffffff;--altcha-color-success: #718b65;--altcha-color-success-content: #ffffff;--altcha-color-error: #a8665c;--altcha-color-error-content: #ffffff;--altcha-border-color: #cfc4b4;--altcha-border-width: 1px;--altcha-border-radius: 10px;--altcha-checkbox-border-color: #8a6a45;--altcha-checkbox-border-width: 2px;--altcha-checkbox-border-radius: 5px;--altcha-checkbox-size: 22px;--altcha-max-width: 100%;--altcha-padding: 12px 14px}.altcha-widget[data-v-10824787]{display:block;width:100%;min-height:56px}.form-hint[data-v-10824787]{margin:0;text-align:center}@media (max-width: 760px){.altcha-wrap[data-v-10824787]{max-width:min(100%,340px);--altcha-checkbox-size: 24px;--altcha-padding: 14px 12px}}.captcha-root[data-v-390f050f]{width:100%;max-width:360px;margin:12px auto 16px;display:flex;flex-direction:column;align-items:center}.captcha-type-fieldset[data-v-b481aaca]{border:1px solid color-mix(in srgb,currentColor 18%,transparent);border-radius:12px;padding:1rem 1.1rem;margin:0 0 1rem}.captcha-type-fieldset legend[data-v-b481aaca]{padding:0 .4rem;font-weight:600}.radio-row[data-v-b481aaca]{display:flex;align-items:center;gap:.55rem;margin:.45rem 0}.button-row[data-v-b481aaca]{display:flex;flex-wrap:wrap;gap:.75rem}:root{font-family:DM Sans,"Noto Serif SC",sans-serif;color:#3e362f;background:#f5f0e6;font-synthesis:none;text-rendering:optimizeLegibility;--bg-color:#f5f0e6;--surface-color:#fbf8f0;--text-color:#3e362f;--text-secondary:#7a7066;--muted:#a49a8f;--border-color:#e5ded2;--primary-color:#8a6a45;--primary-hover:#a17c52;--green:#718b65;--red:#a8665c;--serif:"Noto Serif SC",Georgia,serif}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{color:inherit}.app-shell{min-height:100vh;display:flex;flex-direction:column}.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 max(calc((100vw - 1160px)/2),28px);border-bottom:1px solid var(--border-color);background:#f5f0e6eb}.brand{display:flex;align-items:center;gap:11px;font-family:var(--serif);font-size:20px;font-weight:700;letter-spacing:.08em}.brand-mark{width:36px;height:36px;display:grid;place-items:center;background:#e9dfce;color:#80613f;border:1px solid #d8cbb7;font-family:var(--serif);font-size:20px}.topbar nav{display:flex;align-items:center;gap:34px;color:var(--text-secondary);font-size:13px}.locale-switch{font-size:11px}.topbar nav a:hover,.site-footer a:hover{color:var(--primary-color)}.topbar-actions{display:flex;align-items:center;gap:14px}.locale-switch{display:inline-flex;align-items:center;gap:5px;color:var(--text-secondary);font:500 10px DM Sans,sans-serif;white-space:nowrap;cursor:pointer}.locale-switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:30px;height:16px;margin:0;border:1px solid #cfc2af;border-radius:999px;background:#e5ded2;position:relative;cursor:pointer;transition:background .18s}.locale-switch input:before{content:"";position:absolute;width:10px;height:10px;top:2px;left:2px;border-radius:50%;background:#fbf8f0;box-shadow:0 1px 2px #7a706633;transition:transform .18s}.locale-switch input:checked{background:#8a6a45;border-color:#8a6a45}.locale-switch input:checked:before{transform:translate(14px)}.page{width:min(100% - 56px,1120px);margin:0 auto;flex:1}.site-footer{width:min(100% - 56px,1120px);margin:70px auto 0;padding:23px 0 28px;border-top:1px solid var(--border-color);display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.eyebrow{color:#967c5d;letter-spacing:.18em;font:600 10px DM Sans,sans-serif}.muted{color:var(--muted);font-size:12px}.hero{min-height:350px;display:flex;align-items:center;justify-content:space-between;padding:40px 82px 34px 84px;position:relative;overflow:hidden;border-bottom:1px solid var(--border-color)}.hero-copy{position:relative;z-index:1}.hero h1,.view-heading h1,.book-detail h1,.admin-heading h1{font-family:var(--serif);font-size:42px;line-height:1.43;font-weight:500;letter-spacing:.08em;margin:16px 0 10px}.hero h1 em{font-style:normal;color:var(--primary-color)}.hero p,.view-heading p{font-size:13px;color:var(--text-secondary);letter-spacing:.04em}.hero-art{position:relative;width:280px;height:245px;margin-right:54px}.art-sun{position:absolute;width:166px;height:166px;border-radius:50%;background:#e9decb;right:31px;top:16px}.art-book{position:absolute;right:42px;top:45px;width:117px;height:162px;background:#957954;color:#f7f0e5;box-shadow:10px 11px #d4c2a5;display:flex;flex-direction:column;align-items:center;justify-content:center;font:600 14px var(--serif);letter-spacing:.2em;transform:rotate(5deg);border-left:5px solid #78603f}.art-book small{font:9px DM Sans;margin-top:44px;letter-spacing:.22em}.art-leaf{position:absolute;right:9px;top:19px;font-size:30px;color:#7f8a68}.search-panel{margin:30px auto 52px;max-width:780px;height:64px;display:flex;align-items:center;gap:12px;padding:7px 8px 7px 20px;background:var(--surface-color);border:1px solid var(--border-color)}.search-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:22px;height:22px;color:#95836c;line-height:0}.search-icon .ui-icon{display:block;vertical-align:0}.search-panel input{flex:1;min-width:0;border:0;background:transparent;outline:0;color:var(--text-color);font-size:14px}.search-panel input::placeholder{color:#b1a79b}.button{min-height:42px;padding:0 21px;border:1px solid transparent;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;font-size:12px;letter-spacing:.05em;transition:background .18s,border .18s}.button:disabled{opacity:.45;cursor:not-allowed}.button-primary{background:var(--primary-color);color:#fffaf1}.button-primary:hover:not(:disabled){background:var(--primary-hover)}.button-outline{border-color:var(--border-color);background:transparent;color:var(--text-secondary)}.button-outline:hover:not(:disabled){border-color:#b9a58b;color:var(--primary-color)}.section-block{margin:0 auto 55px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:22px}.section-heading h2{font:500 22px var(--serif);letter-spacing:.06em;margin:8px 0 0}.category-strip{display:flex;gap:9px;overflow:auto;padding:1px 0 9px;scrollbar-width:thin}.category-chip{padding:9px 15px;border:1px solid var(--border-color);background:transparent;color:var(--text-secondary);font-size:12px;white-space:nowrap;cursor:pointer}.category-chip.active,.category-chip:hover{background:#e9dfce;border-color:#d6c7b0;color:#725b3f}.book-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));column-gap:24px;row-gap:28px}.book-card{min-width:0}.cover-frame{height:220px;position:relative;overflow:hidden;border:1px solid var(--border-color);background:#ece4d5}.cover-frame img,.detail-cover img,.shelf-cover img{width:100%;height:100%;object-fit:cover;display:block}.book-card:hover img{transform:scale(1.035);transition:transform .4s}.cover-placeholder{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;background:linear-gradient(145deg,#e8ddc9,#d8c6a9);color:#80684a;font:500 21px var(--serif);letter-spacing:.18em}.cover-placeholder small{font:10px DM Sans;margin-top:25px;letter-spacing:.16em;color:#a08d70}.book-meta{display:flex;flex-direction:column;gap:5px;padding:12px 1px}.book-meta strong{font:500 14px var(--serif);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.book-meta span{font-size:11px;color:var(--text-secondary)}.book-meta small{color:var(--muted);font-size:10px}.empty-state{min-height:200px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:var(--text-secondary);font-size:13px;text-align:center}.empty-state strong{font:500 16px var(--serif);color:var(--text-color)}.empty-mark{color:#aa9270;font-size:23px}.notice{padding:12px 15px;background:#f3e9d6;border:1px solid #e5d6bd;color:#765d3e;font-size:13px}.notice-error{background:#f3e5df;border-color:#e6c9bf;color:#934f46}.notice-success{background:#e9ede2;border-color:#d0dac7;color:#556b4a}.view-heading{padding:50px 4px 15px}.view-heading h1{font-size:34px;margin:10px 0}.view-heading p{margin:0}.search-panel-wide{max-width:none;margin:20px 0 36px}.back-link{display:inline-block;color:var(--text-secondary);font-size:12px;margin:20px 0}.back-link:hover{color:var(--primary-color)}.book-detail{display:grid;grid-template-columns:220px 1fr;gap:42px;padding:14px 0 50px;border-bottom:1px solid var(--border-color)}.detail-cover{grid-row:1/-1;height:300px;border:1px solid var(--border-color);background:#e9dfce;align-self:start}.detail-info{padding:12px 0}.book-detail h1{font-size:33px;margin:12px 0}.detail-author{font-size:13px;color:var(--text-secondary)}.detail-description-wrap,.detail-facts,.reading-progress,.detail-actions{grid-column:2}.detail-description-wrap{max-width:670px;margin:8px 0 0}.detail-description{margin:0;line-height:2.05;font-size:14px;color:#645b50;white-space:pre-line}.detail-description.collapsed{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:5;line-clamp:5;overflow:hidden;max-height:10.5em}.desc-toggle{margin-top:10px;padding:0;border:0;background:none;color:var(--primary-color);font-size:13px;cursor:pointer}.desc-toggle:hover{color:var(--primary-hover)}.detail-facts{margin-top:18px}.reading-progress{margin:14px 0 0;font-size:13px;color:var(--text-secondary)}.reading-progress a{color:var(--primary-color);text-decoration:underline;text-underline-offset:3px}.detail-actions{margin-top:20px}.chapter-row.current{background:#8a6a4514}.chapter-row.current span{color:var(--primary-color);font-weight:600}.ui-icon{display:inline-block;flex:0 0 auto;vertical-align:-.15em}.button,.back-link,.text-link,.desc-toggle,.remove-link{display:inline-flex;align-items:center;justify-content:center;gap:7px}.back-link{gap:6px}.pagination-block{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:20px;width:100%}.pagination-jump{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary)}.pagination-jump select{min-width:112px;height:32px;padding:0 10px;border:1px solid var(--border-color);background:var(--surface-color);color:var(--text-color);cursor:pointer;border-radius:0;outline:none}.pagination-jump select:focus{border-color:var(--primary-color)}.pagination{display:flex;align-items:center;justify-content:center;flex-wrap:nowrap;gap:4px;margin-top:0;width:100%;max-width:100%;overflow:hidden}.page-btn{flex:0 0 auto;box-sizing:border-box;min-width:32px;height:32px;padding:0 6px;border:1px solid var(--border-color);background:var(--surface-color);color:var(--text-secondary);font-size:13px;line-height:1;cursor:pointer;border-radius:0;outline:none}.page-btn:hover:not(:disabled):not(.active){color:var(--primary-color);border-color:#8a6a4559}.page-btn.active,.page-btn.active:hover,.page-btn.active:focus,.page-btn.active:focus-visible{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.page-btn:focus-visible{border-color:var(--primary-color)}.page-btn:disabled{opacity:.35;cursor:not-allowed}.page-ellipsis{flex:0 0 auto;min-width:20px;text-align:center;color:var(--muted);font-size:13px;line-height:32px;-webkit-user-select:none;user-select:none}.recent-block{margin-top:8px}.reader-controls button{display:inline-flex;align-items:center;gap:4px}.toolbar-back{margin:0}.detail-facts{display:flex;gap:20px;flex-wrap:wrap;font-size:11px;color:#8c785c}.detail-actions{display:flex;gap:10px;margin-top:27px}.catalog-block{margin-top:40px}.chapter-list{border-top:1px solid var(--border-color)}.chapter-row{display:flex;justify-content:space-between;padding:14px 9px;border-bottom:1px solid var(--border-color);font-size:13px}.chapter-row:hover{background:#ffffff5c;color:var(--primary-color)}.chapter-row small{color:var(--muted);font-size:10px}.reader-page{max-width:800px;margin:0 auto}.reader-toolbar{position:sticky;top:0;z-index:2;height:54px;display:flex;justify-content:space-between;align-items:center;background:#f5f0e6f2;border-bottom:1px solid var(--border-color);font-size:12px;color:var(--text-secondary)}.reader-controls{display:flex;align-items:center;gap:12px}.reader-controls button{border:0;background:transparent;color:var(--primary-color);cursor:pointer;font-size:14px}.reader-bookline{text-align:center;color:var(--text-secondary);font-size:11px;letter-spacing:.08em;margin-top:66px}.reader-bookline span{padding:0 9px;color:#bcaa8e}.reader-content h1{text-align:center;font:500 24px var(--serif);letter-spacing:.08em;margin:20px 0}.reader-divider{display:flex;align-items:center;justify-content:center;gap:16px;color:#aa9270;font-size:13px;margin:24px 0 50px}.reader-divider span{width:70px;height:1px;background:var(--border-color)}.prose{font-family:var(--serif);font-size:var(--reader-font);line-height:2.25;letter-spacing:.035em;color:#403930}.prose p{margin:0 0 1.15em;text-indent:2em}.chapter-image{max-width:100%;height:auto;margin:1em auto 1.5em;display:block}.reader-end{border-top:1px solid var(--border-color);margin:60px 0;padding:25px 0;text-align:center;color:var(--muted);font-size:12px}.reader-pager{display:flex;justify-content:center;gap:10px;margin-top:22px}.reader-error{text-align:center;padding:75px 15px;display:flex;flex-direction:column;align-items:center}.reader-error h2{font:500 23px var(--serif)}.reader-error p{color:var(--text-secondary);font-size:13px;max-width:28em}.reader-error .button{margin-top:20px}.reader-error .captcha-root,.reader-error .altcha-wrap,.reader-error .turnstile-widget{margin-left:auto;margin-right:auto}.shelf-list{max-width:900px;margin:0 auto}.shelf-item{display:grid;grid-template-columns:84px 1fr auto;gap:19px;padding:19px 0;border-bottom:1px solid var(--border-color)}.shelf-cover{width:84px;height:112px;border:1px solid var(--border-color);background:#e9dfce}.shelf-info h2{font:500 17px var(--serif);margin:2px 0 8px}.shelf-info p{margin:0 0 9px;color:var(--text-secondary);font-size:12px}.shelf-info>small{display:block;margin-top:7px;font-size:10px}.text-link{display:inline-block;color:var(--primary-color);font-size:11px;margin-top:12px}.remove-link{align-self:start;background:transparent;border:0;color:var(--muted);font-size:11px;cursor:pointer}.progress-track{width:min(240px,100%);height:3px;background:#e7dfd3;margin-top:12px}.progress-track span{height:100%;display:block;background:#a68c69}.shelf-empty .button{margin-top:12px}.ad-wrap{width:min(100% - 56px,1120px);margin:0 auto 30px;border:1px solid var(--border-color);padding:10px;background:var(--surface-color)}.ad-frame{display:block;border:0;width:100%;min-height:70px}.admin-login{min-height:68vh;display:grid;place-items:center}.login-card{width:min(100%,400px);padding:40px;background:var(--surface-color);border:1px solid var(--border-color);text-align:center}.login-mark{margin:22px auto 12px}.login-card h1{font:500 25px var(--serif);margin:8px}.login-card>p{font-size:12px;color:var(--text-secondary);margin-bottom:26px}.login-card form{text-align:left}.login-card label,.settings-form>label{display:flex;flex-direction:column;gap:8px;margin:14px 0;font-size:12px;color:var(--text-secondary)}.login-card input,.settings-form input:not([type=checkbox]),.settings-form textarea,.settings-form select{width:100%;padding:12px;border:1px solid var(--border-color);background:#fffdf7;color:var(--text-color);outline:0}.login-card input:focus,.settings-form input:focus,.settings-form textarea:focus,.settings-form select:focus{border-color:#b49c7b}.login-submit{width:100%;margin:10px 0 18px}.admin-layout{display:grid;grid-template-columns:205px 1fr;gap:35px;min-height:70vh;padding-top:35px}.admin-sidebar{border-right:1px solid var(--border-color);padding-right:22px}.admin-sidebar h2{font:500 20px var(--serif);margin:10px 0 25px}.admin-nav{width:100%;padding:11px 10px;border:0;background:transparent;text-align:left;color:var(--text-secondary);font-size:12px;cursor:pointer;display:flex;justify-content:space-between}.admin-nav.active,.admin-nav:hover{background:#ebe2d4;color:#725b3f}.admin-nav.logout{margin-top:30px;border-top:1px solid var(--border-color);padding-top:20px}.admin-heading{display:flex;align-items:center;justify-content:space-between;margin:5px 0 25px}.admin-heading h1{font-size:28px;margin:6px 0}.admin-section{padding:8px 0}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.stat-card{padding:19px;border:1px solid var(--border-color);background:var(--surface-color);display:flex;flex-direction:column;gap:16px}.stat-card span{font-size:11px;color:var(--text-secondary)}.stat-card strong{font:500 28px var(--serif);color:var(--primary-color)}.stat-card .stat-text{font-size:18px}.admin-note{display:flex;align-items:center;gap:15px;margin-top:30px;padding:20px;background:#eee7db}.admin-note strong{font:500 15px var(--serif)}.admin-note p,.form-hint{color:var(--text-secondary);font-size:12px}.settings-form{max-width:720px}.settings-form>label{margin:0 0 22px}.toggle-row{flex-direction:row!important;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--border-color)}.toggle-row span{display:flex;flex-direction:column;gap:5px}.toggle-row strong{font-weight:500;color:var(--text-color)}.toggle-row small{font-size:10px;color:var(--muted)}.toggle-row input{accent-color:var(--primary-color);width:17px;height:17px}.settings-form .button{margin:8px 0 25px}.settings-form textarea{resize:vertical;font-family:monospace;font-size:12px}.table-wrap{overflow:auto;border:1px solid var(--border-color);background:var(--surface-color);margin-top:14px}table{width:100%;border-collapse:collapse;text-align:left;font-size:11px}th,td{padding:12px;border-bottom:1px solid var(--border-color);white-space:nowrap}th{color:#806b50;font-weight:500;background:#f3ede2}.log-refresh{margin-bottom:12px}@media (max-width:760px){.topbar{height:62px;padding:0 19px}.brand{font-size:17px}.brand-mark{width:31px;height:31px;font-size:18px}.topbar nav{gap:15px;font-size:11px}.topbar-actions{gap:8px}.locale-switch{gap:3px;font-size:9px}.locale-switch input{width:26px;height:15px}.locale-switch input:before{width:9px;height:9px}.locale-switch input:checked:before{transform:translate(11px)}.page{width:calc(100% - 38px)}.site-footer{width:calc(100% - 38px);margin-top:44px;gap:15px;font-size:10px}.hero{min-height:275px;padding:32px 5px}.hero h1{font-size:34px}.hero p{max-width:245px;line-height:1.8}.hero-art{width:130px;height:190px;margin:0 4px 0 0;transform:scale(.8);transform-origin:right center}.art-sun{width:130px;height:130px;right:3px;top:22px}.art-book{right:10px;top:47px;width:91px;height:127px}.art-leaf{right:-8px}.search-panel{margin:22px 0 39px;height:56px;padding-left:13px}.search-panel .button{padding:0 13px}.search-panel input{font-size:12px}.section-heading h2{font-size:19px}.book-grid{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:14px;row-gap:16px}.cover-frame{height:clamp(130px,46vw,205px)}.book-meta{padding:9px 0;gap:4px}.book-meta strong{font-size:12px}.book-meta span{font-size:10px}.view-heading{padding-top:35px}.view-heading h1{font-size:29px}.search-panel-wide{margin:18px 0 28px}.book-detail{grid-template-columns:112px 1fr;gap:17px;padding-top:0}.detail-cover{grid-row:auto;height:160px}.book-detail h1{font-size:23px;margin:8px 0}.detail-info{padding:5px 0}.detail-description-wrap,.detail-facts,.reading-progress,.detail-actions{grid-column:1/-1}.detail-description-wrap{margin:14px 0 0}.detail-description{font-size:13px}.detail-description.collapsed{-webkit-line-clamp:4;line-clamp:4;max-height:8.4em}.detail-facts{margin-top:12px}.detail-actions{margin-top:16px}.detail-facts{grid-column:1/-1;gap:9px}.detail-actions{grid-column:1/-1;margin-top:16px}.detail-actions .button{flex:1;padding:0 9px}.chapter-row{font-size:12px}.reader-toolbar{top:0}.reader-bookline{margin-top:39px}.reader-content h1{font-size:21px}.reader-divider{margin-bottom:34px}.prose{line-height:2.12}.reader-pager{gap:6px}.reader-pager .button{padding:0 10px;font-size:10px}.shelf-item{grid-template-columns:68px 1fr auto;gap:12px}.shelf-cover{width:68px;height:92px}.shelf-info h2{font-size:15px}.admin-layout{grid-template-columns:1fr;gap:15px;padding-top:16px}.admin-sidebar{border:0;border-bottom:1px solid var(--border-color);padding:0 0 12px;display:flex;gap:6px;overflow:auto;align-items:center}.admin-sidebar>.eyebrow,.admin-sidebar h2{display:none}.admin-nav{width:auto;white-space:nowrap;padding:9px 11px;font-size:11px}.admin-nav.logout{margin:0;border:0;padding:9px 11px}.admin-heading h1{font-size:24px}.stats-grid{grid-template-columns:1fr 1fr}.stat-card{padding:14px}.stat-card strong{font-size:24px}.login-card{padding:30px 22px}.ad-wrap{width:calc(100% - 38px)}}@media (max-width:420px){.hero-art{transform:scale(.66);width:100px;margin-right:0}.hero h1{font-size:30px}.book-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cover-frame{height:clamp(175px,60vw,240px)}.section-heading .muted{font-size:10px}}
