/* All visual rules are scoped to Tử Vi; Tarot uses its existing stylesheet. */
.tv-screen { --tv-green:#364b40; --tv-soft:#e9eee7; --tv-paper:#fffdf8; --tv-gold:#a18151; }
.tv-screen .topbar { border-bottom:1px solid var(--line-soft); margin:0 20px; padding-left:0; padding-right:0; }
.tv-content { padding:28px 20px 24px; }
.tv-edition,.tv-kicker { font:500 9px/1.6 var(--font-display); letter-spacing:1.7px; color:var(--tv-green); }
.tv-intro { position:relative; padding:8px 0 30px; overflow:hidden; }
.tv-screen h1 { font:300 46px/1.03 var(--font-headline); letter-spacing:-.6px; margin:16px 0; }
.tv-intro>p { max-width:245px; color:var(--ink-soft); font-size:12px; line-height:1.8; }
.tv-orbit { position:absolute; right:-35px; top:20px; width:116px; height:116px; border:1px solid #a1815138; border-radius:50%; display:grid; place-items:center; color:var(--tv-gold); }
.tv-orbit:before { content:''; width:80px; height:80px; border:1px solid #a1815138; border-radius:50%; position:absolute; }
.tv-orbit span { font-size:30px; }
.tv-paper { background:var(--tv-paper); border:1px solid var(--line); padding:22px 18px; border-radius:4px; }
.tv-section-heading { display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.tv-number { color:var(--tv-gold); font:300 25px var(--font-headline); }
.tv-screen h2 { font:300 26px/1.2 var(--font-headline); }
.tv-muted { font-size:11px; color:var(--ink-soft); line-height:1.7; }
.tv-screen .tuvi-field { margin:18px 0; }
.tv-screen .tuvi-field textarea,.tv-screen .tuvi-field input { background:#faf9f5; border-radius:4px; font:12px/1.8 var(--font-body); padding:13px; width:100%; }
.tv-screen .tuvi-field textarea:focus,.tv-screen .tuvi-field input:focus { outline:2px solid #364b4030; border-color:var(--tv-green); }
.tv-screen button { cursor:pointer; }
.tv-screen button:focus-visible,.tv-screen summary:focus-visible { outline:2px solid var(--tv-green); outline-offset:4px; }
.tv-screen button:disabled { opacity:.5; cursor:wait; }
.tv-primary { display:flex; justify-content:space-between; align-items:center; background:var(--tv-green); color:white; border:0; border-radius:4px; padding:16px; font:500 12px var(--font-body); width:100%; margin-top:20px; }
.tv-footnote { font-size:9px; color:var(--ink-soft); line-height:1.7; margin-top:16px; }
.tv-help { margin:18px 0 0; color:var(--ink-soft); font-size:10px; line-height:1.8; }
.tv-help summary { cursor:pointer; color:var(--ink-mid); }
.tv-help p { margin-top:10px; }
.tv-error { color:#994334; background:#f7ebe5; padding:12px; font-size:12px; line-height:1.6; border-radius:4px; }
.tv-dashboard-head { padding:5px 0 24px; }
.tv-dashboard-head h1 { font-size:48px; }
.tv-tabs { display:flex; gap:0; padding:4px; background:#e9e8e0; border-radius:6px; margin:0 0 26px; }
.tv-tabs button { flex:1; padding:11px 2px; background:none; border:0; font:500 10px var(--font-body); color:var(--ink-soft); border-radius:4px; white-space:nowrap; }
.tv-tabs [aria-current] { background:var(--tv-paper); color:var(--tv-green); box-shadow:0 1px 3px #0000000b; }
.tv-period { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:0 0 20px; }
.tv-period h2 { margin-top:7px; font-family:var(--font-display); font-size:13px; font-weight:500; line-height:1.6; }
.tv-text-btn { background:none; border:0; color:var(--tv-green); font:500 10px var(--font-body); padding:8px 0; white-space:nowrap; }
.tv-quote-card { position:relative; background:var(--tv-green); color:#fffdf6; border-radius:5px; padding:34px 26px 26px; margin-bottom:16px; overflow:hidden; }
.tv-quote-mark { font:300 80px/1 var(--font-headline); position:absolute; top:9px; right:18px; opacity:.18; }
.tv-quote-card>p { font:300 28px/1.25 var(--font-headline); position:relative; }
.tv-quote-line { display:block; width:28px; height:1px; background:#d1b485; margin-top:24px; }
.tv-advice-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.tv-advice { background:var(--tv-soft); padding:18px 14px; border-radius:4px; }
.tv-advice-soft { background:#efebe2; }
.tv-advice p { font-size:12px; line-height:1.85; margin-top:12px; }
.tv-week-nav { display:flex; justify-content:space-between; align-items:center; margin:-5px 0 18px; border:1px solid var(--line); border-radius:4px; }
.tv-week-nav button { background:none; border:0; padding:10px 15px; font:11px var(--font-body); color:var(--tv-green); }
.tv-small-title { font:500 11px var(--font-display); margin:26px 0 14px; }
.tv-day { border-bottom:1px solid var(--line); }
.tv-day summary { list-style:none; display:flex; align-items:center; gap:16px; cursor:pointer; padding:15px 0; }
.tv-day summary::-webkit-details-marker,.tv-palace summary::-webkit-details-marker { display:none; }
.tv-day-date { font:300 30px/1 var(--font-headline); min-width:32px; color:var(--tv-green); text-align:center; }
.tv-day-date small { display:block; font:9px var(--font-body); color:var(--ink-soft); margin-top:4px; }
.tv-day summary strong { font:500 12px var(--font-body); display:block; margin-bottom:3px; }
.tv-day summary .tv-muted { font-size:10px; }
.tv-plus { margin-left:auto; color:var(--tv-gold); }
.tv-day[open] .tv-plus,.tv-palace[open] .tv-plus { transform:rotate(45deg); }
.tv-day-body { padding:0 0 18px 48px; font-size:12px; line-height:1.85; }
.tv-day-action { margin-top:12px; background:var(--tv-soft); padding:12px; border-radius:3px; }
.tv-day-action>span { font:500 8px var(--font-display); letter-spacing:1px; color:var(--tv-green); }
.tv-day-action p { margin-top:5px; }
.tv-closing { margin-top:22px; border-left:2px solid var(--tv-gold); padding:6px 0 6px 16px; }
.tv-closing p { font-size:12px; line-height:1.85; margin-top:8px; }
.tv-prose { font-size:12px; line-height:1.9; }
.tv-prose p { margin:12px 0; white-space:pre-line; }
.tv-moments>section { display:flex; gap:16px; border-top:1px solid var(--line); padding:20px 0; }
.tv-moments h3 { font:500 12px var(--font-body); margin-bottom:8px; }
.tv-moments p { font-size:12px; line-height:1.8; color:var(--ink-mid); }
.tv-screen #tuvi-palace-grid { display:block; margin:18px 0; }
.tv-palace { border:1px solid var(--line); border-radius:4px; background:var(--tv-paper); margin-bottom:8px; }
.tv-palace summary { list-style:none; display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:16px; cursor:pointer; }
.tv-palace summary>span:first-child { width:90px; }
.tv-palace strong { font:500 12px var(--font-body); display:block; }
.tv-palace small { display:block; font:9px var(--font-body); color:var(--ink-soft); margin-top:4px; }
.tv-palace-preview { flex:1; font-size:10px; line-height:1.6; color:var(--ink-soft); }
.tv-palace-body { padding:0 16px 16px; font-size:11px; line-height:1.8; }
.tv-palace-body p { margin-bottom:10px; }.tv-palace-body b { display:block; font-weight:500; color:var(--tv-green); }
.tv-pill { display:inline-block; font:9px var(--font-body); border:1px solid #a1815160; border-radius:3px; padding:5px 8px; color:var(--tv-gold); }
.tv-star { color:var(--tv-gold); font-size:30px; }
.tv-oracle-result-head { margin:24px 0 16px; padding-top:20px; border-top:1px solid var(--line); }
.tv-oracle-result-head h3 { font:300 26px/1.35 var(--font-headline); margin-top:12px; }
.tv-footer { text-align:center; margin-top:38px; padding-top:24px; border-top:1px solid var(--line-soft); color:var(--ink-soft); font:10px/1.8 var(--font-body); }
.tv-skeleton { padding:25px 20px; background:var(--tv-soft); border-radius:4px; font-size:11px; color:var(--tv-green); }
.tv-skeleton i { display:block; height:10px; background:#364b4012; margin-top:17px; border-radius:3px; }.tv-skeleton i:last-child { width:65%; }
.tv-empty { padding:25px; background:#efebe2; border-radius:4px; }.tv-empty h3 { font:300 27px var(--font-headline); }.tv-empty p { font-size:12px; line-height:1.8; margin:12px 0; }
@media (max-width:350px) { .tv-content { padding-left:14px; padding-right:14px; }.tv-screen h1 { font-size:40px; }.tv-advice-grid { grid-template-columns:1fr; }.tv-period { align-items:flex-start; }.tv-period h2 { font-size:11px; } }
