/* Wootachuan: light, grain of space, and a clear reading rhythm. */
:root{--paper:#f3f0e9;--ink:#332f29;--muted:#696359;--line:#d5cdbf;--navy:#332f29;--brand-serif:'Noto Serif TC','Songti TC','STSong','PMingLiU',serif;--brand-sans:-apple-system,BlinkMacSystemFont,'PingFang TC','Noto Sans TC','Microsoft JhengHei',sans-serif;--accent:#82684a;--surface:#fcfaf5;--forest:#344b3f}
body{font-family:var(--brand-sans);font-size:1rem;line-height:1.85;letter-spacing:.015em;-webkit-font-smoothing:antialiased;background:linear-gradient(135deg,#f7f4ed 0,#f0ece3 65%,#f5f2eb 100%);color:var(--ink)}
button,input,select,textarea{font-family:var(--brand-sans);letter-spacing:inherit}
h1,h2,h3,.brand-mark,.welcome-overline,.platform-banner p{font-family:var(--brand-serif);font-weight:500;letter-spacing:.045em}
h1,h2,h3{overflow-wrap:break-word;text-wrap:pretty}
p,li{line-height:1.85}
button,a,input,select,textarea{-webkit-tap-highlight-color:#aa927238}
button,a{touch-action:manipulation}
header{background:#f7f4eef5;border-bottom-color:#cfc5b5}
.brand .brand-mark{font-family:var(--brand-serif);font-weight:500;letter-spacing:.22em}
.brand-mark small{font-family:var(--brand-sans);font-size:.75rem;letter-spacing:.16em;font-weight:500}
.brand .brand-descriptor{font-size:.875rem;line-height:1.7;color:#665e51}
.header-actions{font-size:.875rem}
.eyebrow,.section-kicker{font-family:var(--brand-sans);font-size:.75rem;font-weight:500;letter-spacing:.14em;line-height:1.7;color:#806b51}
/* One existing photograph becomes the entrance's architectural backdrop. */
.friend-welcome{position:relative;isolation:isolate;display:block;max-width:1440px;margin:24px auto 36px;padding:44px 5%;overflow:hidden;min-height:0;background:#615649;border:1px solid #d3c9b9}
.welcome-photo{position:absolute;inset:0;z-index:-1;min-height:0;margin:0;overflow:hidden}
.welcome-photo img{object-position:55% 52%;animation:space-settle 3.8s cubic-bezier(.2,.65,.35,1) both}
.welcome-photo:after{background:linear-gradient(90deg,#29231d1a 28%,#29231d10 60%),linear-gradient(0deg,#201c17cc 0%,#201c175c 38%,transparent 66%)}
.welcome-photo:before{content:'';position:absolute;inset:0;z-index:1;background:linear-gradient(105deg,transparent 35%,#fff6df24 49%,transparent 64%);transform:translateX(110%);pointer-events:none;animation:daylight-pass 3.8s ease-out both}
.welcome-copy{width:min(100%,530px);position:relative;z-index:2;padding:32px 34px;background:#fbf9f4f5;border:1px solid #ffffffc4;box-shadow:0 16px 44px #241d1420;animation:copy-arrive .65s ease-out both}
.welcome-copy>.eyebrow{font-size:.75rem;margin-bottom:12px}
.welcome-overline{font-size:1rem;letter-spacing:.15em;color:#816b4e;line-height:1.75;margin:0 0 14px}
.welcome-copy h1{font-size:clamp(1.875rem,3.2vw,2.75rem);font-weight:500;line-height:1.5;letter-spacing:.035em;margin:0 0 18px}
.platform-name{font-size:.875rem;font-weight:500;letter-spacing:.05em;color:#6d5b43;margin:0 0 12px}
.welcome-description{font-size:1rem;line-height:1.85;color:#625d54;margin:0 0 20px}
.invite{margin-top:20px;padding-top:20px;border-top:1px solid #cbbda8}
.invite>span{font-size:.9375rem;font-weight:500;letter-spacing:.04em}
.invite>p{font-size:.875rem;line-height:1.8;margin:6px 0 14px}
.line-primary,.enter-platform{border-radius:6px;padding:14px 18px;min-height:54px;font-size:1rem;line-height:1.7;gap:12px}
.line-primary{background:var(--forest);border-color:var(--forest);box-shadow:0 3px 10px #344b3f18}
.line-primary>span,.enter-platform>span{font-size:.875rem;font-variant-numeric:tabular-nums;letter-spacing:0}
.line-primary b,.enter-platform b{font-family:var(--brand-sans);font-size:1.25rem;font-weight:400}
.friend-confirm{font-size:.9375rem;line-height:1.8;min-height:44px;margin:12px 0;align-items:center;gap:10px}
.friend-confirm input{width:22px;height:22px;margin:0;accent-color:var(--forest)}
.enter-platform{color:#fffdf9;background:#514636;border-color:#514636}
.enter-platform:disabled{color:#817b70;background:#eae5dc;border-color:#ccc2b2}
.enter-platform:not(:disabled):hover{background:#3e3529}
.invite .access-note{font-size:.875rem;line-height:1.75;margin:12px 0 0;color:#72695c}
.ai-note{font-size:.875rem;line-height:1.8;margin:18px 0 0;padding-top:14px;border-top:1px solid #d9d0c2;color:#73695a}
.welcome-photo figcaption{inset:auto 5% 44px auto;width:34%;color:#fffaf0;text-shadow:0 1px 10px #1e181c30}
.welcome-photo figcaption>span{font-size:.75rem;letter-spacing:.14em}
.welcome-photo figcaption p{font-family:var(--brand-serif);font-size:clamp(1.6rem,2.5vw,2.25rem);font-weight:500;line-height:1.75;letter-spacing:.08em;margin:12px 0 16px}
.welcome-photo figcaption a{font-size:.875rem;min-height:44px;display:inline-flex;align-items:center;letter-spacing:.025em}
/* Keep the image subtle behind headings; data stays on clear paper surfaces. */
.panel-heading{position:relative;margin:22px 0 18px;padding:27px 28px 23px;border:1px solid #d7ccbb;border-left:3px solid #a18965;background:linear-gradient(90deg,#faf8f2fa 0%,#faf8f2f2 45%,#faf8f2cb 100%),url('assets/woota-residence.jpg') right 48%/cover no-repeat}
.panel-heading h1{font-size:clamp(1.8rem,3vw,2.25rem);line-height:1.65;letter-spacing:.04em;margin:8px 0 10px;font-weight:500}
.panel-heading>p{font-size:1rem;color:#686052;margin:0;max-width:42em}
.tab-panel:not([hidden]) .panel-heading{animation:heading-arrive .5s ease-out both}
.tab-shell{background:#f7f4eef7;box-shadow:0 4px 18px #4b39220a;border-bottom:1px solid #d7cdbb}
.tabs button{font-family:var(--brand-sans);font-weight:400;line-height:1.75}
.tabs button[aria-selected=true]{background:#e5ddce;border-bottom-color:#856e4f}
.mobile-reading-header strong{font-family:var(--brand-serif);font-size:1.1875rem;font-weight:500;letter-spacing:.06em}
.mobile-reading-header button{border-radius:5px;background:#514636;border-color:#514636;font-family:var(--brand-sans)}
.mobile-chapter-strip a{border-radius:4px}
.mobile-chapter-strip a[aria-current=location]{box-shadow:inset 0 -2px #876b45;background:#e8dfcf}
.topic-jumps>a{background:#fcfaf6;border-color:#d0c4b1;border-radius:5px;box-shadow:0 2px 6px #4d392108;font-size:1rem}
.contents-caption{font-weight:500;color:#514432}
.contents-caption>span{font-weight:400;color:#79705f}
.reading-next a{border-radius:6px}
.reading-next .reading-forward{background:#514636;border-color:#514636}
.mobile-reading-dock{background:#f7f4eef7}
.mobile-reading-dock button,.mobile-reading-dock a{border-radius:5px}
.mobile-reading-dock a{background:var(--forest);border-color:var(--forest)}
.calc-item,.policy-card,.check-card,.habit-group{background:#fcfaf6;border-color:#d5cbbb;border-radius:6px;box-shadow:0 3px 14px #47372205}
.calc-item:has([data-item]:checked){border-color:#9b8260;background:#f2ece1}
.habit-group[open]{background:#fcfaf6;border-color:#baa687}
.habit-group>summary{border-radius:6px;transition:background-color .18s ease}
.habit-group[open]>summary{background:#eae2d4}
.habit-heading,.stage-heading h3,.consult-copy h2{font-family:var(--brand-serif);font-weight:500;letter-spacing:.035em}
.habit-option{line-height:1.85}
.habit-option:has(input:checked){color:#344b3f}
.habit-option input,.check-row input,.calc-check input{accent-color:var(--forest)}
.estimate,.calc-extras,.habits-intro,.habits-review,.ebook-intro{border-radius:7px;overflow:clip}
.estimate-result{background:linear-gradient(135deg,#414039,#34352f)}
.estimate-result strong,.calc-total strong,.selection-summary strong{font-variant-numeric:tabular-nums;letter-spacing:0}
.estimate-result>strong,.dimension-highlights strong{font-family:Georgia,'Times New Roman',serif}
.fields input,.fields select,.calc-fields input,.calc-quantity input,.item-controls input[type=search],textarea{border:1px solid #c5b9a5;background:#fffdf9;border-radius:5px;color:#383127;min-height:48px}
.primary,.calc-switch button,.calc-actions button,.calc-actions a,.template-copy button,.habits-actions button,.habits-actions a,.consult-button{border-radius:5px}
.consultation{border-top:1px solid #b9a789}
.consult-copy h2{font-size:1.75rem;line-height:1.7}
.consult-button{background:#514636;border-color:#514636}
thead{background:#e6dfd3;color:#5c503e}
tbody th{font-weight:500;color:#453b2e}
tbody td{color:#655e53}
.power-reference-table td,.power-reference-table th{font-family:var(--brand-sans)}
.completion-section>h2{font-size:1.75rem;line-height:1.65}
.section-lead,.editorial-note{line-height:1.9}
.height-figure,.dimension-diagram,.dimension-detail,.sources,.callout,.disclaimer{border-radius:6px}
#reading-menu{background:#f6f2ea;box-shadow:0 -16px 64px #2c211d26}
#reading-menu[open]{animation:menu-arrive .22s ease-out both}
.reading-menu-heading h2{font-family:var(--brand-serif);font-size:1.5rem;letter-spacing:.06em}
.reading-menu-heading button,.reading-menu-switch,#reading-chapters a,#reading-topics a{border-radius:5px}
footer{font-size:.875rem;line-height:1.9;background:#efeae0;border-top-color:#d0c4b1;color:#726756}
.footer-links a{font-size:.875rem;min-height:44px;display:inline-flex;align-items:center}
.visual-arrived{animation:reading-arrive .55s ease-out both}
@keyframes space-settle{from{transform:scale(1.04)}to{transform:scale(1)}}
@keyframes daylight-pass{from{transform:translateX(-110%);opacity:0}30%{opacity:1}to{transform:translateX(110%);opacity:0}}
@keyframes copy-arrive{from{opacity:.55;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes heading-arrive{from{opacity:.6}to{opacity:1}}
@keyframes reading-arrive{from{opacity:.7;transform:translateY(5px)}to{opacity:1;transform:none}}
@keyframes menu-arrive{from{opacity:.7;transform:translateY(12px)}to{opacity:1;transform:none}}
@media(hover:hover) and (prefers-reduced-motion:no-preference){
 .topic-jumps>a,.consult-button,.line-primary,.reading-next a{transition:background-color .2s ease,box-shadow .2s ease,transform .2s ease}
 .topic-jumps>a:hover,.consult-button:hover,.line-primary:hover,.reading-next a:hover{transform:translateY(-1px);box-shadow:0 5px 12px #42301812}
}
@media(max-width:1100px) and (min-width:901px){.welcome-copy{width:53%;padding:27px}.welcome-photo figcaption{width:32%}}
@media(max-width:900px){
 body{font-size:1rem;letter-spacing:.01em;line-height:1.85}
 header{padding-top:16px;padding-bottom:12px}
 .brand .brand-mark{font-size:1.625rem;letter-spacing:.2em}
 .brand-mark small{font-size:.75rem;letter-spacing:.11em}
 .brand .brand-descriptor{font-size:.875rem;letter-spacing:.015em}
 .header-actions{font-size:.875rem}
 .friend-welcome{margin:0 0 24px;padding:160px max(16px,env(safe-area-inset-right)) 20px max(16px,env(safe-area-inset-left));border:0;overflow:hidden}
 .welcome-copy{width:100%;max-width:580px;margin:0 auto;padding:24px 22px;background:#fbf9f4f7;border-radius:8px;border-color:#fffdf7c9;box-shadow:0 8px 26px #201a1326}
 .welcome-copy>.eyebrow{font-size:.75rem;margin:0 0 6px}
 .welcome-overline{font-size:.9375rem;margin:0 0 10px;letter-spacing:.11em}
 .welcome-copy h1{font-size:clamp(1.65rem,6.8vw,2rem);line-height:1.6;letter-spacing:.025em;margin:0 0 12px}
 .platform-name{font-size:.875rem;margin:0 0 10px;letter-spacing:.01em}
 .welcome-description{font-size:1rem;line-height:1.85;margin:0 0 15px}
 .invite{margin-top:16px;padding-top:16px}
 .invite>span{font-size:.9375rem;line-height:1.8;letter-spacing:0}
 .invite>p{font-size:.875rem;margin-bottom:14px}
 .line-primary,.enter-platform{font-size:1rem;padding:13px 14px;gap:10px;min-height:54px}
 .line-primary>span,.enter-platform>span{font-size:.875rem}
 .friend-confirm{font-size:.9375rem;min-height:48px;margin:8px 0}
 .invite .access-note,.ai-note{font-size:.875rem;line-height:1.85}
 .ai-note{margin-top:16px;padding-top:12px}
 .welcome-photo{min-height:0;grid-row:auto}
 .welcome-photo img{object-position:60% 42%}
 .welcome-photo:after{background:linear-gradient(180deg,#211b15b3 0,#211b159e 180px,#211b151a 340px,#211b151c 100%)}
 .welcome-photo figcaption{top:20px;bottom:auto;left:26px;right:26px;width:auto}
 .welcome-photo figcaption>span{font-size:.75rem;letter-spacing:.12em}
 .welcome-photo figcaption p{font-size:1.5rem;line-height:1.6;margin:5px 0;letter-spacing:.04em}
 .welcome-photo figcaption p br{display:none}
 .welcome-photo figcaption a{font-size:.875rem;min-height:40px;margin-top:0}
 .panel-heading{margin:18px 0 16px;padding:20px 18px 18px;background-position:center,right 40%;background-size:auto,cover}
 .panel-heading h1{font-size:1.75rem;line-height:1.65;margin:7px 0 8px;letter-spacing:.025em}
 .panel-heading>p{font-size:1rem;line-height:1.8}
 .topic-jumps>a{font-size:1rem;line-height:1.7;padding:11px 10px}
 .topic-jumps>a>span{font-size:.75rem}
 .mobile-reading-header strong{font-size:1.1875rem}
 .mobile-reading-header button,.mobile-chapter-strip a,.mobile-reading-dock button,.mobile-reading-dock a{font-size:.875rem;line-height:1.7}
 .calc-check{font-size:1.0625rem;line-height:1.8}
 .calc-check small{font-size:.875rem;line-height:1.8}
 .habit-heading{font-size:1.25rem;line-height:1.75;letter-spacing:.025em}
 .habit-heading small{font-size:.875rem;line-height:1.8;font-family:var(--brand-sans);letter-spacing:0}
 .habit-progress{font-size:.875rem}
 .habit-option{font-size:1rem;line-height:1.85}
 .section h2,.completion-section>h2,.electrical-section h2,.consult-copy h2{font-size:1.5rem;line-height:1.75;letter-spacing:.025em}
 .ebook-question summary{font-size:1rem;line-height:1.8}
 .estimate h2{font-size:1.375rem;line-height:1.75}
 .facts small,.contents-caption>span,.section-lead,.topic-intent>span{font-size:.875rem;line-height:1.85}
 .completion-section>.section-lead{font-size:1rem}
 .friend-entry footer{padding-top:20px;padding-bottom:24px}
}
@media(max-width:360px){
 .welcome-copy{padding:20px 16px}.friend-welcome{padding-left:12px;padding-right:12px}
 .welcome-photo figcaption{left:20px;right:20px}.welcome-photo figcaption p{font-size:1.375rem}
 .welcome-photo figcaption p br{display:block}.friend-welcome{padding-top:180px}
 .welcome-copy h1{font-size:1.625rem}.line-primary,.enter-platform{font-size:.9375rem}
 .panel-heading h1{font-size:1.625rem}.panel-heading{padding:18px 15px}
}
@media(prefers-reduced-motion:reduce){
 .welcome-photo img,.welcome-photo:before,.welcome-copy,.tab-panel:not([hidden]) .panel-heading,.visual-arrived,#reading-menu[open]{animation:none;transform:none;opacity:1}
 .welcome-photo:before{display:none}
}
@media print{
 body,footer{background:white}.panel-heading{background:white}
 .visual-arrived,.tab-panel:not([hidden]) .panel-heading{animation:none;transform:none;opacity:1}
 .calc-item,.habit-group,.policy-card{box-shadow:none}
}
