/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.block{display:block}.contents{display:contents}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.rounded{border-radius:.25rem}}:root{--paper:#f3eddf;--paper-light:#fbf8f1;--paper-deep:#e7dcc6;--ink:#1f2925;--ink-soft:#68716c;--forest:#173a31;--forest-2:#245447;--forest-3:#dce8df;--cinnabar:#bf4b35;--cinnabar-dark:#923524;--amber:#c98b2f;--line:#1f292524;--line-strong:#1f29253d;--shadow:0 18px 50px #392e1d1a;--shadow-small:0 8px 24px #392e1d14;--font-serif:"Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC", SimSun, serif;--font-sans:"PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif}*{box-sizing:border-box}html{background:var(--paper);scroll-behavior:smooth;min-width:320px}body{min-height:100vh;color:var(--ink);background:radial-gradient(circle at 11% 18%, #bf4b350f 0 1px, transparent 1.5px) 0 0 / 19px 19px, linear-gradient(115deg, #ffffff52, transparent 38%), var(--paper);font-family:var(--font-sans);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0}button,input,textarea,select{color:inherit;font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{border:0}a{color:inherit;text-decoration:none}textarea{resize:vertical}::selection{color:#fffaf0;background:var(--cinnabar)}:focus-visible{outline-offset:3px;outline:3px solid #bf4b356b}.app-shell{grid-template-columns:236px minmax(0,1fr);gap:0;width:min(1500px,100%);min-height:100vh;margin:0 auto;display:grid}.sidebar{z-index:20;color:#f8f2e6;background:linear-gradient(#ffffff06 1px, transparent 1px) 0 0 / 100% 32px, var(--forest);scrollbar-color:#ffffff38 transparent;scrollbar-width:thin;border-right:1px solid #ffffff14;flex-direction:column;height:100vh;padding:30px 24px 24px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{border-bottom:1px solid #ffffff21;align-items:center;gap:13px;min-height:74px;padding-bottom:26px;display:flex}.brand-mark,.seal{color:#fff7ea;background:var(--cinnabar);width:44px;height:52px;font-family:var(--font-serif);border:1px solid #ffffff4d;border-radius:4px 4px 13px;flex:none;place-items:center;font-size:20px;font-weight:700;display:grid;position:relative;box-shadow:inset 0 0 0 3px #ffffff1a}.brand-mark:after,.seal:after{content:"";background:var(--forest);border-radius:50%;width:10px;height:10px;position:absolute;bottom:7px;right:-5px}.brand-copy{min-width:0}.brand-title{font-family:var(--font-serif);letter-spacing:.12em;margin:0;font-size:20px;font-weight:800}.brand-subtitle{color:#ffffff91;letter-spacing:.14em;text-transform:uppercase;margin:4px 0 0;font-size:11px}.nav-list{gap:8px;margin:28px 0;padding:0;list-style:none;display:grid}.nav-item{color:#ffffffa3;cursor:pointer;text-align:left;background:0 0;border:1px solid #0000;border-radius:10px 10px 10px 3px;align-items:center;gap:12px;width:100%;min-height:48px;padding:0 14px;transition:color .18s,background .18s,transform .18s;display:flex}.nav-item:hover{color:#fff;background:#ffffff12;transform:translate(2px)}.nav-item.active,.nav-item[aria-current=page]{color:#fffaf0;background:#f8f2e61f;border-color:#ffffff21}.nav-icon{color:#d9cbb3;width:28px;font-family:var(--font-serif);text-align:center;font-size:18px}.sidebar-foot,.sidebar-footer{color:#ffffff8c;border-top:1px solid #ffffff21;margin-top:auto;padding-top:18px;font-size:12px;line-height:1.65}.user-chip{align-items:center;gap:10px;padding:10px 0;display:flex}.main-content,.main{min-width:0;padding:28px 34px 72px}.topbar{justify-content:space-between;align-items:center;gap:16px;min-height:48px;margin-bottom:22px;display:flex}.page-date,.eyebrow,.section-kicker,.chapter-kicker{color:var(--ink-soft);letter-spacing:.16em;text-transform:uppercase;font-size:12px;font-weight:700}.topbar h1,.section-title,.panel-title{font-family:var(--font-serif);letter-spacing:.03em;margin:2px 0 0;font-size:clamp(23px,2.2vw,31px);font-weight:800}.status-pill,.role-pill,.badge,.deadline{border:1px solid var(--line);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;min-height:30px;padding:6px 11px;font-size:12px;font-weight:700;display:inline-flex}.status-pill:before,.deadline:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #ffffff24}.hero-card{color:#fffaf0;background:linear-gradient(135deg, #ffffff0d, transparent 52%), var(--forest);border:1px solid #11302840;border-radius:18px 18px 58px;min-height:330px;padding:clamp(24px,4vw,42px);position:relative;overflow:hidden;box-shadow:0 22px 50px #173a3133}.hero-card:before{content:"";border:1px solid #ffffff1c;border-radius:50%;width:310px;height:310px;position:absolute;top:-78px;right:-60px;box-shadow:0 0 0 42px #ffffff06,0 0 0 86px #ffffff05}.hero-card:after{content:"读\a 书\a 会";white-space:pre;color:#fffaf0d1;background:var(--cinnabar);width:42px;height:116px;font-family:var(--font-serif);text-align:center;border-radius:0 0 20px 20px;padding-top:18px;font-size:14px;font-weight:700;line-height:1.65;position:absolute;top:0;right:42px}.hero-card>*{z-index:1;position:relative}.hero-card .chapter-kicker,.hero-card .eyebrow{color:#ffffff94}.hero-title,.hero-card h2{width:min(690px,82%);font-family:var(--font-serif);letter-spacing:.02em;margin:13px 0 10px;font-size:clamp(31px,4.2vw,52px);font-weight:800;line-height:1.15}.hero-description,.book-title{color:#ffffffad;margin:0;font-size:14px;line-height:1.75}.hero-meta,.hero-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-top:30px;display:flex}.hero-card .deadline,.hero-card .status-pill{color:#f8ead2;background:#ffffff12;border-color:#ffffff29}.primary-button,.checkin-button,.floating-checkin{color:#fffaf0;background:var(--cinnabar);cursor:pointer;border:1px solid #7a25175c;border-radius:10px 10px 16px 4px;justify-content:center;align-items:center;gap:9px;min-height:48px;padding:0 20px;font-weight:800;transition:transform .18s,background .18s,box-shadow .18s;display:inline-flex;box-shadow:0 9px 24px #58211638}.primary-button:hover,.checkin-button:hover,.floating-checkin:hover{background:var(--cinnabar-dark);transform:translateY(-2px);box-shadow:0 12px 30px #58211647}.primary-button:disabled,.checkin-button:disabled,.floating-checkin:disabled,button:disabled{cursor:not-allowed;opacity:.55;transform:none}.secondary-button,.ghost-button,.icon-button,.text-button{min-height:42px;color:var(--forest);border:1px solid var(--line);cursor:pointer;background:#ffffff8c;border-radius:9px;justify-content:center;align-items:center;gap:7px;padding:0 14px;font-weight:700;transition:background .18s,border-color .18s,transform .18s;display:inline-flex}.secondary-button:hover,.ghost-button:hover,.icon-button:hover,.text-button:hover{border-color:var(--line-strong);background:#fff}.hero-card .secondary-button,.hero-card .ghost-button{color:#fff8eb;background:#ffffff14;border-color:#ffffff30}.hero-card .secondary-button:hover,.hero-card .ghost-button:hover{background:#ffffff26}.progress-block{margin-top:30px}.progress-copy{color:#ffffffad;justify-content:space-between;gap:12px;margin-bottom:8px;font-size:12px;display:flex}.progress-bar{background:#ffffff1f;border-radius:999px;height:8px;overflow:hidden}.progress-bar>span,.progress-fill{border-radius:inherit;background:linear-gradient(90deg,#dbc391,#f6ead0);height:100%;transition:width .5s cubic-bezier(.22,1,.36,1);display:block}.content-section,.feed{margin-top:34px}.section-head,.feed-header,.panel-head{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}.section-head p,.feed-header p,.panel-head p{color:var(--ink-soft);margin:4px 0 0;font-size:13px}.feed-list,.card-list{gap:16px;display:grid}.post-card,.member-card,.penalty-row,.empty-state,.settings-card{background:linear-gradient(90deg, #173a3105 1px, transparent 1px) 0 0 / 28px 100%, var(--paper-light);border:1px solid var(--line);box-shadow:var(--shadow-small);border-radius:13px 13px 28px;position:relative}.post-card{padding:22px 24px 18px}.post-card:before{content:"";background:var(--cinnabar);border-radius:0 3px 3px 0;width:4px;height:48px;position:absolute;top:22px;left:-1px}.post-head{align-items:center;gap:12px;display:flex}.avatar{color:#fffaf0;background:var(--forest-2);width:42px;height:42px;font-family:var(--font-serif);border:3px solid #e4d8c2;border-radius:50% 50% 50% 15%;flex:none;place-items:center;font-weight:800;display:grid}.avatar.small{border-width:2px;width:34px;height:34px;font-size:12px}.post-author,.member-name{color:var(--ink);margin:0;font-size:14px;font-weight:800}.post-meta,.member-meta,.muted{color:var(--ink-soft);margin:3px 0 0;font-size:12px}.post-chapter{color:var(--forest-2);font-family:var(--font-serif);margin-left:auto;font-size:12px;font-weight:700}.post-content{color:#313a36;font-family:var(--font-serif);white-space:pre-wrap;margin:18px 0;font-size:16px;line-height:1.95}.post-actions{border-top:1px solid var(--line);align-items:center;gap:8px;padding-top:12px;display:flex}.post-actions button,.action-button{min-height:38px;color:var(--ink-soft);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;align-items:center;gap:6px;padding:0 11px;font-size:13px;font-weight:700;display:inline-flex}.post-actions button:hover,.action-button:hover{color:var(--forest);background:var(--forest-3)}.post-actions button.active,.post-actions button[aria-pressed=true],.action-button.active{color:var(--cinnabar);background:#bf4b3514}.comment-list{background:#e7dcc661;border-radius:10px;gap:9px;margin-top:12px;padding:12px 14px;display:grid}.comment-item{color:#46504b;font-size:13px;line-height:1.65}.comment-item strong{color:var(--forest)}.inline-comment{gap:8px;margin-top:12px;display:flex}.inline-comment input{flex:1;min-width:0}.right-rail{align-self:start;height:auto;padding:0;position:sticky;top:28px;overflow:visible}.summary-card,.rail-card{border:1px solid var(--line);box-shadow:var(--shadow-small);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fbf8f1bf;border-radius:14px 14px 32px;margin-bottom:16px;padding:22px}.summary-card.dark,.rail-card.dark{color:#fff8eb;background:var(--forest);border-color:#173a3173}.summary-title,.rail-title{font-family:var(--font-serif);margin:0 0 16px;font-size:17px;font-weight:800}.stat-grid{grid-template-columns:1fr 1fr;gap:9px;display:grid}.stat-item,.stat{background:#173a310d;border:1px solid #173a3114;border-radius:10px;padding:13px}.dark .stat-item,.dark .stat{background:#ffffff0f;border-color:#ffffff14}.stat-value{font-family:var(--font-serif);font-size:24px;font-weight:800;display:block}.stat-label{color:var(--ink-soft);margin-top:3px;font-size:11px;display:block}.dark .stat-label{color:#ffffff85}.rail-list{gap:11px;margin:0;padding:0;list-style:none;display:grid}.rail-list li{border-bottom:1px dashed var(--line);justify-content:space-between;align-items:center;gap:10px;padding-bottom:11px;font-size:13px;display:flex}.rail-list li:last-child{border:0;padding-bottom:0}.member-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.member-card{padding:20px}.member-card-head{align-items:center;gap:11px;display:flex}.member-card .status-pill{margin-left:auto}.member-stats{border-top:1px dashed var(--line);grid-template-columns:repeat(3,1fr);gap:8px;margin-top:18px;padding-top:14px;display:grid}.member-stats span{color:var(--ink-soft);font-size:11px}.member-stats strong{color:var(--ink);font-family:var(--font-serif);margin-top:4px;font-size:18px;display:block}.status-completed,.paid,.success{color:#2c6b56;background:#2c6b5617;border-color:#2c6b5629}.status-pending,.unpaid,.warning{color:#9b621b;background:#c98b2f1f;border-color:#c98b2f33}.status-missed,.danger{color:var(--cinnabar-dark);background:#bf4b351a;border-color:#bf4b3533}.waived,.neutral{color:#66706b;background:#66706b17}.penalty-list{gap:10px;display:grid}.penalty-row{grid-template-columns:minmax(130px,1.2fr) minmax(140px,1fr) 90px auto;align-items:center;gap:14px;min-height:84px;padding:17px 18px;display:grid}.penalty-amount{color:var(--cinnabar-dark);font-family:var(--font-serif);font-size:20px;font-weight:800}.penalty-actions{justify-content:flex-end;gap:7px;display:flex}.empty-state{color:var(--ink-soft);text-align:center;padding:54px 24px}.empty-state-mark{width:58px;height:58px;color:var(--forest);background:var(--forest-3);font-family:var(--font-serif);border-radius:50% 50% 50% 16px;place-items:center;margin:0 auto 16px;font-size:25px;display:grid}.empty-state h3{color:var(--ink);font-family:var(--font-serif);margin:0 0 7px;font-size:19px}.loading-line{background:var(--paper-deep);height:3px;overflow:hidden}.loading-line:after{content:"";background:var(--cinnabar);width:30%;height:100%;animation:1.2s ease-in-out infinite loading-slide;display:block}.mobile-nav,.floating-checkin{display:none}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#121d19a8;place-items:center;padding:24px;animation:.16s both fade-in;display:grid;position:fixed;inset:0}.modal,.dialog{background:var(--paper-light);border:1px solid #ffffffa6;border-radius:18px 18px 42px;width:min(590px,100%);max-height:min(820px,100vh - 48px);animation:.24s cubic-bezier(.22,1,.36,1) both dialog-in;overflow-y:auto;box-shadow:0 34px 100px #06140f59}.modal-header,.dialog-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;gap:16px;padding:24px 26px 18px;display:flex}.modal-body,.dialog-body,.form-body{padding:24px 26px}.modal-footer,.dialog-footer{justify-content:flex-end;gap:9px;padding:16px 26px 24px;display:flex}.form-grid,.form-stack{gap:16px;display:grid}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.field{gap:7px;display:grid}.field label,.field-label{color:#3b4541;font-size:13px;font-weight:800}.field input,.field textarea,.field select,input.input,textarea.input,select.input,.inline-comment input{width:100%;min-height:46px;color:var(--ink);border:1px solid var(--line-strong);background:#ffffffc7;border-radius:9px;outline:none;padding:11px 13px;transition:border-color .16s,box-shadow .16s,background .16s}.field textarea,textarea.input{min-height:150px;font-family:var(--font-serif);font-size:16px;line-height:1.8}.field input:focus,.field textarea:focus,.field select:focus,input.input:focus,textarea.input:focus,select.input:focus,.inline-comment input:focus{border-color:var(--forest-2);background:#fff;box-shadow:0 0 0 4px #24544717}.field-help,.character-count{color:var(--ink-soft);font-size:11px}.character-count{text-align:right}.toast{z-index:150;color:#fffaf0;background:var(--forest);border:1px solid #ffffff24;border-radius:10px 10px 18px 5px;align-items:center;gap:10px;max-width:min(390px,100vw - 32px);padding:14px 18px;font-size:13px;animation:.26s cubic-bezier(.22,1,.36,1) both toast-in;display:flex;position:fixed;bottom:28px;right:28px;box-shadow:0 18px 46px #121d1940}.admin-actions{flex-wrap:wrap;gap:9px;display:flex}.settings-card{padding:22px}.brand{width:100%;color:inherit;cursor:pointer;text-align:left;background:0 0}.brand>span:last-child{min-width:0;display:grid}.brand strong{font-family:var(--font-serif);letter-spacing:.08em;text-overflow:ellipsis;white-space:nowrap;font-size:19px;overflow:hidden}.brand small{color:#ffffff7a;letter-spacing:.2em;margin-top:4px;font-size:9px}.nav-item em,.mobile-nav em{color:#fff7ea;background:var(--cinnabar);border-radius:999px;place-items:center;min-width:21px;height:21px;margin-left:auto;font-size:10px;font-style:normal;display:grid}.sidebar-book{color:#ffffff9e;background:#ffffff0e;border:1px solid #ffffff1a;border-radius:11px 11px 20px 5px;margin-top:auto;padding:17px 14px}.sidebar-book>span{letter-spacing:.13em;font-size:10px}.sidebar-book strong{color:#fff8eb;font-family:var(--font-serif);margin-top:8px;font-size:14px;line-height:1.55;display:block}.sidebar-book p{margin:7px 0 0;font-size:11px;line-height:1.55}.book-progress{gap:5px;margin-top:14px;display:flex}.book-progress i{background:#ffffff29;border-radius:999px;width:18px;height:3px}.book-progress i.active{background:#d6b06c;width:30px}.sidebar-profile{color:#ffffffad;cursor:pointer;text-align:left;background:0 0;border-top:1px solid #ffffff1a;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:9px;width:100%;min-height:58px;margin-top:14px;padding:9px 3px;display:grid}.sidebar-profile>span:nth-child(2){min-width:0;display:grid}.sidebar-profile strong{color:#fff8eb;text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.sidebar-profile small{text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:10px;overflow:hidden}.dashboard-grid{grid-template-columns:minmax(0,1fr) 304px;align-items:start;gap:24px;display:grid}.primary-column{min-width:0}.topbar>div:first-child>span{color:var(--ink-soft);letter-spacing:.12em;font-size:11px;font-weight:800}.topbar-actions{align-items:center;gap:10px;display:flex}.sync-status{min-height:32px;color:var(--ink-soft);border:1px solid var(--line);background:#fff6;border-radius:999px;align-items:center;gap:7px;padding:0 10px;font-size:11px;display:inline-flex}.sync-status i{background:#3d7b65;border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 4px #3d7b651a}.sync-status.has-error i{background:var(--amber);box-shadow:0 0 0 4px #c98b2f1f}.top-checkin-button{color:#fff8eb;background:var(--forest);cursor:pointer;border-radius:9px 9px 14px 4px;min-height:42px;padding:0 15px;font-weight:800}.error-banner{color:#765025;background:#fbefd5;border:1px solid #c98b2f40;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:13px 15px;font-size:12px;display:flex}.error-banner button{color:#765025;cursor:pointer;background:#ffffff8c;border:1px solid #76502533;border-radius:8px;min-height:36px;padding:0 12px;font-weight:800}.hero-decoration{color:#ffffff0b;font-family:var(--font-serif);letter-spacing:-.12em;font-size:clamp(150px,20vw,240px);font-weight:900;line-height:1;bottom:-26px;right:82px;z-index:0!important;position:absolute!important}.live-dot{background:#e2c077;border-radius:50%;width:7px;height:7px;display:inline-block;box-shadow:0 0 0 5px #e2c0771a}.hero-note{color:#ffffffa3;width:min(590px,82%);font-family:var(--font-serif);margin:16px 0 0;font-size:14px;line-height:1.8}.hero-card .deadline{color:#fff7ea;background:#ffffff12;align-items:center;gap:10px;width:fit-content;min-height:52px;margin-top:22px;padding:8px 14px 8px 8px;display:flex}.hero-card .deadline:before{display:none}.deadline-icon{width:34px;height:34px;color:var(--forest);font-family:var(--font-serif);background:#e2c077;border-radius:8px 8px 12px 4px;place-items:center;font-weight:900;display:grid}.deadline small{color:#ffffff80;font-size:10px;display:block}.deadline strong{margin-top:2px;font-size:12px;display:block}.progress-group{width:min(520px,100%);margin-top:21px}.checkin-state{color:#ffffff8c;font-size:12px}.checkin-state.is-done{color:#cbe6d9}.section-heading,.page-actions{justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:16px;display:flex}.section-heading h2,.section-heading h3,.page-actions h2{font-family:var(--font-serif);margin:3px 0 0;font-size:25px;font-weight:800}.section-eyebrow{color:var(--ink-soft);letter-spacing:.15em;font-size:10px;font-weight:800}.feed-count,.rule-badge{min-height:30px;color:var(--forest-2);background:var(--forest-3);border-radius:999px;align-items:center;padding:0 11px;font-size:11px;font-weight:800;display:inline-flex}.post-body h3{font-family:var(--font-serif);margin:18px 0 6px;font-size:18px;font-weight:800}.post-body p{color:#3d4742;font-family:var(--font-serif);white-space:pre-wrap;margin:0 0 18px;font-size:15px;line-height:1.9}.post-template-label{color:var(--ink);font-weight:900}.post-author{min-width:0;display:grid}.post-author strong{font-size:13px}.post-author span{color:var(--ink-soft);margin-top:3px;font-size:11px}.member-log-link{-webkit-appearance:none;appearance:none;width:fit-content;color:inherit;font:inherit;font-weight:inherit;line-height:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:0;margin:0;padding:0}:is(.member-log-link:hover,.member-log-link:focus-visible){color:var(--cinnabar-dark);text-underline-offset:3px;background:0 0;outline:0;text-decoration:underline;text-decoration-thickness:1px}.post-author .member-log-link{font-size:13px;font-weight:800}.chapter-tag{color:var(--forest-2);font-family:var(--font-serif);margin-left:auto;font-size:11px;font-weight:700}.action-button.is-liked,.like-button[aria-pressed=true]{color:var(--cinnabar);background:#bf4b3514}.like-action-wrap{position:relative}.like-action-group{background:#ffffff61;border:1px solid #1f473c1f;border-radius:9px;align-items:stretch;display:inline-flex}.post-actions .like-action-group .like-button,.post-actions .like-action-group .like-roster-trigger{border:0;border-radius:8px 0 0 8px}.post-actions .like-action-group .like-roster-trigger{min-width:48px;color:var(--forest-2);font-variant-numeric:tabular-nums;border-left:1px solid #1f473c1f;border-radius:0 8px 8px 0;padding-inline:9px}.like-roster{z-index:12;width:min(280px,100vw - 44px);color:var(--ink);background:#fefbf3fa;border:1px solid #19443929;border-radius:13px;padding:14px;position:absolute;top:calc(100% + 8px);left:0;box-shadow:0 18px 42px #0f302833}.like-roster-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:14px;padding-bottom:10px;display:flex}.like-roster-head strong{font-family:var(--font-serif);font-size:14px}.like-roster-head span,.like-roster>small{color:var(--ink-soft);font-size:11px}.like-roster ul{gap:7px;max-height:220px;margin:10px 0 0;padding:0;list-style:none;display:grid;overflow:auto}.like-roster li{align-items:center;gap:8px;display:flex}.post-actions .like-roster .member-log-link{min-height:30px;color:var(--forest);background:0 0;border:0;padding:0;font-size:13px}:is(.post-actions .like-roster .member-log-link:hover,.post-actions .like-roster .member-log-link:focus-visible){color:var(--cinnabar-dark);background:0 0}.like-roster>p{color:var(--ink-soft);margin:11px 0 0;font-size:12px;line-height:1.6}.like-roster>small{margin-top:10px;display:block}.feed-heading-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.feed-filter-bar{background:linear-gradient(105deg,#deebe19e,#faf4e7bd);border:1px solid #1e4e4121;border-radius:13px;grid-template-columns:minmax(220px,1fr) minmax(140px,180px) minmax(140px,180px) auto;align-items:end;gap:11px;margin:-2px 0 15px;padding:13px 14px;display:grid}.feed-filter-copy{align-items:center;gap:10px;display:flex}.feed-filter-copy>span{color:#fffaf0;background:var(--forest-2);width:34px;height:34px;font-family:var(--font-serif);border-radius:10px 10px 10px 3px;flex:none;place-items:center;font-weight:800;display:grid}.feed-filter-copy div{gap:2px;display:grid}.feed-filter-copy strong{color:var(--forest);font-family:var(--font-serif);font-size:13px}.feed-filter-copy small{color:var(--ink-soft);font-size:10px}.feed-filter-bar label{gap:5px;display:grid}.feed-filter-bar label>span{color:var(--ink-soft);font-size:10px;font-weight:800}.feed-filter-bar select{width:100%;min-height:38px;color:var(--ink);background:#fffdf7e6;border:1px solid #1e483d2e;border-radius:9px;padding:0 34px 0 11px;font-size:12px}.feed-filter-bar select:focus-visible{border-color:var(--forest-2);outline-offset:2px;outline:3px solid #295d4e24}.feed-filter-clear{min-height:38px;color:var(--cinnabar-dark);cursor:pointer;background:#fff8f2c2;border:1px solid #b0483433;border-radius:9px;padding:0 12px;font-size:11px;font-weight:800}:is(.feed-filter-clear:hover,.feed-filter-clear:focus-visible){background:#bf4b351a;outline:0}.feed-filter-empty{min-height:260px}.vote-quota{color:#765025;background:#fbefd5;border:1px solid #c98b2f38;border-radius:999px;align-items:center;gap:4px;min-height:30px;padding:0 12px;font-size:11px;font-weight:700;display:inline-flex}.vote-quota strong{color:var(--cinnabar-dark);font-size:15px}.vote-quota.is-empty{color:var(--ink-soft);background:#68716c14;border-color:#68716c29}.vote-button.is-voted,.vote-button[aria-pressed=true]{color:#805315;background:#c98b2f21;border-color:#c98b2f29}.vote-button .vote-mark{color:#fffaf0;background:var(--amber);width:22px;height:22px;font-family:var(--font-serif);border-radius:6px 6px 9px 3px;place-items:center;font-size:10px;font-weight:900;display:inline-grid}.vote-button strong{min-width:18px;color:inherit;text-align:center;font-size:12px}.vote-button:disabled{color:var(--ink-soft);background:#68716c0b}.comments-panel{background:#e7dcc657;border:1px solid #1f292512;border-radius:11px;margin-top:12px;padding:14px}.comments-panel .comment-list{background:0 0;margin:0 0 12px;padding:0}.comment-item{align-items:flex-start;gap:8px;display:flex}.mini-avatar{color:#fff8eb;background:var(--forest-2);width:30px;height:30px;font-family:var(--font-serif);border-radius:50% 50% 50% 10px;flex:none;place-items:center;font-size:11px;font-weight:800;display:grid}.comment-bubble{flex:1;min-width:0}.comment-bubble>div{justify-content:space-between;align-items:center;gap:8px;display:flex}.comment-bubble time{color:var(--ink-soft);font-size:10px}.comment-bubble p,.empty-inline{color:#4e5853;margin:3px 0 0;font-size:12px;line-height:1.6}.comment-form{gap:8px;display:flex}.comment-form input{border:1px solid var(--line);background:#ffffffc7;border-radius:8px;outline:none;flex:1;min-width:0;min-height:42px;padding:0 12px}.comment-form input:focus{border-color:var(--forest-2);box-shadow:0 0 0 4px #24544714}.send-button{color:#fff8eb;background:var(--forest);cursor:pointer;border-radius:8px;min-width:62px;font-size:12px;font-weight:800}.summary-label{color:var(--ink-soft);letter-spacing:.14em;font-size:10px;font-weight:800}.chapter-rhythm>strong{color:var(--forest);font-family:var(--font-serif);margin:8px 0;font-size:26px;display:block}.chapter-rhythm>p,.quote-card blockquote{color:var(--ink-soft);font-family:var(--font-serif);margin:0;font-size:13px;line-height:1.75}.rhythm-track{grid-template-columns:repeat(4,1fr);gap:6px;margin-top:17px;display:grid}.rhythm-track i{background:var(--paper-deep);border-radius:999px;height:4px}.rhythm-track i.active{background:var(--cinnabar)}.summary-card-head{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.summary-card-head button{color:var(--forest-2);cursor:pointer;background:0 0;font-size:10px;font-weight:800}.pending-people{gap:10px;margin:0;padding:0;list-style:none;display:grid}.pending-people li{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.pending-people li>span:nth-child(2){min-width:0;display:grid}.pending-people strong{text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.pending-people .member-log-link{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:11px;font-weight:800;overflow:hidden}.pending-people small{color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:9px;overflow:hidden}.pending-people em{color:#9b621b;font-size:9px;font-style:normal}.all-done{color:#2c6b56;margin:0;font-size:12px}.quote-card{overflow:hidden}.quote-mark{height:32px;color:var(--cinnabar);font-family:Georgia,serif;font-size:52px;line-height:1;display:block}.quote-card cite{color:var(--ink-soft);margin-top:10px;font-size:10px;font-style:normal;display:block}.page-section{animation:.24s both fade-in}.member-filter-summary,.penalty-overview,.achievement-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px;display:grid}.member-filter-summary>div,.achievement-card{border:1px solid var(--line);background:#fbf8f1b3;border-radius:11px 11px 20px 8px;padding:16px}.member-filter-summary strong,.achievement-card strong{font-family:var(--font-serif);font-size:24px;display:block}.member-filter-summary span,.achievement-card small{color:var(--ink-soft);margin-top:3px;font-size:10px;display:block}.member-card-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.avatar.large{width:48px;height:48px}.member-card h3{font-family:var(--font-serif);margin:13px 0 4px;font-size:18px}.member-card h3 small{color:var(--cinnabar);font-family:var(--font-sans);margin-left:7px;font-size:10px}.member-card>p{color:var(--ink-soft);margin:0;font-size:11px}.vote-limit-editor{border-top:1px dashed var(--line);gap:8px;margin-top:16px;padding-top:14px;display:grid}.vote-limit-editor>label{color:var(--ink);justify-content:space-between;align-items:baseline;gap:8px;font-size:12px;font-weight:800;display:flex}.vote-limit-editor>label small{color:var(--ink-soft);font-size:9px;font-weight:500}.vote-limit-control{grid-template-columns:68px minmax(58px,1fr) auto;align-items:center;gap:8px;min-width:0;display:grid}.vote-limit-control input{width:68px;min-height:40px;color:var(--forest);border:1px solid var(--line-strong);text-align:center;background:#ffffffb8;border-radius:8px;padding:0 8px;font-weight:800}.vote-limit-control input:focus{border-color:var(--forest-2);outline:none;box-shadow:0 0 0 4px #24544714}.vote-limit-control input[aria-invalid=true]{border-color:#bf4b3594}.vote-limit-control>span{color:var(--ink-soft);font-size:11px}.vote-limit-control button{color:#fffaf0;background:var(--forest);cursor:pointer;border-radius:8px 8px 12px 4px;min-width:70px;min-height:40px;padding:0 12px;font-size:11px;font-weight:800}.vote-limit-feedback{min-height:15px;color:var(--ink-soft);font-size:10px}.vote-limit-feedback.is-saved{color:#2c6b56}.vote-limit-feedback.is-error{color:var(--cinnabar-dark)}.status-pill.is-done{color:#2c6b56;background:#2c6b5617;border-color:#2c6b5629}.penalty-overview .summary-card{margin:0}.summary-card.emphasis{color:#fff8eb;background:var(--forest)}.summary-card.emphasis .summary-label,.summary-card.emphasis span,.summary-card.emphasis small{color:#ffffff8c}.penalty-overview .summary-card>span,.penalty-overview .summary-card>small{color:var(--ink-soft);font-size:10px}.penalty-overview .summary-card>strong{font-family:var(--font-serif);margin:5px 0 2px;font-size:26px;display:block}.penalty-row{grid-template-columns:auto minmax(90px,.8fr) minmax(180px,1.5fr) 70px 116px}.penalty-person,.penalty-reason{min-width:0}.penalty-person{display:grid}.penalty-person strong{font-size:13px}.penalty-person .member-log-link{font-size:13px;font-weight:800}.penalty-person span,.penalty-reason>span{color:var(--ink-soft);margin-top:3px;font-size:9px}.penalty-reason p{color:#48534e;text-overflow:ellipsis;margin:3px 0 0;font-size:11px;line-height:1.5;overflow:hidden}.status-select select{width:100%;min-height:38px;color:var(--forest);border:1px solid var(--line);cursor:pointer;background:#ffffffa6;border-radius:8px;padding:0 9px;font-size:11px;font-weight:700}.penalty-status{border-radius:999px;justify-content:center;align-items:center;min-height:30px;padding:0 9px;font-size:10px;font-weight:800;display:inline-flex}.status-unpaid{color:#9b621b;background:#c98b2f1f}.status-paid{color:#2c6b56;background:#2c6b5617}.status-waived{color:var(--ink-soft);background:#66706b17}.penalty-note{color:var(--ink-soft);margin:14px 0 0;font-size:10px;line-height:1.65}.profile-hero{color:#fff8eb;background:var(--forest);box-shadow:var(--shadow);border-radius:16px 16px 42px;align-items:center;gap:16px;padding:24px;display:flex}.profile-avatar{background:var(--cinnabar);width:64px;height:64px}.profile-hero h2{font-family:var(--font-serif);margin:3px 0;font-size:27px}.profile-hero p{color:#ffffff91;margin:0;font-size:11px}.profile-hero .secondary-button{color:#fff8eb;background:#ffffff14;border-color:#ffffff2b;margin-left:auto}.profile-layout{grid-template-columns:minmax(0,1fr) 280px;gap:18px;margin-top:18px;display:grid}.achievement-card>span{color:var(--cinnabar);font-family:var(--font-serif);font-size:20px}.my-posts{margin-top:24px}.club-info h3{font-family:var(--font-serif);margin:8px 0;font-size:20px}.club-info>p{color:var(--ink-soft);margin:0;font-size:11px}.club-info dl{margin:16px 0 0}.club-info dl>div{border-top:1px dashed var(--line);justify-content:space-between;gap:10px;padding:9px 0;font-size:10px;display:flex}.club-info dt{color:var(--ink-soft)}.club-info dd{margin:0;font-weight:700}.modal-close{z-index:2;width:38px;height:38px;color:var(--ink-soft);border:1px solid var(--line);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f3eddfe0;border-radius:50%;place-items:center;margin:14px 14px -52px auto;font-size:20px;display:grid;position:sticky;top:14px}.modal-heading{border-bottom:1px solid var(--line);padding:26px 66px 18px 26px}.modal-heading h2{font-family:var(--font-serif);margin:7px 0 6px;font-size:25px;line-height:1.35}.modal-heading p{color:var(--ink-soft);margin:0;font-size:12px;line-height:1.65}.modal-form{gap:9px;padding:22px 26px 26px;display:grid}.modal-form label{color:#3b4541;margin-top:7px;font-size:12px;font-weight:800}.modal-form label small{color:var(--ink-soft);font-weight:500}.modal-form input,.modal-form textarea,.modal-form select{width:100%;min-height:46px;color:var(--ink);border:1px solid var(--line-strong);background:#ffffffc7;border-radius:9px;outline:none;padding:11px 13px}.modal-form textarea{min-height:154px;font-family:var(--font-serif);font-size:16px;line-height:1.8}.invitation-result textarea{overflow-wrap:anywhere;color:#173a31;min-height:108px;font-size:14px;line-height:1.55}.member-invite-button{width:100%;margin-top:12px}.profile-actions{align-items:center;gap:10px;margin-left:auto;display:flex}.modal-form input:focus,.modal-form textarea:focus,.modal-form select:focus{border-color:var(--forest-2);background:#fff;box-shadow:0 0 0 4px #24544717}.form-meta{color:var(--ink-soft);justify-content:space-between;font-size:10px;display:flex}.share-section-label{color:#111;margin:7px 0 0;font-size:12px;font-weight:900}.share-template{border:1px solid var(--line);background:#ffffff7a;border-radius:12px;gap:14px;padding:16px;display:grid}.share-template-topic{color:#000;margin:0;font-size:15px;font-weight:900;line-height:1.5}.share-answer-field{gap:7px;display:grid}.modal-form .share-prompt{color:#000;margin:0;font-size:13px;font-weight:900;line-height:1.55}.modal-form .share-answer{min-height:86px;font-family:var(--font-sans);font-size:14px;font-weight:400;line-height:1.65}.modal-actions{justify-content:flex-end;gap:9px;margin-top:12px;display:flex}.compact{min-height:40px;padding:0 14px;font-size:12px}.toast p{flex:1;margin:0}.toast>button{color:#ffffffa6;cursor:pointer;background:#ffffff14;border-radius:50%;place-items:center;width:28px;height:28px;display:grid}.toast-error{background:var(--cinnabar-dark)}.annual-reading-list{min-width:0;animation:.24s both fade-in}.annual-header{color:#fff8eb;background:linear-gradient(120deg, #ffffff0e, transparent 45%), var(--forest);border:1px solid #173a3159;border-radius:18px 18px 50px;justify-content:space-between;align-items:flex-end;gap:24px;min-height:190px;padding:30px clamp(24px,4vw,42px);display:flex;position:relative;overflow:hidden;box-shadow:0 20px 46px #173a312e}.annual-header:before{content:"";border:1px solid #ffffff17;border-radius:50%;width:260px;height:260px;position:absolute;top:-82px;right:160px;box-shadow:0 0 0 38px #ffffff06,0 0 0 78px #ffffff04}.annual-header:after{content:"年\a 度\a 书\a 单";white-space:pre;color:#fff8eb;background:var(--cinnabar);width:38px;height:88px;font-family:var(--font-serif);text-align:center;border-radius:0 0 18px 18px;padding-top:14px;font-size:11px;font-weight:800;line-height:1.35;position:absolute;top:0;left:clamp(22px,4vw,42px)}.annual-heading,.annual-header-actions{z-index:1;position:relative}.annual-heading{padding-top:70px}.annual-kicker{color:#ffffff8c;letter-spacing:.15em;font-size:10px;font-weight:800}.annual-heading h2{font-family:var(--font-serif);letter-spacing:.03em;margin:8px 0 5px;font-size:clamp(29px,3.2vw,43px);font-weight:900;line-height:1.15}.annual-heading h2 span{color:#e2c077;font-variant-numeric:tabular-nums}.annual-heading p{color:#ffffff91;font-family:var(--font-serif);margin:0;font-size:13px}.annual-header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.annual-year-switcher{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffff14;border:1px solid #ffffff29;border-radius:11px;grid-template-columns:38px 72px 38px;align-items:center;min-height:46px;padding:4px;display:grid}.annual-year-switcher button{color:#ffffffb8;cursor:pointer;background:0 0;border-radius:8px;place-items:center;width:36px;height:36px;font-size:17px;display:grid}.annual-year-switcher button:hover:not(:disabled){color:#fff;background:#ffffff1a}.annual-year-switcher time{color:#fff8eb;font-family:var(--font-serif);text-align:center;font-size:15px;font-weight:900}.annual-add-button,.annual-submit-button{color:#fff8eb;background:var(--cinnabar);cursor:pointer;border:1px solid #5c1b1152;border-radius:10px 10px 15px 4px;justify-content:center;align-items:center;gap:7px;min-height:46px;padding:0 17px;font-size:12px;font-weight:800;transition:background .18s,transform .18s;display:inline-flex;box-shadow:0 9px 24px #3c150d2e}.annual-add-button:hover,.annual-submit-button:hover:not(:disabled){background:var(--cinnabar-dark);transform:translateY(-1px)}.annual-summary{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:14px 0 22px;display:grid}.annual-summary-item{border:1px solid var(--line);min-height:92px;box-shadow:var(--shadow-small);background:#fbf8f1c7;border-radius:12px 12px 24px 9px;margin:0;padding:17px 20px;position:relative;overflow:hidden}.annual-summary-item dt{color:var(--ink-soft);letter-spacing:.12em;font-size:10px;font-weight:800}.annual-summary-item dd{color:var(--forest);font-family:var(--font-serif);margin:5px 0 0;font-size:28px;font-weight:900;line-height:1}.annual-summary-item dd small{color:var(--ink-soft);font-family:var(--font-sans);font-size:10px;font-weight:700}.annual-summary-item>span{color:#173a310f;font-family:var(--font-serif);font-size:54px;font-weight:900;position:absolute;bottom:-10px;right:14px}.annual-loading,.annual-error,.annual-empty{border:1px solid var(--line);min-height:118px;box-shadow:var(--shadow-small);background:#fbf8f1c7;border-radius:13px 13px 28px 10px;align-items:center;gap:14px;margin-bottom:18px;padding:20px 22px;display:flex}.annual-loading-mark,.annual-error-mark,.annual-empty-mark{color:#fff8eb;background:var(--forest);width:50px;height:50px;font-family:var(--font-serif);border-radius:50% 50% 50% 14px;flex:none;place-items:center;font-size:18px;font-weight:900;display:grid}.annual-loading-mark{animation:1.3s ease-in-out infinite annual-pulse}.annual-error-mark{background:var(--cinnabar)}.annual-empty-mark{color:var(--forest);background:var(--forest-3)}.annual-loading strong,.annual-error strong,.annual-empty strong{font-family:var(--font-serif);font-size:16px;display:block}.annual-loading small,.annual-error p,.annual-empty p{color:var(--ink-soft);margin:4px 0 0;font-size:11px;line-height:1.55}.annual-error button,.annual-empty button{min-height:39px;color:var(--forest);border:1px solid var(--line);cursor:pointer;background:#ffffffb3;border-radius:8px;margin-left:auto;padding:0 13px;font-size:11px;font-weight:800}.annual-month-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:14px;display:grid}.annual-month{--month-accent:#567868;border:1px solid var(--line);min-width:0;box-shadow:var(--shadow-small);background:linear-gradient(90deg,#173a3106 1px,#0000 1px) 0 0/23px 100%,#fbf8f1d6;border-radius:13px 13px 30px 11px;padding:17px;position:relative}.annual-month-1,.annual-month-2,.annual-month-12{--month-accent:#778a83}.annual-month-3,.annual-month-4,.annual-month-5{--month-accent:#5d8068}.annual-month-6,.annual-month-7,.annual-month-8{--month-accent:#b27635}.annual-month-9,.annual-month-10,.annual-month-11{--month-accent:#a34e38}.annual-month:before{content:"";background:var(--month-accent);border-radius:0 0 4px 4px;height:3px;position:absolute;top:0;left:28px;right:28px}.annual-month-header{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:60px;display:grid}.annual-month-number{width:44px;color:var(--month-accent);font-family:Georgia, var(--font-serif);letter-spacing:-.06em;font-size:26px;font-weight:700}.annual-month-header h3{font-family:var(--font-serif);margin:0;font-size:17px;font-weight:900}.annual-month-header p{color:var(--ink-soft);font-family:var(--font-serif);margin:3px 0 0;font-size:9px}.annual-month-count{min-height:25px;color:var(--month-accent);background:var(--month-accent);align-items:center;padding:0 8px;display:inline-flex}@supports (color:color-mix(in lab, red, red)){.annual-month-count{background:color-mix(in srgb, var(--month-accent) 10%, transparent)}}.annual-month-count{border-radius:999px;font-size:9px;font-weight:800}.annual-month-books{gap:9px;margin-top:11px;display:grid}.book-card{background:#ffffff9e;border:1px solid #1f29251a;border-radius:10px 10px 18px 8px;grid-template-columns:70px minmax(0,1fr);gap:12px;min-width:0;padding:11px;transition:border-color .18s,box-shadow .18s,transform .18s,opacity .18s;display:grid;position:relative}.book-card:hover{border-color:#173a3133;transform:translateY(-1px);box-shadow:0 10px 24px #392e1d14}.book-card-deleting{opacity:.48;pointer-events:none}.book-cover{aspect-ratio:3/4;color:#fff8eb;background:linear-gradient(135deg, #ffffff1f, transparent 55%), var(--forest-2);border:1px solid #173a312e;border-radius:4px 7px 7px 4px;width:70px;position:relative;overflow:hidden;box-shadow:3px 4px 10px #392e1d24}.book-cover:after{content:"";background:#fff3;width:1px;position:absolute;inset:0 auto 0 5px}.book-cover img{object-fit:cover;width:100%;height:100%;display:block}.book-cover-placeholder{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:7px;padding:10px 8px;display:flex}.book-cover-placeholder>span,.book-cover-preview>span{font-family:var(--font-serif);font-size:24px;font-weight:900}.book-cover-placeholder small,.book-cover-preview small{color:#ffffff80;letter-spacing:.17em;font-size:7px}.book-card-body{min-width:0}.book-card-index{color:var(--month-accent);letter-spacing:.1em;font-size:8px;font-weight:900}.book-card h4{color:var(--ink);font-family:var(--font-serif);text-overflow:ellipsis;margin:4px 0 3px;font-size:14px;font-weight:900;line-height:1.4;overflow:hidden}.book-author{color:var(--ink-soft);margin:0;font-size:9px}.book-meta{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.book-meta span{color:#5c655f;background:#173a310e;border-radius:999px;align-items:center;min-height:22px;padding:0 7px;font-size:8px;font-weight:700;display:inline-flex}.book-notes{color:#626b66;font-family:var(--font-serif);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:7px 0 0;font-size:9px;font-style:italic;line-height:1.55;display:-webkit-box;overflow:hidden}.book-actions{border-top:1px dashed #1f29251a;grid-column:1/-1;justify-content:flex-end;gap:5px;padding-top:7px;display:flex}.book-actions button{min-height:30px;color:var(--forest-2);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:7px;align-items:center;gap:4px;padding:0 8px;font-size:9px;font-weight:800;display:inline-flex}.book-actions button:hover{background:var(--forest-3)}.book-actions .book-delete-button{color:var(--cinnabar)}.book-actions .book-delete-button:hover{background:#bf4b3514}.annual-month-empty{min-height:104px;color:var(--ink-soft);text-align:center;background:#e7dcc62e;border:1px dashed #1f292529;border-radius:9px 9px 18px 8px;place-items:center;padding:17px 12px;display:grid}.annual-month-empty>span{color:var(--month-accent);letter-spacing:.15em;font-family:Georgia,serif;font-size:18px}.annual-month-empty p{font-family:var(--font-serif);margin:0;font-size:10px}.annual-month-empty button{min-height:29px;color:var(--month-accent);cursor:pointer;background:#ffffff94;border:1px solid #1f29251a;border-radius:7px;padding:0 9px;font-size:9px;font-weight:800}.annual-dialog-backdrop{z-index:110;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#121d19b3;place-items:center;padding:22px;animation:.16s both fade-in;display:grid;position:fixed;inset:0}.annual-dialog{background:var(--paper-light);border:1px solid #ffffffa6;border-radius:18px 18px 44px;width:min(720px,100%);max-height:min(900px,100vh - 44px);animation:.24s cubic-bezier(.22,1,.36,1) both dialog-in;position:relative;overflow-y:auto;box-shadow:0 35px 110px #06140f61}.annual-dialog-close{z-index:2;width:38px;height:38px;color:var(--ink-soft);border:1px solid var(--line);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#f3eddfe6;border-radius:50%;place-items:center;margin:14px 14px -52px auto;font-size:20px;display:grid;position:sticky;top:14px}.annual-dialog-header{color:#fff8eb;background:linear-gradient(115deg, #ffffff0d, transparent 55%), var(--forest);border-bottom:4px solid var(--cinnabar);padding:28px 72px 20px 28px}.annual-dialog-header>span{color:#e2c077;letter-spacing:.16em;font-size:9px;font-weight:900}.annual-dialog-header h3{font-family:var(--font-serif);margin:7px 0 5px;font-size:25px;font-weight:900}.annual-dialog-header p{color:#ffffff8f;margin:0;font-size:10px;line-height:1.6}.annual-book-form{padding:22px 28px 28px}.annual-form-error{color:var(--cinnabar-dark);background:#bf4b3514;border:1px solid #bf4b352b;border-radius:8px;margin-bottom:15px;padding:11px 13px;font-size:11px;font-weight:700}.annual-form-cover{background:#e7dcc647;border:1px solid #1f29251a;border-radius:11px 11px 22px 9px;grid-template-columns:96px minmax(0,1fr);align-items:center;gap:16px;margin-bottom:20px;padding:16px;display:grid}.book-cover-preview{flex-direction:column;justify-content:center;align-items:center;gap:8px;width:96px;display:flex}.book-cover-has-image{background:#ddd1bb}.annual-form-cover>div:last-child{min-width:0}.annual-form-cover input[type=file]{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.annual-cover-picker{min-height:39px;color:var(--forest);border:1px solid var(--line-strong);cursor:pointer;background:#ffffffb3;border-radius:8px;align-items:center;padding:0 13px;font-size:11px;font-weight:800;display:inline-flex}.annual-cover-picker:hover{background:#fff}.annual-form-cover p{overflow-wrap:anywhere;color:var(--ink-soft);margin:7px 0 0;font-size:9px;line-height:1.5}.annual-cover-clear{color:var(--cinnabar);cursor:pointer;background:0 0;margin-top:7px;padding:0;font-size:9px;font-weight:800}.annual-form-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;display:grid}.annual-field{gap:6px;min-width:0;display:grid;position:relative}.annual-field-wide{grid-column:1/-1}.annual-field label{color:#39443f;font-size:11px;font-weight:900}.annual-field label>span{color:var(--cinnabar)}.annual-field label small{color:var(--ink-soft);font-size:9px;font-weight:500}.annual-field input,.annual-field select,.annual-field textarea{width:100%;min-height:44px;color:var(--ink);border:1px solid var(--line-strong);background:#ffffffc7;border-radius:8px;outline:none;padding:10px 12px;transition:border-color .16s,box-shadow .16s,background .16s}.annual-field textarea{min-height:100px;font-family:var(--font-serif);resize:vertical;font-size:15px;line-height:1.7}.annual-field input:focus,.annual-field select:focus,.annual-field textarea:focus{border-color:var(--forest-2);background:#fff;box-shadow:0 0 0 4px #24544717}.annual-field-count{color:var(--ink-soft);background:#ffffffb8;font-size:8px;position:absolute;bottom:7px;right:9px}.annual-form-actions{border-top:1px solid var(--line);justify-content:flex-end;gap:9px;margin-top:20px;padding-top:16px;display:flex}.annual-cancel-button{min-height:44px;color:var(--ink-soft);border:1px solid var(--line);cursor:pointer;background:#ffffff85;border-radius:9px;padding:0 16px;font-size:11px;font-weight:800}.annual-submit-button{min-width:126px}.annual-toast{z-index:160;color:#fff8eb;background:var(--forest);border:1px solid #ffffff21;border-radius:10px 10px 18px 5px;align-items:center;gap:9px;max-width:min(390px,100vw - 32px);padding:13px 15px;font-size:11px;animation:.24s both toast-in;display:flex;position:fixed;bottom:28px;right:28px;box-shadow:0 18px 48px #121d1940}.annual-toast>span{background:#ffffff1a;border-radius:50%;place-items:center;width:24px;height:24px;font-weight:900;display:grid}.annual-toast p{flex:1;margin:0}.annual-toast button{color:#ffffffa6;cursor:pointer;background:0 0;border-radius:50%;place-items:center;width:27px;height:27px;font-size:16px;display:grid}.annual-toast-error{background:var(--cinnabar-dark)}.annual-toast-info{background:#5c665f}.reading-materials{background:linear-gradient(135deg, #dce8df75, transparent 58%), var(--paper-light);border:1px solid var(--line);box-shadow:var(--shadow-small);border-radius:14px 14px 30px;margin-top:24px;padding:24px;position:relative;overflow:hidden}.reading-materials:after{content:"";pointer-events:none;border:1px solid #24544717;border-radius:50%;width:146px;height:146px;position:absolute;bottom:-58px;right:-36px;box-shadow:inset 0 0 0 24px #24544706}.reading-materials>*{z-index:1;position:relative}.materials-heading{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.materials-heading h2{font-family:var(--font-serif);margin:4px 0 0;font-size:25px;font-weight:800}.materials-heading p{color:var(--ink-soft);margin:7px 0 0;font-size:12px;line-height:1.7}.materials-count{min-width:max-content;min-height:30px;color:var(--forest-2);background:var(--forest-3);border-radius:999px;align-items:center;padding:0 11px;font-size:11px;font-weight:800;display:inline-flex}.materials-heading-tools{justify-content:flex-end;align-items:center;gap:8px;min-width:max-content;display:flex}.ebook-upload-trigger{color:#fff8eb;background:var(--forest);cursor:pointer;border:1px solid #0000;border-radius:9px 9px 14px 5px;justify-content:center;align-items:center;gap:5px;min-height:40px;padding:0 14px;font-size:11px;font-weight:900;transition:background .16s,transform .16s,box-shadow .16s;display:inline-flex;box-shadow:0 9px 22px #173a3129}.ebook-upload-trigger span{font-size:16px;line-height:1}.ebook-upload-trigger:hover{background:var(--forest-2);transform:translateY(-1px);box-shadow:0 11px 26px #173a3133}.materials-uploader{border:1px dashed var(--line-strong);background:#ffffff8c;border-radius:12px;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin-top:18px;padding:10px;display:grid}.materials-file-picker{cursor:pointer;border-radius:9px;align-items:center;gap:11px;min-width:0;min-height:58px;padding:8px 10px;transition:background .16s;display:flex}.materials-file-picker:hover{background:#dce8df85}#reading-material-file:focus-visible+.materials-file-picker{outline-offset:2px;outline:3px solid #bf4b356b}.materials-picker-mark{color:#fff8eb;background:var(--forest);border-radius:8px 8px 13px 4px;flex:none;place-items:center;width:38px;height:38px;font-size:22px;line-height:1;display:grid}.materials-picker-mark.is-image{color:var(--forest);font-family:var(--font-serif);background:#e4c782;font-size:16px;font-weight:900}.materials-file-picker>span:last-child{gap:4px;min-width:0;display:grid}.materials-file-picker strong,.materials-file-picker small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.materials-file-picker strong{font-size:13px}.materials-file-picker small{color:var(--ink-soft);font-size:10px}.materials-upload-button{color:#fff8eb;background:var(--cinnabar);cursor:pointer;border-radius:9px 9px 13px 5px;min-width:104px;min-height:46px;margin:auto 0;padding:0 16px;font-size:12px;font-weight:800}.materials-upload-button:hover:not(:disabled){background:var(--cinnabar-dark);transform:translateY(-1px)}.materials-upload-progress{background:var(--paper-deep);border-radius:999px;grid-column:1/-1;height:5px;overflow:hidden}.materials-upload-progress span{background:linear-gradient(90deg, var(--forest-2), #4d846f);border-radius:inherit;height:100%;transition:width .18s;display:block}.materials-error{color:#7b382c;background:#fae9df;border:1px solid #bf4b3538;border-radius:9px;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding:11px 13px;font-size:11px;display:flex}.materials-error button{min-height:34px;color:var(--cinnabar-dark);cursor:pointer;background:#fff9;border:1px solid #bf4b3533;border-radius:7px;flex:none;padding:0 10px;font-weight:800}.materials-loading,.materials-empty{min-height:92px;color:var(--ink-soft);border-top:1px dashed var(--line);justify-content:center;align-items:center;gap:12px;margin-top:16px;font-size:12px;display:flex}.materials-loading>span{border:2px solid var(--paper-deep);border-top-color:var(--forest-2);border-radius:50%;width:18px;height:18px;animation:.72s linear infinite material-spin}.materials-empty{justify-content:flex-start}.materials-empty>span{width:43px;height:43px;color:var(--forest);background:var(--forest-3);font-family:var(--font-serif);border-radius:10px 10px 16px 5px;flex:none;place-items:center;font-weight:900;display:grid}.materials-empty strong{font-family:var(--font-serif);font-size:14px}.materials-empty p{margin:4px 0 0;font-size:11px;line-height:1.6}.materials-list{border-top:1px dashed var(--line);margin:17px 0 0;padding:0;list-style:none;display:grid}.material-item{border-bottom:1px dashed var(--line);grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;min-height:70px;padding:10px 0;display:grid}.material-preview,.material-file-mark{color:#fff8eb;background:var(--forest);letter-spacing:.04em;border-radius:7px 7px 13px 4px;place-items:center;width:46px;height:50px;font-size:9px;font-weight:900;display:grid;overflow:hidden}.material-file-mark.is-ebook{background:var(--cinnabar-dark)}.material-file-mark.is-text{color:var(--forest);background:#e2c077}.material-preview img{object-fit:cover;width:100%;height:100%;transition:transform .18s}.material-preview:hover img{transform:scale(1.06)}.material-copy{gap:5px;min-width:0;display:grid}.material-copy strong,.material-copy span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.material-copy strong{font-family:var(--font-serif);font-size:14px}.material-copy span{color:var(--ink-soft);font-size:10px}.material-reading-progress{grid-template-columns:minmax(68px,112px) minmax(0,1fr);align-items:center;gap:8px;min-width:0;display:grid}.material-reading-progress small{color:var(--forest-2);text-overflow:ellipsis;white-space:nowrap;font-size:9px;font-weight:750;overflow:hidden}.material-progress-track{background:#2454471f;border-radius:999px;height:5px;overflow:hidden}.material-progress-track span{background:linear-gradient(90deg, var(--cinnabar), #d99061);border-radius:inherit;height:100%;transition:width .22s;display:block}.material-actions{justify-content:flex-end;align-items:center;gap:6px;display:flex}.material-actions>a,.material-progress-trigger,.material-delete-trigger,.material-delete-confirm button{cursor:pointer;border-radius:8px;justify-content:center;align-items:center;min-height:36px;padding:0 11px;font-size:11px;font-weight:800;display:inline-flex}.material-open-link,.material-progress-trigger{color:#fff8eb;background:var(--forest)}.material-open-link:hover,.material-progress-trigger:hover{background:var(--forest-2)}.material-download-link,.material-delete-trigger,.material-delete-confirm button{color:var(--forest-2);border:1px solid var(--line);background:0 0}.material-download-link:hover,.material-delete-confirm button:last-child:hover{background:var(--forest-3)}.material-delete-trigger{color:var(--cinnabar-dark)}.material-delete-trigger:hover{background:#fae9df;border-color:#bf4b3540}.material-delete-confirm{color:var(--cinnabar-dark);background:#fae9df;border-radius:9px;align-items:center;gap:5px;padding-left:8px;font-size:10px;font-weight:800;display:inline-flex}.material-delete-confirm button:first-of-type{color:#fff8eb;background:var(--cinnabar-dark);border-color:#0000}.material-progress-trigger{border:0}.materials-dialog-backdrop{z-index:180;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f231d8f;place-items:center;padding:22px;animation:.18s both fade-in;display:grid;position:fixed;inset:0;overflow:auto}.materials-dialog{width:min(100%,620px);max-height:min(760px,100vh - 44px);color:var(--ink);background:linear-gradient(140deg, #dce8df7a, transparent 42%), repeating-linear-gradient(0deg, transparent 0 31px, #24544709 31px 32px), var(--paper-light);border:1px solid #ffffffb3;border-radius:18px 18px 40px;outline:none;animation:.22s both dialog-in;position:relative;overflow:auto;box-shadow:0 30px 80px #0f231d4d}.ebook-upload-dialog{width:min(100%,560px)}.materials-dialog-close{z-index:2;width:40px;height:40px;color:var(--ink-soft);border:1px solid var(--line);cursor:pointer;background:#ffffff9e;border-radius:50%;place-items:center;font-family:Arial,sans-serif;font-size:23px;line-height:1;display:grid;position:absolute;top:17px;right:17px}.materials-dialog-close:hover:not(:disabled){color:var(--cinnabar-dark);background:#fffaf0}.materials-dialog-header{border-bottom:1px solid var(--line);padding:29px 72px 21px 29px}.materials-dialog-kicker{color:var(--cinnabar-dark);letter-spacing:.13em;font-size:10px;font-weight:900}.materials-dialog-header h3{font-family:var(--font-serif);margin:6px 0 0;font-size:clamp(25px,4vw,34px);line-height:1.2}.materials-dialog-header p{max-width:490px;color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;margin:8px 0 0;font-size:11px;line-height:1.65;overflow:hidden}.materials-dialog-body{padding:24px 29px 29px}.ebook-file-drop{text-align:left;border:1px dashed var(--line-strong);cursor:pointer;background:#ffffff94;border-radius:13px 13px 28px;justify-content:center;align-items:center;gap:16px;min-height:148px;padding:24px;transition:background .16s,border-color .16s,transform .16s;display:flex}.ebook-file-drop:hover{border-color:var(--forest-2);background:#dce8df9e;transform:translateY(-1px)}#ebook-upload-file:focus-visible+.ebook-file-drop{outline-offset:3px;outline:3px solid #bf4b356b}.ebook-file-seal{color:#fff7e9;background:var(--cinnabar-dark);width:66px;height:76px;font-family:var(--font-serif);border-radius:10px 10px 21px 6px;flex:none;place-items:center;font-size:28px;font-weight:900;display:grid;box-shadow:inset 7px 0 #ffffff17,0 13px 25px #9d392933}.ebook-file-drop>span:last-child{gap:7px;min-width:0;display:grid}.ebook-file-drop strong,.ebook-file-drop small{text-overflow:ellipsis;overflow:hidden}.ebook-file-drop strong{font-family:var(--font-serif);font-size:17px}.ebook-file-drop small{color:var(--ink-soft);font-size:10px;line-height:1.6}.ebook-upload-status{color:var(--forest-2);gap:8px;margin-top:14px;font-size:10px;font-weight:800;display:grid}.ebook-upload-status .materials-upload-progress{grid-column:auto}.ebook-upload-note{color:var(--ink-soft);margin:16px 0 0;font-size:10px;line-height:1.65}.ebook-upload-note strong{color:var(--cinnabar-dark)}.materials-dialog-error,.progress-saved-message{color:#7b382c;background:#fae9df;border:1px solid #bf4b3533;border-radius:9px;margin-top:14px;padding:10px 12px;font-size:10px;line-height:1.6}.materials-dialog-footer,.progress-editor-footer{border-top:1px solid var(--line);background:#f6f1e6b8;justify-content:flex-end;gap:9px;padding:17px 29px 23px;display:flex}.materials-dialog-primary,.materials-dialog-secondary,.progress-open-actions a{cursor:pointer;border-radius:9px 9px 14px 6px;justify-content:center;align-items:center;min-height:44px;padding:0 17px;font-size:11px;font-weight:900;display:inline-flex}.materials-dialog-primary{color:#fff8eb;background:var(--cinnabar)}.materials-dialog-primary:hover:not(:disabled){background:var(--cinnabar-dark)}.materials-dialog-secondary{color:var(--forest-2);border:1px solid var(--line);background:#ffffff94}.materials-dialog-secondary:hover:not(:disabled){background:var(--forest-3)}.progress-dialog-heading h3{font-size:clamp(24px,4vw,32px)}.progress-dialog-loading{min-height:170px;color:var(--ink-soft);justify-content:center;align-items:center;gap:10px;font-size:11px;display:flex}.progress-dialog-loading span{border:2px solid var(--paper-deep);border-top-color:var(--cinnabar);border-radius:50%;width:20px;height:20px;animation:.72s linear infinite material-spin}.progress-resume-card{background:#e2c07729;border:1px solid #b5893733;border-radius:11px 11px 22px;grid-template-columns:48px minmax(0,1fr);align-items:center;gap:12px;padding:15px;display:grid}.progress-resume-card.has-progress{background:#dce8df8c;border-color:#24544729}.progress-resume-seal{color:#fff8eb;background:var(--cinnabar-dark);width:48px;height:48px;font-family:var(--font-serif);border-radius:10px 10px 16px 5px;place-items:center;font-size:20px;font-weight:900;display:grid}.has-progress .progress-resume-seal{background:var(--forest)}.progress-resume-card strong{font-family:var(--font-serif);font-size:14px}.progress-resume-card p{color:var(--ink-soft);margin:5px 0 0;font-size:10px;line-height:1.55}.progress-open-actions{grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:12px;display:grid}.progress-open-primary{color:#fff8eb;background:var(--forest)}.progress-open-primary:hover{background:var(--forest-2)}.progress-download-link{color:var(--forest-2);border:1px solid var(--line);background:#ffffff94}.progress-download-link:hover{background:var(--forest-3)}.progress-editor{border-top:1px dashed var(--line-strong);margin-top:19px;padding-top:18px}.progress-editor-heading{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.progress-editor-heading strong{font-family:var(--font-serif);font-size:15px}.progress-editor-heading p{max-width:420px;color:var(--ink-soft);margin:5px 0 0;font-size:9px;line-height:1.55}.progress-editor-heading output{color:var(--cinnabar-dark);font-family:var(--font-serif);font-size:22px;font-weight:900}.progress-percent-field{grid-template-columns:auto minmax(80px,1fr) 84px;align-items:center;gap:10px;margin-top:15px;display:grid}.progress-percent-field>label,.progress-field>span{color:var(--ink);font-size:10px;font-weight:900}.progress-percent-field input[type=range]{width:100%;accent-color:var(--cinnabar)}.progress-number-wrap{position:relative}.progress-number-wrap input,.progress-field input,.progress-field textarea{width:100%;color:var(--ink);border:1px solid var(--line);font:inherit;background:#ffffffb8;border-radius:9px;outline:none}.progress-number-wrap input{height:40px;padding:0 27px 0 10px}.progress-number-wrap span{color:var(--ink-soft);pointer-events:none;font-size:10px;position:absolute;top:50%;right:10px;transform:translateY(-50%)}.progress-editor-grid{grid-template-columns:minmax(130px,.42fr) minmax(0,1fr);gap:11px;margin-top:12px;display:grid}.progress-field{align-content:start;gap:6px;min-width:0;display:grid}.progress-field>span{justify-content:space-between;align-items:center;gap:8px;display:flex}.progress-field small{color:var(--ink-soft);font-size:8px;font-weight:600}.progress-field input{height:46px;padding:0 12px}.progress-field textarea{resize:vertical;min-height:82px;padding:11px 12px;line-height:1.55}.progress-number-wrap input:focus,.progress-field input:focus,.progress-field textarea:focus{border-color:var(--cinnabar);box-shadow:0 0 0 3px #bf4b351f}.progress-saved-message{color:var(--forest-2);background:var(--forest-3);border-color:#24544729}.progress-editor-footer{margin:18px -29px -29px}@keyframes material-spin{to{transform:rotate(360deg)}}@keyframes annual-pulse{0%,to{transform:scale(1);box-shadow:0 0 #173a311f}50%{transform:scale(.96);box-shadow:0 0 0 8px #173a3100}}.sr-only{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes dialog-in{0%{opacity:0;transform:translateY(16px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes loading-slide{0%{transform:translate(-120%)}to{transform:translate(430%)}}@media (max-width:1180px){.app-shell{grid-template-columns:214px minmax(0,1fr)}.right-rail{display:none}.dashboard-grid{grid-template-columns:minmax(0,1fr)}.main-content,.main{padding-right:28px}.annual-month-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.feed-filter-bar{grid-template-columns:minmax(210px,1fr) minmax(130px,170px) minmax(130px,170px)}.feed-filter-clear{grid-column:2/4;justify-self:end}}@media (max-width:820px){.app-shell{display:block}.sidebar{display:none}.main-content,.main{padding:20px 18px calc(118px + env(safe-area-inset-bottom))}.topbar{margin-bottom:16px}.topbar h1{font-size:24px}.hero-card{border-radius:16px 16px 44px;min-height:320px}.hero-card:after{right:24px}.member-grid{grid-template-columns:1fr}.penalty-row{grid-template-columns:auto minmax(0,1fr) auto}.penalty-person{grid-column:2}.penalty-reason{grid-column:2/4}.penalty-amount{grid-area:1/3}.status-select,.penalty-status{grid-column:2/4;width:100%}.profile-layout{grid-template-columns:minmax(0,1fr)}.profile-side{order:-1}.mobile-nav{right:12px;bottom:max(10px, env(safe-area-inset-bottom));z-index:70;color:#fff9;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#173a31f5;border:1px solid #ffffff1f;border-radius:18px 18px 28px;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;min-height:66px;padding:7px;display:grid;position:fixed;left:12px;box-shadow:0 20px 50px #121d1940}.mobile-nav button{min-width:0;min-height:50px;color:inherit;cursor:pointer;background:0 0;border-radius:12px;place-items:center;gap:2px;font-size:9px;display:grid}.mobile-nav button.active,.mobile-nav button[aria-current=page]{color:#fffaf0;background:#ffffff1a}.mobile-nav .nav-icon{width:auto;color:inherit;font-size:17px}.mobile-nav button>span:first-child{font-size:15px}.floating-checkin{right:22px;bottom:calc(88px + env(safe-area-inset-bottom));z-index:69;min-height:48px;display:inline-flex;position:fixed}.annual-header{flex-direction:column;justify-content:flex-end;align-items:flex-start;min-height:220px}.annual-heading{padding-top:66px}.annual-header-actions{justify-content:flex-start;width:100%}.annual-month-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.annual-dialog{max-height:calc(100vh - 30px)}}@media (max-width:560px){.main-content,.main{padding-left:14px;padding-right:14px}.topbar .status-pill,.topbar .role-pill,.sync-status{display:none}.top-checkin-button{min-width:44px;padding:0 11px;font-size:0}.top-checkin-button span{font-size:18px}.feed-filter-bar{grid-template-columns:1fr 1fr;align-items:stretch;padding:12px}.feed-filter-copy{grid-column:1/-1}.feed-filter-clear{grid-column:1/-1;justify-self:stretch}.post-actions{flex-wrap:wrap}.like-roster{right:14px;bottom:calc(92px + env(safe-area-inset-bottom));width:auto;max-height:42vh;position:fixed;left:14px}.hero-card{min-height:342px;padding:24px 20px 28px}.hero-card:after{width:34px;height:98px;padding-top:13px;font-size:12px;right:17px}.hero-title,.hero-card h2{width:calc(100% - 35px);font-size:32px}.hero-note{width:calc(100% - 24px)}.hero-decoration{right:45px}.hero-meta,.hero-actions{align-items:stretch}.hero-actions>button,.hero-actions>a,.hero-card .primary-button,.hero-card .secondary-button{flex:auto}.reading-materials{border-radius:13px 13px 26px;margin-top:18px;padding:20px 16px}.materials-heading{flex-direction:column;align-items:stretch;gap:10px}.materials-heading-tools{justify-content:space-between;width:100%}.ebook-upload-trigger{min-height:44px;padding:0 15px}.materials-heading h2{font-size:22px}.materials-heading p{max-width:260px}.materials-uploader{grid-template-columns:minmax(0,1fr)}.materials-file-picker{padding:7px 5px}.materials-file-picker small{white-space:normal;line-height:1.5}.materials-upload-button{width:100%;min-height:44px;margin:0}.materials-upload-progress{grid-column:1}.material-item{grid-template-columns:42px minmax(0,1fr);gap:10px}.material-preview,.material-file-mark{width:42px;height:48px}.material-actions{grid-column:1/-1;justify-content:flex-start}.material-actions>a,.material-progress-trigger,.material-delete-trigger{flex:1 1 0;min-height:42px}.material-reading-progress{grid-template-columns:76px minmax(0,1fr)}.materials-dialog-backdrop{place-items:end center;padding:0}.materials-dialog{width:100%;max-height:min(92vh, calc(100vh - env(safe-area-inset-top)));border-radius:22px 22px 0 0}.materials-dialog-header{padding:24px 62px 17px 19px}.materials-dialog-header h3{font-size:25px}.materials-dialog-body{padding:18px 19px calc(21px + env(safe-area-inset-bottom))}.materials-dialog-close{width:42px;height:42px;top:13px;right:13px}.ebook-file-drop{min-height:138px;padding:19px 15px}.ebook-file-seal{width:54px;height:64px;font-size:23px}.materials-dialog-footer{padding:13px 19px calc(13px + env(safe-area-inset-bottom));position:sticky;bottom:0}.materials-dialog-footer button{flex:1 1 0;min-height:46px}.progress-open-actions{grid-template-columns:minmax(0,1fr)}.progress-open-actions a{min-height:46px}.progress-editor-heading{gap:10px}.progress-percent-field{grid-template-columns:1fr 82px}.progress-percent-field>label{grid-column:1/-1}.progress-editor-grid{grid-template-columns:minmax(0,1fr)}.progress-editor-footer{bottom:calc(-21px - env(safe-area-inset-bottom));margin:18px -19px calc(-21px - env(safe-area-inset-bottom));padding:13px 19px calc(13px + env(safe-area-inset-bottom));position:sticky}.progress-editor-footer button{flex:1 1 0;min-height:46px}.material-delete-confirm{width:100%;min-height:48px;padding:6px 6px 6px 10px}.material-delete-confirm>span{margin-right:auto}.material-delete-confirm button{min-height:36px}.section-head,.feed-header,.panel-head{align-items:flex-start}.section-head .admin-actions,.panel-head .admin-actions{justify-content:flex-end}.post-card{padding:18px 16px 15px}.post-chapter{display:none}.post-content{font-size:15px}.post-actions{grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.post-actions button,.action-button{justify-content:center;min-width:0;padding-left:5px;padding-right:5px;font-size:11px}.vote-button .vote-mark{width:20px;height:20px}.feed-heading-actions{flex-direction:column-reverse;align-items:flex-end}.vote-limit-control{grid-template-columns:66px minmax(54px,1fr) 74px}.vote-limit-control button,.vote-limit-control input{min-height:44px}.form-row{grid-template-columns:1fr}.modal-backdrop{place-items:end center;padding:0}.modal,.dialog{border-radius:22px 22px 0 0;width:100%;max-height:92vh}.modal-header,.dialog-header,.modal-body,.dialog-body,.form-body,.modal-footer,.dialog-footer{padding-left:18px;padding-right:18px}.penalty-row{padding:16px}.member-filter-summary,.penalty-overview,.achievement-grid{gap:7px}.member-filter-summary>div,.achievement-card,.penalty-overview .summary-card{padding:12px 10px}.member-filter-summary strong,.achievement-card strong,.penalty-overview .summary-card>strong{font-size:20px}.profile-hero{flex-wrap:wrap;align-items:flex-start;padding:20px 16px}.profile-hero .secondary-button{width:100%;margin-left:0}.annual-header{border-radius:15px 15px 38px;min-height:246px;padding:22px 19px 24px}.annual-header:after{left:20px}.annual-heading{padding-top:72px}.annual-heading h2{font-size:29px}.annual-heading p{font-size:11px;line-height:1.6}.annual-header-actions,.annual-add-button{width:100%}.annual-year-switcher{flex:1;grid-template-columns:38px minmax(64px,1fr) 38px}.annual-summary{gap:7px}.annual-summary-item{min-height:82px;padding:13px 11px}.annual-summary-item dd{font-size:23px}.annual-summary-item>span{font-size:42px;right:7px}.annual-loading,.annual-error,.annual-empty{flex-wrap:wrap;align-items:flex-start}.annual-error button,.annual-empty button{width:100%;margin-left:64px}.annual-month-grid{grid-template-columns:minmax(0,1fr)}.annual-month{padding:15px}.book-card{grid-template-columns:74px minmax(0,1fr)}.book-cover{width:74px}.annual-dialog-backdrop{place-items:end center;padding:0}.annual-dialog{border-radius:22px 22px 0 0;width:100%;max-height:94vh}.annual-dialog-header{padding:26px 58px 18px 18px}.annual-book-form{padding:18px}.annual-form-cover{grid-template-columns:82px minmax(0,1fr);padding:13px}.book-cover-preview{width:82px}.annual-form-fields{grid-template-columns:minmax(0,1fr)}.annual-field-wide{grid-column:auto}.annual-form-actions{z-index:1;padding:14px 18px calc(14px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#fbf8f1f5;margin-left:-18px;margin-right:-18px;position:sticky;bottom:-18px}.annual-cancel-button,.annual-submit-button{flex:1}.annual-toast{right:16px;bottom:calc(92px + env(safe-area-inset-bottom));left:16px}.mobile-nav button small{white-space:nowrap;font-size:9px}.toast{right:16px;bottom:calc(92px + env(safe-area-inset-bottom));left:16px}}@media (max-width:480px){.mobile-nav{overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;touch-action:pan-x;display:flex;overflow-x:auto}.mobile-nav::-webkit-scrollbar{display:none}.mobile-nav button{scroll-snap-align:center;flex:0 0 52px;min-width:52px;min-height:52px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
