.app-shell{pointer-events:none;z-index:10;width:100%;height:100%;position:fixed;top:0;left:0}.top-bar{top:calc(var(--safe-top) + 8px);-webkit-backdrop-filter:blur(12px);pointer-events:auto;background:#ffffffd9;border-radius:20px;align-items:center;padding:6px 16px;display:flex;position:absolute;left:16px;right:16px;box-shadow:0 2px 12px #00000014}.top-bar-title{font-family:var(--font-neat-handwriting);color:var(--color-accent);font-size:.95rem;font-weight:600}.top-bar-spacer{flex:1}.top-bar-date{font-family:var(--font-minimal-sans);color:var(--color-text);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:4px 10px;font-size:.8rem;transition:background .15s;display:flex}.top-bar-date:hover{background:#0000000d}.today-badge{background:var(--color-accent);color:#fff;font-size:.65rem;font-family:var(--font-minimal-sans);border-radius:8px;padding:1px 7px}.bottom-bar{bottom:calc(var(--safe-bottom) + 16px);-webkit-backdrop-filter:blur(12px);pointer-events:auto;background:#ffffffd9;border-radius:22px;gap:8px;padding:6px 14px;display:flex;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 2px 12px #0000001a}.toolbar-btn{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;font-size:18px;transition:background .15s;display:flex}.toolbar-btn:hover{background:#00000012}.toolbar-btn:active{background:#00000021}@media (width<=768px){.top-bar{top:calc(var(--safe-top) + 2px);background:#ffffffbf;border-radius:16px;padding:4px 10px;left:8px;right:8px}.top-bar-title{font-size:.8rem}.top-bar-date{padding:3px 8px;font-size:.7rem}.bottom-bar{border-radius:18px;gap:4px;padding:4px 10px;bottom:80px}.toolbar-btn{width:34px;height:34px;font-size:16px}}:root{--font-handwriting:"KaiTi", "STKaiti", "DFKai-SB", serif;--font-neat-handwriting:"KaiTi", "STKaiti", "PingFang SC", "Microsoft YaHei", sans-serif;--font-print:"SimSun", "STSong", "Songti SC", "Noto Serif CJK SC", serif;--font-minimal-sans:"PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", "Noto Sans CJK SC", sans-serif;--color-paper:#f5f0e8;--color-cover:#4a2c1a;--color-text:#2c1810;--color-text-faded:#9a8a7a;--color-accent:#8b4513;--color-danger:#c0392b;--color-divider:#d4c5b2;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;font-family:var(--font-neat-handwriting);color:var(--color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-user-select:none;user-select:none;touch-action:none;background:#1a1a1a;overflow:hidden}input,textarea,[contenteditable=true]{-webkit-user-select:text;user-select:text}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#00000026;border-radius:2px}.book-container{justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:relative;overflow:hidden}.desk-bg{z-index:0;background:linear-gradient(135deg,#3a3028 0%,#2a2218 50%,#1a1814 100%);position:fixed;inset:0}.book-2d{z-index:1;-webkit-user-select:none;user-select:none;border-radius:4px 8px 8px 4px;width:min(900px,92vw);height:min(620px,82vh);transition:transform .3s;display:flex;position:relative;box-shadow:0 4px 8px #0000004d,0 12px 32px #0006,0 24px 64px #00000080}.book-2d.flip-forward{animation:.35s ease-in-out flipForward}.book-2d.flip-backward{animation:.35s ease-in-out flipBackward}@keyframes flipForward{0%{transform:perspective(1200px)rotateY(0)}40%{transform:perspective(1200px)rotateY(-8deg)scale(.97)}to{transform:perspective(1200px)rotateY(0)scale(1)}}@keyframes flipBackward{0%{transform:perspective(1200px)rotateY(0)}40%{transform:perspective(1200px)rotateY(8deg)scale(.97)}to{transform:perspective(1200px)rotateY(0)scale(1)}}.book-page{background:#f5f0e8;flex:1;position:relative;overflow:hidden}.book-page-left{background:linear-gradient(90deg,#00000008 0%,#0000 3%);border-radius:6px 0 0 6px}.book-page-right{background:linear-gradient(270deg,#00000008 0%,#0000 3%);border-radius:0 6px 6px 0}.page-content-scroll{-webkit-overflow-scrolling:touch;width:100%;height:100%;padding:24px 20px 20px;overflow:hidden auto}.book-spine-2d{background:var(--cover-color,#4a2c1a);flex-shrink:0;justify-content:center;align-items:center;width:18px;display:flex;position:relative;box-shadow:inset -2px 0 4px #0000004d,inset 2px 0 4px #ffffff0d}.spine-inner{background:#0000004d;border-radius:1px;width:2px;height:85%}.curl-hint{cursor:pointer;opacity:0;z-index:5;border-radius:6px;justify-content:center;align-items:center;width:28px;height:60px;transition:opacity .2s,background .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.curl-hint-left{right:4px}.curl-hint-right{left:4px}.curl-hint span{color:#0000004d;font-size:14px;transition:color .2s}.book-page:hover .curl-hint{opacity:1;background:#0000000a}.curl-hint:hover{background:#00000014!important}.curl-hint:hover span{color:#0009}.curl-hint:active{background:#0000001f!important}.page-date-label{z-index:2;font-family:var(--font-minimal-sans);color:#ffffff80;pointer-events:none;font-size:.75rem;position:fixed;top:28px}.page-date-left{left:calc(50% - min(450px,46vw) + 20px)}.page-date-right{align-items:center;gap:6px;display:flex;right:calc(50% - min(450px,46vw) + 20px)}.today-dot{background:#ff6b6b;border-radius:50%;width:6px;height:6px;box-shadow:0 0 6px #ff6b6b80}@media (width<=768px){.book-2d{width:96vw;height:78vh}.page-content-scroll{padding:16px 12px 12px}.book-spine-2d{width:12px}.page-date-label{font-size:.65rem;top:50px}}@media (width<=480px){.book-2d{width:98vw;height:75vh}.page-content-scroll{padding:12px 8px 8px}}.mobile-container{background:#2a2218;flex-direction:column;width:100vw;height:100vh;display:flex;position:relative;overflow:hidden}.mobile-page{margin:8px;margin-top:calc(var(--safe-top) + 48px);border-radius:8px;flex:1;margin-bottom:72px;transition:transform .25s,opacity .25s;position:relative;overflow:hidden;box-shadow:0 2px 8px #00000040,0 8px 24px #0003}.mobile-page.slide-out-left{animation:.25s forwards slideOutLeft}.mobile-page.slide-out-right{animation:.25s forwards slideOutRight}@keyframes slideOutLeft{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-40%)}}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(40%)}}.paper-grid-overlay{pointer-events:none;z-index:0;background-image:linear-gradient(#0000000a 1px,#0000 1px),linear-gradient(90deg,#0000000a 1px,#0000 1px);background-size:20px 20px;position:absolute;inset:0}.paper-dot-overlay{pointer-events:none;z-index:0;background-image:radial-gradient(circle,#00000012 1px,#0000 1px);background-size:20px 20px;position:absolute;inset:0}.mobile-date-bar{bottom:calc(var(--safe-bottom) + 8px);-webkit-backdrop-filter:blur(12px);z-index:20;background:#ffffffe6;border-radius:16px;justify-content:space-between;align-items:center;height:52px;padding:0 8px;display:flex;position:fixed;left:12px;right:12px;box-shadow:0 2px 12px #0000001f}.mobile-nav-btn{cursor:pointer;width:40px;height:40px;color:var(--color-text);-webkit-tap-highlight-color:transparent;background:#0000000f;border:none;border-radius:12px;justify-content:center;align-items:center;font-size:18px;transition:background .15s;display:flex}.mobile-nav-btn:active{background:#00000026}.mobile-date-text{font-family:var(--font-minimal-sans);color:var(--color-text);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:4px 12px;font-size:.85rem;transition:background .15s;display:flex}.mobile-date-text:active{background:#0000000d}.mobile-today-badge{background:var(--color-accent);color:#fff;border-radius:8px;padding:2px 8px;font-size:.65rem}.swipe-hint{color:#ffffff4d;font-size:.7rem;font-family:var(--font-minimal-sans);pointer-events:none;z-index:5;animation:3s 1s forwards fadeHint;position:fixed;bottom:80px;left:50%;transform:translate(-50%)}@keyframes fadeHint{0%,60%{opacity:1}to{opacity:0}}@media (width<=768px){.top-bar{top:calc(var(--safe-top) + 4px);background:#fffc;border-radius:14px;gap:4px;padding:4px 8px}.top-bar .nav-btn{width:32px;height:32px;font-size:14px}.date-display{display:none}.bottom-bar{border-radius:20px;gap:8px;padding:6px 12px;bottom:76px}}
