*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}:root{--coral: #243b63;--coral-light: #4b648d;--coral-dark: #162742;--cream: #f3f5f8;--cream-dark: #d7dee8;--brown: #425066;--brown-light: #6a7890;--dark: #162033;--dark-mid: #2a3650;--gray: #5c677a;--gray-light: #b3becc;--white: #ffffff;--success: #587a72;--warning: #8f7649;--danger: #8a5660;--font-display: "Playfair Display", serif;--font-body: "Noto Sans TC", sans-serif;--bottom-nav-height: 72px;--top-bar-height: 56px;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--shadow-soft: 0 2px 12px rgba(22, 32, 51, .06);--shadow-card: 0 8px 24px rgba(22, 32, 51, .08)}html,body{height:100%;overflow:hidden;overscroll-behavior-y:contain;-webkit-text-size-adjust:100%}body{font-family:var(--font-body);background:linear-gradient(180deg,#eef2f7 0%,var(--cream) 100%);color:var(--dark);-webkit-font-smoothing:antialiased}#root{height:100%;display:flex;flex-direction:column}button{font-family:var(--font-body);cursor:pointer;border:none;background:none}input,textarea{font-family:var(--font-body)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;box-sizing:border-box;line-height:1.3;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2397897e' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-size:10px 6px;padding-right:26px!important}select::-ms-expand{display:none}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--gray-light);border-radius:2px}.hide-scrollbar::-webkit-scrollbar{display:none}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.fade-in{animation:fadeIn .25s ease forwards}.slide-up{animation:slideUp .3s cubic-bezier(.32,.72,0,1) forwards}
