@font-face{font-family:Tingjian Sans;src:url(/tingjian/tingjian-preview-sans.ttf) format("truetype");font-weight:100 900;font-display:swap}:root{--background:#f6f4ed;--foreground:#202c26;--card:#fffefa;--primary:#25483b;--secondary:#dce8da;--muted-foreground:#56665c;--border:#dcddd2;--tingjian-warm:#f3e5d3;--tingjian-error:#9e413d}body{font-family:Tingjian Sans,Noto Sans SC,Microsoft YaHei,sans-serif}.tingjian-kicker{color:var(--primary);font-size:12px;font-weight:700;letter-spacing:.11em}.tingjian-muted,.tingjian-page-intro p{color:var(--muted-foreground)}.tingjian-shell{--tingjian-nav-height:calc(71px + env(safe-area-inset-bottom, 0px))}.tingjian-shell.tingjian-compact{--tingjian-nav-height:env(safe-area-inset-bottom,0px)}.tingjian-shell .app-header{position:sticky;top:0;z-index:31;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;height:calc(63px + env(safe-area-inset-top, 0px));padding:env(safe-area-inset-top,0) 20px 0;background:var(--card);border-bottom:1px solid var(--border)}.tingjian-header-title{display:grid;gap:2px;color:var(--foreground);font-size:16px;line-height:1.25}.tingjian-header-title small{color:var(--muted-foreground);font-size:10px;font-weight:700}.tingjian-shell .app-header>:last-child{justify-self:end;gap:3px}.tingjian-shell .app-header .icon-button{border:1px solid var(--border);border-radius:12px;background:var(--card);color:var(--primary);min-width:44px;min-height:44px}.tingjian-board-trigger{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:#edf1e8;color:var(--primary)}.tingjian-shell .app-main{padding:24px 20px calc(var(--tingjian-nav-height) + 20px);min-width:0}.tingjian-shell .course-detail-heading{flex-direction:row;align-items:flex-start;gap:12px}.tingjian-shell .course-detail-heading>div:first-child{min-width:0;flex:1 1 auto}.tingjian-shell .course-detail-heading>:last-child{flex:0 0 auto}.tingjian-shell .course-date-header{display:grid;grid-template-columns:32px minmax(0,1fr) 32px;align-items:center;gap:8px;min-height:92px;margin:0;padding:10px 12px;border-radius:18px;background:#258368;color:white}.tingjian-shell .course-date-header>button{display:grid;width:32px;height:64px;padding:0;place-items:center;color:inherit}.tingjian-shell .week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));align-items:stretch;gap:4px;min-width:0}.tingjian-shell .week-strip button{width:auto;height:64px;min-width:0;padding:8px 2px;border-radius:10px;gap:4px}.tingjian-shell .week-strip small{font-size:10px}.tingjian-shell .week-strip strong{font-size:18px}.tingjian-shell .week-strip .selected{background:white;color:#25483b}.tingjian-shell.chat-mode{--chat-header-height:calc(63px + env(safe-area-inset-top, 0px));--chat-bottom-space:var(--tingjian-nav-height)}.tingjian-shell.chat-mode .app-main{padding:0}.tingjian-shell .bottom-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;width:min(100%,1060px);left:50%;bottom:0;transform:translateX(-50%);padding:8px 17px calc(12px + env(safe-area-inset-bottom, 0px));border:0;border-top:1px solid var(--border);border-radius:0;background:var(--card);box-shadow:none}.tingjian-shell .nav-item{min-height:50px;justify-content:center;border-radius:12px;font-size:11px;line-height:1.15;gap:3px}.tingjian-shell .nav-item>span:first-child{padding:0;background:transparent}.tingjian-shell .nav-item>span:first-child svg{width:18px;height:18px}.tingjian-shell .nav-item.active{background:var(--secondary);color:var(--primary)}.tingjian-shell .admin-nav{overflow-x:auto;scrollbar-width:thin;margin-bottom:16px}.tingjian-shell .admin-nav a{flex:0 0 auto;white-space:nowrap;min-height:44px;padding:10px 12px}.tingjian-page-intro{display:grid;gap:5px}.tingjian-auth h1,.tingjian-page-intro h1{margin:0;font-size:clamp(29px,4vw,44px);color:var(--primary);line-height:1.22;font-weight:750}.tingjian-page-intro p{margin:0;font-size:14px}.tingjian-drawer-overlay{position:fixed;inset:0;z-index:50;background:rgb(18 36 26/38%)}.tingjian-drawer{--drawer-muted:#c8dacc;position:fixed;inset:0 auto 0 0;z-index:50;width:min(306px,78.46vw);overflow:auto;overscroll-behavior:contain;padding:calc(18px + env(safe-area-inset-top, 0px)) 19px calc(24px + env(safe-area-inset-bottom, 0px)) calc(19px + env(safe-area-inset-left, 0px));background:var(--primary);color:white;outline:none}.tingjian-drawer[data-state=open]{animation:tingjian-drawer-slide-in .26s cubic-bezier(.2,.75,.25,1) both}.tingjian-drawer[data-state=closed]{animation:tingjian-drawer-slide-out .2s ease-in both}.tingjian-drawer-overlay[data-state=open]{animation:tingjian-drawer-fade-in .26s ease-out both}.tingjian-drawer-overlay[data-state=closed]{animation:tingjian-drawer-fade-out .2s ease-in both}@keyframes tingjian-drawer-slide-in{0%{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes tingjian-drawer-slide-out{0%{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes tingjian-drawer-fade-in{0%{opacity:0}to{opacity:1}}@keyframes tingjian-drawer-fade-out{0%{opacity:1}to{opacity:0}}.tingjian-drawer-header{display:flex;align-items:center;justify-content:space-between}.tingjian-drawer-brand{display:flex;align-items:center;gap:9px;font-size:23px;font-weight:700}.tingjian-drawer-close{display:grid;place-items:center;width:44px;height:44px;border-radius:12px}.tingjian-drawer-close:hover{background:#ffffff18}.tingjian-drawer :is(a,button):focus-visible{outline:2px solid currentColor;outline-offset:-4px}.tingjian-drawer-intro{margin-top:17px}.tingjian-drawer-intro>p:first-child{color:var(--drawer-muted);font-size:11px;line-height:15px;font-weight:700;letter-spacing:1.5px}.tingjian-drawer [data-slot=dialog-title]{margin-top:8px;font-size:35px;line-height:44px;font-weight:500}.tingjian-drawer [data-slot=dialog-description]{margin-top:8px;color:var(--drawer-muted);font-size:13px;line-height:18px}.tingjian-drawer-spaces{display:grid;gap:17px;margin-top:17px}.tingjian-drawer-spaces a{display:grid;gap:7px;padding:15px;border-radius:18px;background:#36594c;color:white}.tingjian-drawer-spaces a:not([aria-current]):hover{background:#406456}.tingjian-drawer-spaces a[aria-current]{background:var(--secondary);color:var(--primary)}.tingjian-space-card-top{display:flex;align-items:center;gap:10px}.tingjian-space-card-top span,.tingjian-space-current{font-size:11px;line-height:15px;font-weight:700}.tingjian-space-card-top span{color:var(--drawer-muted);letter-spacing:1.5px}.tingjian-space-card-top svg:last-child{margin-left:auto}.tingjian-drawer-spaces strong{font-size:26px;line-height:33px;font-weight:500}.tingjian-drawer-note,.tingjian-drawer-spaces small{color:var(--drawer-muted);font-size:12px;line-height:17px}.tingjian-drawer-spaces a[aria-current] .tingjian-space-card-top span{color:inherit}.tingjian-drawer-spaces a[aria-current] small{color:var(--muted-foreground)}.tingjian-drawer-account{display:grid;gap:17px;margin-top:43px}.tingjian-drawer-account a{display:flex;align-items:center;gap:10px;min-height:46px;font-size:14px;font-weight:700}.tingjian-drawer-account a:hover{text-decoration:underline;text-underline-offset:4px}.tingjian-drawer-note{margin-top:50px}.tingjian-links{display:grid;gap:8px}.tingjian-links a,.tingjian-makeup{display:flex;min-height:52px;align-items:center;gap:11px;padding:9px 12px;background:var(--card);border:1px solid var(--border);border-radius:12px;color:var(--primary)}.tingjian-links a:hover,.tingjian-makeup:hover{background:#edf1e8}.tingjian-links a[aria-current]{background:var(--secondary)}.tingjian-links a>span,.tingjian-makeup>span{display:grid;flex:1;gap:2px;min-width:0}.tingjian-links a>svg,.tingjian-makeup>svg{flex:none}.tingjian-links small,.tingjian-makeup small{color:var(--muted-foreground);font-size:12px}.tingjian-tag{padding:3px 7px;border-radius:7px;background:#edf1e8;white-space:nowrap}.tingjian-today{display:grid;gap:12px}.tingjian-shell .app-main:has(>.tingjian-today){padding-top:18px}.tingjian-today>.tingjian-page-intro .tingjian-kicker{color:#9b563c}.tingjian-today-aside,.tingjian-today-grid,.tingjian-today-practice{display:grid;gap:10px;align-content:start}.tingjian-today h2{margin:0 0 7px;color:var(--primary);font-size:18px;font-weight:750}.tingjian-practice-card{position:relative;isolation:isolate;display:grid;justify-items:start;align-content:center;gap:12px;min-height:172px;padding:18px;border-radius:16px;overflow:hidden;background:var(--secondary);color:var(--primary)}.tingjian-practice-copy{z-index:1;max-width:calc(100% - 28px)}.tingjian-practice-copy h2{font-size:clamp(21px,4vw,30px);margin:5px 0}.tingjian-practice-copy p{font-size:13px}.tingjian-practice-card a{min-height:44px}.tingjian-today-cover{align-content:start;min-height:180px;gap:8px;padding:16px;border-radius:24px;background:#25483b url(/tingjian/practice-hills.svg) 100% 100%/100% auto no-repeat;color:white}.tingjian-today-cover .tingjian-kicker{color:#c8dacc}.tingjian-today-cover h2{color:white;font-size:clamp(24px,7.4vw,29px)}.tingjian-today-cover a{background:var(--card);color:var(--primary)}.tingjian-today-week{padding:10px 12px;border-radius:16px;border:1px solid var(--border);background:var(--card)}.tingjian-today-week>div{display:flex;align-items:center;justify-content:space-between;gap:8px}.tingjian-today-week h2{margin:0;font-size:16px}.tingjian-today-week>div>a{display:flex;align-items:center;min-height:28px;font-size:12px;color:var(--primary)}.tingjian-today-week p{color:var(--muted-foreground);font-size:12px;border-top:1px solid var(--border);padding-top:6px;margin-top:6px}.tingjian-week-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.tingjian-week-days li{border-radius:10px;color:var(--primary)}.tingjian-week-days li.today{background:var(--primary);color:white}.tingjian-week-days li.recorded{background:#edf1e8}.tingjian-week-days :is(a,span){display:grid;justify-items:center;align-content:center;gap:2px;min-height:64px}.tingjian-week-days small{font-size:12px}.tingjian-week-days i{height:4px;width:4px;background:var(--border);border-radius:50%}.tingjian-week-days li.recorded i,.tingjian-week-days li.today i{background:currentColor}.tingjian-today-tasklist{border-radius:16px;border:1px solid var(--border);background:var(--card);padding:0 12px;gap:0}.tingjian-today-tasklist a{border:0;border-radius:0;min-height:60px;padding-inline:0;background:transparent}.tingjian-today-tasklist a+a{border-top:1px solid var(--border)}.tingjian-makeup{background:var(--tingjian-warm);border-color:transparent;font-size:14px}.tingjian-feed{background:var(--card);border-color:var(--border)}#class-feed,#practice{scroll-margin-top:76px}.tingjian-auth,.tingjian-welcome{width:min(100%,430px);margin:0 auto;padding:max(36px,env(safe-area-inset-top,0px)) 20px max(24px,env(safe-area-inset-bottom,0px))}.tingjian-auth h1{margin:0 0 8px}.tingjian-auth form input{min-height:44px;background-color:var(--card)}.tingjian-auth .brand{color:var(--primary);width:max-content}.tingjian-auth .auth-help{margin-top:10px}.tingjian-demo-note,.tingjian-welcome aside{padding:12px;border-radius:12px;background:var(--secondary);color:var(--primary);font-size:13px}.tingjian-demo-note{margin-bottom:14px}.tingjian-welcome{display:grid;min-height:100dvh;align-content:center;gap:24px}.tingjian-welcome fieldset{display:grid;gap:8px}.tingjian-welcome legend{font-weight:700;margin-bottom:10px}.tingjian-welcome-option{display:flex;align-items:center;gap:10px;min-height:72px;padding:12px;border:1px solid var(--border);border-radius:14px;background:var(--card);color:var(--primary)}.tingjian-welcome-option:has(:checked){background:var(--secondary);border-color:#759a87}.tingjian-welcome-option>span{flex:1;display:grid}.tingjian-welcome-option small{font-size:12px;color:var(--muted-foreground)}.tingjian-welcome-option input{accent-color:var(--primary)}.tingjian-welcome-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tingjian-welcome-actions a{min-height:44px}.tingjian-admin-home{display:grid;gap:20px}.tingjian-admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.tingjian-admin-grid a{min-height:80px}.tingjian-admin-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.tingjian-admin-metrics a{display:grid;justify-items:center;gap:2px;padding:11px 3px;color:var(--primary);background:var(--secondary);border-radius:12px}.tingjian-admin-metrics strong{font-size:22px}.tingjian-admin-metrics small{font-size:11px}.tingjian-demo-map{width:100%;max-height:300px;background:#e8efe2;border:1px solid var(--border);border-radius:16px}.tingjian-walk{--background:#f2f6f2;--foreground:#173f35;--card:#fcfefb;--primary:#377759;--muted-foreground:#526c60;--secondary:#e6efe4;--border:#d9e6d9;background:var(--background)}.tingjian-discover{display:grid;gap:13px;margin:-24px -20px -12px;padding:22px 16px 16px;color:#173f35;background:radial-gradient(circle,#65906b36 1px,transparent 1.2px) 9px 11px /21px 21px,linear-gradient(160deg,#ecf3e9,#e6efe0)}.tingjian-tree-anchor{position:relative;z-index:3}.tingjian-tree-filters,.tingjian-tree-summary{display:grid;gap:10px;border:1px solid white;background:#f4f9f2;padding:12px;border-radius:20px;box-shadow:0 8px 24px #30553a12}.tingjian-tree-summary{grid-template-columns:auto minmax(0,1fr) auto;align-items:center}.tingjian-tree-summary p{font-size:11px;color:#526c60}.tingjian-tree-summary button{min-height:44px;border-radius:22px}.tingjian-tree-count{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;border:5px solid #83a990;background:#f4f9f2;color:#285e47;font-weight:750}.tingjian-tree-filters{position:absolute;inset-inline:0;top:calc(100% + 7px);box-shadow:0 9px 25px #264e3733}.tingjian-tree-filters :is(input,select){min-width:0;min-height:44px;background:var(--card);border-radius:12px;border:1px solid var(--border);padding:5px 8px;font-size:13px}.tingjian-tree-stage{position:relative;aspect-ratio:370/456;width:min(100%,440px);margin:0 auto;touch-action:pan-y;user-select:none}.tingjian-tree-art{position:absolute;inset:0;background:url(/tingjian/citywalk-tree.svg) 50%/100% 100% no-repeat;transform-origin:50% 94%}.tingjian-tree-art.shaking{animation:tingjian-tree-shake .58s ease-in-out}@keyframes tingjian-tree-shake{0%,to{transform:rotate(0)}18%{transform:rotate(5deg)}38%{transform:rotate(-5deg)}59%{transform:rotate(3.5deg)}78%{transform:rotate(-2deg)}}.tingjian-tree-branch{display:grid;justify-items:center;gap:3px;position:absolute;width:104px;transform:translate(-50%,-32px);color:#214c3c}.tingjian-tree-branch strong{padding:4px 7px;background:#f5faf1ec;border-radius:10px;font-size:12px;line-height:1.23}.tingjian-tree-branch small{font-size:10px;font-weight:650;background:#f3f9eced;padding:1px 4px;border-radius:6px}.tingjian-tree-orb{position:relative;display:grid;place-items:center;width:clamp(48px,16vw,70px);aspect-ratio:1;background:linear-gradient(155deg,#f0f8ee,#c9dec7);border:3px solid #f5fbf2;border-radius:50%;box-shadow:0 5px 0 #39654328,0 8px 18px #315a4040}.tingjian-tree-orb b{display:grid;place-items:center;min-width:23px;height:23px;border:2px solid white;border-radius:50%;position:absolute;right:-6px;top:-5px;color:white;background:#377759;font-size:11px}.tingjian-tree-branch:focus-visible .tingjian-tree-orb,.tingjian-tree-branch:hover .tingjian-tree-orb{transform:translateY(-4px)}.tingjian-tree-empty{position:absolute;inset:39% 0 auto;padding:24px 16px;background:#f4f9f2;border:1px solid white;border-radius:16px;text-align:center}.tingjian-point{display:flex;align-items:flex-start;gap:12px;background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px}.tingjian-point>span{display:grid;place-items:center;flex:0 0 30px;height:30px;border-radius:50%;background:var(--secondary);color:var(--primary)}.tingjian-point h2{font-weight:700}.tingjian-point p{color:var(--muted-foreground);font-size:13px}@media (min-width:760px){.tingjian-discover{margin-inline:-32px;padding-inline:32px}}@media (prefers-reduced-motion:reduce){.tingjian-tree-art.shaking{animation:none}}.tingjian-course-list{display:grid;gap:14px}.tingjian-course-tabs{display:flex;background:#edf1e8;padding:4px;border-radius:13px;gap:4px}.tingjian-course-tabs a{flex:1;min-height:43px;display:grid;place-items:center;padding:5px;border-radius:9px;text-align:center;color:var(--primary);font-size:13px;font-weight:700}.tingjian-course-tabs a[aria-current]{background:var(--primary);color:white}.tingjian-course-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.tingjian-course-actions .search-box{flex:1 1 155px;min-width:0;background:var(--card)}.tingjian-course-actions>a{min-height:44px}.tingjian-course-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:13px}.tingjian-course-card{overflow:hidden;background:var(--card);border:1px solid var(--border);border-radius:16px;box-shadow:none;padding:0;gap:0}.tingjian-course-card .course-card-cover{height:88px;min-height:0;padding:9px 12px;border-radius:0;background:var(--secondary)}.tingjian-course-card .course-symbol{background:var(--card);color:var(--primary);width:37px;height:37px}.tingjian-course-card [data-slot=card-content]{padding:12px 14px}.tingjian-course-card h3,.tingjian-teacher-course h2{color:var(--primary);font-size:19px;font-weight:750}.tingjian-course-card .course-description,.tingjian-teacher-course p{color:var(--muted-foreground);font-size:13px}.tingjian-course-card .course-card-footer{justify-content:flex-end}.tingjian-archives summary{min-height:44px;padding:10px}.tingjian-teacher-course{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px}.tingjian-teacher-course .tingjian-links{margin-top:12px}.tingjian-practice-page{display:grid;gap:14px;max-width:620px;margin:0 auto}.tingjian-practice-page .tingjian-practice-card{min-height:106px}.tingjian-practice-page .checkin-composer{border:1px solid var(--border);background:var(--card);border-radius:16px;box-shadow:none}.tingjian-practice-page .visibility-option{background:#edf1e8;border-radius:12px;min-height:64px}.tingjian-practice-page .composer-footer{flex-wrap:wrap;gap:8px}.tingjian-ai-section{display:grid;gap:10px;padding:14px;border:1px solid var(--border);background:var(--card);border-radius:16px}.tingjian-ai-section h2{font-size:18px;font-weight:700;color:var(--primary)}.tingjian-ai-provider{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px;background:#edf1e8;border-radius:12px}.tingjian-ai-provider div{display:grid;flex:1;min-width:100px}.tingjian-ai-provider small{color:var(--muted-foreground);overflow-wrap:anywhere}.tingjian-ai-module{display:grid;gap:10px;padding:12px;border:1px solid var(--border);border-radius:12px}.tingjian-ai-module select{max-width:100%}.tingjian-provider-dialog label{display:grid;gap:4px}.tingjian-ai-settings .tingjian-ai-section{border:0;background:none;padding:0}.tingjian-ai-settings .tingjian-ai-provider{background:var(--card);border:1px solid var(--border);border-radius:14px;display:grid;grid-template-columns:max-content max-content 1fr;padding:10px 12px}.tingjian-ai-settings .tingjian-ai-provider>div{grid-column:1/-1}.tingjian-ai-settings .tingjian-ai-provider button{background:#edf1e8}.tingjian-ai-settings .tingjian-ai-module{background:var(--card);border-radius:14px;gap:5px;padding:10px 12px}.tingjian-ai-settings .tingjian-ai-module select{display:block;width:100%;margin:0}.tingjian-ai-settings details>summary{color:var(--primary);font-size:13px;cursor:pointer;padding-block:6px}@media (min-width:760px){.tingjian-shell .app-main{padding-inline:32px}.tingjian-shell .bottom-nav{width:520px;border:1px solid var(--border);border-bottom:0;border-radius:18px 18px 0 0}.tingjian-today-grid{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);gap:20px}.tingjian-practice-card{padding:24px}}@media (max-width:400px){.tingjian-admin-grid{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.tingjian-drawer *,.tingjian-shell *{scroll-behavior:auto}.tingjian-drawer-overlay[data-state],.tingjian-drawer[data-state]{animation:none}}