body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{background:#f0f2f5;color:#1a1a1a;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;min-height:100vh;padding:32px 16px}.app{margin:0 auto;max-width:680px;width:100%}.card{background:#fff;border-radius:14px;box-shadow:0 1px 3px #00000012,0 4px 16px #0000000f;overflow:hidden}.tabs{border-bottom:1px solid #e8e8e8;display:flex}.tab-btn{background:#0000;border:none;color:#888;cursor:pointer;flex:1 1;font-family:inherit;font-size:14px;font-weight:500;padding:14px 20px;position:relative;transition:color .15s}.tab-btn:hover{color:#333}.tab-btn.active{color:#1a1a1a}.tab-btn.active:after{background:#2563eb;border-radius:2px 2px 0 0;bottom:-1px;content:"";height:2px;left:20px;position:absolute;right:20px}.panel{display:flex;flex-direction:column;gap:20px;padding:28px 24px 32px}.divider{background:#f0f0f0;height:1px}.field{display:flex;flex-direction:column;gap:6px}label{color:#555;font-size:13px;font-weight:500}.input-base{appearance:none;background:#f7f8fa;border:1px solid #e2e4e8;border-radius:8px;color:#1a1a1a;font-family:inherit;font-size:14px;outline:none;padding:10px 12px;transition:border-color .15s,box-shadow .15s;width:100%}.input-base:focus{background:#fff;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.input-base::placeholder{color:#aaa}.datetime-row{display:flex;gap:10px}.input-date{flex:3 1}.input-time{flex:2 1}.tz-note{color:#999;font-size:12px}.warning-note{color:#dc2626;font-size:12px}.output-filename-note{color:#555;font-size:13px;text-align:center}.error-note{color:#dc2626}.error-note,.info-note{font-size:13px;text-align:center}.info-note{color:#1d4ed8}.info-note a{color:inherit;font-weight:500}.file-times-loading{color:#999;font-style:italic}.file-times,.file-times-loading{font-size:13px;text-align:center}.file-times{color:#555;display:flex;flex-direction:column;gap:6px}.file-times-label{color:#333;font-weight:600}.file-times-tz{color:#999;font-size:12px}.file-row{align-items:center;background:#f7f8fa;border:1px solid #e2e4e8;border-radius:8px;display:flex;gap:10px;min-height:44px;padding:6px 6px 6px 12px;transition:border-color .15s}.file-row:focus-within{border-color:#2563eb}.file-name{color:#aaa;flex:1 1;font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-name.selected{color:#1a1a1a}.btn-pick{background:#fff;border:1px solid #cbd5e1;border-radius:6px;color:#2563eb;cursor:pointer;flex-shrink:0;font-family:inherit;font-size:13px;font-weight:500;padding:7px 14px;transition:background .15s,border-color .15s;white-space:nowrap}.btn-pick:hover{background:#eff6ff;border-color:#93c5fd}.btn-primary{background:#2563eb;border:none;border-radius:8px;color:#fff;cursor:pointer;font-family:inherit;font-size:14px;font-weight:600;margin-top:4px;padding:12px;transition:background .15s,transform .1s;width:100%}.btn-primary:hover{background:#1d4ed8}.btn-primary:active{transform:scale(.99)}.btn-primary:disabled{background:#bfdbfe;cursor:not-allowed;transform:none}.btn-primary.btn-locked{background:#dc2626}.btn-primary.btn-locked:hover{background:#b91c1c}.btn-primary.btn-ready{background:#10b981}.btn-primary.btn-ready:hover{background:#059669}@keyframes spin{to{transform:rotate(1turn)}}.spinner{animation:spin .7s linear infinite;border:2px solid #fff6;border-radius:50%;border-top-color:#fff;display:inline-block;height:14px;margin-right:8px;vertical-align:middle;width:14px}.progress-track{background:#e8eaed;border-radius:0;height:20px;overflow:hidden;width:100%}.progress-track.disabled{opacity:.6}.progress-fill{background:#2563eb;border-radius:0;height:100%}.progress-fill.done{background:#10b981}.timelock-row{gap:8px;justify-content:space-between}.info-btn,.timelock-row{align-items:center;display:flex}.info-btn{background:#0000;border:1.5px solid #93c5fd;border-radius:50%;color:#2563eb;cursor:pointer;flex-shrink:0;font-family:Georgia,serif;font-size:12px;font-style:italic;font-weight:700;height:22px;justify-content:center;line-height:1;transition:background .15s,color .15s,border-color .15s;width:22px}.info-btn--active,.info-btn:hover{background:#2563eb;border-color:#2563eb;color:#fff}.info-box{display:grid;grid-template-rows:0fr;margin-top:-20px;opacity:0;overflow:hidden;transition:grid-template-rows .25s ease,opacity .25s ease,margin-top .25s ease}.info-box--open{grid-template-rows:1fr;margin-top:0;opacity:1}.info-box-inner{background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;color:#1e40af;font-size:13px;line-height:1.55;min-height:0;padding:11px 14px}.info-box-inner strong{font-weight:600}.timelock-toggle{align-items:center;color:#555;cursor:pointer;display:flex;font-size:13px;font-weight:500;gap:10px;-webkit-user-select:none;user-select:none}.toggle-switch{display:inline-flex;flex-shrink:0;height:20px;position:relative;width:36px}.toggle-switch input{height:0;opacity:0;position:absolute;width:0}.toggle-track{background:#d1d5db;border-radius:10px;cursor:pointer;inset:0;position:absolute;transition:background .2s}.toggle-track:after{background:#fff;border-radius:50%;box-shadow:0 1px 3px #0003;content:"";height:14px;left:3px;position:absolute;top:3px;transition:transform .2s;width:14px}.toggle-switch input:checked+.toggle-track{background:#2563eb}.toggle-switch input:checked+.toggle-track:after{transform:translateX(16px)}.timelock-section{display:grid;grid-template-rows:1fr;opacity:1;overflow:hidden;transition:grid-template-rows .25s ease,opacity .25s ease}.timelock-section--hidden{grid-template-rows:0fr;opacity:0}.timelock-section>.field{min-height:0}.share-box{background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;display:flex;flex-direction:column;gap:4px;padding:10px 14px}.share-box-label{color:#15803d;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.share-box-url{color:#166534;font-size:12px;text-decoration:underline;text-underline-offset:2px;word-break:break-all}.share-box-url:hover{color:#14532d}@media (max-width:400px){body{padding:16px 12px}.panel{gap:16px;padding:20px 16px 24px}.datetime-row{flex-direction:column}.input-date,.input-time{flex:none;width:100%}}