:root{--ui-bg:#e9e8e6;--ui-bg-light:#f3f2f0;--ui-surface:#ffffff29;--ui-text:#111;--ui-text-muted:#777775;--ui-text-faint:#92918e;--ui-line:#1c1c1c21;--ui-line-strong:#1111118c;--ui-accent:#ff6a00;--ui-success:#286fae;--ui-error:#bc4c38;--ui-focus:#c45100;--font-ui:"Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif;--font-mono:"IBM Plex Mono", "SFMono-Regular", Consolas, monospace;--font-display:"Arial Narrow", "Noto Sans SC", sans-serif;--text-xs:10px;--text-sm:12px;--text-md:14px;--text-lg:18px;--text-title:clamp(28px, 3vw, 42px);--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--page-inset:clamp(20px, 3.6vw, 48px);--line-thin:1px;--radius:0px;--motion-fast:.16s;--motion-normal:.3s;--ease-industrial:cubic-bezier(.22, .7, .25, 1)}*,:before,:after{box-sizing:border-box;margin:0}html{font-size:100%}body{font:400 var(--text-md) / 1.65 var(--font-ui);color:var(--ui-text);background:var(--ui-bg);-webkit-font-smoothing:antialiased;min-height:100dvh}img,svg,video{max-width:100%;display:block}button,input,textarea,select{font:inherit;color:inherit}h1,h2,h3,h4{font-size:inherit;font-weight:inherit}ul,ol{padding:0;list-style:none}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--ui-focus);outline-offset:3px}::selection{background:#ff6a0038}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.ui-shell{min-height:100dvh;color:var(--ui-text);background:radial-gradient(ellipse at 50% 48%, #ffffff94, transparent 58%), linear-gradient(145deg, var(--ui-bg-light), var(--ui-bg));position:relative;overflow:hidden}.ui-shell:before{content:"";inset:16px var(--page-inset);pointer-events:none;background:linear-gradient(90deg, transparent 14.9%, var(--ui-line) 15%, transparent 15.1%, transparent 59.9%, var(--ui-line) 60%, transparent 60.1%, transparent 77.9%, var(--ui-line) 78%, transparent 78.1%);opacity:.35;position:absolute}.ui-corner{border-color:var(--ui-line);pointer-events:none;z-index:1;border-style:solid;width:16px;height:16px;position:absolute}.ui-corner--tl{border-width:1px 0 0 1px;top:26px;left:26px}.ui-corner--br{border-width:0 1px 1px 0;bottom:26px;right:26px}.app-shell{z-index:1;grid-template-columns:224px minmax(0,1fr);min-height:100dvh;display:grid;position:relative}.app-navrail{gap:var(--space-8);padding:var(--space-8) var(--space-6);border-right:var(--line-thin) solid var(--ui-line);flex-direction:column;display:flex}.app-main{min-width:0;height:100dvh;padding:var(--space-8) var(--page-inset);align-content:start;justify-items:center;display:grid;overflow-y:auto}.app-topbar,.app-bottomnav{display:none}.page{width:min(100%,980px)}.page-header{align-items:baseline;gap:var(--space-3);padding-bottom:var(--space-3);border-bottom:var(--line-thin) solid var(--ui-line-strong);flex-wrap:wrap;display:flex}.page-header__num{font:500 var(--text-sm) / 1.6 var(--font-mono);letter-spacing:.18em;color:var(--ui-focus)}.page-header__title{font:600 var(--text-lg) / 1.4 var(--font-ui);letter-spacing:.08em}.page-header__kicker{font:500 var(--text-xs) / 1.6 var(--font-mono);letter-spacing:.5em;text-transform:uppercase;color:var(--ui-text-faint)}.page-header__status{font:400 var(--text-xs) / 1.6 var(--font-mono);letter-spacing:.18em;color:var(--ui-text-muted);margin-left:auto}.page-section{margin-top:var(--space-8)}.page-section__label{align-items:center;gap:var(--space-2);font:500 var(--text-xs) / 1.6 var(--font-mono);letter-spacing:.22em;text-transform:uppercase;color:var(--ui-text-muted);margin-bottom:var(--space-3);display:flex}.page-section__label:before{content:"";background:var(--ui-accent);width:2px;height:12px}@media (width<=767px){.app-shell{grid-template-columns:minmax(0,1fr)}.app-navrail{display:none}.app-main{height:auto;min-height:100dvh;padding:var(--space-3) var(--space-4);padding-bottom:calc(96px + env(safe-area-inset-bottom))}.app-topbar{justify-content:space-between;align-items:baseline;gap:var(--space-3);padding:max(var(--space-2), env(safe-area-inset-top)) var(--space-4) var(--space-2);border-bottom:var(--line-thin) solid var(--ui-line);display:flex}.app-bottomnav{z-index:10;background:var(--ui-bg-light);border-top:var(--line-thin) solid var(--ui-line);padding-bottom:max(0px, env(safe-area-inset-bottom));display:block;position:fixed;bottom:0;left:0;right:0}.page-header__title{font-size:var(--text-md);letter-spacing:.14em}.page-header__status{margin-left:0}}.navrail__brand{gap:var(--space-1);padding-bottom:var(--space-4);border-bottom:var(--line-thin) solid var(--ui-line);display:grid}.navrail__modules{gap:var(--space-1);display:grid}.navrail__item{align-items:center;gap:var(--space-3);min-height:40px;padding:6px var(--space-3);color:var(--ui-text-muted);transition:color var(--motion-fast), background var(--motion-fast);display:flex}.navrail__item:hover{color:var(--ui-text);background:#ffffff40}.navrail__item.is-active{color:var(--ui-text);box-shadow:inset 2px 0 0 var(--ui-accent);background:#ffffff29}.navrail__num{font:500 var(--text-xs) var(--font-mono);color:var(--ui-text-faint)}.navrail__item.is-active .navrail__num{color:var(--ui-focus)}.navrail__label{font-size:var(--text-md)}.navrail__bottom{gap:var(--space-4);margin-top:auto;display:grid}.navrail__foot{gap:var(--space-1);padding-top:var(--space-3);border-top:var(--line-thin) solid var(--ui-line);display:grid}.navbar{grid-template-columns:repeat(6,1fr);width:100%;display:grid}.navbar__item{min-height:48px;color:var(--ui-text-muted);align-content:center;justify-items:center;gap:2px;display:grid}.navbar__item.is-active{color:var(--ui-text)}.navbar__item.is-active .navbar__num{color:var(--ui-focus)}.navbar__num{font:500 9px var(--font-mono);color:var(--ui-text-faint)}.navbar__label{font-size:var(--text-xs)}.app-topbar .ui-brand{font-size:22px}.ui-button{border:1px solid var(--ui-line-strong);border-radius:var(--radius);min-height:40px;color:var(--ui-text);font:500 var(--text-md) / 1.3 var(--font-ui);cursor:pointer;transition:background var(--motion-fast), border-color var(--motion-fast);background:0 0;padding:8px 16px;position:relative}.ui-button:hover{border-color:var(--ui-text);background:#ffffff40}.ui-button:active{background:#11111114}.ui-button:focus-visible{outline:2px solid var(--ui-focus);outline-offset:3px}.ui-button:disabled{opacity:.45;cursor:not-allowed}.ui-button__en{font:400 var(--text-xs) var(--font-mono);letter-spacing:.18em;margin-left:10px}.ui-button--solid{background:var(--ui-text);border-color:var(--ui-text);color:var(--ui-bg-light)}.ui-button--solid:hover{background:var(--ui-text);border-color:var(--ui-text)}.ui-button--solid:after{content:"";background:var(--ui-accent);opacity:0;height:2px;transition:opacity var(--motion-fast);position:absolute;bottom:-1px;left:0;right:0}.ui-button--solid:hover:after{opacity:1}.ui-input,.ui-textarea{border:1px solid var(--ui-line-strong);border-radius:var(--radius);width:100%;font:400 var(--text-md) / 1.6 var(--font-ui);color:var(--ui-text);transition:border-color var(--motion-fast);background:0 0;padding:8px 12px}.ui-input::placeholder,.ui-textarea::placeholder{color:var(--ui-text-faint)}.ui-input:hover,.ui-textarea:hover{border-color:var(--ui-text)}.ui-input:focus,.ui-textarea:focus{outline:2px solid var(--ui-focus);outline-offset:3px}.ui-textarea{resize:vertical;min-height:88px}.ui-kv{border-top:1px solid var(--ui-line);width:min(100%,320px);margin-inline:auto}.ui-kv__row{justify-content:space-between;gap:var(--space-4);border-bottom:1px solid var(--ui-line);padding:3px 0;display:flex}.ui-kv__label{color:var(--ui-text-muted)}.ui-kv__value{font-variant-numeric:tabular-nums;font-weight:700;font-family:var(--font-mono);font-size:var(--text-sm)}.ui-steps{gap:5px;display:flex}.ui-steps__item{background:#1111112e;width:20px;height:2px}.ui-steps__item.is-complete{background:#1116}.ui-steps__item.is-active{background:var(--ui-accent)}.ui-progress{background:#1111111a;width:min(100%,410px);height:3px;overflow:hidden}.ui-progress__fill{width:var(--progress,0%);background:var(--ui-text);height:100%;transition:width var(--motion-normal) var(--ease-industrial)}.ui-progress__fill:after{content:"";float:right;background:var(--ui-accent);width:3px;height:100%}.ui-brand{font:800 32px / 1 var(--font-display);letter-spacing:-.02em}.ui-title{font:500 var(--text-title) / 1.35 var(--font-ui);letter-spacing:.28em}.ui-kicker{font:500 11px / 1.6 var(--font-mono);letter-spacing:.5em;text-transform:uppercase}.ui-meta{font:400 10px / 1.6 var(--font-mono);letter-spacing:.18em;color:var(--ui-text-muted)}.ui-body{font:400 14px / 1.65 var(--font-ui)}.ui-code{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.ui-card{border:1px solid var(--ui-line);padding:var(--space-4);background:0 0;position:relative}.ui-card:hover{border-color:var(--ui-line-strong)}.ui-card.is-active:before{content:"";background:var(--ui-accent);width:2px;position:absolute;top:0;bottom:0;left:-1px}.ui-card__title{font:500 var(--text-md) / 1.5 var(--font-ui)}.ui-card__meta{font:400 var(--text-xs) / 1.6 var(--font-mono);letter-spacing:.14em;color:var(--ui-text-muted)}.ui-card__body{margin-top:var(--space-2);font-size:var(--text-sm);color:var(--ui-text-muted)}.ui-card__footer{margin-top:var(--space-3);align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.ui-tag{font:400 var(--text-xs) / 1.5 var(--font-mono);letter-spacing:.08em;color:var(--ui-text-muted);border:1px solid var(--ui-line);padding:1px 6px;display:inline-block}.ui-badge{font:500 var(--text-xs) / 1.5 var(--font-mono);letter-spacing:.14em;color:var(--ui-focus);border:1px solid #c4510073;padding:0 6px;display:inline-block}.ui-chip{border:1px solid var(--ui-line);border-radius:var(--radius);min-height:32px;font:400 var(--text-sm) / 1.4 var(--font-mono);letter-spacing:.08em;color:var(--ui-text-muted);cursor:pointer;transition:border-color var(--motion-fast), color var(--motion-fast);background:0 0;padding:4px 12px}.ui-chip:hover{border-color:var(--ui-line-strong);color:var(--ui-text)}.ui-chip.is-active{border-color:var(--ui-text);color:var(--ui-text);box-shadow:inset 2px 0 0 var(--ui-accent)}.ui-list{border-top:1px solid var(--ui-line)}.ui-list__row{align-items:baseline;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--ui-line);transition:background var(--motion-fast);display:flex}.ui-list__row:hover{background:#ffffff40}.ui-list__time{font:500 var(--text-xs) / 1.6 var(--font-mono);color:var(--ui-text-faint);white-space:nowrap}.ui-list__text{min-width:0;font-size:var(--text-md);overflow-wrap:anywhere;flex:1}.ui-empty{padding:var(--space-12) var(--space-4);text-align:center;justify-items:center;gap:var(--space-2);display:grid}.ui-empty__mark{width:24px;height:24px;margin-bottom:var(--space-2);border:1px solid var(--ui-line-strong);border-radius:50%;position:relative}.ui-empty__mark:after{content:"";border:1px solid var(--ui-line);border-radius:50%;position:absolute;inset:5px}.ui-empty__title{font:500 var(--text-md) / 1.6 var(--font-ui)}.ui-empty__desc{max-width:420px;font-size:var(--text-sm);color:var(--ui-text-muted)}.ui-empty__code{font:400 var(--text-xs) / 1.6 var(--font-mono);letter-spacing:.28em;color:var(--ui-text-faint)}.ui-dialog__backdrop{z-index:100;padding:var(--space-4);background:#11111159;place-items:center;display:grid;position:fixed;inset:0}.ui-dialog__panel{background:var(--ui-bg-light);border:1px solid var(--ui-line-strong);width:min(100%,420px);padding:var(--space-6);gap:var(--space-4);display:grid}.ui-dialog__title{font:600 var(--text-md) / 1.5 var(--font-ui)}.ui-dialog__body{font-size:var(--text-sm);color:var(--ui-text-muted)}.ui-dialog__actions{justify-content:flex-end;gap:var(--space-2);display:flex}.ui-status{font:400 var(--text-xs) / 1.6 var(--font-mono);letter-spacing:.18em;color:var(--ui-text-muted)}.ui-status.is-busy:before{content:"";vertical-align:1px;background:var(--ui-accent);width:6px;height:6px;margin-right:6px;animation:1.2s steps(2,start) infinite ui-blink;display:inline-block}@keyframes ui-blink{to{visibility:hidden}}.ui-toggle{align-items:center;gap:var(--space-2);cursor:pointer;min-height:44px;display:inline-flex;position:relative}.ui-toggle input{opacity:0;width:1px;height:1px;position:absolute}.ui-toggle__track{border:1px solid var(--ui-line-strong);width:36px;height:18px;transition:background var(--motion-fast);position:relative}.ui-toggle__track:after{content:"";background:var(--ui-text-muted);width:12px;height:12px;transition:left var(--motion-fast), background var(--motion-fast);position:absolute;top:2px;left:2px}.ui-toggle input:checked+.ui-toggle__track{background:#11111114}.ui-toggle input:checked+.ui-toggle__track:after{background:var(--ui-focus);left:20px}.ui-toggle input:focus-visible+.ui-toggle__track{outline:2px solid var(--ui-focus);outline-offset:3px}.ui-toggle__label{font-size:var(--text-sm)}.ui-group{border:1px solid var(--ui-line);padding:var(--space-4)}.ui-group__item{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--ui-line);display:flex}.ui-group__item:last-child{border-bottom:none}.ui-group__title{font-size:var(--text-sm)}.ui-group__desc{font-size:var(--text-sm);color:var(--ui-text-muted)}.data-overview{margin-bottom:var(--space-3)}.data-overview .ui-kv{margin-inline:0}.ui-cal{padding-top:var(--space-3);border-top:var(--line-thin) solid var(--ui-line)}.ui-cal__head{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.ui-cal__title{font:500 var(--text-sm) / 1.4 var(--font-mono);letter-spacing:.14em;font-variant-numeric:tabular-nums}.ui-cal__nav{gap:2px;display:flex}.ui-cal__nav button{border:1px solid var(--ui-line);border-radius:var(--radius);width:20px;height:20px;color:var(--ui-text-muted);font:400 12px / 1 var(--font-mono);cursor:pointer;transition:border-color var(--motion-fast), color var(--motion-fast);background:0 0;place-items:center;display:grid}.ui-cal__nav button:hover{border-color:var(--ui-line-strong);color:var(--ui-text)}.ui-cal__grid{border-collapse:collapse;table-layout:fixed;width:100%}.ui-cal__grid th{font:400 9px / 1.6 var(--font-mono);letter-spacing:.04em;color:var(--ui-text-faint);padding-bottom:2px;font-weight:400}.ui-cal__grid td{text-align:center;font:400 var(--text-xs) / 1.6 var(--font-mono);color:var(--ui-text-muted);font-variant-numeric:tabular-nums;padding:1px 0}.ui-cal__grid td span{min-width:16px;padding-bottom:1px;display:inline-block}.ui-cal__grid td span.is-today{color:var(--ui-text);box-shadow:inset 0 -2px 0 var(--ui-accent);font-weight:700}.form{gap:var(--space-3);display:grid}.form__field{gap:4px;display:grid}.form__label{font:500 var(--text-xs) / 1.6 var(--font-mono);letter-spacing:.18em;color:var(--ui-text-muted)}.form__row{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.form__error{font-size:var(--text-sm);color:var(--ui-error)}.ui-select{appearance:none;cursor:pointer;background:0 0}.timeline{border-top:var(--line-thin) solid var(--ui-line)}.timeline__month{align-items:center;gap:var(--space-2);padding:var(--space-4) 0 var(--space-2);font:500 var(--text-sm) / 1.6 var(--font-mono);letter-spacing:.22em;color:var(--ui-text-muted);display:flex}.timeline__month:after{content:"";background:var(--ui-line);flex:1;height:1px}.timeline__day{font:500 var(--text-xs) / 1.6 var(--font-mono);color:var(--ui-text-faint);white-space:nowrap}.entry-list{padding-left:var(--space-4);border-left:var(--line-thin) solid var(--ui-line);margin-left:3px}.entry{padding:var(--space-3) 0;border-bottom:var(--line-thin) solid var(--ui-line);position:relative}.entry:before{content:"";left:calc(-1 * var(--space-4) - 3px);background:var(--ui-bg-light);border:1px solid var(--ui-line-strong);width:5px;height:5px;position:absolute;top:20px}.entry:hover:before{background:var(--ui-accent);border-color:var(--ui-accent)}.entry__date{font:500 var(--text-xs) / 1.6 var(--font-mono);letter-spacing:.14em;color:var(--ui-text-faint)}.entry__head{align-items:baseline;gap:var(--space-2);display:flex}.entry__title{font-size:var(--text-md);overflow-wrap:anywhere;min-width:0;font-weight:500}.entry__meta{font:400 var(--text-xs) / 1.6 var(--font-mono);letter-spacing:.08em;color:var(--ui-text-muted);white-space:nowrap}.entry__desc{font-size:var(--text-sm);color:var(--ui-text-muted);overflow-wrap:anywhere;margin-top:2px}.entry .row-delete{margin-left:auto}.toolbar__row{justify-content:space-between;align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.view-switch{gap:var(--space-1);display:flex}.card-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.chip-row{gap:var(--space-2);flex-wrap:wrap;display:flex}.section-head{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.toolbar{gap:var(--space-3);display:grid}.dialog-actions{justify-content:flex-end;align-items:center;gap:var(--space-2);display:flex}.dialog-actions__error{font-size:var(--text-xs);color:var(--ui-error);margin-right:auto}.quick-actions{margin-top:var(--space-3);align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.quick-tags{margin-top:var(--space-2)}.quick-count{font:400 var(--text-xs) var(--font-mono);letter-spacing:.12em;color:var(--ui-text-faint)}.ui-dialog__panel--wide{width:min(100%,760px)}.ui-list__row--moment{align-items:flex-start}.ui-list__content{font-size:var(--text-md);overflow-wrap:anywhere}.ui-list__content--muted{color:var(--ui-text-faint)}.media-grid,.media-strip{gap:var(--space-2);flex-wrap:wrap;display:flex}.media-grid{margin-top:var(--space-3)}.media-thumb{border:1px solid var(--ui-line-strong);background:#ffffff29;width:88px;height:88px;position:relative}.media-thumb img{object-fit:cover;width:100%;height:100%}.media-thumb__remove{border:none;border-left:1px solid var(--ui-line-strong);border-bottom:1px solid var(--ui-line-strong);background:var(--ui-bg-light);min-width:44px;min-height:44px;color:var(--ui-text-muted);font:400 16px / 1 var(--font-ui);cursor:pointer;place-items:center;display:grid;position:absolute;top:0;right:0}.media-thumb__remove:hover{color:var(--ui-error)}.media-strip{margin-top:var(--space-2)}.media-strip__item{border:1px solid var(--ui-line);border-radius:var(--radius);cursor:pointer;width:56px;height:56px;transition:border-color var(--motion-fast);background:0 0;padding:0;overflow:hidden}.media-strip__item:hover{border-color:var(--ui-line-strong)}.media-strip__item img{object-fit:cover;width:100%;height:100%}.media-picker{gap:var(--space-3);display:grid}.media-picker__choices{gap:var(--space-2);flex-wrap:wrap;display:flex}.media-picker__choices .ui-button{flex:1}.media-preview{object-fit:contain;background:#1111110f;width:100%;max-height:68vh}.tag-row{gap:var(--space-1);flex-wrap:wrap;justify-content:flex-end;display:flex}.row-delete,.card-close{color:var(--ui-text-faint);font:400 16px / 1 var(--font-ui);cursor:pointer;background:0 0;border:none;min-width:32px;min-height:32px;padding:6px}.row-delete:hover,.card-close:hover{color:var(--ui-error)}.card-close{top:var(--space-2);right:var(--space-2);position:absolute}@media (width<=767px){.media-thumb{width:72px;height:72px}.media-strip__item{width:48px;height:48px}.quick-actions{gap:var(--space-2) var(--space-3)}.media-preview{max-height:60vh}.ui-dialog__panel--wide{padding:var(--space-4)}}.form__locate{gap:var(--space-2);display:grid}.form__locate-actions{align-items:center;gap:var(--space-3);flex-wrap:wrap;display:flex}.form__locate-status{margin:0}.ui-status.is-error{color:var(--ui-error)}.locate-settings__actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.locate-settings__note{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--ui-line);line-height:1.7}:root{--motion-slow:.6s;--motion-ring:1s}.page-enter-active{transition:opacity var(--motion-normal) var(--ease-industrial), transform var(--motion-normal) var(--ease-industrial)}.page-leave-active{transition:opacity var(--motion-fast) ease}.page-enter-from{opacity:0;transform:translateY(6px)}.page-leave-to{opacity:0}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.motion-reduce *,.motion-reduce :before,.motion-reduce :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
