@import"https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700&family=Noto+Serif+TC:wght@400;600&display=swap";:root{--bg-base: #f4f8f1;--bg-card: rgba(255, 255, 255, .85);--bg-card-hover: rgba(255, 255, 255, .98);--bg-input: rgba(255, 255, 255, .6);--bg-overlay: rgba(255, 255, 255, .7);--color-primary: #529e4f;--color-primary-2: #da9826;--color-primary-gradient: linear-gradient(135deg, #529e4f, #da9826);--color-spirit: #5b9dbf;--text-primary: #2a3326;--text-secondary: #51634b;--text-muted: #819679;--color-success: #5cbf2a;--color-danger: #d9534f;--color-warning: #eea236;--color-pinned: #da9826;--color-favorite: #d45b7a;--border: 1px solid rgba(82, 158, 79, .2);--border-focus: 1px solid #529e4f;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-full: 9999px;--shadow-card: 0 4px 12px rgba(42, 51, 38, .05);--shadow-fab: 0 6px 20px rgba(82, 158, 79, .4);--font-ui: "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;--font-title: "Noto Serif TC", "PingFang TC", serif;--transition: .2s ease;--header-h: 58px;--bottom-nav-h: 62px;--safe-top: env(safe-area-inset-top, 0px);--safe-bot: env(safe-area-inset-bottom, 0px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%}body{font-family:var(--font-ui);background-color:var(--bg-base);background-image:url(/ghibli-bright.jpg);background-size:cover;background-attachment:fixed;background-position:center;color:var(--text-primary);min-height:100dvh;overflow-x:hidden;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:#fff6;pointer-events:none;z-index:0}button{font-family:inherit;cursor:pointer;border:none;background:none}input,textarea{font-family:inherit}a{color:inherit;text-decoration:none}ul{list-style:none}#root{display:flex;flex-direction:column;min-height:100dvh;position:relative;z-index:1}.app-layout{display:flex;flex-direction:column;min-height:100dvh;padding-top:calc(var(--header-h) + var(--safe-top));padding-bottom:calc(var(--bottom-nav-h) + var(--safe-bot))}.app-header{position:fixed;top:0;left:0;right:0;height:calc(var(--header-h) + var(--safe-top));padding-top:var(--safe-top);background:#ffffffd9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid rgba(82,158,79,.15);display:flex;align-items:center;padding-left:16px;padding-right:16px;gap:12px;z-index:100;box-shadow:0 4px 16px #2a33260f}.app-header__logo{font-family:var(--font-title);font-size:17px;font-weight:600;background:var(--color-primary-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;white-space:nowrap;letter-spacing:.04em}.search-bar{flex:1;position:relative;min-width:0}.search-bar input{width:100%;background:#ffffffb3;border:1px solid rgba(82,158,79,.2);border-radius:var(--radius-full);padding:8px 16px 8px 38px;color:var(--text-primary);font-size:14px;outline:none;transition:border var(--transition),background var(--transition)}.search-bar input::placeholder{color:var(--text-muted)}.search-bar input:focus{border:var(--border-focus);background:#fff;box-shadow:0 2px 8px #529e4f1a}.search-bar__icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-muted);pointer-events:none}.search-bar__clear{position:absolute;right:10px;top:50%;transform:translateY(-50%);width:20px;height:20px;border-radius:50%;background:var(--text-muted);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;opacity:.7}.search-bar__clear:hover{opacity:1}.category-filter{display:flex;gap:8px;padding:10px 16px;overflow-x:auto;scrollbar-width:none;background:#fff9;border-bottom:1px solid rgba(82,158,79,.1)}.category-filter::-webkit-scrollbar{display:none}.category-filter__chip{flex-shrink:0;padding:5px 14px;border-radius:var(--radius-full);font-size:13px;font-weight:500;border:1px solid rgba(82,158,79,.25);color:var(--text-secondary);background:#fffc;transition:all var(--transition);white-space:nowrap}.category-filter__chip:hover{border-color:var(--color-primary);color:var(--text-primary)}.category-filter__chip--active{background:linear-gradient(135deg,#eaf2e9,#fbf2e3);border-color:var(--color-primary);color:var(--color-primary-2);box-shadow:0 2px 6px #da982626}.reply-list{flex:1;padding:14px 12px 80px;display:flex;flex-direction:column;gap:12px}.reply-list--empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:var(--text-muted);padding:40px 20px;text-align:center}.reply-list--empty .empty-icon{font-size:56px;animation:floatBob 3s ease-in-out infinite}.reply-list--empty h3{font-size:16px;color:var(--text-secondary)}.reply-list--empty p{font-size:14px}@keyframes floatBob{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.reply-card{background:var(--bg-card);border:1px solid rgba(82,158,79,.15);border-radius:var(--radius-md);padding:14px;transition:background var(--transition),border-color var(--transition),transform var(--transition);position:relative;overflow:hidden;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:var(--shadow-card)}.reply-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(82,158,79,.3),transparent)}.reply-card:hover{background:var(--bg-card-hover);border-color:#529e4f4d;transform:translateY(-2px);box-shadow:0 8px 24px #2a332614}.reply-card--pinned{border-left:3px solid var(--color-pinned)}.reply-card--favorite{border-left:3px solid var(--color-favorite)}.reply-card--pinned.reply-card--favorite{border-left:3px solid #a8d870}.reply-card__header{display:flex;align-items:flex-start;gap:8px;margin-bottom:6px}.reply-card__title{font-family:var(--font-title);flex:1;font-size:15px;font-weight:600;line-height:1.3;word-break:break-all;color:var(--color-primary-2)}.reply-card__badges{display:flex;gap:4px;flex-shrink:0}.badge{font-size:15px;line-height:1}.reply-card__content{font-size:13px;color:var(--text-secondary);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-all;margin-bottom:10px}.reply-card__meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px}.tag-chip{font-size:11px;padding:2px 8px;border-radius:var(--radius-full);background:#529e4f1a;color:var(--color-primary);border:1px solid rgba(82,158,79,.2)}.category-chip{font-size:11px;padding:2px 8px;border-radius:var(--radius-full);background:#da98261a;color:var(--color-primary-2);border:1px solid rgba(218,152,38,.25)}.reply-card__actions{display:flex;gap:6px;align-items:center}.btn-copy{flex:1;padding:8px 12px;border-radius:var(--radius-sm);background:linear-gradient(135deg,#529e4f,#81c27c);border:none;color:#fff;font-size:13px;font-weight:600;transition:all var(--transition);display:flex;align-items:center;justify-content:center;gap:6px;box-shadow:0 4px 12px #529e4f40}.btn-copy:hover{transform:scale(1.02);box-shadow:0 6px 16px #529e4f59}.btn-copy:active{transform:scale(.97)}.btn-copy--copied{background:linear-gradient(135deg,#71c66d,#4ca049)}.btn-icon{width:36px;height:36px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:15px;background:#fffc;border:1px solid rgba(82,158,79,.12);color:var(--text-muted);transition:all var(--transition);flex-shrink:0}.btn-icon:hover{background:#fff;border-color:#529e4f4d;color:var(--color-primary)}.btn-icon--pin.active{color:var(--color-pinned);background:#fff8e8;border-color:#da98264d}.btn-icon--fav.active{color:var(--color-favorite);background:#fce8ee;border-color:#d45b7a4d}.btn-icon--delete:hover{background:#feebeb;color:var(--color-danger);border-color:#d9534f33}.fab{position:fixed;bottom:calc(var(--bottom-nav-h) + var(--safe-bot) + 18px);right:20px;width:56px;height:56px;border-radius:50%;background:var(--color-primary-gradient);border:none;color:#fff;font-size:26px;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-fab);z-index:90;transition:transform var(--transition),box-shadow var(--transition)}.fab:hover{transform:scale(1.1) rotate(5deg);box-shadow:0 8px 28px #529e4f80}.fab:active{transform:scale(.94)}.form-page{position:fixed;top:0;right:0;bottom:0;left:0;background-image:url(/ghibli-bright.jpg);background-size:cover;background-position:center;z-index:200;display:flex;flex-direction:column;animation:slideUp .22s ease}.form-page:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffffd9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);pointer-events:none}.form-page>*{position:relative;z-index:1}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.form-page__header{display:flex;align-items:center;gap:12px;padding:calc(var(--safe-top) + 14px) 16px 14px;border-bottom:1px solid rgba(82,158,79,.2);background:#ffffffb3}.form-page__title{font-family:var(--font-title);font-size:17px;font-weight:600;flex:1;color:var(--color-primary-2);text-shadow:0 1px 2px rgba(255,255,255,.8)}.form-page__body{flex:1;overflow-y:auto;padding:20px 16px;display:flex;flex-direction:column;gap:18px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{font-size:13px;font-weight:600;color:var(--text-secondary)}.form-group .required-star{color:var(--color-danger);margin-left:2px}.form-control{width:100%;background:#fffc;border:1px solid rgba(82,158,79,.2);border-radius:var(--radius-sm);padding:11px 14px;color:var(--text-primary);font-size:15px;outline:none;resize:none;transition:border var(--transition),background var(--transition),box-shadow var(--transition);box-shadow:inset 0 2px 4px #00000005}.form-control::placeholder{color:var(--text-muted)}.form-control:focus{border:var(--border-focus);background:#fff;box-shadow:inset 0 2px 4px #00000003,0 0 0 3px #529e4f1a}.form-control--error{border-color:var(--color-danger)!important}.form-error{font-size:12px;color:var(--color-danger)}.form-tags{display:flex;flex-wrap:wrap;gap:6px;padding:8px;background:#fffc;border:1px solid rgba(82,158,79,.2);border-radius:var(--radius-sm);min-height:46px;align-items:center;transition:border var(--transition),box-shadow var(--transition);box-shadow:inset 0 2px 4px #00000005}.form-tags:focus-within{border:var(--border-focus);background:#fff;box-shadow:inset 0 2px 4px #00000003,0 0 0 3px #529e4f1a}.form-tags .tag-chip{cursor:default;display:flex;align-items:center;gap:4px}.form-tags .tag-chip button{font-size:12px;line-height:1;color:inherit;opacity:.7}.form-tags input{border:none;background:transparent;color:var(--text-primary);font-size:14px;outline:none;flex:1;min-width:80px;padding:2px 4px}.form-tags input::placeholder{color:var(--text-muted)}.category-suggestions{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.category-suggestions button{font-size:12px;padding:3px 10px;border-radius:var(--radius-full);border:1px solid rgba(82,158,79,.2);color:var(--text-secondary);background:#ffffffb3;transition:all var(--transition)}.category-suggestions button:hover{border-color:var(--color-primary);color:var(--text-primary);background:#fff}.form-page__footer{padding:14px 16px calc(var(--safe-bot) + 14px);display:flex;gap:10px;border-top:1px solid rgba(82,158,79,.15);background:#ffffffd9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.btn-primary{flex:1;padding:12px;border-radius:var(--radius-sm);background:var(--color-primary-gradient);border:none;color:#fff;font-size:15px;font-weight:600;box-shadow:0 4px 12px #529e4f4d;transition:all var(--transition)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 16px #529e4f66}.btn-primary:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}.btn-secondary{padding:12px 20px;border-radius:var(--radius-sm);background:#fffc;border:1px solid rgba(82,158,79,.2);color:var(--text-primary);font-size:15px;font-weight:500;transition:background var(--transition)}.btn-secondary:hover{background:#fff;border-color:var(--color-primary)}.toast-wrapper{position:fixed;bottom:calc(var(--bottom-nav-h) + var(--safe-bot) + 80px);left:50%;transform:translate(-50%);z-index:500;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toast{padding:10px 22px;border-radius:var(--radius-full);font-size:14px;font-weight:600;color:#fff;background:#2a3326f2;box-shadow:0 8px 32px #2a332633,0 0 0 1px #529e4f1a;animation:toastIn .22s ease,toastOut .22s ease 1.7s forwards;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.toast--success{border-left:4px solid var(--color-success)}.toast--error{border-left:4px solid var(--color-danger)}@keyframes toastIn{0%{opacity:0;transform:translateY(12px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toastOut{0%{opacity:1}to{opacity:0;transform:translateY(-8px)}}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#2a332666;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);z-index:400;display:flex;align-items:flex-end;justify-content:center;padding-bottom:calc(var(--safe-bot) + 16px);animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.dialog-box,.copy-fallback__box{width:100%;max-width:480px;margin:0 16px;background:#fffffff2;border:1px solid rgba(82,158,79,.2);border-radius:var(--radius-lg);padding:24px 20px 20px;animation:sheetUp .22s ease;box-shadow:0 12px 40px #2a332626;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}@keyframes sheetUp{0%{transform:translateY(24px);opacity:0}to{transform:translateY(0);opacity:1}}.dialog-box h3,.copy-fallback__box h3{font-family:var(--font-title);font-size:17px;font-weight:600;margin-bottom:10px;color:var(--color-primary-2)}.dialog-box p,.copy-fallback__box p{font-size:14px;color:var(--text-secondary);margin-bottom:20px;line-height:1.6}.dialog-box__actions{display:flex;gap:10px}.btn-danger{flex:1;padding:12px;border-radius:var(--radius-sm);background:linear-gradient(135deg,#e85a54,#d4403a);border:none;color:#fff;font-size:15px;font-weight:600;box-shadow:0 4px 12px #d4403a40}.copy-fallback{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);z-index:450;display:flex;align-items:flex-end;justify-content:center;padding:16px;padding-bottom:calc(var(--safe-bot) + 16px)}.copy-fallback__text{width:100%;background:#fffc;border:1px solid rgba(82,158,79,.2);border-radius:var(--radius-sm);padding:12px;color:var(--text-primary);font-size:14px;line-height:1.6;resize:none;margin-bottom:14px;min-height:100px;box-shadow:inset 0 2px 4px #00000005}.settings-page{padding:20px 16px}.settings-section{background:var(--bg-card);border:1px solid rgba(82,158,79,.15);border-radius:var(--radius-md);overflow:hidden;margin-bottom:20px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 4px 12px #2a33260a}.settings-section__title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);padding:12px 16px 8px}.settings-row{display:flex;align-items:center;padding:14px 16px;border-top:1px solid rgba(82,158,79,.1);gap:12px;cursor:pointer;transition:background var(--transition)}.settings-row:first-of-type{border-top:none}.settings-row:hover{background:#529e4f0d}.settings-row__icon{font-size:20px;width:28px;text-align:center}.settings-row__label{flex:1;font-size:15px}.settings-row__label--danger{color:var(--color-danger)}.settings-row__arrow{color:var(--text-muted);font-size:13px}.settings-info{font-size:13px;color:var(--text-muted);text-align:center;padding:8px 16px 20px;line-height:1.8}.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:calc(var(--bottom-nav-h) + var(--safe-bot));padding-bottom:var(--safe-bot);background:#ffffffe6;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid rgba(82,158,79,.15);display:flex;z-index:100;box-shadow:0 -4px 16px #2a33260d}.bottom-nav__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-muted);font-size:10px;font-weight:500;transition:color var(--transition)}.bottom-nav__item:hover,.bottom-nav__item--active{color:var(--color-primary)}.bottom-nav__item--active .bottom-nav__icon{filter:drop-shadow(0 0 6px rgba(109,184,107,.8))}.bottom-nav__icon{font-size:22px;transition:filter var(--transition)}.soot-container{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2;overflow:hidden}.soot-sprite{position:absolute;pointer-events:all;cursor:pointer}.soot-body{width:var(--size, 24px);height:var(--size, 24px);background:radial-gradient(circle at 40% 35%,#3a3a3a,#0a0a0a);border-radius:50%;position:relative;box-shadow:2px 0 0 1px #1a1a1a,-2px 0 0 1px #1a1a1a,0 2px 0 1px #1a1a1a,0 -2px 0 1px #1a1a1a,1px 1px 0 1px #111,-1px 1px 0 1px #111,1px -1px 0 1px #111,-1px -1px 0 1px #111,3px 0 #222,-3px 0 #222,0 3px #222;display:flex;align-items:center;justify-content:center;gap:calc(var(--size, 24px) * .14);transition:transform .15s ease}.soot-body:hover{transform:scale(1.3)}.soot-body:active{transform:scale(.8) rotate(20deg)}.soot-eye{width:calc(var(--size, 24px) * .22);height:calc(var(--size, 24px) * .22);background:#fff;border-radius:50%;position:relative;flex-shrink:0;margin-top:calc(var(--size, 24px) * -.05);box-shadow:0 0 2px #ffffffe6}.soot-eye:after{content:"";position:absolute;width:45%;height:45%;background:#1a1a2e;border-radius:50%;bottom:1px;right:1px}@keyframes spriteFloat1{0%,to{transform:translate(0) rotate(0)}25%{transform:translate(4px,-6px) rotate(5deg)}50%{transform:translate(-2px,-10px) rotate(-3deg)}75%{transform:translate(6px,-4px) rotate(4deg)}}@keyframes spriteFloat2{0%,to{transform:translate(0) rotate(0)}33%{transform:translate(-6px,-8px) rotate(-6deg)}66%{transform:translate(4px,-5px) rotate(3deg)}}@keyframes spriteFloat3{0%,to{transform:translate(0)}20%{transform:translate(5px,-3px)}40%{transform:translate(-3px,-9px)}60%{transform:translate(7px,-6px)}80%{transform:translate(2px,-2px)}}.loading-screen{flex:1;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px;min-height:200px}.spinner{width:32px;height:32px;border:3px solid rgba(82,158,79,.15);border-top-color:var(--color-primary);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
