.admin-container{max-width:1100px;margin:0 auto}.admin-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.admin-header h1{color:var(--color-text);font-size:1.5rem;font-weight:700;letter-spacing:-.03em}.model-selector-section{background:var(--color-surface);padding:24px;border-radius:var(--radius-lg);margin-bottom:32px;border:1px solid var(--color-border)}.model-selector-section h2{color:var(--color-text);font-size:1.1rem;font-weight:600;margin-bottom:4px}.model-selector-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:16px;margin:20px 0}.model-selector-card{background:var(--color-bg);padding:16px;border-radius:var(--radius-md);border:1px solid var(--color-border)}.model-selector-card h3{color:var(--color-text);margin-bottom:12px;font-size:.9rem;font-weight:600}.model-options{display:flex;flex-direction:column;gap:6px}.model-option{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition)}.model-option:hover{border-color:var(--color-primary)}.model-option.active{border-color:var(--color-primary);background:var(--color-primary-light);box-shadow:0 0 0 1px var(--color-primary)}.model-option input[type=radio]{flex-shrink:0;width:16px;height:16px;cursor:pointer;accent-color:var(--color-primary)}.model-option-content{flex:1;display:flex;flex-direction:column;gap:1px}.model-option-content strong{color:var(--color-text);font-size:.85rem}.model-option-content .model-name{color:var(--color-text-muted);font-size:.75rem;font-family:JetBrains Mono,monospace}.active-badge{background:var(--color-success);color:#fff;padding:2px 10px;border-radius:20px;font-size:.7rem;font-weight:600}.empty-text{color:var(--color-text-muted);font-style:italic;padding:16px;text-align:center;font-size:.875rem}.current-model-info{margin-top:16px;padding:12px 16px;background:var(--color-bg);border-radius:var(--radius-md);border-left:3px solid var(--color-primary);font-size:.875rem}.current-model-info code{background:var(--color-surface);padding:2px 8px;border-radius:var(--radius-sm);font-family:JetBrains Mono,monospace;color:var(--color-primary);font-weight:600;font-size:.8rem;border:1px solid var(--color-border)}.create-form-section{background:var(--color-surface);padding:24px;border-radius:var(--radius-lg);margin-bottom:24px;border:1px solid var(--color-border)}.create-form-section h2,.create-form-section h3{color:var(--color-text);margin-bottom:16px;font-size:1rem;font-weight:600}.form-group{margin-bottom:20px}.form-group label{display:block;font-weight:600;margin-bottom:6px;color:var(--color-text-secondary);font-size:.8rem;text-transform:uppercase;letter-spacing:.04em}.form-group input,.form-group select,.form-group textarea{width:100%;padding:9px 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.875rem;font-family:inherit;color:var(--color-text);background:var(--color-surface);transition:all var(--transition)}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}.hyperparameters-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-top:8px}.admin-container .upload-section{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-direction:row}.file-upload-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;background:var(--color-primary);color:#fff;border-radius:var(--radius-md);cursor:pointer;font-weight:600;font-size:.85rem;transition:all var(--transition)}.file-upload-btn:hover{background:var(--color-primary-hover)}.help-text{color:var(--color-text-muted);font-size:.8rem}.training-examples{max-height:400px;overflow-y:auto;margin-bottom:12px;padding:2px}.example-row{display:flex;gap:8px;align-items:flex-start;margin-bottom:8px;padding:12px;background:var(--color-bg);border-radius:var(--radius-md);border:1px solid var(--color-border)}.example-number{min-width:26px;height:26px;background:var(--color-primary);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.75rem;flex-shrink:0}.example-inputs{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:8px}.example-inputs textarea{resize:vertical;min-height:48px}.btn-remove{width:26px;height:26px;background:var(--color-danger-light);color:var(--color-danger);border:1px solid var(--color-danger-border);border-radius:50%;cursor:pointer;font-size:.85rem;display:flex;align-items:center;justify-content:center;transition:all var(--transition);flex-shrink:0}.btn-remove:hover:not(:disabled){background:var(--color-danger);color:#fff}.btn-remove:disabled{opacity:.3;cursor:not-allowed}.template-field-row{display:flex;gap:6px;margin-bottom:6px;align-items:center}.field-order{width:22px;height:22px;background:var(--color-primary);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;flex-shrink:0}.field-move-buttons{display:flex;flex-direction:column;gap:1px;flex-shrink:0}.btn-move{width:22px;height:16px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:3px;cursor:pointer;font-size:.55rem;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);padding:0;line-height:1;transition:all var(--transition)}.btn-move:hover:not(:disabled){background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-move:disabled{opacity:.3;cursor:not-allowed}.form-actions{display:flex;gap:12px;margin-top:20px}.models-section{margin-top:32px}.models-section h2{color:var(--color-text);margin-bottom:16px;font-size:1.1rem;font-weight:600}.empty-state{text-align:center;padding:48px 20px;color:var(--color-text-muted);font-size:.95rem}.models-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.model-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:16px;transition:all var(--transition)}.model-card:hover{border-color:var(--color-border-hover);box-shadow:var(--shadow-md)}.model-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--color-border)}.model-header h3{color:var(--color-text);font-size:1rem;margin:0;flex:1;font-weight:600}.status-badge{padding:2px 10px;border-radius:20px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.status-badge.active{background:var(--color-success-light);color:var(--color-success);border:1px solid var(--color-success-border)}.status-badge.creating{background:var(--color-warning-light);color:var(--color-warning);border:1px solid var(--color-warning-border)}.status-badge.failed{background:var(--color-danger-light);color:var(--color-danger);border:1px solid var(--color-danger-border)}.status-badge.unknown{background:var(--color-bg);color:var(--color-text-muted);border:1px solid var(--color-border)}.model-info{margin-bottom:12px}.model-info p{margin:4px 0;color:var(--color-text-secondary);font-size:.825rem}.model-info strong{color:var(--color-text);font-weight:600}.model-actions{display:flex;gap:8px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgb(0 0 0 / .5);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:stretch;justify-content:center;padding:12px;animation:modalFadeIn .2s ease}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--color-surface);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl),0 0 0 1px #0000000d;width:100%;max-width:95vw;animation:modalSlideIn .25s ease;position:relative;display:flex;flex-direction:column;max-height:100%}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--color-border)}.modal-header h3{font-size:1.1rem;font-weight:600;color:var(--color-text);margin:0}.modal-close{width:32px;height:32px;border:none;background:var(--color-bg);border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);font-size:1.1rem;transition:all var(--transition)}.modal-close:hover{background:var(--color-danger-light);color:var(--color-danger)}.modal-body{padding:16px;overflow-y:auto;flex:1;min-height:0}.modal-body-split{display:grid;grid-template-columns:320px 1fr;gap:24px;height:100%}.modal-body-split .modal-form-side{overflow-y:auto;padding-right:8px}.modal-body-split .modal-preview-side{overflow-y:auto;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);display:flex;flex-direction:column}.modal-preview-side .region-selector-wrapper{flex:1;min-height:0}.modal-preview-side .region-selector-wrapper img{width:100%;height:auto}.modal-preview-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;min-height:300px;color:var(--color-text-muted);font-size:.875rem;gap:12px;text-align:center;padding:24px}.modal-preview-placeholder-icon{font-size:2.5rem;opacity:.4}@media (max-width: 800px){.modal-body-split{grid-template-columns:1fr}}.modal-footer{display:flex;justify-content:flex-end;gap:8px;padding:16px 24px;border-top:1px solid var(--color-border)}@media (max-width: 768px){.admin-header{flex-direction:column;align-items:flex-start;gap:12px}.example-inputs,.models-grid,.model-selector-grid,.hyperparameters-grid{grid-template-columns:1fr}}:root{--color-primary: #0f766e;--color-primary-hover: #115e59;--color-primary-strong: #134e4a;--color-primary-light: #effaf7;--color-primary-tint: #d7f0ea;--color-primary-border: #99e6da;--color-accent: #0891b2;--color-secondary: #64748b;--color-secondary-hover: #475569;--color-success: #15803d;--color-success-light: #f0fdf4;--color-success-border: #bbf7d0;--color-danger: #dc2626;--color-danger-light: #fef2f2;--color-danger-border: #fecaca;--color-warning: #b45309;--color-warning-light: #fffbeb;--color-warning-border: #fde68a;--color-bg: #eef2f4;--color-surface: #ffffff;--color-surface-2: #f6f9f9;--color-text: #0f1e24;--color-text-secondary: #475d66;--color-text-muted: #8aa0a8;--color-border: #e2e9ec;--color-border-hover: #c6d3d8;--color-ring: rgb(15 118 110 / .16);--shadow-sm: 0 1px 2px 0 rgb(15 30 36 / .06);--shadow-md: 0 2px 4px -1px rgb(15 30 36 / .07), 0 4px 12px -4px rgb(15 30 36 / .08);--shadow-lg: 0 8px 24px -6px rgb(15 30 36 / .12), 0 2px 6px -2px rgb(15 30 36 / .06);--shadow-xl: 0 24px 48px -12px rgb(15 30 36 / .18);--radius-sm: 6px;--radius-md: 9px;--radius-lg: 13px;--radius-xl: 18px;--sidebar-w: 250px;--transition: .16s cubic-bezier(.4, 0, .2, 1);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", ui-monospace, "SFMono-Regular", "Courier New", monospace}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--color-bg);color:var(--color-text);min-height:100vh;padding:0;line-height:1.55;font-size:14.5px;letter-spacing:-.006em}:where(input,select,textarea,button):focus-visible{outline:none;border-color:var(--color-primary)!important;box-shadow:0 0 0 3px var(--color-ring)}::selection{background:var(--color-primary-tint);color:var(--color-primary-strong)}*{scrollbar-color:var(--color-border-hover) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--color-border-hover);border-radius:20px;border:3px solid var(--color-bg)}*::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.app-shell{display:flex;min-height:100vh;align-items:stretch}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:100}.sidebar-brand{display:flex;align-items:center;gap:11px;padding:15px 16px;border-bottom:1px solid var(--color-border)}.sidebar-logo{height:38px;width:auto;object-fit:contain;flex-shrink:0}.sidebar-brand-text{display:flex;flex-direction:column;min-width:0}.sidebar-brand-title{font-size:.64rem;font-weight:700;color:var(--color-text);letter-spacing:.01em;line-height:1.3}.sidebar-brand-sub{font-size:.7rem;font-weight:700;color:var(--color-primary);margin-top:2px}.sidebar-nav{flex:1;padding:12px 10px;display:flex;flex-direction:column;gap:3px;overflow-y:auto}.side-link{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--radius-md);border:none;background:transparent;color:var(--color-text-secondary);font-family:inherit;font-size:.9rem;font-weight:500;cursor:pointer;text-align:left;width:100%;position:relative;transition:background var(--transition),color var(--transition)}.side-link:hover{background:var(--color-surface-2);color:var(--color-text)}.side-link.active{background:var(--color-primary-light);color:var(--color-primary-strong);font-weight:650}.side-link.active:before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:3px;background:var(--color-primary)}.side-icon{width:19px;height:19px;flex-shrink:0;color:var(--color-text-muted);transition:color var(--transition)}.side-link:hover .side-icon{color:var(--color-text-secondary)}.side-link.active .side-icon{color:var(--color-primary)}.side-section{padding:14px 12px 4px;font-size:.66rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--color-text-muted)}.tone-teal{--tone: #0f766e;--tone-2: #0891b2;--tone-soft: #e2f5f1;--tone-border: #99e6da;--tone-glow: rgb(15 118 110 / .45)}.tone-amber{--tone: #c2410c;--tone-2: #f59e0b;--tone-soft: #fff0dc;--tone-border: #fdc58c;--tone-glow: rgb(194 65 12 / .4)}.tone-indigo{--tone: #4338ca;--tone-2: #8b5cf6;--tone-soft: #ebedfe;--tone-border: #c3c9fb;--tone-glow: rgb(67 56 202 / .4)}.home{display:flex;flex-direction:column;gap:22px;container:home / inline-size}.home-rise{animation:homeRise .5s cubic-bezier(.2,.7,.2,1) backwards;animation-delay:calc(var(--i, 0) * 70ms)}@keyframes homeRise{0%{opacity:0;transform:translateY(10px)}}.home-hero{position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;gap:24px;padding:30px 34px;border-radius:var(--radius-xl);color:#fff;background:radial-gradient(620px 300px at 92% -30%,rgb(56 189 248 / .55),transparent 62%),radial-gradient(480px 260px at -6% 130%,rgb(52 211 153 / .38),transparent 64%),linear-gradient(118deg,#0a4a45 0%,#0f766e 46%,#0e7490 100%);box-shadow:0 18px 36px -20px #0f766e99,var(--shadow-md)}.home-hero-art{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;width:100%;height:100%;color:#fff;pointer-events:none}.home-hero-main{flex:1;min-width:0}.home-hero-date{font-size:.74rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;opacity:.82}.home-hero h1{margin:6px 0 14px;font-size:clamp(1.45rem,1.1rem + 1.2vw,2rem);font-weight:700;line-height:1.2;letter-spacing:-.025em;text-wrap:balance}.home-hero-tags{display:flex;flex-wrap:wrap;gap:8px}.home-hero-tags span{padding:4px 11px;border-radius:999px;font-size:.78rem;font-weight:600;background:rgb(255 255 255 / .14);border:1px solid rgb(255 255 255 / .24);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.home-hero-status{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:158px;padding:16px 20px;border-radius:16px;text-align:center;background:rgb(255 255 255 / .13);border:1px solid rgb(255 255 255 / .26);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.home-hero-status b{font-size:2.1rem;font-weight:700;line-height:1.1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.home-hero-status b.is-quiet{opacity:.7}.home-hero-status svg{display:block;width:36px;height:36px}.home-hero-status span{font-size:.78rem;font-weight:600;opacity:.92}.home-lower{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:22px;align-items:start}.home-col{display:flex;flex-direction:column;gap:22px;min-width:0}.home-section{display:flex;flex-direction:column;gap:10px;min-width:0}.home-section-title{display:flex;align-items:center;gap:8px;min-height:22px;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-secondary)}.home-section-title>b{padding:0 7px;border-radius:999px;font-size:.7rem;line-height:1.6;letter-spacing:0;background:var(--color-border)}.home-section-title .badge{text-transform:none;letter-spacing:0}.home-text-link{margin-left:auto;padding:0;border:none;background:none;font-family:inherit;font-size:.8rem;font-weight:650;color:var(--color-primary);cursor:pointer}.home-text-link:hover{color:var(--color-primary-hover);text-decoration:underline}.home-apps{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}.app-tile{position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;padding:22px 20px 16px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform var(--transition),box-shadow var(--transition),border-color var(--transition);container-type:inline-size}.app-tile-body{flex:1;display:flex;flex-direction:column;gap:16px}.app-tile:before{content:"";position:absolute;inset:0 0 auto;height:4px;background:linear-gradient(90deg,var(--tone),var(--tone-2))}.app-tile:after{content:"";position:absolute;inset:0 0 auto;z-index:-1;height:130px;background:linear-gradient(180deg,var(--tone-soft),transparent)}.app-tile:hover{transform:translateY(-3px);border-color:var(--tone-border);box-shadow:0 18px 30px -20px var(--tone-glow),var(--shadow-md)}.app-tile-ghost{position:absolute;right:-22px;top:-16px;z-index:-1;width:138px;height:138px;color:var(--tone);opacity:.08;transform:rotate(-10deg);transition:transform .4s ease,opacity .4s ease;pointer-events:none}.app-tile-ghost .side-icon{width:100%;height:100%;color:inherit;stroke-width:1.2}.app-tile:hover .app-tile-ghost{transform:rotate(-4deg) scale(1.06);opacity:.13}.app-tile-head{display:flex;align-items:flex-start;gap:14px}.app-tile-icon{width:52px;height:52px;flex-shrink:0;display:grid;place-items:center;border-radius:15px;background:linear-gradient(135deg,var(--tone),var(--tone-2));box-shadow:0 10px 18px -10px var(--tone-glow),inset 0 1px #ffffff47}.app-tile-icon .side-icon{width:26px;height:26px;color:#fff}.app-tile-title{flex:1;min-width:0}.app-tile-title h3{font-size:1.06rem;font-weight:700;line-height:1.3;letter-spacing:-.015em}.app-tile-title p{margin-top:3px;min-height:2.9em;font-size:.83rem;line-height:1.45;color:var(--color-text-secondary)}.app-tile-data{display:flex;flex-direction:column;gap:12px;min-width:0}.app-tile-note{padding:8px 0;font-size:.85rem;color:var(--color-text-muted)}.app-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.app-stat{min-width:0;padding:10px 12px;border-radius:12px;background:var(--color-surface-2);border:1px solid var(--color-border)}.app-stat b{display:block;font-size:1.45rem;font-weight:700;line-height:1.15;letter-spacing:-.025em;font-variant-numeric:tabular-nums}.app-stat span{display:block;margin-top:2px;min-height:2.6em;font-size:.72rem;font-weight:500;line-height:1.3;color:var(--color-text-secondary)}.app-stat.is-warn{background:var(--color-warning-light);border-color:var(--color-warning-border)}.app-stat.is-warn b{color:var(--color-warning)}.app-stat.is-ok b{color:var(--color-success)}.app-progress-bar{height:6px;border-radius:999px;background:var(--color-border);overflow:hidden}.app-progress-bar span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--tone),var(--tone-2));transition:width .6s cubic-bezier(.2,.7,.2,1)}.app-progress-text{display:flex;justify-content:space-between;gap:10px;margin-top:6px;font-size:.76rem;font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}.app-progress-text b{color:var(--color-text)}.app-progress-text span:last-child{font-weight:700;color:var(--tone)}.app-tile-foot{display:flex;flex-direction:column;gap:12px;margin-top:auto;padding-top:4px}.app-links{display:flex;flex-wrap:wrap;gap:6px;min-width:0}.app-links:empty{display:none}.app-link{padding:4px 10px;border-radius:999px;border:1px solid var(--color-border);background:var(--color-surface);font-family:inherit;font-size:.76rem;font-weight:550;color:var(--color-text-secondary);cursor:pointer;transition:color var(--transition),background var(--transition),border-color var(--transition)}.app-link:hover{color:var(--tone);background:var(--tone-soft);border-color:var(--tone-border)}.app-open{flex-shrink:0;display:flex;align-items:center;justify-content:center;gap:7px;padding:9px 16px;border:none;border-radius:11px;background:linear-gradient(135deg,var(--tone),var(--tone-2));box-shadow:0 10px 16px -12px var(--tone-glow);font-family:inherit;font-size:.84rem;font-weight:650;color:#fff;cursor:pointer}.app-open span{transition:transform var(--transition)}.app-tile:hover .app-open span{transform:translate(3px)}@container (min-width: 640px){.app-tile-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);grid-template-areas:"head data" "foot data";gap:14px 32px}.app-tile-head{grid-area:head}.app-tile-title p,.app-stat span{min-height:0}.app-tile-data{grid-area:data;align-self:center}.app-tile-foot{grid-area:foot;align-self:end;flex-direction:row;align-items:center;justify-content:space-between;margin-top:0}.app-open{border-radius:999px}}.skeleton{border-radius:6px;color:transparent!important;background:linear-gradient(90deg,var(--color-border) 25%,var(--color-surface) 45%,var(--color-border) 65%);background-size:300% 100%;animation:homeShimmer 1.4s ease-in-out infinite}.app-stat b.skeleton{width:2.2ch}.app-stat span.skeleton{width:70%;margin-top:6px}@keyframes homeShimmer{0%{background-position:100% 0}to{background-position:0 0}}.home-card{overflow:hidden;container-type:inline-size}.home-empty{padding:22px 18px;text-align:center;font-size:.86rem;color:var(--color-text-muted)}.home-empty.is-clear:before{content:"";display:inline-block;width:18px;height:18px;margin-right:8px;vertical-align:-4px;border-radius:50%;background:var(--color-success-light) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2315803d' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 12.5 4 4 8-9'/%3E%3C/svg%3E") center / 12px no-repeat;border:1px solid var(--color-success-border)}.home-notice{display:flex;align-items:center;gap:12px;width:100%;padding:12px 16px;border:none;border-top:1px solid var(--color-border);background:transparent;font-family:inherit;text-align:left;color:var(--color-text);cursor:pointer;transition:background var(--transition)}.home-notice:first-child{border-top:none}.home-notice:hover{background:var(--color-surface-2)}.home-notice-icon{position:relative;width:36px;height:36px;flex-shrink:0;display:grid;place-items:center;border-radius:11px;background:var(--tone-soft)}.home-notice-icon .side-icon{color:var(--tone)}.home-notice.is-warn .home-notice-icon:after{content:"";position:absolute;top:-3px;right:-3px;width:10px;height:10px;border-radius:50%;background:#f59e0b;border:2px solid var(--color-surface)}.home-notice-text{flex:1;min-width:0;display:flex;flex-direction:column;font-size:.86rem;line-height:1.4}.home-notice-text small{font-size:.72rem;color:var(--color-text-muted)}.home-notice-to{display:none;flex-shrink:0;padding:3px 10px;border-radius:999px;font-size:.74rem;font-weight:600;white-space:nowrap;color:var(--tone);background:var(--tone-soft);border:1px solid var(--tone-border)}@container (min-width: 520px){.home-notice-to{display:inline-block}}.home-notice-go{font-size:1.25rem;line-height:1;color:var(--color-text-muted);transition:transform var(--transition),color var(--transition)}.home-notice:hover .home-notice-go{transform:translate(3px);color:var(--tone)}.home-visit{display:flex;align-items:center;gap:12px;padding:11px 16px;border-top:1px solid var(--color-border)}.home-visit:first-child{border-top:none}.home-visit-no{min-width:46px;height:36px;padding:0 8px;flex-shrink:0;display:grid;place-items:center;border-radius:10px;font-size:.95rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--color-primary-strong);background:var(--color-primary-light);border:1px solid var(--color-primary-border)}.home-visit-no.is-special{font-size:.78rem;color:var(--color-warning);background:var(--color-warning-light);border-color:var(--color-warning-border)}.home-visit-who{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;font-size:.86rem;color:var(--color-text-secondary)}.home-visit-who>span{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.home-visit-who small{font-size:.74rem;color:var(--color-text-muted)}.home-visit-date{font-size:.84rem;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.home-visit-date.is-none{font-weight:400;color:var(--color-text-muted)}.home-more{width:100%;padding:10px;border:none;border-top:1px solid var(--color-border);background:var(--color-surface-2);font-family:inherit;font-size:.8rem;font-weight:600;color:var(--color-primary);cursor:pointer;transition:background var(--transition)}.home-more:hover{background:var(--color-primary-light)}.home-account{padding-bottom:16px}.home-account-top{display:flex;align-items:center;gap:12px;padding:18px 18px 12px;background:linear-gradient(180deg,var(--color-primary-light),transparent)}.home-account-top strong{min-width:0;font-size:.98rem;line-height:1.3;overflow-wrap:anywhere}.home-avatar{width:44px;height:44px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;font-size:1.05rem;font-weight:700;text-transform:uppercase;color:#fff;background:linear-gradient(135deg,var(--color-primary),var(--color-accent));box-shadow:0 8px 14px -8px #0f766eb3}.home-account dl{padding:0 18px 14px}.home-account dl>div{display:flex;justify-content:space-between;gap:14px;padding:8px 0;border-bottom:1px dashed var(--color-border);font-size:.84rem}.home-account dt{color:var(--color-text-secondary);white-space:nowrap}.home-account dd{min-width:0;font-weight:600;text-align:right;overflow-wrap:anywhere}.home-account dl>.home-account-apps{flex-direction:column;gap:8px;border-bottom:none}.home-account-apps dd{display:flex;flex-wrap:wrap;gap:6px;text-align:left}.home-account-apps dd span{display:inline-flex;align-items:center;gap:6px;padding:2px 10px 2px 8px;border-radius:999px;font-size:.76rem;color:var(--tone);background:var(--tone-soft);border:1px solid var(--tone-border)}.home-account-apps dd span:before{content:"";width:7px;height:7px;border-radius:50%;background:linear-gradient(135deg,var(--tone),var(--tone-2))}.home-account .btn{width:calc(100% - 36px);margin:0 18px}@container home (min-width: 616px) and (max-width: 931.98px){.home-apps>.app-tile:last-child:nth-child(odd){grid-column:1 / -1}}@container home (max-width: 800px){.home-lower{grid-template-columns:minmax(0,1fr)}}@container home (max-width: 600px){.home-hero{flex-direction:column;align-items:stretch;padding:24px 20px}.home-hero-status{flex-direction:row;justify-content:flex-start;gap:12px;min-width:0;padding:10px 16px}.home-hero-status b{font-size:1.5rem}.home-hero-status svg{width:26px;height:26px}.home-apps{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion: reduce){.home-rise,.skeleton{animation:none}.app-tile,.app-tile-ghost,.app-open span,.home-notice-go{transition:none}.app-tile:hover{transform:none}}.sidebar-foot{border-top:1px solid var(--color-border);padding:10px;display:flex;flex-direction:column;gap:2px}.sidebar-user{display:flex;align-items:center;gap:10px;padding:6px 8px 10px;color:var(--color-text);font-size:.85rem;font-weight:600;min-width:0}.sidebar-user span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user-avatar{width:30px;height:30px;border-radius:50%;background:var(--color-primary-tint);color:var(--color-primary-strong);display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:700;flex-shrink:0;text-transform:uppercase}.content{flex:1;min-width:0;background:var(--color-bg)}.content-inner{padding:24px 30px}.sidebar-toggle{display:none}@media (max-width: 900px){.app-shell{flex-direction:column}.sidebar{width:100%;height:auto;border-right:none;border-bottom:1px solid var(--color-border);flex-direction:row;flex-wrap:wrap;align-items:center}.sidebar-brand{border-bottom:none;flex:1;padding:12px 16px}.sidebar-toggle{display:inline-flex;align-items:center;justify-content:center;margin-right:14px;width:40px;height:40px;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;color:var(--color-text);font-size:1.15rem}.sidebar-nav{display:none;width:100%;order:3;border-top:1px solid var(--color-border)}.sidebar-nav.open{display:flex}.sidebar-foot{display:none;width:100%;order:4}.sidebar-foot.open{display:flex}.content-inner{padding:18px 16px}}.container{width:100%;margin:0 auto;display:flex;flex-direction:column;min-height:calc(100vh - 120px)}.container-fluid{width:100%;display:flex;flex-direction:column;min-height:calc(100vh - 120px)}header{text-align:left;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--color-border)}header h1{color:var(--color-text);font-size:1.5rem;font-weight:700;margin-bottom:4px;letter-spacing:-.02em}header p{color:var(--color-text-secondary);font-size:.9rem}.upload-section{display:flex;flex-direction:column;gap:16px;margin-bottom:24px}.settings-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 640px){.settings-row{grid-template-columns:1fr}}.model-selector{width:100%;min-width:0;display:flex;flex-direction:column;gap:6px}.model-selector label{font-size:.8rem;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.05em}.model-select{padding:9px 36px 9px 12px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.875rem;max-width:100%;font-family:inherit;background-color:var(--color-surface);color:var(--color-text);cursor:pointer;transition:all var(--transition);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 10px center;background-size:16px}.model-select:hover{border-color:var(--color-border-hover)}.model-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}.model-select:disabled{opacity:.5;cursor:not-allowed;background-color:var(--color-bg)}.model-select optgroup{font-weight:600;color:var(--color-text)}.model-select option{padding:8px;color:var(--color-text)}.model-info{background-color:var(--color-warning-light);border:1px solid var(--color-warning-border);padding:8px 12px;border-radius:var(--radius-sm)}.model-info p{margin:0;font-size:.8rem;color:var(--color-warning);line-height:1.5}.model-info strong{color:var(--color-warning)}.ocr-mode-options{display:flex;gap:8px}.ocr-mode-option{display:flex;align-items:center;gap:8px;padding:10px 14px;border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition);flex:1;background:var(--color-surface)}.ocr-mode-option:hover{border-color:var(--color-primary);background:var(--color-primary-light)}.ocr-mode-option.active{border-color:var(--color-primary);background:var(--color-primary-light);box-shadow:0 0 0 1px var(--color-primary)}.ocr-mode-option input[type=radio]{accent-color:var(--color-primary)}.ocr-mode-option div{display:flex;flex-direction:column}.ocr-mode-option strong{font-size:.85rem;color:var(--color-text)}.ocr-mode-option span{font-size:.75rem;color:var(--color-text-muted)}.file-input-wrapper{position:relative;width:100%}#file-input{display:none}.file-label{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:32px 20px;background:var(--color-surface);border:2px dashed var(--color-border);border-radius:var(--radius-lg);cursor:pointer;text-align:center;transition:all var(--transition);color:var(--color-text-secondary);font-weight:500;font-size:.9rem;min-height:120px}.file-label:hover{background:var(--color-primary-light);border-color:var(--color-primary);color:var(--color-primary)}.file-label.has-file{border-color:var(--color-success);background:var(--color-success-light);color:var(--color-success);border-style:solid}.file-label-icon{font-size:2rem;margin-bottom:8px;opacity:.6}.file-label-text{font-size:.9rem;font-weight:500}.file-label-hint{font-size:.75rem;color:var(--color-text-muted);margin-top:4px}.actions-row{display:flex;gap:8px;justify-content:center}.btn{padding:8px 15px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.85rem;font-weight:600;line-height:1.2;cursor:pointer;transition:background var(--transition),border-color var(--transition),box-shadow var(--transition),transform var(--transition);font-family:inherit;display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm);white-space:nowrap}.btn:hover:not(:disabled){border-color:var(--color-border-hover);background:var(--color-surface-2)}.btn:active:not(:disabled){transform:translateY(.5px)}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.btn-primary{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover);box-shadow:var(--shadow-md)}.btn-secondary{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-2);border-color:var(--color-border-hover);color:var(--color-text)}.btn-export{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);font-size:.8rem;padding:6px 12px;font-weight:500}.btn-export:hover{background:var(--color-bg);border-color:var(--color-border-hover)}.btn-training{background:#7c3aed;color:#fff;border:1px solid #7c3aed;font-size:.8rem;padding:6px 12px;font-weight:500}.btn-training:hover{background:#6d28d9;border-color:#6d28d9}.btn-success{background:var(--color-success);color:#fff;border:1px solid var(--color-success);font-size:.8rem;padding:6px 12px;font-weight:500}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){background:#b91c1c;border-color:#b91c1c}.error-message{background:var(--color-danger-light);color:var(--color-danger);padding:12px 16px;border-radius:var(--radius-md);border:1px solid var(--color-danger-border);margin:16px 0;font-size:.875rem;font-weight:500}.ocr-loading{position:relative;text-align:center;padding:48px 24px 56px;background:linear-gradient(135deg,#0f172a 0%,#1e293b 50%,#0f172a 100%);border-radius:var(--radius-xl);overflow:hidden;margin:24px 0;border:1px solid rgba(37,99,235,.2)}.ocr-scanner{position:relative;display:inline-block;margin-bottom:28px}.scanner-doc{width:80px;height:100px;background:rgba(255,255,255,.06);border:1.5px solid rgba(37,99,235,.4);border-radius:6px;position:relative;overflow:hidden;box-shadow:0 0 30px #2563eb26}.scanner-line{position:absolute;left:0;width:100%;height:2px;background:linear-gradient(90deg,transparent,#3b82f6,#60a5fa,#3b82f6,transparent);box-shadow:0 0 15px 3px #3b82f680,0 0 40px 5px #3b82f633;animation:scanLine 2s ease-in-out infinite}@keyframes scanLine{0%,to{top:0;opacity:.3}50%{top:calc(100% - 2px);opacity:1}}.scanner-grid{display:flex;flex-direction:column;gap:6px;padding:10px 8px}.grid-line{height:2px;background:rgba(59,130,246,.15);border-radius:1px;animation:gridReveal 2s ease-in-out infinite}.grid-line:nth-child(2n){width:70%}@keyframes gridReveal{0%,to{opacity:.2;transform:scaleX(.3)}50%{opacity:.6;transform:scaleX(1)}}.scanner-rings{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none}.ring{position:absolute;border:1px solid rgba(59,130,246,.3);border-radius:50%;top:50%;left:50%;transform:translate(-50%,-50%);animation:ringPulse 3s ease-out infinite}.ring-1{width:120px;height:120px;animation-delay:0s}.ring-2{width:160px;height:160px;animation-delay:.6s}.ring-3{width:200px;height:200px;animation-delay:1.2s}@keyframes ringPulse{0%{opacity:.6;transform:translate(-50%,-50%) scale(.8)}to{opacity:0;transform:translate(-50%,-50%) scale(1.3)}}.ocr-loading-text{position:relative;z-index:2}.loading-label{display:inline-block;font-size:.65rem;font-weight:700;letter-spacing:.25em;color:#60a5fa;background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.2);padding:4px 14px;border-radius:20px;margin-bottom:12px;animation:labelGlow 2s ease-in-out infinite}@keyframes labelGlow{0%,to{box-shadow:0 0 8px #3b82f626}50%{box-shadow:0 0 20px #3b82f64d}}.loading-status{color:#cbd5e1;font-size:.9rem;font-weight:500;margin:8px 0 0}.loading-dots{display:flex;justify-content:center;gap:6px;margin-top:16px}.loading-dots span{width:6px;height:6px;background:#3b82f6;border-radius:50%;animation:dotBounce 1.4s ease-in-out infinite}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes dotBounce{0%,80%,to{transform:scale(.4);opacity:.3}40%{transform:scale(1);opacity:1}}.data-stream{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.data-particle{position:absolute;bottom:-4px;width:2px;height:12px;background:linear-gradient(to top,transparent,#3b82f6);border-radius:2px;animation:particleRise linear infinite;opacity:0}@keyframes particleRise{0%{bottom:-4px;opacity:0}10%{opacity:.7}90%{opacity:.3}to{bottom:100%;opacity:0}}.result-section{margin-top:24px;animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.result-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;flex-wrap:wrap;gap:12px}.result-header h2{color:var(--color-text);font-size:1.1rem;font-weight:600}.export-buttons{display:flex;gap:6px;flex-wrap:wrap}.file-tabs{display:flex;gap:2px;margin-bottom:16px;border-bottom:1px solid var(--color-border);overflow-x:auto}.file-tab{padding:8px 16px;border:none;border-bottom:2px solid transparent;background:transparent;cursor:pointer;font-size:.8rem;font-weight:500;font-family:inherit;color:var(--color-text-muted);transition:all var(--transition);white-space:nowrap}.file-tab:hover{color:var(--color-text);background:var(--color-bg)}.file-tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary);background:transparent}.file-tab.error:not(.active){color:var(--color-danger)}.text-output{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:20px;max-height:500px;overflow-y:auto}.text-output pre{white-space:pre-wrap;word-wrap:break-word;font-family:JetBrains Mono,Fira Code,Courier New,monospace;font-size:.85rem;line-height:1.7;color:var(--color-text);margin:0}.region-results-table{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow-x:auto}.region-results-table table{width:100%;min-width:700px;border-collapse:collapse}.region-results-table thead th{background:var(--color-bg);color:var(--color-text-secondary);padding:10px 16px;text-align:left;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--color-border)}.region-results-table tbody tr{border-bottom:1px solid var(--color-border);transition:background var(--transition)}.region-results-table tbody tr:hover{background:var(--color-bg)}.region-results-table tbody tr:last-child{border-bottom:none}.field-name-cell{padding:12px 16px;font-weight:600;color:var(--color-text);white-space:nowrap;vertical-align:middle;width:20%;font-size:.875rem}.field-image-cell{padding:8px 16px;vertical-align:middle;width:40%;position:relative}.crop-preview{max-width:100%;max-height:100px;border:1px solid var(--color-border);border-radius:var(--radius-sm);object-fit:contain;background:white;cursor:zoom-in}.crop-preview:hover{position:absolute;max-width:none;max-height:none;z-index:100;box-shadow:var(--shadow-xl);cursor:zoom-out}.field-value-cell{padding:8px 16px;vertical-align:middle;width:40%}.field-value-input{width:100%;padding:8px 12px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.875rem;font-family:inherit;line-height:1.5;resize:vertical;transition:all var(--transition);color:var(--color-text)}.field-value-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}.usage-stats{display:flex;flex-wrap:wrap;gap:16px;padding:10px 16px;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-top:12px;font-size:.8rem;color:var(--color-text-secondary)}.usage-stats strong{color:var(--color-text)}.usage-total{background:var(--color-success-light);border-color:var(--color-success-border)}.usage-cost,.usage-cost strong{color:var(--color-warning)}footer{text-align:center;margin-top:auto;padding-top:16px;border-top:1px solid var(--color-border);color:var(--color-text-muted);font-size:.8rem}@media (max-width: 640px){.container{padding:0}.main-content{padding:16px}header h1{font-size:1.4rem}.result-header{flex-direction:column;align-items:flex-start}.ocr-mode-options,.actions-row{flex-direction:column}.btn{width:100%}}.training-review-list{display:flex;flex-direction:column;gap:16px}.training-review-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:12px}.training-review-label{display:flex;gap:8px;align-items:center;margin-bottom:8px}.training-label-input{flex:1;padding:6px 10px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:.9rem}.training-label-input:focus{outline:none;border-color:var(--color-primary)}.btn-delete-training{background:var(--color-danger);color:#fff;border:none;padding:6px 12px;border-radius:var(--radius-sm);cursor:pointer;font-size:.8rem}.btn-delete-training:hover{opacity:.9}.crop-canvas-wrapper{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.crop-canvas-wrapper canvas{max-width:100%;background:#f8f8f8}.crop-actions{display:flex;gap:6px}.btn-crop-confirm{background:var(--color-success);color:#fff;border:none;padding:4px 16px;border-radius:var(--radius-sm);cursor:pointer;font-weight:500}.btn-crop-cancel{background:var(--color-secondary);color:#fff;border:none;padding:4px 16px;border-radius:var(--radius-sm);cursor:pointer}.saving-text{color:var(--color-primary);font-size:.85rem}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-pad{padding:18px 20px}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow-sm)}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:999px;font-size:.72rem;font-weight:600;line-height:1.6;background:var(--color-surface-2);color:var(--color-text-secondary);border:1px solid var(--color-border);white-space:nowrap}.badge-primary{background:var(--color-primary-light);color:var(--color-primary-strong);border-color:var(--color-primary-border)}.badge-success{background:var(--color-success-light);color:var(--color-success);border-color:var(--color-success-border)}.badge-warning{background:var(--color-warning-light);color:var(--color-warning);border-color:var(--color-warning-border)}.badge-danger{background:var(--color-danger-light);color:var(--color-danger);border-color:var(--color-danger-border)}.input,.field-input{width:100%;padding:8px 11px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:.875rem;font-family:inherit;color:var(--color-text);background:var(--color-surface);transition:border-color var(--transition),box-shadow var(--transition);box-sizing:border-box}.empty{text-align:center;padding:40px 20px;color:var(--color-text-muted);font-size:.9rem}.progress{height:8px;background:var(--color-border);border-radius:999px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--color-primary);border-radius:999px;transition:width .3s ease}
