:root{--bg-deep: #0d1b35;--bg-card: #1a2c4e;--bg-surface: #243a61;--accent: #4a90d9;--accent-soft: #2d6bb5;--text-main: #e8edf5;--text-muted: #8a9bbf;--success: #34c47c;--error: #e05555;--warning: #f0a030;--border: rgba(74, 144, 217, .2);--shadow: rgba(3, 10, 25, .32);color:var(--text-main);font-family:DM Sans,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(180deg,rgba(74,144,217,.11),transparent 280px),var(--bg-deep)}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}.app-shell{width:min(1440px,100%);min-height:100vh;margin:0 auto;padding:28px}.app-header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.app-header h1,.panel h2,.log-panel h2,.confirm-modal h2{margin:0;font-family:Sora,Arial,sans-serif;letter-spacing:0}.app-header h1{font-size:clamp(2rem,4vw,3.4rem);line-height:1}.eyebrow{margin:0 0 6px;color:var(--accent);font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.internal-badge{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border:1px solid var(--border);border-radius:999px;background:#1a2c4ebd;color:var(--text-main);font-weight:700;white-space:nowrap}.workspace{display:grid;grid-template-columns:minmax(320px,.4fr) minmax(460px,.6fr);gap:22px;align-items:stretch}.left-column{display:grid;gap:16px;align-content:start}.panel,.send-card,.log-panel{border:1px solid var(--border);border-radius:8px;background:#1a2c4ee0;box-shadow:0 18px 50px var(--shadow)}.panel,.send-card{padding:18px}.panel-heading,.log-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.panel-heading h2,.log-panel h2{font-size:1.05rem;line-height:1.2}.drop-zone{display:grid;width:100%;min-height:164px;place-items:center;gap:8px;padding:20px;border:1.5px dashed rgba(74,144,217,.48);border-radius:8px;background:#243a619e;color:var(--text-main);text-align:center;transition:border-color .18s ease,background .18s ease,transform .18s ease}.drop-zone:hover,.drop-zone.is-dragging{border-color:var(--accent);background:#4a90d92b;transform:translateY(-1px)}.upload-icon{display:grid;width:44px;height:44px;place-items:center;border-radius:50%;background:var(--accent);color:#071327;font-size:1.7rem;font-weight:700}.drop-zone strong{width:100%;overflow-wrap:anywhere;font-family:Sora,Arial,sans-serif;letter-spacing:0}.drop-zone small,.send-hint,.empty-log{color:var(--text-muted)}.status-line{display:flex;align-items:center;gap:10px;margin-top:12px;color:var(--text-muted)}.spinner{width:18px;height:18px;border:2px solid rgba(232,237,245,.22);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}.upload-summary,.stats-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.upload-summary span,.stats-row span{padding:7px 10px;border:1px solid var(--border);border-radius:999px;background:#243a61a6;color:var(--text-muted);font-size:.85rem;font-weight:700}.reveal{animation:reveal .22s ease both}.form-error{margin:12px 0 0;color:var(--warning);font-weight:700}.ghost-button{min-height:38px;padding:0 13px;border:1px solid var(--border);border-radius:8px;background:#243a61ad;color:var(--text-main);font-weight:700;transition:background .16s ease,border-color .16s ease}.ghost-button:hover{border-color:#4a90d99e;background:#4a90d92e}.upload-panel .ghost-button{margin-top:12px}.multi-cycle-toggle{display:inline-flex;align-items:center;gap:10px;min-height:34px;margin:0 0 12px;color:var(--text-main);font-weight:700}.multi-cycle-toggle input{width:18px;height:18px;margin:0;accent-color:var(--accent)}.cycle-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:14px}.cycle-tabs button{min-height:42px;border:1px solid var(--border);border-radius:999px;background:#243a61bd;color:var(--text-main);font-family:Sora,Arial,sans-serif;font-weight:700;letter-spacing:0}.cycle-tabs button.active{border-color:transparent;background:var(--accent);color:#071327}.cycle-tabs button.focused{box-shadow:0 0 0 3px #4a90d929}.cycle-tabs button:disabled{opacity:.45}.cycle-detail{display:grid;gap:9px;padding:14px;border:1px solid var(--border);border-radius:8px;background:#0d1b3561}.cycle-detail-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.cycle-detail-header>strong{font-family:Sora,Arial,sans-serif;letter-spacing:0}.cycle-row{display:grid;grid-template-columns:112px 1fr;gap:10px;align-items:baseline}.cycle-detail span{color:var(--text-muted);font-size:.82rem;font-weight:700}.cycle-detail strong{overflow-wrap:anywhere;font-weight:700}.cycle-edit-form{display:grid;gap:12px}.cycle-field{display:grid;gap:7px}.cycle-field span{color:var(--text-muted);font-size:.82rem;font-weight:700}.cycle-field input{width:100%;min-height:42px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-surface);color:var(--text-main);outline:none}.cycle-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #4a90d924}.cycle-edit-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}.save-cycle-button{min-height:38px;padding:0 13px;border:0;border-radius:8px;background:var(--accent);color:#071327;font-weight:700;transition:background .16s ease,transform .16s ease}.save-cycle-button:hover{background:#62a9ef;transform:translateY(-1px)}.char-counter{padding:7px 10px;border-radius:999px;font-family:JetBrains Mono,Consolas,monospace;font-size:.82rem;font-weight:700}.char-counter.ok{background:#34c47c24;color:var(--success)}.char-counter.error{background:#e0555524;color:var(--error)}.message-stack{display:grid;gap:12px}.message-preview-item{display:grid;gap:8px}.message-preview-meta{display:flex;align-items:center;justify-content:space-between;gap:12px}.message-preview-meta strong{font-family:Sora,Arial,sans-serif;font-size:.9rem;letter-spacing:0}.message-preview{min-height:136px;max-height:220px;overflow:auto;margin:0;padding:14px;border:1px solid var(--border);border-radius:8px;background:#0d1b3594;color:var(--text-main);font-family:JetBrains Mono,Consolas,monospace;font-size:.88rem;line-height:1.6;white-space:pre-wrap;word-break:break-word}.send-card{display:grid;gap:10px}.send-button{width:100%;min-height:54px;border:0;border-radius:8px;background:var(--accent);color:#071327;font-family:Sora,Arial,sans-serif;font-weight:700;letter-spacing:0;box-shadow:0 16px 36px #4a90d938;transition:background .16s ease,transform .16s ease,opacity .16s ease}.send-button:hover:not(:disabled){background:#62a9ef;transform:translateY(-1px)}.send-button:disabled{opacity:.5}.send-button.done{background:var(--success)}.send-button.compact{min-height:42px;padding:0 16px}.send-hint{margin:0;font-size:.9rem}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;display:grid;place-items:center;padding:20px;background:#030916b8}.confirm-modal{width:min(440px,100%);padding:22px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);box-shadow:0 28px 80px #0000006b}.confirm-modal h2{margin-bottom:20px;font-size:1.35rem}.confirm-note{margin:-10px 0 18px;color:var(--text-muted);font-weight:700}.modal-actions{display:grid;grid-template-columns:1fr 1.3fr;gap:10px}.log-panel{display:flex;min-height:640px;max-height:calc(100vh - 130px);flex-direction:column;padding:18px;overflow:hidden}.log-header{flex:0 0 auto}.progress-card{flex:0 0 auto;padding:14px;border:1px solid var(--border);border-radius:8px;background:#243a6185}.progress-meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;color:var(--text-muted);font-size:.9rem}.progress-meta strong{color:var(--text-main)}.progress-track{width:100%;height:10px;overflow:hidden;border-radius:999px;background:#0d1b35b8}.progress-track span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--success));transition:width .22s ease}.log-section{flex:0 0 auto;margin-top:12px;overflow:hidden;border:1px solid var(--border);border-radius:8px;background:#0d1b3547}.log-section.success{border-color:#34c47c42}.log-section.error{border-color:#e055554d}.log-section.warning{border-color:#f0a03052}.log-section-title{display:flex;width:100%;min-height:48px;align-items:center;justify-content:space-between;padding:0 14px;border:0;background:#243a6194;color:var(--text-main);font-family:Sora,Arial,sans-serif;font-weight:700;text-align:left;letter-spacing:0}.log-section-title strong{display:grid;min-width:32px;height:28px;place-items:center;border-radius:999px;background:#e8edf51a}.log-list{display:grid;max-height:235px;gap:8px;padding:10px;overflow:auto}.log-item{display:grid;grid-template-columns:minmax(76px,.6fr) minmax(116px,.9fr) minmax(86px,.7fr) minmax(120px,1.2fr) minmax(120px,1fr);gap:10px;align-items:center;min-height:52px;padding:10px;border:1px solid rgba(74,144,217,.14);border-radius:8px;background:#243a615c;animation:fadeIn .18s ease both}.log-item code{color:var(--text-main);font-family:JetBrains Mono,Consolas,monospace;font-size:.84rem}.log-item span,.log-item strong{min-width:0;overflow-wrap:anywhere;font-size:.84rem}.log-item span{color:var(--text-muted)}.log-item strong{color:var(--text-main)}.empty-log{margin:6px 4px;font-family:JetBrains Mono,Consolas,monospace;font-size:.85rem}.confetti-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;pointer-events:none;overflow:hidden}.confetti-layer span{position:absolute;top:-18px;left:calc((var(--i) + 1) * 4.7%);width:8px;height:14px;border-radius:2px;background:hsl(calc(145 + var(--i) * 12),75%,58%);animation:confettiFall 3.4s ease-in forwards;animation-delay:calc(var(--i) * 58ms)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes reveal{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes confettiFall{0%{opacity:0;transform:translate3d(0,-10px,0) rotate(0)}12%{opacity:1}to{opacity:0;transform:translate3d(calc((var(--i) - 9) * 4px),104vh,0) rotate(520deg)}}@media (max-width: 1080px){.workspace{grid-template-columns:1fr}.log-panel{min-height:560px;max-height:none}}@media (max-width: 720px){.app-shell{padding:18px}.app-header{align-items:flex-start;flex-direction:column}.cycle-row,.log-item,.modal-actions{grid-template-columns:1fr}.cycle-tabs{grid-template-columns:repeat(5,minmax(44px,1fr))}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
