@import "https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700&display=swap";:root{color:#29342e;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-optical-sizing:auto;--green:#315a49;--green-dark:#244536;--paper:#fffefa;--muted:#7d857e;--line:#e7e6de;background:#f5f3ec;font-family:Noto Sans KR,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:400}body{min-width:320px;min-height:100vh;margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.58;cursor:not-allowed}.auth-page{background:radial-gradient(circle at 0 0,#e9eee5,#0000 45%),#f5f3ec;place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{background:var(--paper);text-align:center;border:1px solid #e8e7df;border-radius:24px;width:min(100%,430px);padding:38px;box-shadow:0 18px 60px #263e2c12}.book-mark{background:#e8efe7;border-radius:18px;place-items:center;width:58px;height:58px;font-size:28px;display:inline-grid}.book-mark.small{border-radius:14px;width:44px;height:44px;font-size:22px}.eyebrow{color:#819084;letter-spacing:.16em;margin:0 0 7px;font-size:10px;font-weight:700}.auth-card .eyebrow{margin-top:18px}h1,h2,h3,p{overflow-wrap:anywhere}.auth-card h1{letter-spacing:-.04em;margin:0;font-size:28px}.muted{color:var(--muted);line-height:1.7}.auth-card>.muted{margin:8px 0 24px;font-size:13px}.auth-tabs{background:#f1f2ed;border-radius:12px;grid-template-columns:1fr 1fr;gap:5px;margin-bottom:22px;padding:5px;display:grid}.auth-tabs button{color:#788178;background:0 0;border:0;border-radius:9px;padding:10px;font-weight:600}.auth-tabs button.active{color:var(--green-dark);background:#fff;box-shadow:0 2px 8px #0000000b}.stack-form{text-align:left;gap:15px;display:grid}.stack-form label{color:#4d5a51;gap:7px;font-size:12px;font-weight:600;display:grid}input,textarea,select{color:#29342e;background:#fff;border:1px solid #dfe3db;border-radius:10px;outline:none;width:100%;padding:12px 13px;font-size:13px;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus,select:focus{border-color:#789986;box-shadow:0 0 0 3px #78998620}textarea{resize:vertical;min-height:110px;line-height:1.6}input::placeholder,textarea::placeholder{color:#b0b7b0}.primary-button,.outline-button{border-radius:10px;min-height:42px;padding:10px 15px;font-size:12px;font-weight:700}.primary-button{border:1px solid var(--green);color:#fff;background:var(--green)}.primary-button:hover{background:var(--green-dark)}.outline-button{color:#526256;background:#fff;border:1px solid #dce2d9}.outline-button:hover{background:#f8faf6;border-color:#9eafa1}.full-width{width:100%;margin-top:3px}.notice{color:#365942;text-align:left;overflow-wrap:anywhere;background:#f1f7ef;border:1px solid #dce8dc;border-radius:10px;margin:16px 0 0;padding:11px 13px;font-size:12px;line-height:1.6}.small-note{color:#929a91;margin:18px 0 0;font-size:11px;line-height:1.6}.center-message{color:#657568;place-items:center;min-height:100vh;display:grid}.app-shell{width:min(1160px,100% - 48px);margin:0 auto;padding:28px 0 24px}.topbar{border-bottom:1px solid #e6e5dc;justify-content:space-between;align-items:center;gap:15px;padding:5px 0 22px;display:flex}.brand,.account-area{align-items:center;gap:12px;display:flex}.brand .eyebrow{margin-bottom:3px}.brand strong{font-size:15px}.account-email{color:#758076;font-size:11px}.welcome-panel{justify-content:space-between;align-items:end;gap:24px;padding:38px 0 28px;display:flex}.welcome-panel h1{color:#2f4638;letter-spacing:-.055em;margin:0;font-size:clamp(26px,4vw,39px);line-height:1.35}.welcome-panel .muted{margin:10px 0 0;font-size:13px}.mobile-break{display:none}.stats-row{gap:10px;display:flex}.stat-card{background:#fffefa;border:1px solid #e6e8df;border-radius:14px;min-width:112px;padding:14px 18px}.stat-card span{color:#818a80;font-size:11px;display:block}.stat-card strong{color:var(--green);margin-top:5px;font-size:26px;display:block}.app-notice{margin:-7px 0 18px}.content-grid{grid-template-columns:minmax(280px,.82fr) minmax(0,1.35fr);align-items:start;gap:18px;display:grid}.panel{background:var(--paper);border:1px solid #e8e7df;border-radius:17px;min-width:0;padding:23px;box-shadow:0 8px 24px #283d2d08}.panel-heading{justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;display:flex}.panel-heading .eyebrow{margin-bottom:4px}.panel-heading h2{letter-spacing:-.04em;margin:0;font-size:19px}.heading-icon{color:#8da393;font-size:25px}.required-mark{color:#bd705e}.form-actions{gap:8px;display:flex}.form-actions .primary-button{flex:1}.library-heading{margin-bottom:16px}.filter-row{border-bottom:1px solid #efeee8;flex-wrap:wrap;gap:7px;padding-bottom:15px;display:flex}.filter-chip{color:#788278;background:#fff;border:1px solid #e5e8e1;border-radius:999px;padding:7px 11px;font-size:11px}.filter-chip.selected{color:#345b43;background:#edf4ec;border-color:#c7d8c9;font-weight:700}.empty-state{color:#7d887e;text-align:center;justify-items:center;gap:8px;padding:55px 10px;display:grid}.empty-state strong{color:#56665a;font-size:13px}.empty-state p{margin:0;font-size:11px}.empty-icon{font-size:30px}.book-list{gap:11px;padding-top:14px;display:grid}.book-card{background:#fff;border:1px solid #ecece5;border-radius:13px;padding:16px}.book-card-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.status-pill{border-radius:999px;padding:5px 9px;font-size:10px;font-weight:700}.status-pill.done{color:#3f7351;background:#eaf4e9}.status-pill.reading{color:#8a6a2e;background:#faf2df}.status-pill.wishlist{color:#66738c;background:#eef1f7}.created-date{color:#a2a9a0;font-size:10px}.book-card h3{color:#33473a;letter-spacing:-.025em;margin:11px 0 3px;font-size:16px}.book-author{color:#899187;margin:0;font-size:11px}.rating{color:#d59b45;letter-spacing:.08em;margin:10px 0 0;font-size:13px}.rating span{color:#929990;letter-spacing:0;font-size:10px}.book-review{color:#68746a;white-space:pre-wrap;border-top:1px solid #f0f0ea;margin:11px 0 0;padding-top:10px;font-size:12px;line-height:1.7}.book-actions{justify-content:flex-end;gap:12px;margin-top:12px;display:flex}.book-actions button{color:#607666;background:0 0;border:0;padding:2px;font-size:11px}.book-actions .delete-action{color:#b06c62}.footer-note{color:#a0a79e;text-align:center;padding:22px 0 0;font-size:10px}@media (width<=780px){.app-shell{width:min(100% - 28px,600px);padding-top:16px}.welcome-panel{padding:27px 0 20px;display:block}.stats-row{margin-top:18px}.stat-card{flex:1}.content-grid{grid-template-columns:1fr}.mobile-break{display:block}}@media (width<=480px){.auth-card{padding:28px 22px}.topbar{align-items:flex-start}.account-area{flex-direction:column;align-items:flex-end;gap:7px}.account-email{overflow-wrap:anywhere;text-align:right;max-width:130px}.brand strong{font-size:13px}.panel{padding:18px}.welcome-panel h1{font-size:27px}}*{box-sizing:border-box}body{overflow-x:hidden}button,input,select,textarea{font:inherit}button{touch-action:manipulation}.book-search{background:#f6faf7;border:1px solid #dce6df;border-radius:14px;margin:14px 0 22px;padding:14px}.book-search>label{margin-bottom:8px;font-weight:700;display:block}.search-line{gap:8px;display:flex}.search-line input{flex:1;min-width:0}.search-line button{flex-shrink:0}.search-results{gap:5px;max-height:330px;margin-top:10px;display:grid;overflow:auto}.search-result{text-align:left;cursor:pointer;background:#fff;border:1px solid #e2e7e2;border-radius:10px;align-items:center;gap:10px;width:100%;padding:8px;display:flex}.search-result img,.cover-placeholder{object-fit:cover;flex-shrink:0;width:38px;height:55px}.search-result span:not(.cover-placeholder){gap:3px;min-width:0;display:grid}.search-result strong{overflow-wrap:anywhere;font-size:13px}.search-result small{color:#67776d;font-size:11px}.date-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.date-fields label{min-width:0}.date-fields input{width:100%;min-width:0}.form-cover{object-fit:cover;border-radius:8px;width:82px;height:118px}.book-main{align-items:flex-start;gap:14px;margin:12px 0;display:flex}.book-cover{object-fit:cover;background:#e9f1eb;border-radius:7px;flex-shrink:0;width:74px;height:106px;display:block;box-shadow:0 3px 12px #00000013}.book-cover.placeholder{place-items:center;font-size:30px;display:grid}.book-details{min-width:0}.book-details h3{overflow-wrap:anywhere;margin:0 0 5px}.book-details .small-note{margin:4px 0}.chart-panel{margin:0 0 18px}.charts-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.charts-grid h3{margin:14px 0 10px;font-size:14px}.bar-chart{align-items:flex-end;gap:6px;height:155px;padding:4px 0;display:flex}.bar-item{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;min-width:0;height:100%;display:flex}.bar-item strong{min-height:16px;font-size:11px}.bar-track{background:#edf1ec;border-radius:5px 5px 0 0;align-items:flex-end;width:min(100%,26px);height:108px;display:flex;overflow:hidden}.bar-fill{background:#3d7862;border-radius:5px 5px 0 0;width:100%;min-height:0}.bar-item small{color:#64746a;font-size:10px}@media (width<=760px){.app-shell{width:100%;max-width:100%;padding:14px 14px 30px}.topbar{flex-wrap:wrap;gap:8px}.account-area{gap:8px;min-width:0}.account-email{text-overflow:ellipsis;white-space:nowrap;max-width:155px;overflow:hidden}.welcome-panel{gap:16px}.welcome-panel h1{font-size:clamp(22px,6vw,30px)}.stats-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;display:grid}.stat-card{min-width:0}.content-grid,.charts-grid{grid-template-columns:minmax(0,1fr);gap:14px;display:grid}.panel{min-width:0;padding:18px 14px}.search-line{flex-wrap:wrap}.search-line input{flex-basis:100%}.search-line button{width:100%}.date-fields{grid-template-columns:minmax(0,1fr)}.filter-row{flex-wrap:nowrap;padding-bottom:5px;overflow-x:auto}.filter-chip{flex-shrink:0}input,select,textarea{max-width:100%;font-size:16px}.primary-button,.outline-button{min-height:42px}}.cover-upload-area{background:#f6faf7;border:1px solid #dce6df;border-radius:12px;gap:10px;padding:15px;display:grid}.cover-upload-area>strong{color:#315a49;font-size:13px}.cover-upload-area .small-note{margin:0}.cover-upload-buttons{flex-wrap:wrap;gap:8px;display:flex}.cover-file-button{cursor:pointer;justify-content:center;align-items:center;display:inline-flex;position:relative;overflow:hidden}.cover-file-button input[type=file]{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.cover-upload-area .form-cover{object-fit:cover;border-radius:9px;width:100px;height:145px}@media (width<=480px){.cover-upload-buttons>*{flex:1}}
