.login{background:radial-gradient(120% 80% at 10% 0,#e8dcc8 0%,#0000 55%),radial-gradient(90% 60% at 100% 100%,#d4e0d8 0%,#0000 50%),#f7f4ef;flex-direction:column;justify-content:center;min-height:100dvh;padding:24px 20px 40px;display:flex}.login__brand{text-align:center;margin-bottom:28px}.login__h{color:#f0c14b;background:#1a1a1a;border-radius:14px;justify-content:center;align-items:center;width:56px;height:56px;margin-bottom:12px;font-family:Georgia,Songti SC,serif;font-size:28px;font-weight:700;display:inline-flex}.login__brand h1{letter-spacing:.08em;margin:0;font-family:Georgia,Songti SC,serif;font-size:1.75rem}.login__brand p{color:#666;margin:8px 0 0;font-size:.9rem}.login__form{flex-direction:column;gap:12px;width:100%;max-width:360px;margin:0 auto;display:flex}.login__form label{color:#444;flex-direction:column;gap:6px;font-size:.85rem;display:flex}.login__form input{background:#fff;border:1px solid #ccc;border-radius:10px;padding:12px 14px;font-size:1rem}.login__form button{color:#fff;background:#1a1a1a;border:none;border-radius:10px;padding:12px;font-size:1rem}.login__ghost{color:#1a1a1a!important;background:0 0!important;border:1px solid #1a1a1a!important}.login__err{color:#b00020;margin:0;font-size:.85rem}.login__hint{color:#888;text-align:center;margin:4px 0 0;font-size:.75rem;line-height:1.4}.modal-backdrop{z-index:40;background:#00000073;position:fixed;inset:0}.modal{z-index:50;box-sizing:border-box;background:#fff;width:min(100%,420px);padding:16px;position:fixed;left:50%;transform:translate(-50%)}.modal.sheet{max-height:min(88dvh, calc(100dvh - env(safe-area-inset-top) - 8px));padding-bottom:calc(16px + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;flex-direction:column;gap:10px;display:flex;bottom:0}.modal--scroll{overflow:auto}.modal h3{margin:0 0 4px;font-size:1.05rem}@media (width<=420px){.modal{width:100%;padding:14px;left:0;transform:none}.modal.sheet{border-radius:14px 14px 0 0;gap:9px}.modal button{min-height:42px}}.modal label{color:#555;flex-direction:column;gap:4px;font-size:.8rem;display:flex}.modal input,.modal select,.modal textarea{border:1px solid #ccc;border-radius:8px;padding:10px;font-family:inherit;font-size:1rem}.modal button{color:#fff;background:#1a1a1a;border:none;border-radius:10px;padding:12px;font-size:.95rem}.modal__cancel,.modal__ghost{color:#222!important;background:#eee!important}.modal__danger{color:#b00020!important;background:0 0!important;padding:4px 8px!important;font-size:.8rem!important}.modal__danger-block{color:#b00020!important;background:#fde8e8!important}.modal__hint{color:#888;margin:0;font-size:.75rem;line-height:1.4}.modal__row{gap:8px;display:flex}.modal__row>*{flex:1;min-width:0}.modal__sub{flex-direction:column;gap:8px;display:flex}.modal__subhead{font-size:.8rem;font-weight:600}.modal__list{flex-direction:column;gap:8px;margin-top:4px;display:flex}.modal__listrow{border-bottom:1px solid #eee;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;font-size:.85rem;display:flex}.modal__listrow small{color:#888}.settings-gear{color:#fff;background:0 0;border:1px solid #ffffff59;border-radius:8px;flex-shrink:0;place-items:center;width:36px;height:36px;padding:0;font-size:1.1rem;line-height:1;display:inline-grid}.settings-row{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.settings-row strong{font-size:.95rem;display:block}.settings-row .modal__ghost,.settings-row button{flex-shrink:0;min-width:64px}.settings-msg{color:#2a5f3a;margin:6px 0 0;font-size:.75rem}.settings-block{border-bottom:1px solid #eee;flex-direction:column;gap:8px;padding-bottom:12px;display:flex}.settings-block strong{font-size:.95rem}.settings-steps{color:#555;margin:0;padding-left:1.25rem;font-size:.8rem;line-height:1.55}.month{min-height:100dvh;padding-bottom:24px;padding-top:env(safe-area-inset-top);background:#f7f4ef}.month__top{color:#f5f5f5;background:#1a1a1a;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.month__brand{align-items:center;gap:10px;display:flex}.month__h{color:#1a1a1a;background:#f0c14b;border-radius:10px;place-items:center;width:36px;height:36px;font-family:Georgia,Songti SC,serif;font-weight:700;display:grid}.month__brand strong{font-size:.95rem;display:block}.month__brand small{opacity:.65;text-overflow:ellipsis;white-space:nowrap;max-width:140px;font-size:.7rem;display:block;overflow:hidden}.month__actions{align-items:center;gap:8px;display:flex}.month__actions a,.month__actions button,.month__linkish{color:#f5f5f5;background:0 0;border:1px solid #ffffff59;border-radius:8px;padding:7px 10px;font-size:.8rem;text-decoration:none}.month__nav{justify-content:space-between;align-items:center;padding:12px 16px 4px;display:flex}.month__nav h2{margin:0;font-family:Georgia,Songti SC,serif;font-size:1.15rem}.month__nav button{background:#fff;border:none;border-radius:10px;width:40px;height:40px;font-size:1.4rem}.month__weekdays{text-align:center;color:#888;grid-template-columns:repeat(7,1fr);padding:8px 8px 0;font-size:.75rem;display:grid}.month__grid{grid-template-columns:repeat(7,1fr);gap:4px;padding:8px;display:grid}.month__cell{aspect-ratio:.82;text-align:left;background:#fff;border:none;border-radius:10px;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 4px;display:flex;position:relative;overflow:hidden}.month__cell--muted{opacity:.4}.month__cell--today{outline:2px solid #1a1a1a}.month__daynum{font-size:.85rem;font-weight:600}.month__tag{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:.55rem;line-height:1.2;overflow:hidden}.month__lunar{color:#777;font-size:.52rem;line-height:1.1}.month__tag--hol{color:#8a4b2a}.month__tag--sp{color:#2a5f8a}.month__dot{color:#fff;background:#1a1a1a;border-radius:8px;place-items:center;min-width:16px;height:16px;padding:0 4px;font-size:.6rem;display:grid;position:absolute;bottom:4px;right:4px}@media (width<=420px){.month__top{gap:6px;padding:8px}.month__brand{gap:8px;min-width:0}.month__brand small{max-width:98px}.month__actions{gap:6px}.month__actions a,.month__actions button,.month__linkish{padding:6px 8px;font-size:.72rem}.month__nav{padding:10px 10px 4px}.month__nav h2{font-size:1rem}.month__nav button{width:36px;height:36px}.month__weekdays{padding:6px 6px 0;font-size:.7rem}.month__grid{gap:3px;padding:6px}.month__cell{aspect-ratio:.78;border-radius:9px;padding:5px 4px}.month__daynum{font-size:.78rem}.month__tag{font-size:.5rem}.month__lunar{font-size:.48rem}}.wbar{background:#fff;border:1px solid #d8d0c6;border-radius:8px;align-items:stretch;gap:4px;min-height:48px;margin-bottom:4px;display:flex;overflow:hidden}.wbar--done{opacity:.55}.wbar__main{flex-direction:column;flex:1;gap:1px;min-width:0;padding:7px 8px;display:flex}.wbar__type{color:#888;font-size:.6rem}.wbar__title{text-overflow:ellipsis;white-space:nowrap;font-size:.86rem;font-weight:600;overflow:hidden}.wbar__sec{color:#666;text-overflow:ellipsis;white-space:nowrap;font-size:.74rem;overflow:hidden}.wbar__status{color:#333;background:#f3eee6;border:none;border-left:1px solid #d8d0c6;flex-shrink:0;min-width:74px;padding:0 10px;font-size:.78rem}@media (width<=420px){.wbar__status{min-width:68px;padding:0 8px;font-size:.74rem}.wbar__title{font-size:.82rem}}.day{height:100dvh;padding-top:env(safe-area-inset-top);background:#f7f4ef;flex-direction:column;display:flex}.day__top{color:#fff;background:#1a1a1a;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.day__left,.day__right{align-items:center;gap:8px;min-width:0;display:flex}.day__h{color:#1a1a1a;background:#f0c14b;border-radius:9px;flex-shrink:0;place-items:center;width:34px;height:34px;font-family:Georgia,Songti SC,serif;font-weight:700;display:grid}.day__spbtn{color:#f0c14b;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:1px solid #ffffff4d;border-radius:8px;max-width:40vw;padding:6px 10px;font-size:.8rem;overflow:hidden}.day__link{color:#fff;border:1px solid #ffffff59;border-radius:8px;align-items:center;min-height:36px;padding:7px 10px;font-size:.85rem;text-decoration:none;display:inline-flex}.day__close{color:#fff;background:0 0;border:1px solid #ffffff59;border-radius:8px;width:38px;height:38px;font-size:1rem}.day__sub{color:#666;background:#efeae2;flex-direction:column;gap:2px;padding:8px 14px;font-size:.8rem;display:flex}.day__sub strong{color:#222;font-size:.95rem}.day__body{flex:1;min-height:0;display:flex}.day__scroll{-webkit-overflow-scrolling:touch;flex:1;overflow:auto}.day__float{border-bottom:1px dashed #ccc;padding:8px 8px 4px}.day__float-label{color:#888;margin-bottom:6px;font-size:.7rem}.day__axis{display:flex;position:relative}.day__hours{color:#888;text-align:right;flex-shrink:0;width:42px;padding-right:6px;font-size:.7rem}.day__hour{box-sizing:border-box;border-top:1px solid #0000;padding-top:2px}.day__lane{border-left:1px solid #ddd;flex:1;position:relative}.day__line{box-sizing:border-box;border-top:1px solid #e6e0d8}.day__placed{z-index:1;position:absolute;left:4px;right:4px}.day__rail{background:#efeae2;border-left:1px solid #ddd;flex-direction:column;flex-shrink:0;gap:6px;width:52px;padding:8px 6px;display:flex}.day__rail button{writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:.15em;background:#fff;border:1px solid #1a1a1a;border-radius:8px;flex:1;min-height:74px;padding:10px 0;font-size:.86rem}.day__bottom{padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#1a1a1a}.day__bottom button{color:#1a1a1a;background:#f0c14b;border:none;border-radius:10px;width:100%;padding:12px;font-size:.95rem;font-weight:600}.day__bottom button:disabled{opacity:.4}@media (width<=420px){.day__top{padding:8px}.day__h{border-radius:8px;width:30px;height:30px}.day__spbtn{max-width:34vw;padding:6px 8px;font-size:.74rem}.day__link{min-height:34px;padding:6px 8px;font-size:.78rem}.day__close{width:34px;height:34px}.day__sub{padding:6px 10px}.day__hours{width:38px;padding-right:4px;font-size:.66rem}.day__rail{gap:5px;width:46px;padding:6px 4px}.day__rail button{min-height:64px;font-size:.76rem}.day__bottom button{padding:11px;font-size:.9rem}}.notes{background:#f7f4ef;min-height:100dvh;padding-bottom:40px}.notes__top{color:#fff;background:#1a1a1a;justify-content:space-between;align-items:center;padding:12px 14px;display:flex}.notes__top button{color:#fff;background:0 0;border:1px solid #ffffff59;border-radius:8px;padding:6px 12px}.notes__link{color:#666;background:#efeae2;margin:0;padding:8px 14px;font-size:.8rem}.notes__list{flex-direction:column;gap:10px;margin:0;padding:12px;list-style:none;display:flex}.notes__card{text-align:left;background:#fff;border:none;border-radius:12px;grid-template-columns:1fr auto;gap:4px 10px;width:100%;padding:12px;display:grid}.notes__card strong{grid-column:1}.notes__card span{color:#666;grid-column:1;font-size:.8rem}.notes__card img{object-fit:cover;border-radius:8px;grid-area:1/2/span 2;width:56px;height:56px}.notes__empty{text-align:center;color:#888;padding:40px 0}.notes__editor textarea,.notes__editor input{box-sizing:border-box;width:100%}.notes__file{font-size:.85rem}.notes__file input{margin-top:6px;display:block}.notes__thumbs{flex-wrap:wrap;gap:8px;display:flex}.notes__thumbs button{border:none;background:0 0!important;padding:0!important}.notes__thumbs img{object-fit:cover;border-radius:8px;width:64px;height:64px}.notes__preview{z-index:60;background:#000000e6;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.notes__preview img{object-fit:contain;max-width:100%;max-height:100%}.notes__foot{text-align:center;font-size:.85rem}.notes__foot a{color:#1a1a1a}:root{color:#1a1a1a;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f7f4ef;font-family:PingFang SC,Noto Sans SC,Source Han Sans SC,system-ui,sans-serif;font-weight:400;line-height:1.4}*{box-sizing:border-box}html,body,#root{min-height:100dvh;margin:0}@media (display-mode:standalone){body{overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}input,textarea{-webkit-user-select:text;user-select:text}}button,input,select,textarea{font:inherit}button{cursor:pointer}.boot{color:#666;place-items:center;min-height:100dvh;display:grid}
