@import "https://fonts.googleapis.com/css2?family=Noto+Serif+TC:wght@400;600;700&family=LXGW+WenKai+TC&display=swap";
:root{--paper:#f5efe6;--gold:#c9a84c;--gold-light:#e8d5a3;--lotus:#e8a0a0;--bg:#1a0a2e;--bg-dark:#0f0618}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg);color:var(--paper);min-height:100vh;font-family:Noto Serif TC,serif;overflow-x:hidden}.bg-texture{z-index:0;pointer-events:none;background:radial-gradient(80% 60% at 50% 0,#c9a84c1a 0%,#0000 70%),radial-gradient(60% 80% at 80% 100%,#7832b41f 0%,#0000 60%),radial-gradient(50% 50% at 10%,#c9a84c0f 0%,#0000 60%);position:fixed;inset:0}.bg-texture:before{content:"";opacity:.035;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><circle cx='100' cy='100' r='22' fill='none' stroke='white' stroke-width='0.5'/><circle cx='100' cy='100' r='44' fill='none' stroke='white' stroke-width='0.5'/><circle cx='100' cy='100' r='66' fill='none' stroke='white' stroke-width='0.4'/><circle cx='100' cy='100' r='88' fill='none' stroke='white' stroke-width='0.3'/></svg>");background-size:200px 200px;position:absolute;inset:0}.bg-texture:after{content:"";background:repeating-linear-gradient(175deg,#0000 0% 8%,#c9a84c04 8.5%,#0000 9%);position:absolute;inset:0}.container{z-index:1;max-width:720px;margin:0 auto;padding:0 24px 80px;position:relative}header{justify-content:space-between;align-items:center;padding:28px 0 0;display:flex}.logo{flex-direction:column;gap:3px;display:flex}.logo-top{flex-direction:row;align-items:center;gap:8px;display:flex}.logo-img{object-fit:contain;width:40px;height:40px}.logo-title{color:var(--gold);letter-spacing:.12em;text-shadow:0 0 24px #c9a84c59;font-family:LXGW WenKai TC,Ma Shan Zheng,cursive;font-size:1.7rem;line-height:1}.logo-sub{color:var(--gold-light);opacity:.7;letter-spacing:.25em;font-family:Noto Serif TC,serif;font-size:.72rem}.header-right{align-items:center;gap:10px;display:flex}.user-tag{letter-spacing:.1em;color:#c9a84c99;border:1px solid #c9a84c33;padding:5px 12px;font-size:.72rem}.hdr-btn{color:var(--gold-light);letter-spacing:.15em;cursor:pointer;background:0 0;border:1px solid #c9a84c66;padding:6px 14px;font-family:Noto Serif TC,serif;font-size:.78rem;transition:all .3s}.hdr-btn:hover{border-color:var(--gold);color:var(--gold)}.hdr-btn.ghost{color:#f5efe659;border-color:#c9a84c33}.hdr-btn.ghost:hover{color:var(--gold-light);border-color:#c9a84c66}.divider{opacity:.5;align-items:center;gap:16px;margin:36px 0 0;display:flex}.divider:before,.divider:after{content:"";background:linear-gradient(90deg, transparent, var(--gold), transparent);flex:1;height:1px}.divider-icon{background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.25)' stroke='%23c9a84c' stroke-width='0.7'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.25)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(45 20 20)'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.25)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(90 20 20)'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.25)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(135 20 20)'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.25)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(180 20 20)'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.25)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(225 20 20)'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.25)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(270 20 20)'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.25)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(315 20 20)'/><circle cx='20' cy='20' r='4' fill='rgba(201,168,76,0.5)' stroke='%23c9a84c' stroke-width='0.8'/><circle cx='20' cy='20' r='2' fill='rgba(201,168,76,0.8)'/></svg>") 50%/contain no-repeat;flex-shrink:0;width:36px;height:36px;font-size:0;display:inline-block}.hero{text-align:center;padding:48px 0 40px}.hero-badge{letter-spacing:.35em;color:var(--gold);opacity:.85;border:1px solid #c9a84c4d;margin-bottom:28px;padding:5px 16px;font-size:.65rem;display:inline-block}.hero h1{color:var(--gold);letter-spacing:.08em;text-shadow:0 0 40px #c9a84c4d,0 2px 8px #0009;margin-bottom:20px;font-family:LXGW WenKai TC,cursive;font-size:clamp(2.4rem,7vw,3.8rem);line-height:1.25}.hero p{color:#f5efe68c;letter-spacing:.1em;max-width:420px;margin:0 auto;font-size:.95rem;line-height:2}.trigrams{opacity:.25;justify-content:center;gap:32px;margin:32px 0;font-size:1.8rem;display:flex}.section-label{letter-spacing:.4em;color:var(--gold);opacity:.6;text-align:center;margin-bottom:16px;font-size:.7rem}.category-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:28px;display:grid}.cat-btn{color:var(--gold-light);letter-spacing:.12em;cursor:pointer;background:#c9a84c0d;border:1px solid #c9a84c2e;flex-direction:column;align-items:center;gap:7px;padding:14px 8px;font-family:Noto Serif TC,serif;font-size:.82rem;transition:all .25s;display:flex}.cat-btn .cat-icon{font-size:1.3rem}.cat-btn:hover,.cat-btn.active{color:var(--gold);background:#c9a84c1f;border-color:#c9a84c8c;box-shadow:inset 0 0 18px #c9a84c1f}.or-divider{text-align:center;letter-spacing:.4em;color:#f5efe640;margin:4px 0 16px;font-size:.7rem}.or-divider:before,.or-divider:after{content:"─ ─ ─";margin:0 12px}.input-wrap{margin-bottom:16px;position:relative}.input-wrap:before{content:"卜";color:var(--gold);opacity:.4;pointer-events:none;z-index:1;font-family:LXGW WenKai TC,cursive;font-size:1.1rem;position:absolute;top:20px;left:16px}textarea{width:100%;min-height:100px;color:var(--paper);letter-spacing:.06em;resize:none;background:#c9a84c0a;border:1px solid #c9a84c33;border-top:none;outline:none;padding:16px 16px 16px 44px;font-family:Noto Serif TC,serif;font-size:.9rem;line-height:1.9;transition:border-color .3s;display:block}textarea::placeholder{color:#f5efe633}textarea:focus{border-color:#c9a84c73}.input-top{background:linear-gradient(90deg, transparent, var(--gold), transparent);opacity:.4;height:2px}.submit-btn{width:100%;color:var(--gold-light);letter-spacing:.35em;cursor:pointer;background:linear-gradient(135deg,#3c145ab3 0%,#1e053ce6 100%);border:1px solid #c9a84c59;padding:18px;font-family:LXGW WenKai TC,cursive;font-size:1.2rem;transition:all .3s}.submit-btn:disabled{opacity:.6;cursor:not-allowed}.submit-btn:hover:not(:disabled){border-color:var(--gold);color:var(--gold);box-shadow:0 0 32px #7832b466}.result-box{border:1px solid #c9a84c40;margin-top:28px;animation:.5s both fadeUp;position:relative}.result-box:before{content:"";background:linear-gradient(90deg, transparent, var(--gold), transparent);height:2px;position:absolute;top:0;left:0;right:0}.result-header{letter-spacing:.4em;color:var(--gold);opacity:.7;background:#c9a84c0a;border-bottom:1px solid #c9a84c26;padding:12px 20px;font-size:.68rem}.result-content{letter-spacing:.08em;color:#f5efe6d9;white-space:pre-wrap;padding:24px;font-size:.92rem;line-height:2.1}.loading-dots{justify-content:center;align-items:center;gap:8px;padding:32px;display:flex}.loading-dots span{background:var(--gold);opacity:.4;border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite pulse}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes pulse{0%,to{opacity:.2;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.loading-text{text-align:center;letter-spacing:.3em;color:#c9a84c80;padding-bottom:16px;font-size:.75rem}.footer-note:before{content:"";opacity:.35;background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.2)' stroke='%23c9a84c' stroke-width='0.7'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.2)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(60 20 20)'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.2)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(120 20 20)'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.2)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(180 20 20)'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.2)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(240 20 20)'/><ellipse cx='20' cy='10' rx='4' ry='10' fill='rgba(232,160,160,0.2)' stroke='%23c9a84c' stroke-width='0.7' transform='rotate(300 20 20)'/><circle cx='20' cy='20' r='3' fill='rgba(201,168,76,0.4)' stroke='%23c9a84c' stroke-width='0.7'/></svg>") 50%/contain no-repeat;width:26px;height:26px;margin:0 auto 14px;display:block}.footer-note{text-align:center;letter-spacing:.25em;color:#f5efe62e;margin-top:40px;font-size:.68rem;line-height:2.2}.modal-overlay{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000d1;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:#120818;border:1px solid #c9a84c4d;width:90%;max-width:420px;max-height:90vh;padding:36px 32px;animation:.3s both fadeUp;position:relative;overflow-y:auto}.modal:before{content:"";background:linear-gradient(90deg, transparent, var(--gold), transparent);height:2px;position:absolute;top:0;left:0;right:0}.modal h2{color:var(--gold);text-align:center;letter-spacing:.15em;margin-bottom:6px;font-family:LXGW WenKai TC,cursive;font-size:1.4rem}.modal-subtitle{text-align:center;letter-spacing:.2em;color:#f5efe64d;margin-bottom:24px;font-size:.7rem}.modal-close{color:#f5efe64d;cursor:pointer;background:0 0;border:none;font-size:1.1rem;transition:color .2s;position:absolute;top:14px;right:16px}.modal-close:hover{color:var(--gold)}.field-label{letter-spacing:.25em;color:#c9a84c99;margin-bottom:5px;font-size:.68rem}.form-row{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;display:grid}.form-row.full{grid-template-columns:1fr}.modal input,.modal select{width:100%;color:var(--paper);letter-spacing:.06em;appearance:none;background:#c9a84c0a;border:1px solid #c9a84c33;outline:none;padding:10px 12px;font-family:Noto Serif TC,serif;font-size:.85rem;transition:border-color .3s}.modal input:focus,.modal select:focus{border-color:#c9a84c80}.modal input::placeholder{color:#f5efe633}.modal select option{color:var(--paper);background:#1a0a2e}.gender-group{gap:8px;display:flex}.gender-btn{color:#f5efe680;letter-spacing:.15em;cursor:pointer;background:#c9a84c0a;border:1px solid #c9a84c33;flex:1;padding:10px;font-family:Noto Serif TC,serif;font-size:.82rem;transition:all .2s}.gender-btn.active{color:var(--gold);background:#c9a84c1f;border-color:#c9a84c8c}.modal-btn{width:100%;color:var(--gold-light);letter-spacing:.3em;cursor:pointer;background:linear-gradient(135deg,#3c145abf,#1e053cf2);border:1px solid #c9a84c59;margin-top:16px;padding:14px;font-family:LXGW WenKai TC,cursive;font-size:1.05rem;transition:all .3s}.modal-btn:hover{border-color:var(--gold);color:var(--gold)}.modal-btn:disabled{opacity:.6;cursor:not-allowed}.card-toggle{justify-content:center;gap:8px;margin-bottom:16px;display:flex}.toggle-btn{color:#f5efe666;letter-spacing:.15em;cursor:pointer;background:0 0;border:1px solid #c9a84c4d;padding:6px 20px;font-family:Noto Serif SC,serif;font-size:.8rem;transition:all .2s}.toggle-btn.active{border-color:var(--gold);color:var(--gold);background:#c9a84c14}.skip-link{text-align:center;letter-spacing:.15em;color:#f5efe640;cursor:pointer;margin-top:12px;font-size:.7rem;transition:color .2s}.skip-link:hover{color:#f5efe680}.auth-msg{text-align:center;letter-spacing:.1em;color:#c9a84cb3;margin-top:12px;font-size:.75rem;line-height:1.8}.auth-switch{text-align:center;color:#f5efe64d;letter-spacing:.1em;cursor:pointer;margin-top:14px;font-size:.72rem;transition:color .2s}.auth-switch:hover{color:var(--gold-light)}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.container>*{animation:.6s both fadeUp}header{animation-delay:0s}.hero{animation-delay:.1s}.category-grid{animation-delay:.2s}.input-wrap,.or-divider,.submit-btn{animation-delay:.3s}@keyframes slideUpFromBottom{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){.container{padding-left:16px;padding-right:16px}header{flex-wrap:wrap;gap:8px;padding-top:16px}.logo-img{width:28px;height:28px}.logo-title{font-size:1.3rem}.logo-sub{letter-spacing:.15em;font-size:.6rem;display:none}.header-right{justify-content:flex-end;width:100%}.hdr-btn{padding:5px 10px;font-size:.72rem}.user-tag{display:none}header button.hdr-btn:not(.ghost){letter-spacing:0;font-size:0}header button.hdr-btn:not(.ghost):after{content:"入閣";letter-spacing:.1em;font-size:.72rem}.hero{padding:28px 0 24px}.hero h1{font-size:2rem}.hero p{font-size:.85rem}.trigrams{gap:12px;font-size:1.2rem}.category-grid{grid-template-columns:repeat(2,1fr)}textarea{padding:12px 12px 12px 40px}.submit-btn{padding:14px}.result-content{padding:16px}.footer-note{letter-spacing:.1em;font-size:.6rem}.modal-overlay{align-items:flex-end}.modal{width:100%;max-width:100%;padding:28px 20px calc(24px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;max-height:90vh;animation:.3s both slideUpFromBottom;overflow-y:auto}.modal:before{border-radius:16px 16px 0 0}}
