:root{--color-primary: #1A1A1A;--color-on-primary: #FFFFFF;--color-secondary: #7C9CB4;--color-accent: #4A6741;--color-background: #FFFFFF;--color-surface: #F5F5F5;--color-on-surface: #1A1A1A;--color-primary-text: #1A1A1A;--color-secondary-text: #666666;--color-hint: #A0A0A0;--color-error: #C4836A;--color-success: #4A6741;--color-divider: #E5E5E5;font-family:Inter,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;background:#f0f0f0}body{display:flex;justify-content:center;align-items:flex-start;min-height:100vh}#root{display:flex;justify-content:center;align-items:flex-start;width:100%}.app-shell{width:100%;max-width:430px;min-height:100vh;background:var(--color-background);display:flex;flex-direction:column;position:relative;overflow:hidden}.page{flex:1;display:flex;flex-direction:column;overflow-y:auto;padding-bottom:80px}.page-no-nav{flex:1;display:flex;flex-direction:column;overflow-y:auto}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:430px;background:var(--color-background);border-top:1px solid var(--color-divider);display:flex;z-index:100;padding:8px 0 calc(8px + env(safe-area-inset-bottom,0px))}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 4px;background:none;border:none;cursor:pointer;color:var(--color-hint);text-decoration:none;transition:color .15s}.nav-item.active{color:var(--color-primary)}.nav-item span{font-size:10px;font-weight:600;letter-spacing:.02em}.scan-fab{position:fixed;bottom:64px;left:50%;transform:translate(-50%);z-index:101}.scan-fab-inner{width:56px;height:56px;background:var(--color-primary);border-radius:50%;display:flex;align-items:center;justify-content:center;border:none;cursor:pointer;color:var(--color-on-primary);box-shadow:0 4px 12px #0003;transition:transform .15s,box-shadow .15s}.scan-fab-inner:active{transform:scale(.95);box-shadow:0 2px 8px #00000026}.text-headline-large{font-size:32px;font-weight:700;line-height:1.2}.text-headline-medium{font-size:26px;font-weight:600;line-height:1.25}.text-title-large{font-size:20px;font-weight:600;line-height:1.3}.text-title-medium{font-size:16px;font-weight:600;line-height:1.4}.text-body-large{font-size:16px;font-weight:400;line-height:1.5}.text-body-medium{font-size:14px;font-weight:400;line-height:1.5}.text-body-small{font-size:12px;font-weight:400;line-height:1.4}.text-label-large{font-size:14px;font-weight:600;line-height:1.3}.text-label-medium{font-size:12px;font-weight:600;line-height:1.3}.text-label-small{font-size:10px;font-weight:600;line-height:1.2}.card{background:var(--color-surface);border-radius:12px;border:1px solid var(--color-divider);box-shadow:0 1px 2px #0000000d}.btn-primary{background:var(--color-primary);color:var(--color-on-primary);border:none;border-radius:12px;padding:14px 24px;font-size:16px;font-weight:600;cursor:pointer;width:100%;transition:opacity .15s;font-family:inherit}.btn-primary:active{opacity:.85}.btn-secondary{background:transparent;color:var(--color-secondary-text);border:1px solid var(--color-divider);border-radius:12px;padding:14px 24px;font-size:16px;font-weight:600;cursor:pointer;width:100%;font-family:inherit;transition:background .15s}.btn-secondary:active{background:var(--color-surface)}.badge{padding:3px 10px;border-radius:9999px;font-size:11px;font-weight:600}.badge-success{background:#e8f0e7;color:var(--color-success)}.badge-error{background:#f5eae6;color:var(--color-error)}.badge-secondary{background:#ebf1f6;color:var(--color-secondary)}.progress-bar{height:8px;background:var(--color-background);border-radius:4px;overflow:hidden;flex:1}.progress-fill{height:100%;border-radius:4px;transition:width .6s ease}.divider{height:1px;background:var(--color-divider);border:none}.scroll-content{overflow-y:auto;flex:1}.input{width:100%;padding:12px 16px;border:1px solid var(--color-divider);border-radius:10px;font-size:14px;font-family:inherit;background:var(--color-surface);color:var(--color-primary-text);outline:none;transition:border-color .15s}.input:focus{border-color:var(--color-secondary)}.toggle{width:44px;height:24px;border-radius:12px;border:none;cursor:pointer;transition:background .2s;position:relative;flex-shrink:0}.toggle-on{background:var(--color-accent)}.toggle-off{background:var(--color-divider)}.toggle:after{content:"";position:absolute;top:2px;width:20px;height:20px;background:#fff;border-radius:50%;transition:left .2s;box-shadow:0 1px 3px #00000026}.toggle-on:after{left:22px}.toggle-off:after{left:2px}.chip{padding:6px 12px;border-radius:9999px;font-size:12px;font-weight:600;border:1px solid var(--color-divider);cursor:pointer;transition:all .15s;background:var(--color-surface);color:var(--color-secondary-text)}.chip.active{background:var(--color-primary);color:var(--color-on-primary);border-color:var(--color-primary)}.avatar{border-radius:50%;background:var(--color-surface);display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .3s ease forwards}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.shimmer{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}
