*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--sidebar-w:220px;--color-bg:#f2f4f3;--color-surface:#fff;--color-primary:#2e5d42;--color-primary-hover:#3a7554;--color-text:#1a1a1a;--color-text-muted:#666;--color-border:#dde0dd;--color-confirmed:#2e7d32;--color-error:#c0392b;--color-note-internal:#fff9c4;--radius:10px;--shadow-sm:0 1px 4px #0000000f;font-family:-apple-system,BlinkMacSystemFont,sans-serif}body{background:var(--color-bg);color:var(--color-text);min-height:100dvh}button{cursor:pointer;font:inherit;background:0 0;border:none}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}input:focus-visible,textarea:focus-visible,select:focus-visible{outline-offset:0;border-color:var(--color-primary)}.layout{min-height:100dvh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--color-primary);color:#fff;flex-direction:column;flex-shrink:0;padding:0;display:flex}.sidebar-logo{letter-spacing:.5px;padding:24px 20px 20px;font-size:18px;font-weight:700}.sidebar-nav{flex-direction:column;flex:1;gap:2px;padding:0 8px;display:flex}.nav-item{color:#fffc;cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;transition:background .15s,color .15s;display:flex}.nav-item:hover,.nav-item.active{color:#fff;background:#ffffff1f}.nav-label{text-align:left;flex:1}.nav-badge{color:#fff;text-align:center;background:#f44336;border-radius:10px;min-width:18px;padding:2px 6px;font-size:11px;font-weight:700;line-height:1}.sidebar-footer{padding:16px 16px 24px}.logout-btn{color:#fff9;font-size:13px}.logout-btn:hover{color:#fff}.main-content{flex:1;min-width:0;padding:28px;overflow:auto}.route-loading{color:var(--color-text-muted);padding:24px 0}.page-header{margin-bottom:24px}.page-header h1{font-size:22px;font-weight:700}.card{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:20px}.btn{cursor:pointer;border-radius:8px;padding:8px 16px;font-size:14px;font-weight:500;transition:background .15s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover{background:var(--color-primary-hover)}.btn-ghost{border:1.5px solid var(--color-border);color:var(--color-text-muted)}.btn-ghost:hover{background:var(--color-bg)}.scroll-x{-webkit-overflow-scrolling:touch;overflow-x:auto}.sheet-overlay{z-index:200;background:#00000059;position:fixed;inset:0}.bottom-sheet{z-index:201;max-width:640px;max-height:var(--sheet-max-h,85dvh);background:#fff;border-radius:18px 18px 0 0;margin-inline:auto;padding:0 0 32px;position:fixed;bottom:0;left:0;right:0;overflow-y:auto;box-shadow:0 -6px 32px #00000024}.bottom-sheet-header{border-bottom:1px solid var(--color-border);z-index:1;background:#fff;justify-content:space-between;align-items:center;padding:20px 24px 16px;display:flex;position:sticky;top:0}.bottom-sheet-close{color:var(--color-text-muted);border-radius:6px;padding:2px 6px;font-size:22px;line-height:1}.bottom-sheet-close:hover{color:var(--color-text)}.note-internal{background:var(--color-note-internal);border-radius:6px;padding:8px 12px;font-size:13px}@media (width<=768px){.layout{flex-direction:column}.sidebar{z-index:100;width:100%;padding-bottom:env(safe-area-inset-bottom);flex-direction:row;align-items:stretch;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 12px #00000026}.sidebar-logo{display:none}.sidebar-nav{flex-direction:row;justify-content:space-around;gap:0;padding:0}.nav-item{border-radius:0;flex-direction:column;flex:1 1 0;justify-content:center;gap:2px;min-width:0;padding:8px 2px;font-size:10px;position:relative}.nav-label{text-align:center;white-space:nowrap;text-overflow:ellipsis;flex:none;max-width:100%;overflow:hidden}.nav-badge{position:absolute;top:4px;left:50%;transform:translate(6px)}.sidebar-footer{padding:0;display:flex}.logout-btn{padding:8px 10px;font-size:10px}.main-content{padding:16px 12px calc(84px + env(safe-area-inset-bottom))}.page-header{margin-bottom:16px}.page-header h1{font-size:20px}.card{padding:16px}.bottom-sheet{border-radius:14px 14px 0 0;max-width:100%;max-height:92dvh}.bottom-sheet-header{padding:16px 16px 12px}}
