@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700&family=Noto+Serif+SC:wght@600;700&display=swap");body:has(.stu){margin:0;background:#f2f2f2}.stu{--ink:#171717;--mute:#737373;--line:#e6e6e6;--paper:#fafafa;--card:#ffffff;--pending:#8a5a12;--pending-bg:#f6efe4;--ok:#1d6b45;--ok-bg:#e7f3ec;--bad:#8f2d2d;max-width:440px;margin:0 auto;min-height:100vh;background:var(--paper);color:var(--ink);font-family:Noto Sans SC,PingFang SC,Hiragino Sans GB,sans-serif;font-size:15px;line-height:1.55;position:relative;padding-bottom:84px;box-shadow:0 0 0 1px rgba(0,0,0,.05)}.stu *{box-sizing:border-box}.stu button,.stu input,.stu select,.stu textarea{font:inherit;color:inherit}.stu button{-webkit-tap-highlight-color:transparent}.stu .mast{background:transparent;color:var(--ink);padding:22px 20px 4px}.stu .eyebrow{margin:0;font-size:12px;letter-spacing:.18em;color:var(--mute)}.stu .mast h1{margin:6px 0 0;font-family:"Noto Serif SC",Songti SC,serif;font-size:30px;font-weight:700;letter-spacing:.06em;line-height:1.15}.stu .mast .lede{margin:8px 0 0;color:var(--mute);font-size:14px}.stu .stu-body{padding:16px 16px 24px}.stu .chips{display:flex;flex-wrap:wrap;gap:8px;padding:0 0 14px}.stu .chips button{flex:0 0 auto;border:1px solid var(--line);background:var(--card);border-radius:999px;padding:7px 13px;color:var(--mute);cursor:pointer}.stu .chips button.on{background:var(--ink);border-color:var(--ink);color:white}.stu .cards{display:flex;flex-direction:column;gap:10px}.stu .tcard{display:grid;grid-template-columns:80px 1fr;grid-gap:0;gap:0;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:0;text-align:left;cursor:pointer;width:100%;overflow:hidden;min-height:112px}.stu .tcard:active{transform:scale(.985)}.stu .tcard:focus-visible,.stu button:focus-visible,.stu input:focus-visible,.stu textarea:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.stu .tcard img{width:80px;height:100%;min-height:112px;object-fit:cover;object-position:center top;background:#eee}.stu .meta{padding:10px 12px 10px 10px;min-width:0}.stu .lanes{display:block;color:var(--mute);font-size:11px;font-weight:700;letter-spacing:.02em}.stu .tcard .name{display:block;margin-top:1px;font-family:"Noto Serif SC",Songti SC,serif;font-size:18px;font-weight:700;letter-spacing:.04em}.stu .role{margin:1px 0 4px;color:var(--mute);font-size:12px}.stu .exp{margin:0;font-size:12px;color:#333;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.stu .week{display:flex;gap:4px;margin-top:8px}.stu .week span{width:16px;height:16px;border-radius:4px;background:#f0f0f0;color:#bdbdbd;font-size:10px;font-weight:700;display:grid;place-items:center}.stu .week span.on{background:var(--ink);color:white}.stu .back{border:0;background:transparent;color:var(--ink);padding:0 0 12px;cursor:pointer;font-weight:700}.stu .back:before{content:"← "}.stu .panel,.stu .slip{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;margin-bottom:12px}.stu .panel h2,.stu .slip h2{margin:0 0 4px;font-family:"Noto Serif SC",Songti SC,serif;font-size:22px;letter-spacing:.04em}.stu .panel h3{margin:16px 0 8px;font-size:13px;letter-spacing:.08em;color:var(--mute)}.stu .steps{list-style:none;margin:8px 0 0;padding:0;counter-reset:step}.stu .steps li{counter-increment:step;display:grid;grid-template-columns:28px minmax(0,1fr);grid-gap:8px;gap:8px;padding:12px 0;border-top:1px solid var(--line)}.stu .steps li:before{content:counter(step,decimal-leading-zero);color:var(--mute);font-weight:700;font-size:13px;padding-top:2px}.stu .steps b{display:block;font-size:15px}.stu .steps span{display:block;color:var(--mute);font-size:13px;margin-top:2px}.stu .topics{display:flex;flex-wrap:wrap;gap:8px}.stu .topics span{background:#f3f3f3;color:var(--ink);border-radius:999px;padding:5px 10px;font-size:12px;font-weight:700}.stu .field,.stu label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:700;margin-bottom:12px}.stu input,.stu textarea{width:100%;border:1px solid var(--line);background:white;border-radius:10px;padding:12px;font-weight:400}.stu input[readonly]{background:#f6f6f6;color:var(--mute)}.stu .days{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:8px;gap:8px}.stu .days button,.stu .slots button{border:1px solid var(--line);background:white;border-radius:10px;padding:8px 0;cursor:pointer;font-weight:700}.stu .days button.on,.stu .slots button.on{background:var(--ink);color:white;border-color:var(--ink)}.stu .days button:disabled{opacity:.28;cursor:default}.stu .days small{display:block;font-size:11px;font-weight:400}.stu .slots{display:flex;flex-direction:column;gap:8px}.stu .slots button{padding:12px;text-align:left;font-weight:500}.stu .primary{border:0;border-radius:12px;background:var(--ink);color:white;padding:14px}.stu .ghost,.stu .primary{width:100%;font-weight:700;cursor:pointer}.stu .ghost{margin-top:8px;border:1px solid var(--line);border-radius:12px;background:white;padding:12px}.stu .person{display:flex;gap:12px;align-items:center}.stu .person img{width:72px;height:92px;object-fit:cover;object-position:center top;border-radius:10px}.stu .person h2{margin:0;font-size:22px}.stu .person p{margin:4px 0 0;font-size:13px;font-weight:400}.stu .person .lanes,.stu .person p{color:var(--mute)}.stu .person .week{margin-top:8px}.stu .slip .eyebrow{color:var(--mute);letter-spacing:.16em}.stu .slip dl{margin:14px 0 16px}.stu .slip dl div{display:grid;grid-template-columns:48px 1fr;grid-gap:8px;gap:8px;padding:8px 0;border-top:1px solid var(--line)}.stu .slip dt{color:var(--mute);font-size:13px}.stu .slip dd{margin:0}.stu .appt{position:relative;background:white;border:1px solid var(--line);border-radius:16px;padding:14px 14px 14px 16px;margin-bottom:10px;overflow:hidden}.stu .appt:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--ink)}.stu .appt.cancelled:before,.stu .appt.completed:before{background:#ddd}.stu .appt header{display:flex;justify-content:space-between;gap:8px;align-items:center}.stu .appt h3{margin:0;font-size:17px;font-family:"Noto Serif SC",serif}.stu .appt p{margin:8px 0 0}.stu .appt .when{color:var(--mute);font-size:13px}.stu .pill{font-size:12px;font-weight:700;padding:3px 8px;border-radius:999px;background:var(--paper)}.stu .pill.pending{color:var(--pending);background:var(--pending-bg)}.stu .pill.confirmed{color:var(--ok);background:var(--ok-bg)}.stu .pill.completed{color:var(--mute)}.stu .pill.cancelled{color:var(--bad);background:#f8ecec}.stu .linkish{margin-top:10px;border:0;background:transparent;color:var(--bad);padding:0;font-weight:700;cursor:pointer}.stu .nav{position:fixed;left:50%;bottom:0;transform:translateX(-50%);width:min(440px,100%);display:grid;grid-template-columns:repeat(3,1fr);background:#ffffff;border-top:1px solid var(--line);box-shadow:0 -8px 18px rgba(0,0,0,.04);padding:6px 6px calc(8px + env(safe-area-inset-bottom));z-index:4}.stu .nav button{border:0;background:transparent;color:var(--mute);padding:6px 0 4px;cursor:pointer;font-weight:500;font-size:11px;display:flex;flex-direction:column;align-items:center;gap:2px}.stu .nav svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.stu .nav button.on{color:var(--ink);font-weight:700}.stu .toast{position:fixed;left:50%;bottom:88px;transform:translateX(-50%);background:var(--ink);color:white;border-radius:999px;padding:10px 16px;max-width:min(400px,90%);z-index:5}.stu .empty,.stu .hint{color:var(--mute);font-weight:400;font-size:13px}.stu .empty{padding:36px 8px;text-align:center}.stu .empty p{margin:0 0 16px}.stu .empty .primary{width:auto;min-width:160px;padding:12px 28px}.stu .hint{margin:0}.stu .gate h2{margin-bottom:14px}@media (max-width:440px){.stu{box-shadow:none}}@media (prefers-reduced-motion:reduce){.stu .tcard:active{transform:none}}