:root{color-scheme:light;--ink:#2d342b;--muted:#898b82;--forest:#435743;--cream:#f6f3eb;--card:#fffdf7;--line:#e5e3d9;--wood:#ae815c;--wood-dark:#755138}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:Pretendard,'Apple SD Gothic Neo','Noto Sans KR',system-ui,sans-serif;-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid #9eb59d;outline-offset:3px}.hidden{display:none!important}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{width:min(100%,620px);margin:auto;min-height:100vh;padding:0 21px 116px}.app-header{display:flex;align-items:center;justify-content:space-between;padding:28px 0 34px;gap:10px}.brand{display:flex;gap:13px;align-items:center}.brand h1{font-family:'Noto Serif CJK KR',Georgia,serif;letter-spacing:-1.6px;line-height:1.14;margin:0;font-size:30px;font-weight:800}.brand-period{color:#b18c65}.brand p{font-size:11px;color:#8c8c83;letter-spacing:.02em;margin:5px 0 0}.logo{width:37px;height:40px;background:#e2e7d8;border-radius:10px;display:flex;gap:3px;align-items:center;justify-content:center;transform:rotate(-4deg);flex:none}.logo span{width:7px;height:22px;border-radius:2px;background:#5f7b64}.logo span:nth-child(2){height:26px;background:#ba9570}.logo span:nth-child(3){height:19px;background:#d4bb84}.personal-tag{border:1px solid #dadbd0;color:#7a8478;border-radius:18px;font-size:11px;padding:7px 10px;white-space:nowrap}.eyebrow{font-size:10px;letter-spacing:.19em;font-weight:800;color:#879d80}.section-intro h2{font-family:'Noto Serif CJK KR',serif;font-size:27px;line-height:1.4;letter-spacing:-1px;margin:11px 0 20px;font-weight:600}.section-intro.compact h2{font-size:26px;margin-bottom:9px}.intro-description{color:#888a81;font-size:13px;line-height:1.65;margin:0 0 24px}.intro-foot{display:flex;align-items:center;justify-content:space-between;margin:19px 2px 21px;color:#52654f;font-size:13px;font-weight:700}.round-plus{border:0;border-radius:999px;background:#445a47;color:#fff;font-weight:300;font-size:26px;line-height:1;width:38px;height:38px;box-shadow:0 4px 10px #52614b25}.shelves{padding-top:1px}.shelf-tier{position:relative;padding:17px 12px 0;border:1px solid #e2ded3;border-bottom:0;background:linear-gradient(90deg,#ebe7dd0a,#f3f0e8);margin-bottom:28px;min-height:244px;border-radius:12px 12px 0 0}.shelf-books{min-height:211px;display:flex;gap:4px;align-items:end;justify-content:flex-start;overflow:hidden;padding-bottom:2px}.shelf-board{position:absolute;height:18px;bottom:-8px;left:-4px;right:-4px;background:linear-gradient(#cfad87 0%,#b88b64 24%,#966b48 68%,#84583b 100%);border-radius:2px 2px 5px 5px;box-shadow:0 7px 8px #4b301b25,0 1px 1px #7d5836;z-index:1}.shelf-board::after{content:'';position:absolute;left:0;right:0;top:-2px;height:4px;background:#e4c6a2;border-radius:2px}.spine{height:var(--h,188px);width:var(--w,34px);border:0;padding:0;flex:none;background:#d6c6a7;box-shadow:inset -3px 0 5px #0002,2px 0 2px #0002;border-radius:2px 3px 2px 2px;position:relative;overflow:hidden;display:flex;justify-content:center;align-items:center;transition:transform .15s}.spine:active{transform:translateY(-7px)}.spine img{height:100%;width:100%;object-fit:fill;display:block}.spine.missing{background:var(--spine-color,#7e927e)}.spine.missing::before{content:'';height:6px;position:absolute;top:12px;left:4px;right:4px;border-top:1px solid #fff8;border-bottom:1px solid #fff8}.spine.missing::after{content:'';height:6px;position:absolute;bottom:12px;left:4px;right:4px;border-top:1px solid #fff8;border-bottom:1px solid #fff8}.vertical-title{writing-mode:vertical-rl;text-orientation:mixed;font-size:12px;color:#fffdf0;font-weight:700;max-height:78%;overflow:hidden;letter-spacing:.04em;line-height:1.2}.empty-shelf{min-height:211px;display:flex;justify-content:center;align-items:center;flex-direction:column;width:100%;padding:30px 5px;gap:10px;text-align:center;color:#8c9085}.empty-shelf .empty-ornament{display:flex;gap:5px;align-items:end;height:70px;opacity:.65}.fake-book{width:15px;height:55px;background:#95a693;border-radius:2px;box-shadow:inset -3px 0 #0001}.fake-book:nth-child(2){height:67px;background:#cfb590}.fake-book:nth-child(3){height:47px;background:#c9a6a1}.fake-book:nth-child(4){height:61px;background:#9fa7b6;transform:rotate(10deg);transform-origin:bottom}.empty-shelf strong{font-size:14px;color:#666f61}.empty-shelf span{font-size:11px}.subtle-note{text-align:center;color:#9b9e95;font-size:12px;margin-top:4px}.bottom-nav{position:fixed;z-index:50;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,620px);background:#fffdf9ef;border-top:1px solid #e7e4dc;backdrop-filter:blur(14px);display:flex;justify-content:space-around;padding:10px 10px calc(10px + env(safe-area-inset-bottom))}.nav-btn{flex:1;border:0;background:transparent;color:#a0a29a;display:flex;align-items:center;flex-direction:column;gap:3px;font-size:10px;padding:5px}.nav-btn.active{color:#395840;font-weight:750}.nav-icon{font-size:25px;line-height:29px;font-weight:450}.nav-add .nav-icon{font-size:28px}.segmented{border-radius:13px;background:#ebe8df;padding:4px;display:flex;gap:4px;margin-bottom:22px}.seg{flex:1;border:0;border-radius:9px;color:#8c8c83;background:transparent;font-size:13px;font-weight:650;padding:12px}.seg.active{background:#fffdf9;color:#435a43;box-shadow:0 2px 8px #1111}.search-field{display:flex;background:#fffdf9;border:1px solid #dad9cf;padding:6px 6px 6px 13px;border-radius:11px;gap:7px}.search-field input{border:0;outline:0;background:transparent;min-width:0;flex:1;font-size:14px}.search-field button,.primary{background:#415943;color:white;border:0;border-radius:8px;padding:11px 18px;font-weight:700;font-size:13px}.primary:disabled{opacity:.55;cursor:default}.helper{font-size:12px;color:#94978d;line-height:1.65;margin:12px 4px 18px}.helper strong{color:#687763}.feedback{border-radius:10px;background:#eeeae0;color:#85877e;padding:18px 15px;font-size:12px;line-height:1.6}.linkish{margin-top:14px;background:transparent;color:#637663;font-size:12px;border:0;text-decoration:underline;text-underline-offset:3px;padding:7px 0}.search-results{display:flex;flex-direction:column;gap:11px}.result-card{display:flex;gap:14px;align-items:center;background:#fffef9;border:1px solid #e7e6dc;border-radius:12px;padding:13px}.result-cover{width:34px;height:116px;object-fit:fill;background:#d8d4c8;border-radius:2px;box-shadow:2px 1px 3px #0002;flex:none}.result-placeholder{width:34px;height:112px;background:#bbc3b4;flex:none;border-radius:2px}.result-detail{min-width:0;flex:1}.result-detail h3{font-size:13px;line-height:1.4;margin:0 0 6px;word-break:keep-all}.result-detail p{color:#898d83;font-size:11px;line-height:1.45;margin:0 0 10px}.mini-button{background:#eaf0e7;border:1px solid #c9d7c8;color:#3e5d42;border-radius:7px;padding:7px 11px;font-size:11px;font-weight:750}.mini-button:disabled{color:#898d83;background:#ebebe6;border-color:#ebebe6}.editor-form{display:flex;flex-direction:column;gap:20px}.editor-form>label:not(.upload-zone),.field-label{display:flex;flex-direction:column;gap:9px;color:#4c5448;font-size:13px;font-weight:700}.editor-form input:not([type=range]),.field-label input{background:#fffdf9;border:1px solid #dadacf;border-radius:10px;padding:14px 13px;outline:0;width:100%;font-weight:400;font-size:14px}.required{color:#ba7c71}.optional{color:#a4a59c;font-size:10px}.upload-zone{border:1.5px dashed #c8ccba;background:#f0f1e8;min-height:169px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:12px;gap:7px;text-align:center;cursor:pointer}.upload-zone .upload-symbol{font-size:30px;color:#7e9178}.upload-zone strong{font-size:14px}.upload-zone small{font-size:11px;color:#9b9e94}.upload-zone #upload-selected{font-size:11px;color:#577357;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slider-number{color:#6a876a}.editor-form input[type=range]{accent-color:#516c51;width:100%;margin:8px 0}.full{width:100%;padding:16px}.settings-card{background:#fffef9;border:1px solid #e7e5dc;border-radius:14px;padding:20px;margin:0 0 16px}.settings-card h3{margin:0 0 11px;font-size:15px}.settings-card>p{font-size:12px;line-height:1.7;color:#92958b;margin:0 0 16px}.settings-card .field-label{margin-bottom:12px}.dual-buttons{display:flex;gap:8px;flex-wrap:wrap}.secondary{background:#eff0e9;color:#4f604f;border:1px solid #dce0d5;border-radius:8px;padding:11px 15px;font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.file-btn{cursor:pointer}.settings-card .source-note{font-size:11px;line-height:1.6;margin-top:9px}.version-note{text-align:center;color:#a8aaa0;font-size:11px;margin-top:27px}dialog{padding:0;border:0;border-radius:16px;background:#fffefa;color:var(--ink);box-shadow:0 20px 70px #16171044;width:min(90vw,440px);max-height:87vh;overflow:auto}dialog::backdrop{background:#242c23a4}.dialog-x{position:absolute;right:13px;top:9px;font-size:24px;border:0;background:transparent;color:#777}.dialog-inner{padding:24px 20px}.dialog-top{display:flex;gap:18px;align-items:center;margin-top:10px}.dialog-spine{height:185px;width:var(--detail-width,37px);border-radius:2px;box-shadow:3px 3px 7px #0003;background:#7f957d;flex:none;overflow:hidden}.dialog-spine img{width:100%;height:100%;object-fit:fill}.dialog-spine-placeholder{display:flex;align-items:center;justify-content:center;writing-mode:vertical-rl;color:white;font-size:13px;padding:8px}.dialog-title{font-family:'Noto Serif CJK KR',serif;font-size:22px;line-height:1.5;margin:0 0 10px}.dialog-author{color:#888c82;font-size:13px;margin:0}.dialog-source{font-size:11px;color:#8d958a;margin:13px 0;line-height:1.5}.dialog-source a{color:#416a54}.dialog-buttons{display:grid;gap:8px;margin-top:20px}.danger{color:#a45c52;background:#f8eae7;border:1px solid #ead1cb;border-radius:8px;padding:11px;font-weight:700;font-size:12px}.spine-width-row{display:flex;align-items:center;gap:10px;margin-top:16px}.spine-width-row label{font-size:12px;white-space:nowrap;color:#65705f}.spine-width-row input{width:100%;accent-color:#4e694e}#toast{position:fixed;z-index:200;bottom:100px;left:50%;transform:translateX(-50%) translateY(25px);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;background:#303c31;color:white;border-radius:10px;padding:12px 17px;text-align:center;min-width:170px;max-width:90%;font-size:12px;box-shadow:0 6px 14px #0003}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}@media(min-width:660px){.app-shell{border-left:1px solid #e7e4d8;border-right:1px solid #e7e4d8;padding-inline:34px;background:#f9f7f0}.shelf-tier{padding-inline:20px}.app-header{padding-top:40px}}@media(max-width:355px){.app-shell{padding-inline:13px}.brand h1{font-size:27px}.shelf-tier{padding-left:8px;padding-right:8px}.section-intro h2{font-size:24px}}

/* 연도별 책장 관리 (v0.2) */
.category-panel{border:1px solid #e4e5d9;background:#fffdf7;border-radius:14px;padding:16px 14px 12px;margin:0 0 22px;box-shadow:0 3px 14px #364c2910}
.category-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px}
.category-heading>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.category-heading strong{font-size:15px;color:#3f5544}
.category-heading span{font-size:11px;color:#9b9f93}
.category-add{font-size:12px;font-weight:750;background:#e6eddf;color:#496b4c;border:1px solid #ccd9c9;border-radius:9px;padding:10px 12px;white-space:nowrap;flex:none}
.category-tabs{display:flex;gap:8px;overflow-x:auto;scrollbar-width:thin;scrollbar-color:#d8d9cf transparent;padding:2px 0 10px;scroll-snap-type:x proximity}
.category-tab{white-space:nowrap;flex:none;scroll-snap-align:start;border-radius:999px;border:1px solid #dedfd5;background:#f4f3ed;padding:10px 15px;color:#677165;font-size:12px;font-weight:750;min-height:38px}
.category-tab.active{background:#405e46;border-color:#405e46;color:#fff}
.category-actions{border-top:1px solid #efefe8;padding-top:11px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.category-actions span{color:#777f71;font-size:11px;margin-right:auto;flex:1;min-width:80px}
.category-link{color:#71816d;font-size:11px;text-decoration:underline;text-underline-offset:3px;background:none;border:0;padding:5px 0;white-space:nowrap}
.category-link.danger-link{color:#b67b6c}
.category-link:disabled{color:#b5b6ae;text-decoration:none;cursor:not-allowed}
.destination-field{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid #d9ded3;border-radius:12px;padding:12px 14px;margin-bottom:18px;background:#f0f3eb}
.destination-field span{font-size:12px;font-weight:750;color:#526a53}
.destination-field select{min-width:0;max-width:65%;padding:9px 11px;border:1px solid #c6d3c5;background:#fffefa;border-radius:9px;color:#415a47;font-size:13px;font-weight:700}
.book-destination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:15px 0}
.book-destination label{font-size:12px;color:#63705e;white-space:nowrap}
.book-destination select{min-width:0;width:65%;border:1px solid #ccd6cb;border-radius:8px;background:#fffefa;color:#415a47;padding:10px;font-size:12px}
.category-dialog{width:min(90vw,390px)}
.category-form{padding:26px 22px 22px;display:flex;flex-direction:column;gap:12px}
.category-form h2{font-size:19px;color:#3f5544;margin:0;font-weight:750}
.category-form p{font-size:12px;color:#8f9489;margin:0 0 8px}
.category-form label{font-size:12px;font-weight:700;color:#596c5a}
.category-form input{border:1px solid #d1d9cf;background:#fffefa;border-radius:9px;padding:12px;font-size:15px;width:100%;outline:0}
.category-form input:focus{border-color:#628169}
.category-form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:10px}
@media(max-width:355px){.category-panel{padding:12px 10px}.category-heading span{font-size:10px}.category-add{padding:9px 9px;font-size:11px}.category-actions{gap:8px}}
