:root{--paper:#eae0d8;--card:#f4ece5;--ink:#43382f;--ink2:#7a6a5c;--gold:#b08d57;--gold-soft:#c9b08a;--line:#d8c9bc;--done:#9a7b4f}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--paper)}body{color:var(--ink);-webkit-font-smoothing:antialiased;min-height:100vh;padding-bottom:84px;font-family:Noto Sans TC,sans-serif}.serif{font-family:Noto Serif TC,serif}a{color:inherit;text-decoration:none}.wrap{width:100%;max-width:480px;margin:0 auto;padding:30px 20px 40px}.kicker{letter-spacing:.32em;color:var(--gold);text-align:center;margin-bottom:22px;font-size:11px;font-weight:500}.kicker:before{content:"—— ";opacity:.55}.kicker:after{content:" ——";opacity:.55}.title{text-align:center;letter-spacing:.04em;font-family:Noto Serif TC,serif;font-size:36px;font-weight:500;line-height:1.42}.title small{display:block}.meter{margin:28px 0 8px}.meter .row{justify-content:space-between;align-items:baseline;margin-bottom:12px;display:flex}.day{letter-spacing:.28em;color:var(--ink2);font-family:Noto Serif TC,serif;font-size:15px}.day b{color:var(--ink);font-weight:600}.pct{color:var(--gold);letter-spacing:.1em;font-family:Noto Serif TC,serif;font-size:14px}.bar{background:var(--line);height:1px;position:relative}.bar>i{background:linear-gradient(90deg,var(--gold-soft),var(--gold));height:3px;transition:width .7s cubic-bezier(.2,.8,.2,1);display:block;position:absolute;top:-1px;left:0}.quote{text-align:center;color:var(--ink2);letter-spacing:.06em;margin:28px 0 6px;font-family:Noto Serif TC,serif;font-size:16px;font-style:italic;line-height:1.8}.rule{color:var(--gold);align-items:center;gap:14px;margin:24px 0 6px;display:flex}.rule:before,.rule:after{content:"";background:var(--line);flex:1;height:1px}.rule span{letter-spacing:.34em;font-family:Noto Serif TC,serif;font-size:12px}.tasks{list-style:none}.task{border-bottom:1px solid var(--line);padding:16px 4px}.task:last-child{border-bottom:0}.task .head{cursor:pointer;align-items:center;gap:16px;display:flex}.tick{border:1px solid var(--gold-soft);color:#0000;border-radius:50%;flex:none;justify-content:center;align-items:center;width:24px;height:24px;font-size:13px;transition:all .25s;display:flex}.task .tbody{flex:1;min-width:0}.task .name{letter-spacing:.04em;font-family:Noto Serif TC,serif;font-size:18px;font-weight:500}.task .desc{color:var(--ink2);margin-top:3px;font-size:12.5px}.task .face{color:var(--gold);letter-spacing:.2em;flex:none;font-family:Noto Serif TC,serif;font-size:12px}.task.on .tick{background:var(--done);border-color:var(--done);color:#f4ece5}.task.on .name{color:var(--ink2)}.upload{margin:12px 0 2px 40px}.uplabel{cursor:pointer;letter-spacing:.12em;color:var(--gold);border:1px dashed var(--gold-soft);border-radius:2px;align-items:center;gap:8px;padding:8px 14px;font-size:12.5px;transition:all .25s;display:inline-flex}.uplabel:hover{background:#fff5;border-style:solid}.uplabel input{display:none}.thumb{margin-top:12px}.thumb img{border:1px solid var(--line);border-radius:3px;width:100%;display:block}.thumb .note{border:0;border-bottom:1px solid var(--line);width:100%;color:var(--ink);letter-spacing:.04em;background:0 0;margin-top:8px;padding:6px 2px;font-family:Noto Serif TC,serif;font-size:14px}.thumb .note::placeholder{color:var(--gold-soft)}.thumb .note:focus{border-bottom-color:var(--gold);outline:0}.count{text-align:center;color:var(--ink2);letter-spacing:.2em;margin:22px 0 4px;font-family:Noto Serif TC,serif;font-size:13px}.count b{color:var(--done);font-weight:600}.seal{text-align:center;color:var(--gold);letter-spacing:.2em;margin-top:16px;font-family:Noto Serif TC,serif;font-size:14px}.cta{width:100%;color:var(--ink);border:1px solid var(--gold);letter-spacing:.28em;cursor:pointer;background:0 0;border-radius:2px;margin-top:24px;padding:16px;font-family:Noto Serif TC,serif;font-size:16px;transition:all .3s;display:block}.cta:hover{background:var(--gold);color:var(--card)}.cta:disabled{opacity:.5;cursor:default}.roast{z-index:60;background:#281e16c7;justify-content:center;align-items:center;padding:26px;display:flex;position:fixed;inset:0}.roast .box{background:var(--paper);text-align:center;border-top:3px solid var(--gold);border-radius:4px;width:100%;max-width:380px;padding:34px 26px 26px}.roast .em{letter-spacing:.1em;margin-bottom:14px;font-size:30px}.roast .tag{letter-spacing:.34em;color:var(--gold);margin-bottom:16px;font-family:Noto Serif TC,serif;font-size:12px}.roast .msg{letter-spacing:.04em;color:var(--ink);font-family:Noto Serif TC,serif;font-size:21px;line-height:1.7}.roast .sub{color:var(--ink2);letter-spacing:.12em;margin-top:14px;font-size:12.5px}.roast .close{border:1px solid var(--gold);width:100%;color:var(--ink);letter-spacing:.28em;cursor:pointer;background:0 0;border-radius:2px;margin-top:24px;padding:13px;font-family:Noto Serif TC,serif;transition:all .3s;display:block}.roast .close:hover{background:var(--gold);color:var(--card)}.wall-sub{text-align:center;color:var(--ink2);letter-spacing:.18em;margin-bottom:22px;font-size:12.5px}.grid{grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.cell{aspect-ratio:1;border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:3px;justify-content:center;align-items:center;transition:all .2s;display:flex;position:relative;overflow:hidden}.cell .n{color:var(--gold-soft);font-family:Noto Serif TC,serif;font-size:15px}.cell img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.cell .ov{background:linear-gradient(#0000 55%,#281e1699);justify-content:flex-end;align-items:flex-end;padding:4px;display:flex;position:absolute;inset:0}.cell .ov b{color:#f4ece5;letter-spacing:.05em;font-family:Noto Serif TC,serif;font-size:11px}.cell.has{border-color:var(--gold)}.cell.today{box-shadow:0 0 0 2px var(--gold) inset;border-color:var(--gold)}.cell.future{opacity:.45}.lb{z-index:50;background:#281e16b8;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.lb .box{background:var(--paper);border-radius:4px;width:100%;max-width:420px;max-height:86vh;padding:22px;overflow:auto}.lb h3{letter-spacing:.1em;text-align:center;margin-bottom:4px;font-family:Noto Serif TC,serif;font-size:20px;font-weight:500}.lb .d{text-align:center;color:var(--ink2);letter-spacing:.2em;margin-bottom:16px;font-size:12px}.lb .it{margin-bottom:16px}.lb .it .f{color:var(--gold);letter-spacing:.2em;margin-bottom:6px;font-family:Noto Serif TC,serif;font-size:13px}.lb .it img{border:1px solid var(--line);border-radius:3px;width:100%}.lb .it p{color:var(--ink2);letter-spacing:.04em;margin-top:6px;font-family:Noto Serif TC,serif;font-size:14px}.lb .empty{text-align:center;color:var(--ink2);padding:20px 0;font-family:Noto Serif TC,serif;font-style:italic;line-height:1.8}.lb .close{border:1px solid var(--gold);width:100%;color:var(--ink);letter-spacing:.28em;cursor:pointer;background:0 0;border-radius:2px;margin-top:8px;padding:12px;font-family:Noto Serif TC,serif;display:block}.lb .close:hover{background:var(--gold);color:var(--card)}.mecard{border:1px solid var(--gold);background:var(--card);border-radius:3px;align-items:center;gap:16px;margin:22px 0;padding:16px 18px;display:flex}.mecard .rk{color:var(--gold);font-family:Noto Serif TC,serif;font-size:30px}.mecard .mb{flex:1}.mecard .mb .nm{letter-spacing:.06em;font-family:Noto Serif TC,serif;font-size:18px}.mecard .mb .ss{color:var(--ink2);letter-spacing:.1em;margin-top:2px;font-size:12px}.mecard .sc{color:var(--ink);font-family:Noto Serif TC,serif;font-size:22px}.rank{list-style:none}.ritem{border-bottom:1px solid var(--line);align-items:center;gap:16px;padding:15px 6px;display:flex}.ritem:last-child{border-bottom:0}.ritem .rk{text-align:center;width:30px;color:var(--ink2);flex:none;font-family:Noto Serif TC,serif;font-size:18px}.ritem.top .rk{color:var(--gold)}.ritem .av{background:linear-gradient(135deg,var(--gold-soft),var(--gold));width:38px;height:38px;color:var(--card);border-radius:50%;flex:none;justify-content:center;align-items:center;font-family:Noto Serif TC,serif;font-size:16px;display:flex}.ritem .nm{letter-spacing:.04em;flex:1;font-family:Noto Serif TC,serif;font-size:16px}.ritem .nm small{color:var(--ink2);letter-spacing:.06em;margin-top:2px;font-family:Noto Sans TC;font-size:11px;display:block}.ritem .sc{color:var(--ink);font-family:Noto Serif TC,serif;font-size:17px}.ritem.me{background:var(--card);box-shadow:0 0 0 1px var(--gold) inset;border-bottom-color:#0000;border-radius:3px}.nav{background:var(--card);border-top:1px solid var(--line);z-index:40;justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.nav .inner{width:100%;max-width:480px;display:flex}.nav a{text-align:center;color:var(--ink2);letter-spacing:.2em;flex:1;padding:14px 0 16px;font-family:Noto Serif TC,serif;font-size:13px;position:relative}.nav a.on{color:var(--gold)}.nav a.on:after{content:"";background:var(--gold);width:26px;height:2px;position:absolute;top:0;left:50%;transform:translate(-50%)}.foot{text-align:center;color:var(--ink2);opacity:.7;letter-spacing:.24em;margin-top:30px;font-size:11px}.field{margin-bottom:18px}.field label{letter-spacing:.2em;color:var(--ink2);margin-bottom:8px;font-family:Noto Serif TC,serif;font-size:13px;display:block}.field input,.field textarea{background:var(--card);border:1px solid var(--line);width:100%;color:var(--ink);border-radius:2px;padding:13px 14px;font-family:Noto Sans TC;font-size:15px}.field input:focus,.field textarea:focus{border-color:var(--gold);outline:0}.switch{text-align:center;color:var(--ink2);letter-spacing:.1em;margin-top:20px;font-size:13px}.switch b{color:var(--gold);cursor:pointer}.err{text-align:center;color:#9a4b3f;letter-spacing:.06em;min-height:18px;margin-top:6px;font-size:13px}
