/* Approved 2026-10-04 palette and replaceable illustration layer. */
@font-face{font-family:HouseScript;src:url('/assets/house-script.woff2') format('woff2');font-display:swap}
@font-face{font-family:HouseSerif;src:url('/assets/house-cjk-0.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:HouseSerif;src:url('/assets/house-cjk-1.ttf') format('truetype');font-weight:600;font-display:swap}
:root{--pink:#fce8ed;--rose:#f6d5e2;--paper:#fffafd;--card:#fffafd;--coffee:#6e513b;--cola:#3b2609;--ink:#493328;--muted:#927d76;--line:#e9a8c4;--soft-line:#efcada;--dot:#c6aa97;--card-shadow:#a59bb044;--nav-brown:#9a7f75}
button,input,textarea,select{font-family:inherit}
body{background:radial-gradient(circle,var(--dot) 1.35px,transparent 1.65px) 0 0/28px 28px,radial-gradient(circle,var(--dot) 1.35px,transparent 1.65px) 14px 14px/28px 28px,var(--pink);color:var(--ink)}
header .bar{min-height:76px;padding:2px 16px;justify-content:center}
header .brand{position:relative;display:block;flex:none;width:304px;max-width:100%;height:72px;overflow:hidden;line-height:0}
.brand .header-wordmark{display:block;position:absolute;width:100%;max-width:none;height:auto;left:0;top:50%;transform:translateY(-50%);user-select:none}
header:after{height:18px;background-size:36px 18px;filter:drop-shadow(0 -1.5px .8px #89625555)}
.house-icon{display:inline-block;flex:none;width:28px;height:28px;vertical-align:middle;overflow:visible}
.wrap{max-width:860px;padding-bottom:calc(128px + env(safe-area-inset-bottom))}.hero h1,.welcome h1{font-family:Georgia,HouseSerif,'Songti SC','STSong','SimSun',serif;font-weight:600;letter-spacing:.025em}.card,.row,.month-card,.chapter-card,.calendar-event,.welcome{border:1px solid var(--line);background:linear-gradient(140deg,#fffdfd,#fff8fc);box-shadow:5px 6px 0 var(--card-shadow);border-radius:20px}
.welcome{margin:12px 0 22px;padding:22px 20px 33px;min-height:156px;isolation:auto}.welcome:before{display:none}.welcome .muted{font-family:Georgia,HouseSerif,'Songti SC','SimSun',serif;font-size:15px;color:var(--ink)}.welcome-sign{padding-right:110px;font-size:16px;margin-top:17px}.welcome h1{font-size:29px;margin:0 0 10px}.house-status{margin-top:26px;font-size:12px}.house-status summary{font-size:12px;color:var(--muted);display:inline-block;padding:4px;min-height:32px}
.count-grid{gap:18px}.count-card,.home-calendar-card{position:relative;min-height:118px;padding:17px 16px;isolation:isolate}.count-card>div,.home-calendar-card>div{position:relative;z-index:1}.count-card .house-icon,.home-calendar-card .house-icon{position:absolute;right:13px;top:28px;width:48px;height:48px;z-index:0}.count-card .n,.home-calendar-card .n{font-size:35px;font-weight:600;color:var(--cola);padding-right:48px;line-height:1.4}.count-card>div:last-child,.calendar-card-title{font-family:Georgia,HouseSerif,'Songti SC','SimSun',serif;font-size:14px;max-width:calc(100% - 35px);line-height:1.5}.category-icon{margin-bottom:12px}.category-icon .house-icon{width:56px;height:56px}.category-card{padding:21px}.category-card:active,.count-card:active{transform:translateY(2px);box-shadow:3px 4px 0 var(--card-shadow)}.corner-sign{text-align:center;color:var(--cola)}
.bottom-nav{--nav-side:max(14px,calc((100vw - 650px)/2));--bow-slot:.125;--bow-nudge:0px;bottom:0;left:0;right:0;transform:none;width:100%;max-width:none;padding:12px var(--nav-side) calc(20px + env(safe-area-inset-bottom));border:0;border-radius:0;background:radial-gradient(circle,#ffe7ed 2.35px,transparent 2.65px) 0 0/30px 30px,radial-gradient(circle,#ffe7ed 2.35px,transparent 2.65px) 15px 15px/30px 30px,var(--nav-brown);box-shadow:0 -3px 10px #6e513b12;backdrop-filter:none;isolation:auto}
.bottom-nav:before{content:'';position:absolute;inset:auto 0 calc(100% - 15px);height:26px;border:0;background:url('/assets/nav-lace.svg') repeat-x center/104px 26px;filter:drop-shadow(0 1.2px 1px #4d342d55);pointer-events:none;z-index:1}.bottom-nav a{position:relative;min-height:52px;border-radius:0;background:none;color:var(--paper)}.bottom-nav a[aria-current=page]{background:none;box-shadow:none;border:0}.bottom-nav a .house-icon{width:43px;height:43px;stroke:#8e715d;filter:drop-shadow(0 1px 0 #fff7f3)}.nav-bow{display:block;position:absolute;z-index:2;top:-32px;left:0;width:84px;height:118px;transform:translate3d(calc(var(--nav-side) + (100vw - var(--nav-side)*2)*var(--bow-slot) - 56px + var(--bow-nudge)),0,0) rotate(-5deg);transform-origin:50% 22%;overflow:hidden;filter:drop-shadow(0 1px 1px #6e513b33);pointer-events:none}.bottom-nav[data-bow-section=time]{--bow-slot:.375}.bottom-nav[data-bow-section=window]{--bow-slot:.625}.bottom-nav[data-bow-section=us]{--bow-slot:.875}.bottom-nav[data-bow-ready=true] .nav-bow{transition:transform 300ms cubic-bezier(.22,.8,.22,1)}.nav-bow img{position:absolute;left:-22px;top:0;width:118px;height:118px;max-width:none;object-fit:contain;user-select:none}
.button{background:var(--coffee);border:1px solid var(--cola);color:var(--paper);box-shadow:0 3px 0 #3b260966;border-radius:14px;gap:7px}.button .house-icon{width:20px;height:20px}.button.secondary{background:#fff9fd;border-color:#ad9585;color:var(--coffee);box-shadow:0 3px 0 #a59bb033}.button:disabled{opacity:.5;cursor:default}.pill.active{background:var(--rose);border-color:#ba9388}.field{min-width:0;max-width:100%;font-size:16px}.field:focus{outline-color:#ab8875}form,label,.calendar-form-grid>* ,.search-form>*{min-width:0;max-width:100%}input[type=date],input[type=time],input[type=datetime-local],input[type=month]{appearance:none;-webkit-appearance:none;display:block;min-width:0;width:100%;max-width:100%;min-height:46px;box-sizing:border-box}input::-webkit-date-and-time-value{text-align:left;min-width:0}input::-webkit-datetime-edit{min-width:0;padding:0}.search-form{gap:0 10px}
.calendar-sticker .house-icon{width:27px;height:27px}.calendar-legend .house-icon{width:21px;height:21px;margin-right:3px}.calendar-day .calendar-stickers{max-width:100%;right:1px;bottom:2px}.calendar-day{border-color:var(--soft-line)}
.home-taosu{position:absolute;right:15px;bottom:9px;width:112px;height:64px;pointer-events:none}.taosu-run{position:absolute;left:0;bottom:0;width:78px;height:52px;background:url('/assets/taosu-run.webp') 0 0/300% 200% no-repeat;animation:taosu-frames .66s steps(1,end) infinite,taosu-bounce .22s ease-in-out infinite}.taosu-heart{position:absolute;right:1px;top:21px;font:25px/1 Georgia,serif;color:#d69aab;animation:heart-float 1.4s ease-in-out infinite}
@keyframes taosu-frames{0%{background-position:0 0}16.667%{background-position:50% 0}33.333%{background-position:100% 0}50%{background-position:0 100%}66.667%{background-position:50% 100%}83.333%{background-position:100% 100%}}
@keyframes taosu-bounce{50%{transform:translateY(-2.6px)}}@keyframes heart-float{50%{transform:translateY(-2px) scale(1.06)}}
#house-entry{position:fixed;inset:0;z-index:500;display:grid;place-items:center;background:radial-gradient(circle,#c6aa97aa 1.5px,transparent 1.8px) 0 0/30px 30px,radial-gradient(circle,#c6aa97aa 1.5px,transparent 1.8px) 15px 15px/30px 30px,#fce8ed;transition:opacity .45s ease;overflow:hidden}#house-entry[hidden]{display:none}#house-entry.leaving{opacity:0;pointer-events:none}.entry-note{position:relative;width:min(86vw,360px);transform-origin:36% 17%;animation:entry-wind 5s ease-in-out;filter:drop-shadow(3px 11px 8px #6e513b28)}.entry-note img{display:block;width:100%;height:auto}.entry-light{position:absolute;left:17%;top:44%;width:64%;height:32%;background:linear-gradient(112deg,transparent 35%,#fff8e530 43%,#fff7dfbd 50%,#fff8e530 57%,transparent 65%);background-size:250% 100%;mix-blend-mode:soft-light;animation:entry-light 4.85s ease-in-out;opacity:0;pointer-events:none}.entry-caption{position:absolute;bottom:8vh;font:11px Georgia,serif;letter-spacing:.22em;color:#846859}.entry-skip{position:absolute;right:18px;top:calc(18px + env(safe-area-inset-top));border:0;background:#fff9fd99;color:var(--coffee);font:12px inherit;border-radius:20px;padding:10px 15px;cursor:pointer}
@keyframes entry-wind{0%{transform:rotate(-1deg) rotateY(-2deg)}22%{transform:rotate(2.4deg) rotateY(3deg) translateY(1px)}48%{transform:rotate(-2deg) rotateY(-3deg) translateY(-1px)}73%{transform:rotate(1.2deg) rotateY(2deg)}100%{transform:rotate(-.7deg)}}@keyframes entry-light{0%,12%{background-position:100% 0;opacity:0}24%,56%{opacity:.65}72%,100%{background-position:-100% 0;opacity:0}}
body.house-loading-slow #house-progress{display:block;transform:scaleX(.8);background:#a88979;height:2px}#house-message{bottom:calc(114px + env(safe-area-inset-bottom))}
@media(max-width:780px){.bar{min-height:72px}.brand{font-size:36px}.wrap{padding:24px 18px calc(123px + env(safe-area-inset-bottom))}.welcome{padding:20px 17px 29px}.welcome h1{font-size:25px}.welcome .muted{font-size:13px}.count-card,.home-calendar-card{padding:15px 12px}.count-card .house-icon,.home-calendar-card .house-icon{width:42px;height:42px;right:10px;top:29px}.count-card>div:last-child,.calendar-card-title{font-size:13px}.calendar-sticker .house-icon{width:21px;height:21px}.category-card{padding:20px 16px}}
@media(max-width:350px){.bottom-nav[data-bow-section=home]{--bow-nudge:8px}.wrap{padding-left:14px;padding-right:14px}.count-grid{gap:14px}.count-card .house-icon,.home-calendar-card .house-icon{width:35px;height:35px;right:8px}.count-card .n,.home-calendar-card .n{font-size:31px}.welcome h1{font-size:22px}.welcome .muted{font-size:12px}.welcome-sign{font-size:13px}.search-form{grid-template-columns:minmax(0,1fr)}.brand{font-size:31px}.home-taosu{right:7px;width:101px}}
@media(prefers-reduced-motion:reduce){.entry-note,.entry-light,.taosu-run,.taosu-heart{animation:none!important}#house-entry{transition:none}}

body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',HouseSerif,'PingFang SC',sans-serif}.pill,.inline-actions>a{gap:7px}.pill .house-icon,.inline-actions .house-icon{width:20px;height:20px}.wrap .calendar-event{box-shadow:4px 5px 0 var(--card-shadow);border-color:var(--line)}

/* Continuous chrome and short, interruptible content transitions. */
html{overflow-x:clip}
body.house-loading .brand{opacity:1}
.bottom-nav a{-webkit-tap-highlight-color:transparent}
.bottom-nav a[data-house-pending] .house-icon{opacity:.72}
.wrap[data-house-motion]{will-change:opacity,transform}
.category-card h2{font-family:inherit}
@media(prefers-reduced-motion:reduce){.bottom-nav[data-bow-ready=true] .nav-bow{transition:none}}

/* Four-point glints travel between the two lace edges; never a hit target. */
.header-sparkles{--star-fall:var(--lace-span,calc(100dvh - 184px - env(safe-area-inset-top) - env(safe-area-inset-bottom)));position:absolute;top:calc(100% + 13px);left:0;right:0;height:max(0px,var(--star-fall));overflow:hidden;pointer-events:none;user-select:none;contain:layout paint}
.lace-star{position:absolute;left:var(--star-x);top:-22px;width:calc(var(--star-size)*1.35);height:calc(var(--star-size)*1.89);color:#99a9c8;opacity:0;animation:lace-star-fall var(--star-duration) linear var(--star-delay) infinite;will-change:transform,opacity}
.lace-star:nth-child(3n+2){color:#a7a6c5}.lace-star:nth-child(4n){color:#9caec5}
.lace-star svg{display:block;width:100%;height:100%;overflow:visible;fill:#fffefd;stroke:currentColor;stroke-width:.65;filter:drop-shadow(0 0 1px currentColor) drop-shadow(0 0 4px #dfe6ff);transform-origin:center;animation:lace-star-twinkle calc(var(--star-duration)*.23) ease-in-out var(--star-delay) infinite}
.lace-star .star-rays{fill:none;stroke-width:.45;stroke-linecap:round;opacity:.68}
.lace-star .star-glint{fill:#fffefd;stroke:none;filter:drop-shadow(0 0 1px #fff);opacity:1}
@keyframes lace-star-fall{
  0%{opacity:0;transform:translate3d(0,0,0) rotate(-12deg)}
  6%{opacity:.95}
  35%{transform:translate3d(calc(var(--star-drift)*.8),calc((var(--star-fall) + 12px)*.35),0) rotate(1deg)}
  70%{transform:translate3d(calc(var(--star-drift)*.35),calc((var(--star-fall) + 12px)*.7),0) rotate(14deg)}
  96%{opacity:.95}
  100%{opacity:0;transform:translate3d(var(--star-drift),calc(var(--star-fall) + 12px),0) rotate(24deg)}
}
@keyframes lace-star-twinkle{
  0%,100%{opacity:.65;transform:scale(.9)}
  32%{opacity:.85;transform:scale(.99)}
  48%{opacity:1;transform:scale(1.22)}
  65%{opacity:.76;transform:scale(.95)}
}
@media(prefers-reduced-motion:reduce){.header-sparkles{display:none}.lace-star,.lace-star svg{animation:none;will-change:auto}}
